请帮我解一下这些东萍象棋棋谱仓库

论文发表、论文指导
周一至周五
9:00&22:00
一种中国象棋残局棋谱自动生成算法
  摘要: 通过对传统博弈树搜索算法的修改,提出了一种中国象棋残局棋谱的自动生成算法,该算法基于极深极浅算法,并用剪枝、着法排序、置换表等手段对其搜索效率进行了优化.实验数据表明该算法在搜索生成连照胜杀局的棋谱时,具有较好的效果.最后用该算法对《象棋残局杀局宝典》中的残局进行了验证,发现了书中记录的残局棋谱存在的一些错误. 中国论文网 http://www.xzbu.com/4/view-2230066.htm  关键词: 中国象棋;残局;棋谱;博弈树;搜索算法   中图分类号:TP18    文献标识码:A文章编号:10)06-0435-04      An Automatic Generation Algorithm for the Manual of Chinese Chess Endgames   WU Li?xian,HE Li   (Department of Mathematics and Information Technology, Hanshan Teachers College, Chaozhou 521041, China)      Abstract: Through modifying the traditional search algorithms of game tree, an automatic generation algorithm for the manual of Chinese chess endgames is put forward. The algorithm is based on the deepest and shallowest search algorithm proposed in this paper, and is optimized by pruning, transposition table, move sort, etc. The experimental data show that this algorithm has fairly good results for the endgames by successive checks for winning. Finally, the endgames in the Well-known Chinese Chess Endgames are verified by this algorithm and some errors are found in this chess manual.   Key words: C search algorithm      棋类博弈是一种以默算为基础的竞技运动,棋力的高低很大程度上取决于棋手的默算能力[1].而将计算能力最强的工具计算机应用于棋类博弈,形成了人工智能领域的一个重要分支:机器博弈.机器博弈一方面丰富了棋类运动,产生了许多的人机对弈软件,使棋类运动从人与人面对面的对弈扩展到人机对弈;另一方面通过机器博弈水平的高低反过来可检验人工智能中某些理论与方法的有效性.这两方面的相互作用推动了机器博弈水平的发展,1997年“更深的蓝”战胜世界国际象棋棋王卡斯帕罗夫,成为机器博弈发展史上一具有里程碑意义的事件.机器博弈的传统研究重点和前沿是国际象棋,国内研究人员借鉴机器博弈在国际象棋方面的理论和方法,对机器博弈在中国象棋上的应用进行了开拓和研究.   中国象棋的对弈过程大致分为开局、中局和残局3个阶段,各阶段有不同的博弈特点,机器博弈也应采用不同的策略.残局是指由少数棋子所构成并进入决定胜负阶段的对峙局面,残局阶段虽然棋子减少了,但棋子的活动空间相对延展了,弱子的价值普遍提高,一般的棋局评估和搜索算法会变得不够精准,所以残局阶段是机器博弈目前最弱的一环[2].   本文通过对传统博弈树搜索算法的修改,绕开复杂的棋局评估,提出了一种中国象棋残局棋谱的自动生成算法.该算法对于残局库的开发和提高机器在残局阶段的博弈水平具有一定的借鉴价值,并能对现存的残局解法进行验证,也可作为棋手解答残局的辅助训练工具.   1 极深极浅算法   中国象棋的残局可分为例和与例胜2类,例和是指双方都走正着,避免错着,结果必然为和局;例胜是指攻方按正确的着法走棋,无论守方如何行棋,结果必是攻方获胜.一方面由于大部分平时讨论的残局属于例胜残局,另一方面由于和局的机器评断还不是非常准确,且需要搜索的局面可能较多,超出了现有计算机的能力,所以下面只对例胜残局进行讨论.不失一般性,文中的例胜残局特指红方获胜的残局,否则只要交换红黑方既可.   图1为中国象棋的博弈树,圆框节点代表轮到红方走的局面,方框节点代表轮到黑方走的局面,节点间的连线表示着法.若从节点A到节点B存在一条着法路径,则称节点B的深度为该着法路径的深度,所经过的分支数为该着法路径的着数.例如图1中虚线标注的着法路径深度为3,着数也为3.   残局博弈树中,深度为n的节点存在残局棋谱是指:   1)对于轮到红方走的节点,若存在胜着,则由该胜着组成的着法路径为该节点深度为n+1的残局棋谱;   2)对于轮到黑方走的节点,若存在胜着,则该节点不存在残局棋谱;   3)对于轮到红方走的节点,虽无胜着,但有一到多个子节点有残局棋谱,则深度最浅的子节点残局棋谱加上到该子节点的着法组成的着法路径称为该节点的残局棋谱,否则节点不存在残局棋谱;   4)对于轮到黑方走的节点,无胜着,且其所有子节点都有残局棋谱,则深度最深的子节点残局棋谱加上到该子节点的着法组成的着法路径为该节点的残局棋谱,否则节点不存在残局棋谱.   一个残局的棋谱就是指其初始局面的残局棋谱,它可能不是唯一的.为了能自动生成残局的棋谱,本文对传统的机器博弈搜索算法极大极小算法[3]进行了修改,提出了极深极浅算法,算法的伪C代码如下所示.   { //nPly表示局面所处的层次,nSide表示着方   if(nSide is RED)HavePath=   else HavePath=   //生成所有着法的集合M   M=CreatePossibleMove(nPly,nSide);   for(each m∈M){   MakeMove(m); //生成着法的出点局面   if(Game Over){   if(nSide is RED){//生成一深度为nPly+1的着法路径   AddPath(m,nPly+1);   HavePath=   }   else HavePath=   }   else if(nPly>=MaxDepth){//已到达最大搜索深度   if(nSide is BLACK) HavePath=   }   //递归搜索着法出点局面,且存在残局棋谱   else if(CreateChessManual(nPly+1,!nSide)){   AddMoveToPath(m);//将着法加到着法路径中   if(nSide is RED) HavePath=   }   else{//着法出点局面不存在残局棋谱   if(nSide is BLACK) HavePath=   }   UnMakeMove(m);
   }    //红方选择深度最浅的,黑方选择最深的着法路径    SelectPath(nSide, HavePath);    Return HaveP   }   由于棋谱的着法一般只记录到红方将死黑方,所以极深极浅算法的最大搜索深度应至少比棋谱的着数多2层.选择具有代表性的着数为1、3和5的残局盘面各10局,用本方法搜索棋谱,实验结果如表1所示.    表1显示随着最大搜索深度的增加,所需搜索的节点数和时间急剧增加,着数为5的残局棋谱所需搜索的时间往往就需要数百分钟.实际上若设每一局面平均有35种着法计,搜索着数为7的残局,所需搜索的节点将达到35?9个,即使搜索1个节点仅需10-8s,生成棋谱的时间也需要数百小时,已完全不能接受.   2 搜索算法的改进   实用残局棋谱的着数往往达到数十着,若用上面的搜索算法生成棋谱,所需搜索的节点和时间将十分惊人.所以关键的问题是在搜索过程中避免冗余,尽量减少搜索的节点.针对残局的特点,在本文提出的残局棋谱搜索算法中应用了剪枝[4-5]、着法排序和置换表等几种方法来提高搜索的效率.   2.1 剪枝搜索算法   在上面的极深和极浅搜索过程中,存在着大量的冗余现象.图2给出了在搜索残局棋谱的过程中几种可以发生剪枝的情况,框边的数字代表该节点残局棋谱的深度.   在图2(a)中,节点A的残局棋谱应是它所有子节点中深度最浅的残局棋谱再加上从A节点到该子节点的着法,若在节点B处红方已将死黑方,则结点B处的残局棋谱深度必定小于等于其它兄弟节点的残局棋深度,这样继续搜索节点B的其它兄弟节点已没有意义.在图2(b)中,若节点D的残局棋谱深度大于节点B的残局棋谱深度,由于节点C的残局棋谱深度是它的所有子节点残局棋谱深度的极大值,该极大值一定大于等于节点D的的残局棋谱深度,因此也必然大于节点B的残局棋谱深度,这样继续搜索节点C的其它子节点已没有意义,可以将节点C为根的子树全部剪去.在图2(c)中,若在节点B处黑方获胜、不存在残局棋谱或已到达设定的最大搜索深度,则节点A必定不存在残局棋谱,则无需再搜索节点B剩下的其它兄弟节点.在图2(d)中,节点A的残局棋谱应是它所有子节点中深度最深的残局棋谱再加上从A节点到该子节点的着法,若节点D的残局棋谱深度小于节点B的残局棋谱深度,由于节点C的残局棋谱深度是它的所有子节点残局棋谱深度的极小值,该极小值一定小于等于节点D的的残局棋谱深度,因此也必然小于节点B的残局棋谱深度,这样继续搜索节点C的其它子节点已没有意义,可以将节点C为根的子树全部剪去.   将上面的剪枝方法应用到极深极浅算法中,就形成了剪枝搜索算法.剪枝搜索算法能够避免许多不必要的搜索,这将使需要搜索的节点数和花费的时间远远少于极深极浅算法.   2.2 着法排序   若搜索树的平均分枝因子为B,搜索深度为d,1975年Knuth和Moore证明剪枝算法的效率与子节点搜索的先后顺序相关[6],最理想情况需搜索的节点约为2Bd/2,最坏的情况与不使用剪枝时需搜索的节点数相同,为B?d.由于剪枝与节点的搜索顺序密切相关,所以将节点排列调整为剪枝效率更高的顺序能有效避免许多不必要的搜索.   着法排序是将某一局面的所有着法按照其发生剪枝的可能性高低进行排序,可能发生剪枝的着法优先进行搜索.历史启发是一种有效的着法排序手段[7],当一个着法发生剪枝时,就给其历史得分作一个增量,着法排序会根据每个着法的历史得分进行排序,这样容易发生剪枝的着法就可得到优先搜索.搜索过的局面,如有着法引起剪枝,则可将其保存在置换表中,当碰到相同局面时,则将置换表的着法优先搜索[8].另外从上面的分析不难看出,在残局棋谱搜索过程中,胜着、将着较容易发生剪枝.文献[9]提出不同的着法生成顺序对搜索效率有明显的影响,通过测试和比较,发现对于残局棋谱的搜索,先按胜着、置换表着法和将着顺序搜索,剩下的着法再按历史得分降序搜索效果较好.   2.3 置换表   在搜索残局棋谱的过程中,会通过不同的路径遇到相同的局面,若将已搜索局面是否存在残局棋谱,局面的残局棋谱和剪枝着法等相关信息保存在置换表中,可以避免重复搜索同一局面,或者能加快对该局面的搜索[5,10].在搜索某一局面时,先查询置换表中是否有该局面的记录,若置换表中保存有该局面的残局棋谱,则直接利用即可,若置换表中记录该局面没有残局棋谱,且置换表中记录的层次深度小于等于当前深度,表明该局面先前已进行过充分搜索,不需要再进行搜索.   2.4 连照胜杀局棋谱的搜索   例胜残局可进一步分为宽紧胜杀局和连照胜杀局2类,其中通过连续照将取胜的残局,称为连照胜杀局[1].搜索该类残局时,红方只需搜索将着,而黑方只需解着,直到将死为止.由于这2类着法只占所有合法着法中的一小部分,所以可以大大减少需搜索的节点.   3 测试与验证   为了验证各种增强手段的有效性,对前述的棋局样本用不同的方法进行搜索.本文测试是在运行Windows XP专业版的Dell 笔记本(Pentium M 1.73 GHz, 512M RAM)上完成的,实验结果如表2所示.    从表2可以看出,不同的增强手段和它们的组合对提高搜索效率都有较好的帮助,且效率随最大搜索深度的增加而增强.当最大搜索深度达到7层时,剪枝+着法排序+置换表+连照胜杀所需搜索的节点数仅为基本极深极浅算法的百万分之二.   用文献[1]中着数为21、25、29和33的棋局作为样本,用剪枝+着法排序+置换表+连照胜杀搜索算法进行测试和验证,结果如表3所示.   从表3的结果看,搜索残局棋谱的最长时间不超过90s,且所需时间随最大搜索深度变化趋缓,表明本文提出的算法已完全能应用于实用残局棋谱的搜索.同时在验证过程中,发现了文献[1]中很多棋局的棋谱存在错误,如第337局,书中给出的棋谱需25着,而经本文算法的搜索仅需11着,又例如第308局,书中给出的棋谱需21着,而经本文算法的搜索实际仅需11着.   4 结语   本文提出了一种极深极浅搜索算法,用于生成中国象棋残局的棋谱,并用剪枝、着法排序、置换表和连照胜杀等手段对其搜索效率进行了改善.通过实例测试,证明该算法对于连照胜杀残局具有较好的效果.另外该算法还可用于验证现有残局棋谱的正确性,纠正存在的错误.残局的棋谱可能有多个,但本文提出的算法出于效率和存储上的考虑,目前只能找出其中的一个,另外提高算法搜索宽紧胜杀残局棋谱的效率和如何生成例和残局的棋谱也将是下一步研究的重点.      参考文献:      [1]?苏德龙.象棋残局杀局宝典[M]. 北京:北京体育大学出版社, 2006.   [2]?徐心和,王骄.中国象棋计算机博弈关键技术分析[J]. 小型微型计算机系统,): 961-968.   [3]?SHANON C E. Programming a computer for playing chess[J]. Philosophical Magazine, -275.   [4]?NEWELL A, SHAW J, SIMON H. Chess playing programs and the pruning[J]. IBM Journal of Reserach and Development,0-335.   [5]?王小春.PC游戏编程[M]. 重庆: 重庆大学出版社, 2002.   [6]?KNUTH D. E, MOORE R. N. An analyze of alpha-beta pruning[J]. Artificial Intelligence, 3-326.   [7]?SCHAEFFER J. The history heuristic and alpha-beta search enhancements in practice[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, ):.   [8]?BREUKER D M, UITERWIJK J, VAN DEN HERIK H J. Replacement schemes for transposition tables[J]. ICCA Journa,): 183-193.   [9]?岳金朋, 冯速.中国象棋Alpha-Beta搜索算法的研究与改进[J]. 北京师范大学学报:自然科学版, ):156-160.   [10]?ZOBRIST A. A new hashing method with application for game playing[J]. ICCA Journal, ):69-73   [11]?王能发,赵薇.多目标博弈的弱ε-Pareto-Nash平衡点的存在性[J]. 云南民族大学学报:自然科学版, ):109-111.   (责任编辑 庄红林)
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。民间象棋第一棋邓又帮是不是疯子!_百度知道
民间象棋第一棋邓又帮是不是疯子!
民间象棋第一棋邓又帮是不是疯子!
我有更好的答案
天才在左,疯子在右。既然是第一棋,当然是天才了。
采纳率:87%
哪一个天才,没有一半是疯子?正常人想不出来的只有疯子才能想到做到!
你好,不鞥这样说别人的。
为您推荐:
其他类似问题
邓又帮的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。中国象棋棋谱是一款默认游戏。中国象棋棋谱内容涵盖:象棋开局布阵、象棋中局战术、象棋残局杀法、及超精选万部大师全局谱,大多数棋谱均有名师评注。棋谱细分十一个部分:分别是开局布阵、开局专题、象棋中局、实战精选、棋研探秘、古谱棋书、排局欣赏、残局学习、高手进阶、象棋名著、大师棋路。
软件设计人性化,易于欣赏和学习,是目前市场上同类软件中,内容最丰富、最全面的象棋棋谱软件,被广大棋友称为&最有助于棋力提高的象棋棋谱软件&。感兴趣的朋友们可以下载下来体验游戏。
中国象棋棋谱学习建议:(仅供参考)
第一:从残局学起,象棋残局大都是固定的定式和杀法,易于学习和掌握,推荐棋谱:《适情雅趣》《象棋残局定式与杀法》
第二:学习象棋开局布阵,开局主要是将子力尽快开到有利位置,对即将进行的中局较量做好准备,开局注重两边子力出动的协调和出子速度,请见【开局专题】【开局布阵】。
第三:学习象棋中局战术,如牵子战术、闪击战术、兑子战术、夺子战术、弃子战术等,学习象棋中局战术,主要是提高大局观和棋感,需要不断的实战和总结。请见【象棋中局】。
第四:如果您目前棋力在QQ评测四级以下,建议按照【高手进阶】的排列顺序进行学习,相信您也可以成为QQ评测六级高手,甚至更高!
第五:如果您目前棋力在QQ评测四级和五级,建议您对【开局专题】进行深入学习,并结合【实战精选】【大师棋路】,逐步提高!
第六:如果您目前棋力在QQ评测六级及七级,请您欣赏【实战精选】和【大师棋路】!
苹果版下载
安卓版下载
本站仅创建用户沟通交流的信息平台,所展示的游戏/软件内容来均来自于第三方用户上传分享,资源仅作为用户间分享讨论之用,除开发商授权外不以盈利为目的。如果侵犯了您的权益,请反馈,我们将第一时间处理。
1极品飞车:无极限v1.0.8赛车游戏
2饥荒手机版v1.0冒险游戏
3我的世界奇迹v1.5.1休闲游戏
4数学农场v5.1休闲游戏
5辐射岛v1.0.0策略游戏
6永不言弃v1.0休闲游戏
7我的会说话的安吉拉v1.0.4休闲游戏
8糖果萌萌消v1.2.0休闲游戏
9流浪狗模拟器v1.0休闲游戏
10魔幻粒子v1.3休闲游戏
热门游戏:
最新游戏:
网络游戏:}

我要回帖

更多关于 象棋棋谱口诀解释加图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信