博弈樹與α-β剪枝


極小化極大算法是一個深度優先搜索算法。我們這里先規定搜索深度為3(實際情況中由於算力的原因必須限制搜索深度)。

雖然α-β剪枝在上文中一直沒有提到,但是看了下面的圖解你自然明白。

  1. 從根節點開始一直搜索到第一個葉節點

  2. 此時我們的搜索深度已經達到了3,所以此時需要調用評估函數,返回局面分,回溯一層。

  3. 仔細思考,如果我們繼續獲得其子節點的局面分,為一個比3要大的值,假設為5,那么當前的父節點必然不會采納5這個值,因為對手希望我們的收益最低。也即得到第一個子節點局面分為3之后,我們就能知道父節點的取值范圍為(-∞, 3]。也就是說,我們的子節點其實是在更新父節點的上界值(越低越好)。這里就是α-β剪枝的一部分了,但是並不是剪枝,而是更新了β的值,也就是上界值。

  4. 鑒於這個父節點的所有子節點都已經被搜索完,我們也就確定了它的收益就是3了,這時候就能修改它的下界為3。

  5. 我們繼續搜索,此時回溯一層,回溯到了根節點。根節點的原本的局面分取值范圍是(-∞, +∞),而現在我們找到了它的一個子節點局面分是3。根節點與其子節點不同,是極大層節點,是我們的回合,我們總希望收益越大越好,所以這里子節點會更新極大層節點的下界,也即α值。

  6. 繼續進行深度優先搜索,這時我們搜索到根節點第二分支的第一個子節點,注意我們帶着根節點的范圍進行搜索,根節點的范圍被傳遞給他的第二個子節點。此時搜索深度達到了3,我們調用局面評估算法,假設返回值是2。

  7. 注意,剪枝部分來了。我們知道,當前節點的父節點是一個極小層節點,所以子節點會更新父節點的上界,也就是父節點的局面分取值范圍變成了矛盾區間[3, 2]。這是個明顯矛盾的結論,所以這整個分支我們都可以拋棄,不必繼續搜索了。

這樣我們的搜索就結束了,可以確定我們應該選擇左側局面,並且預期最低收益為3。

總之,只要局面分的取值區間變成了矛盾的,就說明該分支不可能變成最優決策,應當拋棄。

通過維護一個局面分的最佳區間,在搜索過程中對於造成區間矛盾(不可能取到更優值)的情況下剪枝,就是所謂的α-β剪枝。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM