当前位置:   article > 正文

QT五子棋项目详解之四:AI人机对战max-min极大极小值博弈算法_pyqt5实现五子棋ai游戏,基于极大极小值算法

pyqt5实现五子棋ai游戏,基于极大极小值算法


不考虑博弈的算法怎么能算是AI呢?

max-min极大极小值算法就是考虑了博弈的算法。

来看一个简单的例子


在这个棋局中,电脑为白旗,白旗走哪一步更好呢,也许使用策略表会告诉你,应该冲4,但是冲4后,玩家就会连成4。

这就是考虑了博弈之后,这一步棋就是败局。这就是为什么有max-min算法。也理所当然应该这样。


现在我们考虑两层的情况:

这一步,应该电脑走了,电脑现在有3种走法,A,B,C 。

当电脑走A后,玩家有D,E两个位置可以走。  当电脑走B后,玩家有F,G两个位置可以走......


如果一个电脑可以看到两步以后的棋,就和普通人一样。又假定电脑对整个棋盘的局势有了自己的判断。那么在两步棋之后,电脑判断了整个棋盘的局势,如下图:得分越大,对于电脑越有利。电脑就会想了,我下哪一步好呢。电脑应该下C吗?因为I的得分为6.当然不是了,因为当电脑选择下C时,玩家会选择下H,下这一步对玩家最不利的棋。当电脑选择下A时,玩家会选择下E,下这一步对玩家最不利的棋。所以,对于A,B,C三个节点来说


所以,对于A,B,C三个节点来说,电脑就已经对他们进行了打分,所以,电脑最后会走3这个点。


这就是max-min算法,一个很简单的东西,我就没看到有人把它说清楚过。

明白了这一点,就知道需要干嘛了。

1、需要计算出电脑可以走哪些棋。

2、有一个好的评价局势的函数来评估分数


实现如下,如果你递归都还没搞懂,就不要看了:

  1. //2018年3月9日15:54:16——March 9, 2018 15:54:16
  2. //追梦少年 QQ:1131052403 —— Dreamer QQ : 1131052403
  3. //开源的狂热爱好者,代码风骚,效率恐怖 —— Open source enthusiasts, code coquettish, efficient horror

QPoint Game::maxmin2(int deep)
{
 
    int best = INT_MIN;
   QVector<QPoint> points =  gen(deep,computerColor); //可以走哪些点
   for(int i = 0;i<points.count();i
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/353695
推荐阅读
相关标签
  

闽ICP备14008679号