C++ QT开发人机象棋(搜索算法)
作者:互联网
使用极大极小值算法,在满足电脑下棋的时候自己的局势能够获得最大权值的情况下判断在当前局势下的玩家的最小的权值,这样能够保证算法最优。
先从一个故事说起,比如说现在有有一个小偷偷了一些物品,小明看到后跟小偷说如果小偷给他一部分东西他就不报警,并且小明只取一件物品,图中的三个箱子里面分别有两个不同价值的物品,那小偷也说了,你选择箱子,我给你拿物品,这个时候为了获得最大的利益,小明应该选择2号箱子,这样按照博弈的思想,小明和小偷都能够让利益最大化。
那么我们可以把这个思想枚举到我们的象棋上面来:
现在按照两步来说,作为电脑,在第一步下棋的时候选择的肯定是最大分,但是如果说直接用搜索一层的分值来下棋的话,人机象棋的棋力其实是十分十分弱的,那么我们就应该考虑n步人机,按照前面提到的小偷的例子,在电脑下棋的时候,在满足电脑和玩家都是绝顶聪明的情况下进行判断,那么在1这一步,电脑选择的应该是权值最大的,下一步玩家下棋,这时候,电脑应该选择的是人下期完之后的权值的最小值。
标签:小明,QT,下棋,象棋,电脑,C++,搜索算法,权值,小偷 来源: https://blog.csdn.net/zbq_tt5/article/details/97616074