極大極小博弈樹 轉)

2021-04-23 09:23:13 字數 2337 閱讀 8631

2023年11月15日 星期六 11:03

這篇文章將介紹一種對於所有的gameai(遊戲智慧型)開發來說都非常重要的資料結構。對於幾乎每乙個棋類博弈遊戲程式來說,極大極小樹( the minimax tree)都是其中的核心。

極大極小博弈樹(minimax game tree,簡寫為mgt,譯者注)用於編寫電腦之間的遊戲程式,這類程式由兩個遊戲者輪流,每次執行乙個步驟。當然,所有可能的步驟構成了乙個樹的結構。例如下面的圖就是乙個mgt,它表示了tic-tac-toe遊戲的前兩步所有可能的步驟。

(tic-tac-toe是一種簡單的九宮格遊戲,玩法是使用3*3的9個方格仔,每人下一次看誰先連成一行3個,以下稱ttt遊戲,譯者注)

我們注意到這棵樹不同於其他的樹結構,比如二叉樹,2 3樹以及堆樹(heap tree,譯者注),根據遊戲規則,乙個mgt節點上可能有很多個子節點。

圖中的樹有**,不過在編碼中,極大極小樹的級通常被稱作層(級:level,層:ply,譯者注)。在每一層中,「轉換」開關指向另乙個遊戲者。兩個不同的遊戲者通常被稱作馬克思(max,即最大,譯者注)和公尺恩(min,即最小,譯者注)。(下面將簡短的解釋這些陌生的名稱)

對一棵完整的極大極小樹來說,計算機能夠向前遍歷每一步,直到找到最佳步驟為止。當然,正如你在例圖中看到的那樣,僅僅幾個步驟也會令這棵樹變得異常龐大,對於一台普通的計算機來說,**五個步驟就足以令其迅速崩潰。因此,對於像西洋棋和圍棋這樣的大型博弈遊戲來說,電腦程式不可能遍歷所有結果,而是僅僅通過最上層的幾個步驟來判斷勝負。此外,程式設計師們也提出了很多演算法和技巧來減少節點數目,比如阿爾法 貝塔剪枝演算法(alpha-beta pruning),negascout搜尋演算法以及mtd(全稱是:memory enhanced test driver,即記憶增強測試驅動,譯者注)方法。

mgt當然不能**所有計算機遊戲的可能步驟。比如撲克遊戲,計算機在判斷對手動向的時候將會非常吃力,因為因為計算機不能看到對方手中的牌。因此,僅僅對於兩個遊戲者都能看到全部博弈形式的遊戲來說,mgt才是最好的選擇。這些遊戲包括國際跳棋、五子棋、西洋棋和圍棋,這些遊戲被稱作完全資訊博弈(原文為games of perfect information,譯者注)。

極大極小博弈樹是因描繪這種結構的一種簡單演算法而得名。我們來對ttt遊戲的結果分配一下分值。如果叉(x)獲勝,則分值為1。如果圈(o)獲勝,則分值為-1。現在,叉將試圖獲得最大化的分值,而圈將試圖最小化分值。於是,第一位研究此問題的研究者決定把遊戲者叉命名為馬克思,並且把遊戲者圈命名為公尺恩。因此,這個完整的資料結構就被命名為極大(max,馬克思,譯者注)極小(min,公尺恩,譯者注)博弈樹。

極大極小邏輯也被用於其它博弈,比如西洋棋中。然而,在這些更複雜的博弈中,程式僅僅能搜尋極大極小樹中的一部分;由於樹太過龐大,程式往往不能搜尋到博弈最終的結局。計算機一般是搜尋某幾個節點之後就停止了。然後程式在某個節點上評估博弈的勝負,這些評估結果被換算成博弈形勢的分值。如果計算機是馬克思一方,程式會試圖使博弈形勢的分值最大化,同時為獲勝結局(將死)賦最大值(比如說這個值是一百萬)。如果計算機是公尺恩一方,顯然程式將試圖最小化分值,並為獲勝結局賦最小分值(例如負一百萬)。遊戲雙方將在兩個最大值之間博弈,數值越接近哪一方則哪一方獲利(象不象拔河?譯者)。

極大極小演算法背後的策略假定參與博弈的遊戲者都盡自己最大的努力獲得好結果。因此,無論對方選擇有利或有害的步驟,計算機都將會根據對手的著法選擇最於己有利的步驟。

這個簡單淺顯的概念就是極大極小樹的最大奧妙。比如,對馬克思的程式來說,無論公尺恩怎麼做,最佳的步驟或步驟序列一定會得到最高分值的結果。而公尺恩顯然將選擇那些讓它獲得最低分值的結果。

從某種意義上說,葉子節點(the bottom nodes,最下層節點,譯者注)是唯一需要評估位置分值的節點,因為它們代表最終的結局。比如在馬克思的博弈變化中,葉子節點始終處在同一位置。程式將假定公尺恩將從可能的步驟中選擇最低分值的步驟行動,那麼任何馬克思節點的最大最小值都會等同於公尺恩節點的最低分值子節點。

最後,像人類的棋類遊戲一樣,程式的能力高低取決於計算機對所處形勢的評估能力,以及程式搜尋的深度。一位西洋棋大師對形勢的估計誤差要大大小於餘位業餘選手,而且象棋大師對於棋局的**也遠比一般人更遠。計算機同樣也可以對棋局做出很長遠的**,並且它著棋不會失誤,因為它會看到對手由於失誤而做出的回應。

有很多演算法可以幫助極大極小演算法提高搜尋效率。其中一種被稱作阿爾法 貝塔剪枝演算法。在使用這種演算法進行的搜尋中,計算機所要搜尋的節點數大約只是不使用這種技術所需搜尋節點數的平方根那麼多。也就是說,如果程式原來需要搜尋四百個節點,使用新的演算法後它只需要搜尋二十個。

其它的一些工具包括置換表(原文為transposition table,譯者注),記載搜尋結果的紀錄被放在一張可以快速訪問的很小的表中。通常來說,不同的步驟序列可能達到相同的位置(結果)。這兩個位置(結果)就可以互換。該錶可以幫助計算機認識目前棋局的形勢,因為它已經付出了記憶體訪問時間的代價對其進行了審查。

博弈基礎 極大極小搜尋

計算機博弈 也稱機器博弈 是乙個挑戰無窮 生機勃勃的研究領域,是人工智慧領域的重要研究方向,是機器智慧型 兵棋推演 智慧型決策系統等人工智慧領域的重要科研基礎。機器博弈被認為是人工智慧領域最具挑戰性的研究方向之一。機器博弈的核心技術是博弈搜尋演算法 零和博弈 zero sum game 又稱零和遊戲...

搜尋 博弈,極小化和極大化

這篇部落格要討論乙個問題,就是如何讓計算機下棋?有如下三種形式 1.同人類的做法一樣,分析局勢,和將帥的安全性,這裡會有一些分析策略,還有一些戰術,這些混合在一起,最終得到下一步要走哪.不過很遺憾的是,如今的程式都不知道如何包含這類東西.2.使用 if then 結構 以這種結構,如果第一步走什麼,...

極大極小搜尋

極大極小搜尋演算法 用於圍棋,五子棋,象棋等棋類,結果有三種可能 勝利 失敗和平局。理論上可以窮舉所有的走法,這就需要生成整棵博弈樹。實際上不可行。因此搜尋時可以限 定博弈樹的深度,到達該深度則不再往下搜,相當於只往前看 n 步。如果題意是求出必勝,必敗,必和等,那麼肯定是全部搜完整一棵搜尋樹,此題...