博弈论的纳什平衡的两个例题

问题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的时候是不太会让我们去求纳什平衡的...记一下吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章