Minimax算法——井字棋
前言
本文将介绍Minimax算法以及α-β剪枝算法并实现井字棋游戏
介绍
Minimax算法常用于双人对战棋牌类游戏中,该算法需满足零和博弈。
Minimax算法
在双人游戏中,我们将模拟双方可能的操作,并且对于当前局面进行评分,在我方回合,即选择评分最高的局面,在对方回合,即选择评分最低的局面,以此类推。这就是Minimax算法的基本过程。
from : http://blog.codinglabs.org/articles/2048-ai-analysis.html
此为模拟对弈过程的流程图。
α-β剪枝算法
以上图为例,在此流程中,从下往上,正方形→三角形为min过程,三角形→正方形为max过程。在第一个三角形已经确定为20的情况下,开始搜索第二个三角形,若确定了第一个正方形为10以后,就可结束第二个三角形的后继搜索,即不需要知道后面两个正方形为100,因为在10已经确定的时候,第二个三角形肯定小于等于10,而在max过程中,一定不会取10,因为已经有20比10大了,这就是α-β剪枝算法的原理。以上图为例,如果全部遍历,则需要计算六个局面的分数,如果使用α-β剪枝算法,则只需计算四个局面的分数。