四子棋的AI算法求助,悬赏500一分不少

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:06:12
问题发过一遍,可惜发错分类没人关注,所以再次问一遍,希望有人帮忙。若回答得好两边分别200+50分。
原题:
http://zhidao.baidu.com/question/124193761.html

邮箱:xiaoyu0_whbns@yahoo.cn
我主要想知道AI怎么判断,而不是程序怎么编。
是这样的,编程序前我首先要知道电脑应该怎么做,然后编程序让电脑根据我的指令一步一步做。我不是不知道怎么实现我的想法,而是不知道电脑应该怎么做

我写过五子棋程序,也思考过棋类程序的算法,希望能给楼主参考

双方对弈棋类算法,其基本思想就是人工智能中关于 最小-最大问题 的 alpha-beta 剪枝,楼主可搜索一下,这个随便一本人工智能书里都有讲。

下面就是具体程序中该如何实现其思想

一般都要先有一个招法生成器,用于给出当前局面下所有可走的行棋可能。对四子棋来说就相当简单了,只要看一下每一列,只要未满即可。
然后要有一个局面评估函数,大体评价下双方局势的分数。此函数尽量简单能反映优劣即可,因为后面的 alpha-beta 算法要大量调用此函数
最后实现 alpha-beta 的算法,采用迭代加深的广度优先搜索能有效剪枝。(剪枝效率取决于前面的局面评估函数,如果评估函数能非常准确的估值,那么将会大大减小搜索范围,但复杂的评估函数又会增加开销,这是一个两难的抉择)

不过对于四子棋由于非常简单,楼主也可以尝试仅用简单的广度优先搜索。按每个局面 7 列只有 7 种走法来算,5步深的全搜索也只有 1 万多种情况。对一般人来说5步深也足够强了。不满意的话再考虑上面的正统算法。

然后是一点小技巧,关于棋盘的存储和运算,尽量采用位棋盘和位运算来完成,多利用位运算的并行性来提高效率

这里毕竟字数有限,如果还想更深入了解的话推荐来这里看看:http://www.elephantbase.net/computer.htm
一个相当好的棋类算法网站
虽然是讲象棋的,但基本思路都一样,绝对能学到很多东西。

我的代码发给你了,看看满意 不,

在另一边回答你了。

现在的AI和程序有区别吗?我注释有的,查找消息队列。你是用C的话和WINDOWS编程思想是不大相同的。WINDOWS编程有消息这个概念,你要想改成C程序恐怕不大现实。

嗯,你是要下棋的AI话,你贴的那个程序是没有的,它只提供了两人互下的,它唯一的A