回 帖 发 新 帖 刷新版面

主题:推进一本书就行了

我想编一个五子棋程序,AI方面有些困难,大家能推荐一本着关于这方面的书吗?

回复列表 (共8个回复)

沙发

我看过关于这方面的论文,而且我自己是高校五子棋手,虽然水平一般,但是已经认识到五子棋软件类软件的局限性
五子棋类软件首先是依赖输入的谱库大小和弈棋者水平的高低的,对棋理认识越深,自己的算路越成形,就能写出比较清晰的算法,当然,尽管这种软件在高段位选手的眼里仍是脆弱的
如果只是让软件会下棋,那么首先软件要有能判断是否活3、是否冲4的能力,如果是应用级别,还要考虑是否真活3、是否真冲4的问题(禁手的存在)
至于进攻方面,至少要教会电脑正确地活3、冲4(在接下来的至少两个回合内不会被对方杀死,最低限度)
在双方都无冲4、活3的时候,要寻找连接点,计算盘面上对方的活2、眠3和自己的眠2和孤点,计算对方能不能从下一手开始连攻,如果能则选择防守,然后再来比较各个防守点的强弱。如果不能就争取一个子做出多个活2、眠3,形成攻势

建议你自己有空多在网上看看高手下棋,qq的三手区有几个高手(比如木头鱼、怡红山庄云飞)、联众上的帝释天等等(当然这几个是因为我都认识所以推荐的,不是说除了他们就没有强的人了)
看上200盘棋再来想AI,尤其是保存下棋局然后进行简单分析之后,相信你的眼界会有提升

板凳

计算机想棋跟人可不同,我BLOG里有一个链接,中国象棋什么网,里面有翻译几本老外的书,看看有帮助的。

对于不同的棋,程序设计者需要做的是,设计数据结构,棋盘的表示,棋子的表示,先后手,然后做搜索过程,然后设计估值函数。五子棋无论从棋盘还是估值上都很简单,用位棋盘,黑白两个bitmap,估值对局面估,一个局面里有多少个活三之类的,连珠有个很显然的趋势,连得多价值大,至于多少分,你自己定。做出来应该很聪明,计算机对弈基本上都是机器首先战胜设计者,设计深蓝的是一个台湾人,你认为他的国际象棋很强吗?计算机的搜索会局限在一个深度之内,这一个深度就是它的水平线,也是他的视野,比如你可以设定5层,那在这5层之内的全部杀招,防手,电脑都看得清清楚,没有半点错误,如果你的眼力加上经验只在这个范围之内,是不可能胜出的,国际象棋的世界冠军的棋力相当于计算机14层的搜索能力,每一层算200分,就是2800分,计算机超过人类只是时间的问题,像改进过的深蓝的程序采用单步延伸,它可以在一些情况下超出水平线之外,其它的一些行为可以模拟人类,最最主要的还是搜索。

3 楼

rickone
我想你犯了一个简单的错误
就是你没有真正下过五子棋
围棋和五子棋和象棋之间最大的区别是什么?
一个考虑的要素越来越多
一个考虑的要素越来越少!
象棋上可以出现,奥赛罗上可以出现
但是围棋和五子棋很难出现!!
现在的围棋和五子棋软件,最强的地方是把比较小的优势做大,抓住对手机会取胜
但是缺乏中局的大局观!!!!!!!这是致命伤!!!!!!!!!!!!
这和程序设计者有关,也和应用的思路有关
告诉lz也告诉rickone老大一个事实:五子棋有这样一些习题,一次连攻至第225手也就是最后一手才黑胜,中间要走60多手棋
这是人脑所能完成的
按照rickone的思路,这个程序则似乎很难完成
而且五子棋有所为的骗招
骗上杀对方,骗不上自己死
有的骗很深,有10几手,冒然行动只能招致失败
所以五子棋不是简单dfs就完事的事情
当世整体能力最强的五子棋软件首推黑石,但是当初我学棋3个月的时候也曾经胜过黑石
所以,不要把一切想得太简单……不是一篇两篇文章就能解决的问题呀……

4 楼

看到深蓝
想起李开复为首的那一帮鬼才了

5 楼

有的人算力比较深,几十手的杀棋能在脑中完成
而黑石我从来没看过他分析超过11手(vcf除外)

6 楼

我真想和你下下五子棋,我可不是五子棋高手。行的话+我QQ434524434
交个朋友吧。

7 楼

呵呵
可以阿
我下棋常被人说不动脑子还想那么久……

8 楼

现在估值的模块可以用神经网络的方法训练,人的大脑想某些棋可以达到很深,但只是某一个分支很深,比如来回下,象棋中也常有,但那个深度不是整体的深度,我不知道深蓝是怎么实现,他说是可以单步延伸。

一个棋手或者电脑的棋力,是一个综合评价,说电脑或者人有多少分的棋力,只是一个评价而已,并不是说它只能相到那么深。

现在的棋类软件大都是训练出来的厉害,把对局库给他,运行一个星期,棋力就会天天长,好多软件都是这么做出来的。我只是想说明,搜索技术是主要的,估得再好,搜索算法不好也没用。

我来回复

您尚未登录,请登录后再回复。点此登录或注册