博弈論的納什平衡的兩個例題

問題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的時候是不太會讓我們去求納什平衡的...記一下吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章