标题:常见棋类AI复杂度介绍
只看楼主
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
结帖率:96.15%
已结贴  问题点数:20 回复次数:54 
常见棋类AI复杂度介绍
本帖子是扫盲帖子,是关于棋类复杂度的介绍
这里介绍五种常见棋类:黑白棋,五子棋,中国象棋,国际象棋,围棋

黑白棋:相当经典的游戏,因为棋盘为8X8大小,且每一步变化不多,估算的搜索空间复杂度为10的28次方
而小棋盘版的6X6黑白棋,已经被软件穷尽所有变化,证明是后手必胜,人们猜测8X8也是后手必胜

五子棋:虽然是经典游戏,但在加入禁手,三手交换,五手两打后,变得复杂化起来,特别是禁手会存在各种假禁手,
导致禁手判断的工作一点也不轻松,日本曾有人出的一些禁手题,还能难倒很多爱好者。
目前,即使先不考虑禁手规则,而棋盘大小为15X15的五子棋,
考虑了开局有很多不必要的着法,剪掉以后,空间复杂度仍然有10的105次方
如果加入禁手规则,会让空间复杂度略减(当有禁手点出现的时候),但禁手判断的复杂性,却填补了这个复杂度的减小,
反而使软件的复杂度更大(拖慢软件搜索速度)

中国象棋:几百年以来唯一规则没变化过的古老棋类,棋盘比国际象棋稍大(9X10),
总变化也比国际象棋略多一些,为10的48次方

国际象棋:国际上知名度很高的棋类,并且他的发明的传说也一样出名(就是第一个格子放一个谷子,后面每格是前面的两倍那个)
它的空间复杂度比中国象棋稍低,为10的47次方

围棋:当之无愧的复杂度之王,拥有19X19的超大棋盘,空间复杂度高达10的360次方,居棋类复杂度之首,并且远远抛离第二名的棋类


可能有些人认为,五子棋的AI比象棋AI要容易实现?按状态空间复杂度来看,显然不是这样,
那为什么产生这个错觉?这是因为他看到的只是着法生成的复杂度

着法生成是棋类AI的一个组成部分,着法生成显然和棋类规则的复杂程度有关。对于以上几种棋类,显然是中国象棋和国际象棋的着法最为复杂
但这并不表明这个棋类就复杂,规则更简单的围棋显然不是这样
我猜很可能是他只看到着法生成器的复杂度,因为只要有着法生成器,电脑就已经能应对下子了,
再加上简单的静态评估函数,就可以实现最简单的AI,即使根本没有进行搜索。
但不搜索的AI没有任何意义

如何公平比较AI的实现难度呢?这些棋类都是竞技棋类,有严格的水平段位制
和人类相同段位的棋手做比较,拿五子棋和象棋的话,我们假设和五子棋的初段棋手,和中国象棋的初段棋手来比
目前最顶尖的五子棋软件是黑石,但总体水平只达到了职业初段,虽然局部攻杀水平极高,但也不能和人类最高水平棋手相较量
最顶尖的中国象棋软件,很多,有倚天,旋风,天机,大圣,奇兵,其中大圣曾和许银川(九段)六战成和

如果说国际象棋,最出名的当数1997年的深蓝之战,3.5 : 2.5 击败了人类最顶尖的棋手

其实这也可见,这和棋类的状态空间复杂度有着密切的联系,较低的空间复杂度的棋类,机器在人类面前显得水平越强
特别是黑白棋,自从zebra的出现,就把人类最顶尖棋手远远抛离

更多的其它棋类状态空间复杂度的比较,可以见wiki百科:
http://en.

部分英文词汇:
Chess   国际象棋
Xiangqi 中国象棋
Gomoku  无禁手的五子棋(Renju才是有禁手五子棋的名字)
Reversi 黑白棋(另一名字是Othello)
Go      围棋
收到的鲜花
搜索更多相关主题的帖子: 中国象棋 国际象棋 五子棋 爱好者 经典的 
2010-12-25 13:55
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
得分:0 
有没象棋AI的算法 可否贴出来看下
2010-12-25 13:59
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
得分:3 
学习提高。

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2010-12-25 14:02
a343637412
Rank: 7Rank: 7Rank: 7
来 自:そ ら
等 级:黑侠
帖 子:357
专家分:620
注 册:2010-9-26
得分:3 
        
刚路过,


            来顶下....
2010-12-25 14:02
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
得分:3 
整个五子棋算法来看看。。。
2010-12-25 14:03
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:3 
估分函数还是很重要的。搜索当然也很重要,但是相对技术含量比较低。

现在思考的方向是动态估分函数。即根据当前棋盘的棋型,给出棋型的评分(而不是单独的静态棋盘评分)。个人认为对于AI,剪枝和估分是最重要的。

专心编程………
飞燕算法初级群:3996098
我的Blog
2010-12-25 14:12
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
得分:0 
楼上的见解独特
2010-12-25 15:28
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
得分:0 
楼主不是写了一个带AI的中国象棋程序了? 再次强烈期待发出来供大家学习。

另外不知道楼主到底会不会中国象棋?
你贴这些出来,是不是想说明你曾讲过的:
如果是AI部分,五子棋比象棋难写很多倍 是正确的?

既然你写了 为什么不发程序来?你不是喜欢发这些东西么?又不是要源码,只是你
写的带AI的象棋程序而已。

你也不要混淆概念,象棋软件之所以水平比较高,并不是因为AI容易,而是因为
象棋的搜索棋库功能,加上庞大的棋局数据,加上高配置的计算机,另外重要的还是棋面的评价功能。
开局中局残局,几百年来留下无数的棋局,还有公认的定式或最佳着法,人脑再狠,也比不过计算机去查棋局,以前数据结构学博弈树,老师讲过棋类的例子,对于象棋,正是因为其着法规则复杂多变,所以假如走一步,会面临N多后续可能的走法,比如兑子 将军 将军后是否还有必杀着 吃子 吃子后是否会被对方吃 等等等,着法复杂就必定带来搜索和评价的复杂,6楼的看法很有道理,局面的评价动态调用,或者需要继续向下一层或者多层再评价以避免深度不够误判 或者需要根据局面情况重新选择搜索算法等等。我虽然对这些基本属于空白,但是好歹经过4年计算机专业学习,加上搜索引擎的帮助,不至于装,就算装,也不至于装的离谱。

最后,中国象棋软件比较牛,你有什么理由就认为是因为中国象棋的AI容易,所以象棋软件才牛的?
五子棋程序打不过初级,你就认为五子棋的AI难?
这样的逻辑似乎不是逻辑。

再最后,再次强烈期待楼主发出你写的带AI的中国象棋程序,即使是”实现最简单的AI“也行啊。

再再最后,偶在想,这样的帖子,会不会被无理由的删掉?这是个问题。
收到的鲜花

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2010-12-25 16:39
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
肓人不小心路过,却被无情的扫肓了。/

我就是真命天子,顺我者生,逆我者死!
2010-12-25 17:07
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
得分:0 
跪求源码 跪求原创
网上下载的 就不必炫耀,了
有本事就自己写一个
2010-12-25 17:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-329888-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.332425 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved