problem
洛谷链接
solution
纳什均衡 是博弈论中一种解的概念,它是指满足下面性质的策略组合:任何一位玩家在此策略组合下单方面改变自己的策略,其他玩家策略不变,都不会提高自身的收益。
一个策略组合被称为纳什均衡当且仅当每个博弈者的均衡策略都是为了达到自己期望收益的最大值。
纳什博弈是一种非合作博弈均衡。
通俗地讲,是个人主义,只考虑增加自身的收益而忽略甚至往往会损害团队性收益。
以上只是本题的题目背景。
首先要明确,当不知道桌上牌真的是什么的时候,是不会直接猜测的。
因为这样会直接结束游戏。或者说,如果现在就猜,假设对方手中还有 kkk 张牌未知,获胜的概率只有 1k+1\frac 1 {k+1}k+11,不如让给对方猜。到游戏最后胜败概率都是 12\frac 1 221。
定义 f(x,y):f(x,y):f(x,y): 先手有 xxx 张牌对方未知,后手有 yyy 张牌对方未知,此时先手的收益 / 获胜概率。
注意:全文的“先手”仅指当前局面谁是操作者,是相对而言的。并非游戏一开始的指定先后手。
这道题很切合实际,因为先手的策略是存在欺诈的,而后手也有是否相信的考虑。所以涉及到更多情况的讨论。
-
先手老实:询问的是不属于自己手上的牌,即后手的 yyy 张牌以及桌上的 111 张牌。
-
后手相信。
-
先手询问的牌有 yy+1\frac {y}{y+1}y+1y 概率后手有,那么后手将会明牌,未知牌数 −1-1−1。
交换后的先手/下一个局面先手 获胜概率就为 f(y−1,x)f(y-1,x)f(y−1,x)。
则当前局面先手获胜概率即为 yy+1(1−f(y−1,x))\frac{y}{y+1}\Big(1-f(y-1,x)\Big)y+1y(1−f(y−1,x))。
-
先手询问的牌有 1y+1\frac 1{y+1}y+11 概率后手没有。
那么因为相信先手,后手就会以为这张牌先手也没有,就只能是桌上的牌了。
下一局直接猜,猜对了。
当局的先手就输了。收益为 0⋅1y+10·\frac{1}{y+1}0⋅y+11。
总收益 :yy+1(1−f(y−1,x)):\frac{y}{y+1}\Big(1-f(y-1,x)\Big):y+1y(1−f(y−1,x))。
-
-
后手不信。
-
先手询问的牌有 yy+1\frac {y}{y+1}y+1y 概率后手有。
收益还是 yy+1(1−f(y−1,x))\frac{y}{y+1}\Big(1-f(y-1,x)\Big)y+1y(1−f(y−1,x))。
-
先手询问的牌有 1y+1\frac 1{y+1}y+11 概率后手没有。
因为不信,后手就不会猜这张牌,并且认为先手爆了一张明牌。
但是后手也不会丢牌,所以在先手这里就真的知道桌上牌了。
下一轮后手随便操作后又交换回来顺序,先手就会直接叫牌。
收益为 1⋅1y+11·\frac{1}{y+1}1⋅y+11。
总收益 :yy+1(1−f(y−1,x))+1y+1:\frac{y}{y+1}\Big(1-f(y-1,x)\Big)+\frac{1}{y+1}:y+1y(1−f(y−1,x))+y+11。
-
说明:因为先手叫的是后手手中明确有的牌,不管后手信不信,都是一样的局面(后手明牌了一张),一样的收益。
这里只是硬性分类讨论而言。毕竟在现实中如果先手叫的牌是后手有的,这还能说不信吗。
-
-
先手狡猾:欺诈后手,即询问的是一张自己手里有的牌。
-
后手相信。
后手会直接认为这张牌就是桌上的牌,因为自己没有,而先手是老实人。
后手下一局做先手就会直接猜测,结果猜错。
那么下一局的后手,即本局的先手,就会获得胜利。
收益为 111。
-
后手不信。
相当于先手自爆了一张明牌,后手接下来面临的局面胜率就是 f(y,x−1)f(y,x-1)f(y,x−1)。
所以本局先手的胜率为 1−f(y,x−1)1-f(y,x-1)1−f(y,x−1)。
-
我们可以形象地做个表格出来看。
后手选择/先手收益/先手操作 | 先手老实 | 先手狡猾 |
---|---|---|
后手相信 | yy+1(1−f(y−1,x))\frac{y}{y+1}\Big(1-f(y-1,x)\Big)y+1y(1−f(y−1,x)) | 111 |
后手不信 | yy+1(1−f(y−1,x))+1y+1\frac{y}{y+1}\Big(1-f(y-1,x)\Big)+\frac{1}{y+1}y+1y(1−f(y−1,x))+y+11 | 1−f(y,x−1)1-f(y,x-1)1−f(y,x−1) |
假设先手老实操作的概率为 ppp,狡猾操作的概率为 1−p1-p1−p。
令 a=yy+1(1−f(y−1,x)),b=1,c=a+1y+1,d=1−f(y,x−1)a=\frac{y}{y+1}\Big(1-f(y-1,x)\Big),b=1,c=a+\frac{1}{y+1},d=1-f(y,x-1)a=y+1y(1−f(y−1,x)),b=1,c=a+y+11,d=1−f(y,x−1)。
根据纳什博弈的定义,后手怎么操作的对应收益是不变的,先手也不会改变。
即:p∗a+(1−p)∗b=p∗c+(1−p)∗d⇒p=d−ba−c+d−bp*a+(1-p)*b=p*c+(1-p)*d\Rightarrow p=\frac{d-b}{a-c+d-b}p∗a+(1−p)∗b=p∗c+(1−p)∗d⇒p=a−c+d−bd−b。
先手收益为 p∗a+(1−p)∗bp*a+(1-p)*bp∗a+(1−p)∗b。
code
#include <bits/stdc++.h>
using namespace std;
#define double long double
#define eps 1e-10
#define maxn 1005
int n, m;
double f[maxn][maxn];double dfs( int x, int y ) {if( ! x ) return 1.0 / (y + 1);if( ! y ) return 1.0;if( f[x][y] ) return f[x][y];double a = y * 1.0 / (y + 1) * (1 - dfs( y - 1, x ));double b = 1.0;double c = 1.0 / (y + 1) + a;double d = 1.0 - dfs( y, x - 1 );double p = (d - b) / (a - c + d - b);return f[x][y] = p * a + (1 - p) * b;
}int main() {scanf( "%d %d", &n, &m );printf( "%.10Lf %.10Lf\n", dfs( n, m ), 1 - dfs( n, m ) );return 0;
}