第5章 對抗搜尋

2022-09-12 12:06:23 字數 3350 閱讀 8375

競爭環境中多個agent之間的目標是有衝突的,稱為對抗搜尋問題,也稱為博弈(games)。

有完整資訊的、確定的、輪流行動的兩個遊戲者的零和遊戲。(可為多人)

難於求解

注重時間效率

s0初始狀態

player(s)誰行動

action(s)狀態s下的合法移動集合

result(s,a)轉移模型

terminal-test(s)終止測試,遊戲是否結束

utility(s,p)效用函式

tic-tac-toe遊戲,結點為狀態,邊是移動。max與min輪流下棋,葉子結點上的數字是該終止狀態下對max來說的效用值,值越高對max越有利,對min越不利。

思想採用遞迴演算法自上而下一直前進到樹的葉節點,然後隨著遞迴通過搜尋樹把極小極大值回傳。

在終止狀態結點,結點返回效用值;

當輪到max時,結點返回子節點中效用值的極大值;

當輪到min時,結點返回子節點中效用值的極小值。

偽**

action minimax_decision(state)

value max_value(state)

value min_value(state)

效能

完備性

不一定完備,在狀態空間有限且避免重複的情況下完備。

最優性

最優。時間複雜度

\[o(b^m)

\]空間複雜度

\[一次性生成所有後繼:o(bm)

\]\[每次生成乙個後繼:o(m)

\]樹的最大深度是m,每個結點合法的行棋有b個。

用向量來來取代單一值,這個向量代表從每個人角度出發得到的狀態效用值。

可能出現聯盟與破壞聯盟的情況。

思想剪掉那些不可能影響決策的分支。

α=到目前為止路徑上發現的max的最佳選擇;

β=到目前為止路徑上發現的min的最佳選擇;

搜尋中不斷更新α與β的值,當某結點的值比當前的α或β更差時剪裁此結點剩下的分支。

舉例

特點α-β剪枝的效率很大程度上依賴於檢查後繼狀態的順序。

\[最佳剪枝情況下可以將時間複雜度從極大極小演算法的o(b^m)減少到o(b^ );

\]\[採用隨機順序檢查的總結點數大約是o(b^)。

\]搜尋空間巨大的問題,通過啟發式評估函式eval(s)將非終止結點轉變為終止結點與截斷測試代替終止測試來解決。

定義準則

對於終止狀態的排序應該和效用函式一致

計算時間不能太長

對於非終止狀態應該和取勝機率相關

評估值計算

期望評估函式的效率值可能被對映到多個終止狀態,用終止狀態的概率來表示當前狀態的期望值。

eg.

假設根據經驗,當出現兩個兵對乙個兵的狀態,72% 獲勝(效用+1); 20% 輸(效用0), 8% 平局(效用1/2)。

期望值為:0.721+0.20+0.08*(1/2)=0.76

線性加權評估

\[eval(s) = w_1f_1(s) + w_2f_2(s) + … + w_nf_n(s)

\]\[w_i為權值,f_i為相應特徵值

\]eg.

\[對西洋棋來說,f_i可能是棋盤上每種棋子的數目,w_i可能是每種棋子的價值

\]ps

線性評估假定特徵之間是獨立的,然而實際中特徵之間具有關聯性,比如西洋棋在殘局中2個象比單個象的價值要高出2倍。

特徵與權值來自於規律,這些規律可能要通過機器學習技術來確定評估函式的權值。

思想在α-β剪枝演算法中,將terminal-test 被替換程cutoff-test(state,depth),utility被替換程eval(state)。

cutoff-test(state,depth)截斷策略:

當大於固定深度時返回true;

根據遊戲允許的時間來決定深度。

特點評估函式的近似性會使截斷搜尋可能導致錯誤

評估函式只適應於靜態棋局,即不會很快出現大搖擺的棋局。

難以消除地平線效應(對方招數導致我方嚴重損失並且理論上基本無法避免),固定深度搜尋會相信這些延緩招數能阻止實際無法避免的困境。

【單步延伸策略可以用來避免地平線效應,發現並記住一種「明顯好於其他招數」的招數,當搜尋達到指定深度界限,若單步延伸合法,則考慮此招。由於單步延伸很少,所以不會增加太多開銷】

思想無需考慮直接剪枝一些子結點。

屬於柱搜尋的一種。柱搜尋:每一層只考慮最好的n步棋

特點可能導致最佳的行棋被剪掉

思想首先淺層搜尋計算結點的倒退值v,再根據經驗來估計深度d上的值是否在(α,β)範圍外。

特點使用先驗的統計資訊在一定程度上保護最佳行棋不被剪枝掉

開局時的行棋大多依賴於人類的專業知識;

接近尾聲的棋局可能性有限;

在開局和尾聲階段可以通過查表的方式來進行行棋。

局面沒有明確的極大極小值,只能計算棋局的期望值:機會結點所有可能結果的平均值。

將確定性博弈中的極小極大值一般化為包含機會結點的博弈的期望極大極小值。

評估函式應該與棋局獲勝的概率成線性變換

時間複雜度

\[o(b^mn^m)

\]棋子可以移動但對方看不見棋子是什麼

使用信念狀態

隨機部分可觀察

需要概率推算來制定決策

歡迎補充與指正,感謝點讚o( ̄▽ ̄)d

第五章 對抗搜尋

博弈,即對抗搜尋問題,指在競爭環境中,每個agent的目標間是衝突的.零和遊戲,遊戲結束時效用值總是相等且符號相反.剪枝 在搜尋樹中忽略不影響最後決定的部分.啟發式的評估函式 在不進行搜尋的情況下估計某狀態的效用值.s0 初始狀態 player s 定義此時誰行動 actions s 返回此狀態下的...

5 第 5 章 迴圈

1.可以用迴圈來驗證輸入。在迴圈前的第一次讀取操作,稱為啟動讀取,如果後續還需要繼續讀取,則語句應該在迴圈中。2.在實際程式設計應用中,不建議在 cout 語句中放置遞增或遞減運算子 因為容易出錯 3.需要計數時使用計數器,需要累計彙總時使用累加器。4.標記符號是乙個特殊值,指示著值列表的結尾。一般...

實用演算法實現 第 15 篇 對抗搜尋

人工智慧,一種現代方法 對於對抗搜尋的介紹非常好。極大值極小值策略是一種最優策略。當對手不犯錯誤時,最優策略能夠導致至少不比其它任何其它策略差的結果。需要注意的是,最優策略針對的是最優化對手 如果使用極大值極小值策略對付非最優化對手,可能沒有使用其它策略好,但是使用那些策略對付最優化對手必定要比極大...