我正在研究一個簡單的井字遊戲問題,我正在努力理解Minimax算法的工作原理。Minimax/Alpha-Beta修剪如何區分較短路徑的優先級?
如果我使用X win的效用函數1,O win爲-1,遊戲進行中爲0,那麼我不明白該算法如何優先考慮較短的解決方案。 據我所知,它首先進入最深的節點,如果事件不是最短路徑,但會導致可能的勝利,那麼它會選擇它。
讓我在示例中解釋。這裏的董事會和X轉的狀態(符號爲https://www.hackerrank.com/challenges/tic-tac-toe):
OX_
_X_
__O
如果我們從左上角位置搜索到右向下,則算法會發現,如果我們把X中的位置( 0,2)因爲它導致了不可避免的贏下一回合:
OXX
_X_
__O
然而,一個更明智的選擇應該是(2,1),並立即中獎位置:
OX_
_X_
_XO
我沒有看到Minimax o怎麼樣r Alpha-Beta修剪會優先考慮這種行爲。
所以我的問題是如果我正確地理解它,以及如何改善它。
更改您的效用函數以考慮圈數。 – Bergi
而不是1爲X贏,使用N爲X贏,其中N是板上留下的空白空間的數量。這樣,選項(2,1)的值爲4,而選項(0,2)的值爲2(因爲只有2個空白空間纔會獲勝)。 – user3386109