博弈論的納什平衡的兩個例題
問題1:囚徒困境。兩個同夥案犯被抓住了。他們被分別關押起來,不能交流。每個人可以選擇招供或者抵賴,如果兩個人都抵賴,那麼兩個人都將判刑1年;如果兩個人都招供,那麼兩人都判刑6年;如果一人招供一人抵賴,那麼招供者無罪釋放,抵賴者判刑10年。
有人說那簡單啊兩個人都抵賴不就好了嗎?但是事實是多數情況下兩個人都會選擇招供。為什麼呢?
我們列出表如下,其中表的兩個資料表示兩個人會判多少年。(收益是年,越大收益越高)
A/B | 招供 | 抵賴 |
招供 | -6,-6 | 0,-10 |
抵賴 | -10,0 | -1,-1 |
這裡我們不論對A而言還是B而言(對稱),我們都可以發現招供對於抵賴是嚴格優勢的。如果我們是A,如果B選擇招供,那麼我選擇招供會比抵賴收益更高(-6>-10);如果B選擇抵賴,那麼我選擇招供還是會比抵賴收益更高(0>1);所以如果兩個人夠聰明的話,他們都會選擇招供。
現在是下一個問題。現在美女來和你玩個遊戲,兩個人各說一個數字,只能說0或者1。如果兩個人都說1,那麼她會給你3元;如果兩個人都說0,那麼她會給你1元;其餘情況你給她2元。那麼這個遊戲你玩不玩?不玩?你就單身去吧。真正的問題是,這個遊戲公平嗎?
先列個表。
A/B | 0 | 1 |
0 | 3,-3 | -2,2 |
1 | -2,2 | 1,-1 |
這個表代表了所有可能的情況與收益。
如果我們進入遊戲的話,假設遊戲可以無限次進行,我們作為一個聰明的人,必然會有套路的說出自己的數字。具體而言就是說出0或者1的概率。我們有這樣一個概率,對手也會有這樣一個概率。那麼當我們決定這個概率的時候,我們就必須要考慮對手的概率是多少。為了保險起見,我們會採用一個概率假設是x,在這裡我們的收益最大。
首先我們要申明在x下不論對手選擇什麼我們的收益應當是一致的。因為如果我們的x得利於對手的1,那麼必定虧損於對手的0。在不知道對手的前提下,保證相等是最穩妥的。
因此可列出式子 3x + (-2) * (1-x) = -2 * x + 1*(1-x),得x=3/8.有趣的是對於對手的數字概率y來說,概率也等於3/8.那麼就是說如果我們每8局出3次1,5次0的話,收益是最好的。美女將會有優勢。在這裡我們可以寫一段程式碼驗證一下。
#include <iostream> #include <string> #include <cmath> #include <algorithm> using namespace std; int a; int b; void go(int c){ double aa,bb; while(c--){ int d = 0; aa=rand() / double(RAND_MAX); bb=rand() / double(RAND_MAX); if(aa>0.375) d++; if(bb>0.375) d+=2; switch(d){ case 0: a+=3;b-=3; break; case 1: a-=2;b+=2; break; case 2: a-=2;b+=2; break; case 3: a+=1;b-=1; } } } int main() { a=0; b=0; int c= 1000; for(;c<1050;c++){ go(c); cout<<"a="<<a<<" b="<<b<<endl; a=0;b=0; } return 0; }
上面我們對於遊戲第1000-1500局分別進行了結果檢測。結果如下
a=-84 b=84
a=-106 b=106
a=-188 b=188
a=-58 b=58
a=-67 b=67
a=-181 b=181
a=-212 b=212
a=-171 b=171
a=-196 b=196
a=-133 b=133
a=-37 b=37
a=-135 b=135
a=-188 b=188
a=-223 b=223
a=-259 b=259
a=-71 b=71
a=-151 b=151
a=-63 b=63
a=-14 b=14
a=-109 b=109
a=-177 b=177
a=-135 b=135
a=-68 b=68
a=-80 b=80
a=-96 b=96
a=-156 b=156
a=-74 b=74
a=-123 b=123
a=-166 b=166
a=-181 b=181
a=-114 b=114
a=-98 b=98
a=-112 b=112
a=-97 b=97
a=-219 b=219
a=-83 b=83
a=-71 b=71
a=-146 b=146
a=-228 b=228
a=-117 b=117
a=-184 b=184
a=-84 b=84
a=-129 b=129
a=-68 b=68
a=-141 b=141
a=-213 b=213
a=-45 b=45
a=-114 b=114
a=-81 b=81
a=-168 b=168
從上面我們可以看到a永遠是在虧損的。如果範圍是0到50,很可能a還會賺的情況多一點,但是資料量大了以後,其結果就會近似於計算結果。
在這兩個問題裡,不論是第一題的-6,-6還是第二題的3/8,我們都找到了一個納什平衡點。這是博弈論裡很重要的一個概念。在一個博弈過程中,無論對方的策略選擇如何,當事人一方都會選擇某個確定的策略,則該策略被稱作支配性策略。如果兩個博弈的當事人的策略組合分別構成各自的支配性策略,那麼這個組合就被定義為納什均衡。最淺顯的解釋就是,不後悔。也就是說,所有決策者對於在這個點的決策不會有更優解法。
在寫ACM的時候是不太會讓我們去求納什平衡的...記一下吧。