博弈问题的边边角角
来源:互联网 发布:淘宝卖洗衣液什么规则 编辑:程序博客网 时间:2024/05/16 00:41
(可能顺序很乱,但为了保持原状,我不做修改了..这就是我体验博弈时的顺序)
分析局面,而不是谁胜谁负!!!
Terminal局面:无法做出move的局面
Previous局面:无论做出哪种move,都会造成N局面的局面
P-->当前的前人会获胜,所以当前败
Next局面:至少有一个move可以造成P局面
N-->当前胜
T局面是P还是N要根据规则判断(无法移动则输:T=P;无法移动则赢,或者说最后取子则输:T=N)
N必胜的方法:每次移动到P即可,就可以保证必胜
普通规则下:
g(x)=mex{g(y)|y属于x的后继},x=T,g(x)=0(递归的边界情况)
x为T时,g(x)=0
g(x)=0 ==> P
g(x)!=0 ==> N
g(x)的物理意义:g(x)==0,表示x的后继局面中没有P局面,那么当前局面是P局面,表示无法必胜;当g(x)>0时,表示至少有一个后继局面为P局面,证明当前局面为N,必胜
证明步骤:1.证明T局面满足;2.证明对P局面而言,确实没有能造成N局面的移动;3.证明N局面至少有有一种移动造成P局面
注意,证明过程中一般涉及到量的减少,可能要用到异或的性质,分析量的变化
异或性质:
a^a=0(a本身是a的逆)
a^0=a(0是单位元)
NIM和定理:
如果一个游戏由多个平行游戏组成,我们可以分别计算其g(x),而G(x1,x2,..,xn)=g(x1)^g(x2)^...^g(xn).这样就避免了在计算G(x1,x2,..,xn)的时候需要把所有的情况都遍历一遍G(x1,x2,..,xn)=g(x1)*x2*..*xn * x1*g(x2)*..xn..
这样就把一系列乘法阶的复杂度,降低为加法阶
NIM的sg
g(x)=a1^a2^..^an
Subtraction的sg
g(x)=x(%m+1)(m是最大的数)
- 博弈问题的边边角角
- C++的边边角角扫盲
- C++的边边角角扫盲
- Sql server 日记 (分区表的边边角角)
- 减少AWS费用的一些边边角角
- 有关博弈的问题
- 博弈问题的理解
- 一个有意思的博弈问题
- 三个经典的博弈问题
- 三个经典的博弈问题
- 分钱币的博弈问题
- 博弈问题的初步学习
- 最简单的博弈问题
- 博弈树取球博弈问题
- Android边边角角
- Android 边边角角
- Activity 边边角角
- 博弈问题
- CakePHP: 使用自定义session handler或者使用memcache等cache方式处理Session时会出错
- GridView行中按钮的使用
- CakePHP: HTTPS HTTP页面跳转导致登录信息丢失
- 庆祝浙大ArcOfDream夺冠
- 博弈问题的理解
- 博弈问题的边边角角
- JAVA初学者推荐《Java开发实战经典》李兴华著
- 搜索问题的理解
- Eclipse快捷键指南(表格)
- DP算法的理解
- 贪心的理解
- 现在我怎么做题
- 无限蛋痛
- TIFF图像文件格式详解(5)