2.1Min-Max方法
假设在博弈过程中,对抗者1总是选择使得博弈值最小的移动,那么作为对手的对抗者2则总会选择是的博弈值最大的移动,对抗者1称为min,对抗者2称为max.由于博弈双方是交替移动的,所以博弈树的结点及其父结点分属于两个对抗者中的一个,他们的种类(type)分属max和min.博弈树上的每个结点对应于一个深度(depth),叶结点的深度为0.因此,在任意的结点node,对博弈双方均最优的博弈值为[3]:
由此,很自然地得出Min-Max算法,用来求出满足一些条件的二人零和博弈问题的博弈值:
MiniMax(node)
1:if node.depth = 0 then
2:return Evaluate(node)
3:if node.type = max then
4:score ← -∞
5:else
6:score ← +∞
7:for i ← 1 to node.branch.length
8:new_node ← Traverse(node, node.branch[i])
9:value ← MiniMax(new_node)
10:if node.type = max then
11:if value > score then
12:score ← value
13:else
14:if value < score then
15:score ← value
16:return score 上述伪代码中,结点node各自的有种类(max或者m