Minimax算法——井字棋

Minimax算法——井字棋

前言

本文将介绍Minimax算法以及α-β剪枝算法并实现井字棋游戏

介绍

Minimax算法常用于双人对战棋牌类游戏中,该算法需满足零和博弈。

Minimax算法

在双人游戏中,我们将模拟双方可能的操作,并且对于当前局面进行评分,在我方回合,即选择评分最高的局面,在对方回合,即选择评分最低的局面,以此类推。这就是Minimax算法的基本过程。
Minimax算法——井字棋_第1张图片

from : http://blog.codinglabs.org/articles/2048-ai-analysis.html

此为模拟对弈过程的流程图。

α-β剪枝算法

Minimax算法——井字棋_第2张图片

以上图为例,在此流程中,从下往上,正方形→三角形为min过程,三角形→正方形为max过程。在第一个三角形已经确定为20的情况下,开始搜索第二个三角形,若确定了第一个正方形为10以后,就可结束第二个三角形的后继搜索,即不需要知道后面两个正方形为100,因为在10已经确定的时候,第二个三角形肯定小于等于10,而在max过程中,一定不会取10,因为已经有20比10大了,这就是α-β剪枝算法的原理。以上图为例,如果全部遍历,则需要计算六个局面的分数,如果使用α-β剪枝算法,则只需计算四个局面的分数。

井字棋游戏

你可能感兴趣的:(算法,python)