納什均衡與極大極小值演算法

2021-10-09 09:56:37 字數 1173 閱讀 4107

對於a,反面收益將大於正面收益:max正 = max反 ; min正 < min反

但對於b而言,正面收益將比反面大:max正 > max反 ; min正 = min反

如果兩個參與者,策略有限個,我們或許還能畫出這支付矩陣,但如果參與者很多?這時候就不能簡單畫支付矩陣,然後乙個個分析了,必要的引入符號表示。

參與者集合n ,策略集合 s,支付函式p,簡記:[n , , ]

以硬幣遊戲為例,我們採取策略的過程中,每個參與者分別比較了在每種策略下的最大收益和最小損失,才做出了選擇。

在我們之前的案例中,雙方是同時採取策略的,並沒有先後順序。如果雙方有順序的話,比如a優先考慮到當前的最大收益,肯定採取擁有最大收益的策略,而輪到b時,b也會時自己收益最大,由於是零和博弈,所以b的收益越大,a的損失就越大,結果就如下:

所以maxmin演算法呢,min是指旗下所有可能選擇中產生的最小收益(損失最大),max指的是旗下所有選擇中最大的收益(損失最小);所以最後的結果是a反面,b出正面

α-β剪枝演算法引用了兩個引數(α,β)來代表(max,min),並且初始的時候max=-∞,min=+∞。

因為需要對max更新,乙個數和max比較,比max大就更新max,如果你max初值不為-∞,如果出現比你初值還小的max,你就沒法更新。min也同理。

現在我們採用深度優先搜尋的順序對博弈樹展開搜尋

這樣搜尋在深度不深的時候也是可行的,但是深度一深,就會有**的搜尋量。α-β剪枝演算法主要就是減去一些沒有必要搜尋的旁枝,那麼什麼樣的旁枝是沒必要搜尋的呢?

在α-β剪枝演算法中,並不是這樣直接傳遞引數的,它用了兩個引數(α,β)來傳遞(max,min)引數,我們可以思考之前的過程:

雖然上面那樣也是可以剪枝的,我們採用的引數傳遞是α傳到β,β傳到α,但是這實際上並沒有同時使用兩個引數。真正的α-β剪枝演算法採用的是α傳到α,β傳到β,剪枝比較的時候,就用α和β進行比較。我們之前是α傳到β,然後β和待更新值比較,真正的α-β剪枝演算法相當於把傳遞的比較值儲存在了不更新的那個引數上:

memset各型別的極大極小值

include int main 較 的原則 加法不爆。極大值 0x7f 較大值 0x3f 較小值 0xc0 極小值 0x80 較 的原則 加法不爆。極大值 0x7f 較大值 0x3f 較小值 0xc0 極小值 0x80 較 的原則 保證一定位精度。7f以上一直到be都是 0 實際上是乙個很小的 1...

python取數作為臨時極大值(極小值)

程式設計中有時候需要乙個初始極大值 或極小值 作為temp,當然可以自定義設定為10000 whatever 不過python中有乙個值可以代替之 在python2.7中可以用這個 不過python3版本就沒得了 import sys sys.maxint 2147483647還可以利用numpy庫...

對人工智慧中「極大極小值」的博弈演算法的資料整理。

對人工智慧中 極大極小值 的博弈演算法的資料整理。1.極大極小演算法被廣泛應用於計算機的棋類遊戲中。不被用於打牌。因為計算機無法看到對手的牌,就很難做出 在棋類遊戲中,雙方的棋子都是明確的,所以計算機可以通過類似深度優先搜尋 遞迴 的方法來求解。也就是the minimax tree。為了優化演算法...