一般情况下车是8分,炮马分别是4分,士象分别是2分,兵卒未过河是1分,过河卒子为2分但要以实际情况而论中国象棋中最讲究子力的位置逼近九宫的兵卒有其它子力的配合,其价值可能要远远大于2分一匹处处受制的马其真实价值可能要低于位置极佳的兵卒中国象棋中最讲究子力的配合,有时双炮要优于双马(兵卒比较多马受限的情况下),一般情况下马炮要优于双炮或双马,车马炮要优于双车所以可以在中局通过兑子使已方获得满意的兵种(中国象棋中往往有弃子战术,记得一位象棋大师说过一个不会弃子的棋手永远也成为不了好棋手因为通过弃子可以使已方的子力获得好的位置,使对方的子力处于不利的位置)
象棋软件下不过特级大师可能有以下几个原因:
1 软件的水平不够高:不同的象棋软件水平不同,有些软件的算法和搜索深度可能不够,难以应对特级大师的高水平下棋。
2 特级大师下棋的风格较为特殊:特级大师下棋的风格可能会有自己的特点和惯用套路,软件可能无法有效地应对这些棋局。
3 棋局中存在奇怪的走法:特级大师可能会采用一些非常规的走法和策略,这些走法可能超出了软件的预料和搜索范围。
4 程序设置问题:软件的设置可能会影响其下棋的表现,如搜索深度、杀棋算法等。
针对这些问题,可以尝试以下解决方法:
1 升级软件:选择更高级别的象棋软件,能够更好地应对特级大师的下棋水平。
2 学习特级大师的下棋风格:了解特级大师的下棋风格和惯用套路,能够更好地应对其下棋方式。
3 加强软件的搜索深度和算法:调整软件的参数,增加搜索深度和杀棋算法,提高软件的下棋水平。
4 增加对奇怪走法的处理能力:软件加入对非常规走法和策略的处理能力,提高软件的应对能力。
我个人觉得象棋好编一些,我正准备做一个象棋的,用AS3。。不过说算法就跟哪个语言无关了。。以前也用C++的,好久不用忘得差不多了。。
理由就是象棋的博弈复杂度比较低,一个固定的棋局顶多只有几十种“下一步”走法,而围棋是1919数量级的,且象棋越到后面越简单,围棋越到后面越复杂。。
算法嘛,我也不是很清楚,很久以前只做过一个五子棋的,就穷举,算分,比最大。。
可以去网上看看别人的源码。。
考虑对称性,假设一个局面镜面反转变成另一个局面,则认为两个局面相同,以这个前提来看。即第一步炮二平五炮八平五看做同一个局面的话
红方开局可走的走法有:
帅五进一、仕四进五、相三进五、相三进一、车一进一、车一进二、马二进三、马二进一、炮二进一、炮二进二、炮二进三、炮二进四、炮二进七、炮二平一、炮二平三、炮二平四、炮二平五、炮二平六、炮二平七、炮二退一、兵一进一、兵三进一、兵五进一。共有23种
其中不影响对称性的棋的棋是:帅五进一、兵五进一。共2种,称为局面A
影响对称性但不影响对手行棋的棋是:仕四进五、相三进五、相三进一、车一进一、车一进二、兵一进一、兵三进一。共7种,称为局面B
其余的影响对称性又影响对手行棋的棋:马二进三、马二进一、炮二进一、炮二进二、炮二进三、炮二进四、炮二进七、炮二平一、炮二平三、炮二平四、炮二平五、炮二平六、炮二平七、炮二退一。共14种,称为局面C
局面C中使对手可行棋增加n步的写作C(n)
C(1):炮二平一、炮二平三、炮二平四、炮二平五、炮二平六、炮二平七、炮二退一,共7种
C(-1):马二进三、马二进一、炮二进一,共3种
C(-2):炮二进二,共1种
C(-3):炮二进三、炮二进七,共2种(这里不允许送将,否则炮二进七要归到局面B())
C(-4):炮二进四,共1种
局面A,对手也有23种走法
局面B,对手有44种走法(因为对称性消失,对手如炮2平5和炮8平5会导致两种不同局面)
局面C(n),对手有44+n种走法
可得两步总走法=2×23+7×44+7×45+3×43+1×42+2×41+1×40=962(种)
允许送将+3种=965种
前面回答不考虑对称性,即第一步炮二平五炮八平五看做两个不同的局面的话,就是
2×44+2×(7×44+7×45+3×43+1×42+2×41+1×40)=1920(种)
允许送将+6种=1926种
以上就是关于跪求中国象棋的估值算法全部的内容,包括:跪求中国象棋的估值算法、为什么我的象棋软件下不过特级大师、C++编程,象棋好编还是围棋,算法方面那个更简单点,各自特点,本人在学windowsAPI,C++功底还行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)