問題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;
}
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