算法的思想:
以下象棋为例,MAX和MIN两人对弈,在某时刻MAX开始走步,可以通过构建一个N层的宽度优先搜索书表示MAX预测了N步的所有棋盘状态。在第N层MAX通过评估函数可以对自己目前的形式进行估计,然后递推回当前的状态可以得到一个对自己最有利棋盘状态,如图,在每一层递推双方都会从子节点选择最有利于自己的那一步:
算法实现:
1、构建一个N层广度优先搜索树
2、自底向上求倒退值,直至求出初始节点的倒推函数值,再根据相应的值进行走步
由于极大极小搜索博弈树很大,这样会导致效率低下,需要进行剪枝,即生成搜索树与剪枝同时进行。
α-β剪枝,MAX节点的值α为其子节点中的最大值并且在剪枝的过程中永不减少,MIN节点β为子节点的最小值在剪枝的过程中永不增加,具体算法举个例子说明: