並行博弈樹搜索算法-第1篇 什麼是博弈樹搜索算法



博弈樹的搜索是人工智能領域一個重要的研究課題.許多完全信息的二人零和博弈問題都可以用博弈樹搜索算法解決。

那麼什麼是二人零和博弈問題呢?

有一系列的博弈問題擁有以下性質[1]:

1. 有兩個對抗者:對抗者1和對抗者2.

2. 兩個對抗者交替移動.在博弈的每一個位置,對於正在移動的參與者,都存在有限個可能的移動.

3. 遊戲是決定性的,即遊戲中不存在隨機性.

4. 遊戲是完全信息的,即在任意時刻,博弈雙方知道所處狀態的所有信息.例如國際象棋是完全信息的,因爲博弈雙方知道所有的棋子所處位置,而兩人玩的撲克牌遊戲則是非完全信息的,因爲一個人看不到對方手上的撲克牌.

5. 遊戲有三種可能結局:對抗者1獲勝,對抗者2獲勝,或者平局.有一些遊戲不存在平局,只有兩種可能解決:對抗者1獲勝,或者對抗者2獲勝.由於這個性質,所以一個對抗者的損失對另一個對抗者來說是受益,故此這類的博弈遊戲稱爲零和博弈(zero-sum game).

對於具有上述性質的博弈問題,可以用博弈樹來表示兩個對抗者在博弈過程可能遇到的狀態和移動選擇.在對抗樹(adversarytree)或者博弈樹(gametree)中,兩個對抗者交替移動.處於樹底層的結點稱爲葉結點(leaf node),葉結點的祖先稱爲內部結點(interior node).

使用的[2]術語,一個問題空間(problem space)看以看做是一個狀態(state)和實現狀態之間映射的操作(state)的集合.在博弈問題中,博弈樹上的一個內部結點或葉結點就是一個狀態,一般使用位置(position)來表述.移動(move)就是將一個位置轉化爲其子位置(successor position)的操作.如果一個位置是博弈樹的葉結點,可以用評價者(evaluator)來對其優劣進行評分(evaluate).有了評價者,博弈樹中的每個葉結點都有一對應值(value).

博弈樹搜索或者對抗搜索的目的就是找出博弈樹的值(game tree value).博弈樹的值(gametree value,下面簡稱博弈值)指的是博弈樹中一個子結點的值,該值對於博弈雙方都是最優的.博弈樹的子樹(subtree)在該子樹搜索完成之後也會返回一個博弈值,雖然該值對於該子樹來說最優的,但是對整個博弈樹來說並不是全局最優的.

找出一棵博弈樹的博弈值,可以使用基本的Min-Max方法.爲了減少Min-Max方法需要搜索的結點個數,可以使用Alpha-Beta算法進行剪枝.根據博弈樹的性質,在Alpha-Beta算法的基礎上,各種改進方法被先後提出來.爲了進一步提高搜索速度,Alpha-Beta算法又可以基於不同的思想進行並行化.在博弈樹搜索算法方面,前人做了許多豐富而充滿意義的研究工作.

本文重點在於討論博弈樹並行搜索算法的設計和分析.但是一方面由於博弈樹搜索的並行算法與串行算法的緊密內在聯繫,一方面爲了對博弈樹的搜索問題進行全面和深入的認識,本文不僅將討論並行的博弈樹搜索算法,而且將總結關於博弈樹的串行搜索算法的許多其他問題.從最基本的Min-Max方法開始,到Alpha-Beta串行算法,再到Alpha-Beta算法的並行化,本文沿着博弈樹搜索問題的脈絡,將進行細緻的分析和總結.

本文章歡迎轉載,請保留原始博客鏈接http://blog.csdn.net/fsdev/article

發佈了0 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章