人工智慧中的最小最大演算法:
MiniMax演算法的虛擬碼:
function minimax(node, depth, maximizingPlayer) is
if depth ==0 or node is a terminal node then
return static evaluation of node
if MaximizingPlayer then // for Maximizer Player
maxEva= -infinity
for each child of node do
eva= minimax(child, depth-1, false)
maxEva= max(maxEva,eva) //gives Maximum of the values
return maxEva
else // for Minimizer player
minEva= +infinity
for each child of node do
eva= minimax(child, depth-1, true)
minEva= min(minEva, eva) //gives minimum of the values
return minEva
初始呼叫:
Minimax(node, 3, true)
第1步: 在第一步中,演算法生成整個遊戲樹並應用效用函式來獲取終端狀態的效用值。在下面的樹形圖中,下面來看看A是樹的初始狀態。假設Maximizer採用具有最壞情況初始值 = -無窮大的第一次轉彎,並且Minimizer將採用具有最壞情況初始值=+無窮大的下一轉彎。
第2步:現在,首先我們找到Maximizer的效用值,它的初始值是-∞,因此將比較終端狀態中的每個值和Maximizer的初始值,並確定更高的節點值。它將在所有人中找到最大值。
第3步:現在輪到Maximizer,它將再次選擇所有節點的最大值並找到根節點的最大值。在這個遊戲樹中,只有4層,因此我們立即到達根節點,但在真實遊戲中,將有超過4層。
上面就是minimax雙人遊戲的完整工作流程。