威佐夫博弈

威佐夫博弈是一类经典的博弈问题

有两堆石子,两个顶尖聪明的人在玩游戏,每次每个人可以从任意一堆石子中取任意多的石子或者从两堆石子中取同样多的石子,不能取得人输,分析谁会获得胜利

博弈分析

威佐夫博弈不同于Nim游戏与巴什博奕,它的特殊之处在于不能将两堆石子分开分析。

前辈们在对该博弈游戏做了大量的探索之后最终找到了一些非常有意思的性质

下面的内容不想看的可以跳过直接看结论,其实也没啥乱用233,这部分就是为了拓宽视野的

定义先手必输的局势为奇异局势,前几个奇异局势为\((0,0),(1,2),(3,5),(4,7),(6,10) \dots\)

假设\((x,y)\)为第\(k\)个奇异局势

性质:

  1. \(x\)为前\(1 \dots k\)个奇异局势中没有出现过的最小正整数,\(y=x+k\)

打表找规律

  1. 任何一个自热数都包含在一个且仅有一个奇异局势中

感觉网上证的都不靠谱,那只好让本蒟蒻亲自下手喽

证明这个结论,我们只需要证明两点:(1)任意自然数都出现过(2)任意自然数仅出现一次

对于(1):反证法,设\(v\)这个数没有出现过,那么\(v\)可以做一个新的奇异局势的\(x\)

对于(2): 反证法

假设数\(v\)出现了两次,那么\(v\)一定不是所在奇异局势的\(x\)(\(x\)必须之前未出现)

那么\(v\)只能同时是两个奇异局势的\(y\),又因为任意一个奇异局势的差值不相同,因此\(v\)不可能出现两次

  1. 任何操作都会将奇异局势变为非奇异局势

若取走一堆中的石子,那么两对石子的差值会改变,必将成为非奇异局势

若同时取走,因为同一个差值只会对应一种奇异局势,必将成为非奇异局势

  1. 可以采取适当的方法将非奇异局势变为奇异局势

显然

结论

人们通过对上述性质的探索,同时结合Betty定理,给出了威佐夫博弈的重要结论

假设两堆石子为\((x,y)\)(其中\(x<y\))

那么先手必败,当且仅当

\((y-x)*\frac{(\sqrt{5}+1)}{2}=x\)

其中的\(\frac{(\sqrt{5}+1)}{2}\)实际就是\(1.618\),黄金分割数!怎么样,博弈论是不是很神奇?

证明的话,

首先你要会证明Betty定理,链接在上面,如果度娘的证明看不懂可以看这里

威佐夫博弈结论的话可以看这里

代码

题目

#include<cstdio>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
main()
{int a,b;scanf("%lld%lld",&a,&b);if(a>b) swap(a,b);int temp=abs(a-b);int ans=temp*(1.0+sqrt(5.0))/2.0;if(ans==a) printf("0");else       printf("1");return 0;
}

例题

HDU 1527

题解

51NOD 1185

题解

博弈论入门之威佐夫博弈相关推荐

  1. 博弈论模型(威佐夫博弈)

    有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利. 变体:皇后从右下角移动到左上角,只能向左.上或左上移动若干个单位. 答案:黄金分割比为 ...

  2. 【小组专题二:博弈论入门综述(1)】NP状态 | SG函数 | 巴什博奕、威佐夫博弈、斐波那契博弈、Nim游戏、SJ定理

    博弈论综述[1] 前言 博弈与博弈论 博弈树 NP状态 SG函数(Sprague-Grundy) Sprague-Grundy Theorem 巴什博奕 Bash Game 威佐夫博弈 扩展威佐夫博弈 ...

  3. 博弈论(巴什博奕,威佐夫博弈,尼姆博弈)

    巴什博奕(Bash Game): 只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜 举一个最简单的例子就是,当n=m+1时,此时不管先手取多少,后手都能把剩下的取完 ...

  4. 博弈论(巴什博弈,威佐夫博弈,尼姆博弈)

    文章目录 一.巴什博弈 二.威佐夫博弈 三.尼姆博弈 一.巴什博弈 一堆n个物品,两个人从中轮流取出1~m个,最后取关者胜. 同余定理:n=K*(m+1)+r;先取者拿走r个,那么后者无论拿走(1~m ...

  5. 博弈论(巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈)

    一.  巴什博奕(Bash Game): A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30.这应该是最古老的关于巴什博奕的游戏了吧. 其实如果知道原理,这游戏一点运气成分都没有,只和先手 ...

  6. 博弈论(巴什博弈)(威佐夫博弈)(尼姆博奕)

    1.巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 解释:这个理解简单,n%(m+1)==0时,先手定会输.比如n=3,m=2:你先取,你取1 ...

  7. 【博弈论】威佐夫博弈

    简介 威佐夫博弈( W y t h o f f G a m e Wythoff\ Game Wythoff Game):有两堆物品个数是 n n n和 m m m,甲乙两个人轮流从一堆选取 k k k ...

  8. BZOJ3298[USACO 2011Open]cow checkers——威佐夫博弈

    题目描述 一天,Besssie准备和FJ挑战奶牛跳棋游戏.这个游戏上在一个M*N的棋盘上, 这个棋盘上在(x,y)(0<=x棋盘的左下角是(0,0)坐标,棋盘的右上角是坐标(M-1,N-1). ...

  9. Nim博弈和威佐夫博弈 Return of the Nim

    Nim博弈 Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输. 后来,在一份资料上看到,这种游戏称为" ...

最新文章

  1. 用vs2005开发比delphi快多了
  2. Dokan虚拟磁盘开发实战
  3. Input.GetAxis 获取轴
  4. C++内联 inline的用法
  5. Android实战技术:深入理解Android的RPC方式与AIDL
  6. python微博热点_用 Python 监控知乎和微博的热门话题
  7. 玩转mini2440开发板之【编译u-boot提示没有规则可以创建“XX.o”需要的目标】
  8. 安卓手机如何防盗_如何设置安卓手机各版本USB调试模式
  9. 综评:5个方面看刚刚发布的Kubernetes 1.12
  10. C++语言基础 —— 数组
  11. 计算机应用节能环保,计算机应用的节能环保问题研究
  12. BackToTop.js 为你的网站添加“回到顶部”按钮
  13. python基础之小数据池、代码块、编码
  14. 伪造邮件***,社工钓鱼,你中招了吗【一】
  15. 更改 matlab java 版本_64位 JDK 1.8 调用Matlab 2017b打包的jar
  16. 高级模电、数电实验室成套设备
  17. H7N9?生活还得继续~~适合边玩边学的HTML5五彩连珠游戏
  18. 分布式web系统架构图及应用架构图
  19. RS-485集线器设计原理
  20. learning_git_from_Liao

热门文章

  1. Move to Another Changelist
  2. 详解LAMP源码编译安装
  3. DataTable.DataRow的复制
  4. DVWA系列之21 存储型XSS分析与利用
  5. Vishay将MCW 0406 AT系列精密宽端子薄膜片式电阻欧姆值降至业内最低
  6. 一个TreeView 样式表
  7. 自定义Flex Library的使用
  8. 新年新气象,祝所有朋友心想事成
  9. 2020-11-05 关于前端‘古董‘dojo的树结构如何默认展开根节点
  10. Xamarin Essentials教程屏幕状态DeviceDisplay