博弈小结
来源:互联网 发布:windows ios 映像 编辑:程序博客网 时间:2024/05/16 02:08
1.巴什博弈:
有n粒石子,每次最多取m个,俩个人都不傻,问谁会胜;
当n=m+1时,先手(先取的那一个)必败,因为他最少取一个,剩下的数量肯定是不大于m的,那么第二个人可以一次性取完。
依照这个原理,在取的过程中,可以每次都给对手恰好留够(m+1)个石子,这时对方一定取不完,但是己方一定可以取完(只要不傻)。也就是k=n%(m+1),若k不等于0,说明你下一步可以把k*(m+1)之外的取光,留给对手(m+1)的倍数个石子,必赢。
另一种情况,就是局势已经是(m+1)的倍数个石子了,只要对方不傻,每次都给你留(m+1)的倍数个,你必输。
2.尼姆博奕:
在了解尼姆博弈之前,先了解一下二进制中的异或运算。
所谓异或运算,就是在所有数均化为二进制之后的一种运算,并且是八位,正数不够补零,(负数不够补一),
举个例子:4的二进制是100,八位之后便是00000100;在此基础上介绍异或运算,异或运算又名(+),为什么这样说呢,因为它只加却不进位,比如7异或3,即111(+)011,结果是100,就是1(+)1=0,1(+)0=1;独特的加法运算。
接下来便是尼姆博弈,有n堆石子,每次可以取一堆,或者是一堆中的一部分,谁先取完谁胜。
这里提到奇异局势,就是无论哪一方面对奇异局势最终都会败。比如当n=3时,描述其中一种奇异局势(0,0,0);
是不是谁面对它都必败(嘿嘿,咱继续),(0,x,x)也是,信不?我取x,他取x,然后我败,,也就是说,谁面对奇异局势,必败。
这个时候,为了胜出,所以就要千方百计的让对方面对奇异局势。
也就是你要在这堆里取某个特定的数目,使其变为奇异局势。假设这个数目为p;
怎么求p呢,这前人的智慧就显得至关重要了,
尼姆老大爷就给我们总结了:
任何奇异局势(a,b,c)都有a (+)b(+) c =0。假设要在c中取石子,那就p=c--a(+)b,(如果c<p,那就换从a或者b中取呗),在此之前,有必要了解一点,一个数异或它自身,结果是0.
3.斐波那契博弈:
有一堆个数为n的石子,游戏双方轮流取石子,满足:
1)先手不能在第一次把所有的石子取完;
2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。
约定取走最后一个石子的人为赢家,求必败态。
必败n必须符合斐波那契;#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<string> #include<map> #define LL long long #define N 1000000 #define inf 1<<20 using namespace std; int fib[50]; int main(){ fib[0]=1;fib[1]=2; for(int i=2;i<45;i++) fib[i]=fib[i-1]+fib[i-2]; int n; while(scanf("%d",&n)!=EOF&&n){ int i=0; for(i=0;i<45;i++) if(fib[i]==n) break; if(i<45) puts("Second win"); else puts("First win"); } return 0; }
4.威佐夫博弈:
有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜.
重点:
奇异局势下先手必败,非奇异局势下先手必胜;
类似于尼姆博弈的奇异局势,(a,b),怎么判断是不是奇异局势呢?
若两堆物品个数分别为a,b(a<b),则k=b-a,再判断a是否等于[(b
-a)*( √5+1)/2] 即可得知是否是奇异局势。
5.Nim Staircase博奕:
这个问题是尼姆博弈的拓展:游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n。游戏者在每次操作时
可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上(0号)的人获胜。
算法:
将奇数楼层的状态异或,和为0则先手必败,否则先手必胜:
不会证明。。。。。。。(TJT).....
- 博弈小结
- 博弈小结
- 博弈小结
- 博弈小结
- 博弈小结
- [博弈小结]
- 博弈知识小结
- 博弈(个人小结)
- 基础博弈小结
- 博弈题算法小结
- 简单博弈小结
- 博弈小结(备忘录)
- 博弈入门小结2
- 博弈初级小结
- 博弈类题目小结(
- 博弈类题目小结
- 组合博弈入门小结
- ACM博弈学习小结
- 隐式Intent 使用的之一
- 《你越脆弱,人心越恶-雾满拦江》
- 视音频编解码的基本原理
- mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.
- android UI编程
- 博弈小结
- 看到github上一个project,问自己七个问题
- 数据库原理相关知识
- Android应用开发之图片(Bitmap)压缩(三)---------采样率压缩
- javascript的贪吃蛇游戏
- [51nod1150]Logarithm
- iOS 去掉tabBar.item的角标
- 自定义Log日志
- test