我对AI十分感兴趣,加上一位师兄给了我一些意见和指导,所以我尝试去实现一个五子棋AI。在此,我是以个人经历来写这篇文章而且是第一次写博客,目的在于加深自己对五子棋AI的理解和锻炼自己的表达能力,因此,有什么不好的地方请大家指出,我非常乐意接收批评。
好了,接下来我会做一个简单的介绍,在五子棋博弈中如何用程序模拟人的思考。
在下棋的时候,我们都会思考在当前局面下棋子下在哪最好,意思就是对自己最有利的落子,无论进攻还是防守,如下图
(棋子没放在交叉点,以后再改)
如果我执白,必然会选择进攻,落子造成活四,如下图
如果我执黑,我觉得是防守最好,落子如下图
显然,这些大家都非常容易理解,但是对于机器来说,就是两码事了。怎么让机器意识到走这步最重要?我采取的方法是评估每一步的价值,意思就是在当前局面下,计算出可能落子的地方的价值,然后让机器走价值最大的地方。
在往深一层思考,人在下棋的时候,不仅仅只思考当前局面,还要思考之后的局面,意思就是我们会在脑海里模拟对手和自己的落子,形成多种可能性,然后从中挑选出对自己最有利的落子。同样,机器采取的也是一样的方法。首先,生成合理的落子集合,然后模拟落子,形成新的局面,再重新生成合理的落子集合,再模拟落子……
(用井字棋的博弈树代替,意思相近)
这就是人机博弈中著名的博弈树算法,每一层代表模拟落子后的局面,一般来说,层数越深,AI就越聪明,但是考虑到时间复杂度为b^n(其中b为分支因子,n为层数),是不可能一直加深层数来增强AI的智能化,这也是之后的博客会讨论的问题,在此不做详细说明。
以上就是五子棋AI的简单介绍,当然,这是最基本的东西了,要做成一个真正强大的AI还差很远。如果大家感兴趣的话,多留意我以后更新的博客。
五子棋AI设计-简介
最新推荐文章于 2024-08-20 09:48:55 发布