1. 程式人生 > >極大極小演算法原理

極大極小演算法原理

參考書籍《人工智慧基礎教程》

該演算法的搜尋策略是考慮雙方若干步之後,從可能的步中選擇相對較好的走發來走。

以MAX表示程式方,MIN表示對手方,P表示局勢,f(P)是根據當前局勢做出的估計函式。

F(p)>0表示對MAX有利的局勢

F(p)<0表示對MIN有利的局勢

F(p)=0表示局勢均衡

該演算法的基本思想是:

(1)      輪到MIN走時,MAX應考慮最壞的情況,也即f(p)取極小的情況

(2)      輪到MAX走時,MAX應考慮最好的情況,也即f(p)取極大的情況

(3)      當評價往回倒推,相應於兩位棋手的對抗策略,不同層交替的使用(1)(2)兩種方法向上傳遞倒推值。

演算法優化

α-β剪枝演算法

在上述的極大極小演算法中,MIN和MAX過程將所有的可能性省搜尋樹,然後再從端點的估計值倒推計算,這樣的效率非常低下。而α-β演算法的引入可以提高運算效率,對一些非必要的估計值進行捨棄。其策略是進行深度優先搜尋,當生成結點到達規定深度時,立即進行靜態估計,一旦某一個非端點的節點可以確定倒推值的時候立即賦值,節省下其他分支拓展到節點的開銷。

剪枝規則:

(1)      α剪枝,任一極小層節點的β值不大於他任一前驅極大值層節點的α值,即α(前驅層)≥β(後繼層),則可以終止該極小層中這個MIN節點以下的搜尋過程。這個MIN節點的倒推值確定為這個β值。

(2)      β剪枝,任一極大層節點的α值不小於它任一前驅極小值層節點的β值,即β(前驅層)≤α(後繼層),則可以終止該極大值層中這個MAX節點以下的搜尋過程。這個MAX節點的倒推值確定為這個α值。