小小的学习一发博弈

一.  巴什博奕(Bash Game):

A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30。这应该是最古老的关于巴什博奕的游戏了吧。

其实如果知道原理,这游戏一点运气成分都没有,只和先手后手有关,比如第一次报数,A报k个数,那么B报5-k个数,那么B报数之后问题就变为,A和B一块报数,看谁先报到25了,进而变为20,15,10,5,当到5的时候,不管A怎么报数,最后一个数肯定是B报的,可以看出,作为后手的B在个游戏中是不会输的。

那么如果我们要报n个数,每次最少报一个,最多报m个,我们可以找到这么一个整数k和r,使n=k*(m+1)+r,代入上面的例子我们就可以知道,如果r=0,那么先手必败;否则,先手必胜。

巴什博奕:只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜

二.  威佐夫博弈(Wythoff Game):

有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。

直接说结论了,若两堆物品的初始值为(x,y),且x<y,则另z=y-x;

记w=(int)[((sqrt(5)+1)/2)*z  ];

若w=x,则先手必败,否则先手必胜。

三.  尼姆博弈(Nimm Game):

尼姆博弈指的是这样一个博弈游戏:有任意堆物品,每堆物品的个数是任意的,双方轮流从中取物品,每一次只能从一堆物品中取部分或全部物品,最少取一件,取到最后一件物品的人获胜。

结论就是:把每堆物品数全部异或起来,如果得到的值为0,那么先手必败,否则先手必胜。

四.  斐波那契博弈:

有一堆物品,两人轮流取物品,先手最少取一个,至多无上限,但不能把物品取完,之后每次取的物品数不能超过上一次取的物品数的二倍且至少为一件,取走最后一件物品的人获胜。

结论是:先手胜当且仅当n不是斐波那契数(n为物品总数)

时间: 2024-08-08 10:14:41

小小的学习一发博弈的相关文章

小小的学习FPGA建议

学习FPGA,一点小小的 建议或者总结分享. 语法层面搞懂阻塞和非阻塞语句,以及Verilog语言的时序描述方法,把自己想象成编译器,尝试去编译自己写的Module,不断总结自己设计的逻辑会综合出怎么样的电路. 搞明白同步和异步,最后,一定要熟练地掌握状态机的设计.这是最初级也是最基本的要求. 有人说语法太简单了,这是非常片面的说法,或者非常浅显的说法,虽然verilog类似C语言,但本质上区别很大.Verilog语言并不简单,尤其Module之间时序不能同步,本该同相的信号输出有相位差的时候,

算法学习---一个博弈问题

引用自matrix67的博客. 让我们来玩一个游戏.下面有五行石子,白色的石子都是我的,黑色的石子都是你的.我们轮流拿走一个自己的石子,并且规定如果一个石子被拿走了,它后面的所有石子都要被扔掉.谁先没有拿的了,谁就输了. ○●●○●●○●●○●○○●○●●○●○○○○●●●○●●●● ..比如说,如果你先走的话,你可以把第四行的第三个石子拿走,按规定第四行将会只剩下前面两个石子: ○●●○●●○●●○ ●○○●○●●○● ○○○○ ●● ● 现在轮到我走了.我可以拿走第二行倒数第二个石子,于是整

【学习】博弈相关:Nim

Java EE学习--Quartz基本用法

新浪博客完全不适合写技术类文章.本来是想找一个技术性的博客发发自己最近学的东西,发现博客园起源于咱江苏,一个非常质朴的网站,行,咱要养成好习惯,以后没事多总结总结经验吧.很多时候都在网上搜索别人的总结,我自己也总结些东西,或许多多少少能帮得上别人. 首先提到的是Quartz,一个开源的定期执行计划任务的框架.其实我内心好奇这个框架很久了,像那些能定时修改数据库数据,定时分配任务的功能一直觉得很神奇.心动不如行动,今天我就小小的学习了一下用法,力求言简意赅,大家都懂的我就不说了. 第一步:下载Qu

HDU 5011 Game(Nim博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5011 贴一发博弈的链接的链接:http://blog.csdn.net/u012860063/article/details/21816635 Problem Description Here is a game for two players. The rule of the game is described below: ● In the beginning of the game, ther

被诟病不实用的超级计算机,在深度学习时代会改变吗?

在中学课本里,我们都学到过"超级计算机"这个概念,在印象里它通常和神州五号.航空母舰等等高科技设备出现在同一个章节,属于国家科研能力的体现,更是在国际科技战备的赛点. 现在这么多年过去了,一回神中国超级计算机的代表作已经从天河进化成了神威·太湖之光,并且通过对地震.海浪等等自然现象的精确模拟两次获得了戈登贝尔奖. 据称,戈登贝尔奖是超算领域的最高奖项,在奖项评选标准中更多会考虑到超算项目的实际应用性.过去三十年中,这一奖项一直被美国和日本垄断,直到最近两年才被中国蝉联. 说实在的,大多

20172328《程序设计与数据结构》第七周学习总结

学号20172328<程序设计与数据结构>第七周学习总结 第九章教材学习内容总结 1.继承的概念: 继承是在父类和子类之间建立一种"是"的关系. 用于派生新类的原始类称为父类.超类或基类,被派生出的类就称为子类或者亚类. 2.继承具有单向性.java中用extends来表示新类由现有类派生. 3.protected修饰符:当变量声明为protected可见性时,子类就可以引用它,并且使父类保持了一定的封装性. (在UML图中,用#表示protected可见性.) 4.sup

cumt周练题解

cumt2017春季--周练(一) A.CodeForces - 785A 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n; 6 cin >> n; 7 map<string, int>ma; 8 ma["Tetrahedron"] = 4; 9 ma["Cube"] = 6; 10 ma["Octahedron&quo

10+年程序员总结的20+条经验教训

开发 1.从小事做起,然后再扩展 无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止.我从来没有妄想过能够一步登天.相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中. 我很喜欢John Gall的这句话:"复杂系统总是源于简单系统的演化." 2.一次只改变一件事 当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键.换言之,就是使用短迭代