首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

五子棋估值算法的思路,该怎么处理

2012-04-08 
五子棋估值算法的思路假设电脑是黑方,玩家是白方轮到电脑走,对电脑要走的点A值进行估值对电脑方:判断走A点

五子棋估值算法的思路
假设电脑是黑方,玩家是白方
轮到电脑走,对电脑要走的点A值进行估值
对电脑方:
判断走A点能否形成5子或双4等等情况对应给分
对玩家方局势:
判断电脑走A点后玩家方能否形成5子或双4等等,对应给分

我想问的是
1.走到A点时,对电脑方局势判断可以从A点得上下左右出发 此时对玩家方得局势怎么判断,感觉要扫描整个棋盘啊?
2.每一步都要对所有能行的点A进行整个扫描么?得到估值最大的A点?
3.alpha-beta剪枝是在得到估值函数后然后进行的么,这个搜索算法是在一定深度下进行整个搜索,进行剪枝,还是只进行部分搜索啊?

不知道我思路对不对,请指教,谢谢

[解决办法]
http://brucegaochina.iteye.com/blog/1167699
http://blog.sina.com.cn/s/blog_5e4132740100c7vu.html
http://blog.csdn.net/liuben/article/details/2228050
http://blog.163.com/jinghui_88/blog/static/18666265200810891238487/
无毒,可以随便点
[解决办法]
对于1)2)两问,可以考虑的方法是在棋局进行过程中储存相应的数据结构,落子时修改对应的数据结构。
alpha-beta搜索,我的理解,应该是在搜索前设定阈值,搜索时检查阈值并剪枝。
如果不用这种估值函数,也可以写出棋很强的程序,就是用UCT算法,相关博文见我博客,围棋博弈系列,其中介绍的UCT算法也适用于五子棋
[解决办法]
数据结构可以用位运算,水平垂直45度都可以是一个int,用模板来匹配.
这样的好处是,结构精简,不用回朔,可以采用多线程并发搜索.

回朔是用同一个引用类型的结构体,反复搽写,不能并行计算.
[解决办法]
int是值类型的,和数组引用类型不同,可以在递归中用完丢掉.

比特棋盘,很重要.

这里有你需要的资源.

http://xqbase.com
[解决办法]
刚毕业的时候用Delphi写了个迷茫五子棋玩玩,现在工作忙,很少有时间去玩那些东西了,正如楼上所说,用bit棋盘比较合理,不然要搜索个7,8层,有难度,对你的问题

1.当前盘面状态的改变只因多一个子,或少一个子,因此不用全盘扫描,你只需计算多一个子,或少一个子所产生盘面估值的变化
2.同1
3.既然是剪枝,就不会所有结点都搜索了,要理解alpha-beta搜索,你可能要先理解Max-Min搜索

热点排行