象棋残局算法分析

       练习了两年的java推箱子算法程序,开始练习一下象棋C算法程序吧。虽然java版的弄了个半成品,好歹也算是颇有斩获。不熟练C语言不太好意思跟别人说会编程,所以本次用C语言先从残局一点一点练练吧。现在回看,那个双向搜索java推箱子的博文太青涩了,程序功能也不是很强大,中间又分析得似是而非,最近也没有很好的收尾,除了个人水平的原因,也是因为永远都有更好的算法,只是我没有发现。没有止境.......

      根据象棋的游戏规则,除了卒以外,都能走回到原来的位置(虽然象棋规则不允许这样),所以可以把象棋算法的数据结构写成有向图,但是当作树来处理。每一个节点就是棋盘上棋子位置的组合。

       发现 网站http://www.xqbase.com/computer/eleeye_intro.htm以开源的方式讲解了象棋的智能算法。还是先看看再说。微笑

弄点最基本的思路吧,高深的东西@#¥%&

象棋电脑“终极对弈”的基本逻辑 :

1,因红先黑后,所以理论上红方必胜,平局都算红方输。找一局红方胜利的专业棋局,且步骤要长点的,咋的也得300步吧。

象棋步数 :http://www.gdchess.com/bbs/dispbbs.asp?boardid=30&id=98100&authorid=0&page=0&star=1

2,不断悔棋,拆解,形成阿尔法-贝塔树。黑方赢棋的话,为误招。红方赢棋为正招。

3,黑方优先防守。红方优先进攻。这样也许能尽快得出理论上的“终极对弈”。

3,每一步的分析逻辑如下(作为基本智能,只分析当前一步) :

1) 是否能直接将军。是的话就将军。(不管能否赢棋)

2) 己方是否被将。是的话红方按照以下策略顺序防守:    吃掉对方将军的棋子--->挡(蹩马腿)--->躲将。

                                         黑方按照以下策略顺序防守:    躲将--->挡(蹩马腿)--->吃掉对方将军的棋子。

3)  A 能否吃对方的棋子。

     B 是否被对方吃子。

优先级:车、马、炮、相、仕、兵。

4) 吃子的优先级高就吃子。

5) 被吃的优先级高:

红方按照以下策略顺序防守:    吃掉对方进攻的棋子--->挡(蹩马腿)--->躲。

黑方按照以下策略顺序防守:    躲--->挡(蹩马腿)--->吃掉对方进攻的棋子。

6) 进攻。吃将--->吃最近的对方棋子。

总结:通过这种基本逻辑进行逐步自学。感觉自己萌萌哒。¥%……*&%

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

外星人2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值