Chgtaxihe's blog Chgtaxihe's blog
首页
练习
算法学习
读书笔记
小玩意

Chgtaxihe

首页
练习
算法学习
读书笔记
小玩意
  • 数论

  • 动态规划

  • 暴力

  • 图论

  • 数据结构

  • 字符串

  • 几何

  • 博弈论

    • 博弈论学习笔记
    • 威佐夫博弈
      • 性质
      • 结论
        • 例题 洛谷P2252
      • 例题 HDU 6869 威佐夫博弈变形
  • 其他

威佐夫博弈

# 威佐夫博弈

有两堆各若干个物品(x,y)(x,y)(x,y),两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,不能不取,最后取完者得胜。

名词解析:

  • 奇异局势:选手面对奇异局势时必输

威佐夫博弈的前几个奇异局势为(0,0),(1,2),(3,5),(4,7),(6,10),⋯(0,0),(1,2),(3,5),(4,7),(6,10),\cdots(0,0),(1,2),(3,5),(4,7),(6,10),⋯

# 性质

设(x,y)(x,y)(x,y)为第kkk个奇异局势

  1. xxx为前1⋯k1\cdots k1⋯k个奇异局势中没有出现过的最小正整数,y=x+ky=x+ky=x+k

  2. 任意一个自然数都被包含在一个且仅在一个奇异局势中

    ​ 由性质1可知每个自然数必定会出现

    ​ 假设某个自然数vvv出现了不只一次,显然vvv不能作为xxx,而只能作为yyy

    ​ 又因为不同奇异局势差依次递增,且xxx依次递增,因而yyy不同

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

    1. 若取走任意一堆的任意数量石子,根据性质2,局势转变为非奇异局势
    2. 若两对同时取走相同数量石子,由于一个差值只对应一种奇异局势,因而转变为非奇异局势

至于性质一的证明嘛....没有!

# 结论

设两堆石子为(x,y)(x<y)(x,y)\quad(x<y)(x,y)(x<y)

由上述性质,可知对于第kkk个奇异局势,yk−xk=ky_k-x_k=kyk​−xk​=k,且{xi},{yi}\{x_i\},\{y_i\}{xi​},{yi​}构成Z+Z^+Z+的一个分划

根据Betty定理,可以设{xi}={kA∣k∈Z+},{yi}={kA+k∣k∈Z+}\{x_i\}=\{kA\mid k \in Z^+\},\{y_i\}=\{kA+k\mid k\in Z^+\}{xi​}={kA∣k∈Z+},{yi​}={kA+k∣k∈Z+}

令1A+1A+1=1\frac{1}{A}+\frac{1}{A+1}=1A1​+A+11​=1,得到AAA的一个无理数解1+52\frac{1+\sqrt{5}}{2}21+5​​

因此,第kkk个奇异局势为(⌊k1+52⌋,⌊k3+52⌋)\large(\lfloor k\frac{1+\sqrt{5}}{2}\rfloor,\lfloor k\frac{3+\sqrt{5}}{2}\rfloor)(⌊k21+5​​⌋,⌊k23+5​​⌋)

换句话说,先手必败(奇异局势)当且仅当⌊(y−x)5+12⌋=x\lfloor(y-x)\frac{\sqrt{5}+1}{2}\rfloor=x⌊(y−x)25​+1​⌋=x

# 例题 洛谷P2252

import math
a, b = map(int, input().split())
x, y = [min(a, b), max(a, b)]
# 此处不能用'is',必须用'=='
if (y - x) * (1 + math.sqrt(5)) // 2 == x:
    print(0) # 先手必败
else:
    print(1) # 先手必胜
1
2
3
4
5
6
7
8

# betty定理

对于两个无理数p,qp,qp,q,若1p+1q=1\large\frac{1}{p}+\frac{1}{q}=1p1​+q1​=1

那么对于P={⌊np⌋,n∈Z+},Q={⌊nq⌋,n∈Z+}P=\{\lfloor np\rfloor,n\in Z^+\},Q=\{\lfloor nq\rfloor,n\in Z^+\}P={⌊np⌋,n∈Z+},Q={⌊nq⌋,n∈Z+},则P,QP,QP,Q构成正整数集的一个分划(即P∩Q=∅,P∪Q=Z+P\cap Q=\emptyset,P\cup Q=Z^+P∩Q=∅,P∪Q=Z+)

此处没有证明!!!

# 奇异局势bn=an+nb_n=a_n+nbn​=an​+n的来源

以下为感性分析

为了便于讨论,下文中的奇异局势(a,b)(a,b)(a,b)均满足a≤ba\le ba≤b

显然(0,0)(0,0)(0,0)是一个奇异局势,那么我们从(0,0)(0,0)(0,0)出发,把所有可以转移到(0,0)(0,0)(0,0)的状态划掉

那么 {(0,x),(x,x)∣x∈N}\{(0,x),(x,x)\mid x \in N\}{(0,x),(x,x)∣x∈N}会被划掉

接着,我们从未被划掉的点(x,y)(x,y)(x,y)中选取一个xxx最小的点(且为了满足a≤ba\le ba≤b,应在直线y=xy=xy=x上方寻找)

可知这个点为(1,2)(1, 2)(1,2),该点为第一个奇异局势(a1=1,b1=2)(a_1=1,b_1=2)(a1​=1,b1​=2),同时将可以转移到(1,2)(1,2)(1,2)的状态划掉

那么{(1,x),(2,x)∣x∈N}∪{(n,x)∣n∈N,n>1,x≤2+(n−1)}\{(1,x),(2,x)\mid x\in N\}\cup\{(n,x)\mid n\in N,n>1,x\le 2+(n-1)\}{(1,x),(2,x)∣x∈N}∪{(n,x)∣n∈N,n>1,x≤2+(n−1)}都已被划掉(?),其中,(a2,2+(a2−a1))(a_2,2+(a_2-a_1))(a2​,2+(a2​−a1​))在本轮被划掉

下一次取a2=3a_2=3a2​=3,b2b_2b2​只能取2+(a2−a1)+12+(a_2-a_1)+12+(a2​−a1​)+1

进而猜测

bn−bn−1=an−an−1+1b_n-b_{n-1}=a_n-a_{n-1}+1 bn​−bn−1​=an​−an−1​+1

一番推导

∵a0=b0=0,令diff(n)=bn−an∴diff(0)=0,diff(n)=diff(n−1)+1∴diff(n)=n∴bn=an+1\begin{array}{c}\because a_0 = b_0 = 0,\text{令} diff(n)=b_n-a_n\\\therefore diff(0)=0,diff(n)=diff(n-1)+1\\\therefore diff(n)=n\\\therefore b_n=a_n+1\end{array} ∵a0​=b0​=0,令diff(n)=bn​−an​∴diff(0)=0,diff(n)=diff(n−1)+1∴diff(n)=n∴bn​=an​+1​

# 例题 HDU 6869 威佐夫博弈变形

两堆石头(a,b)(a,b)(a,b),每次可以从一堆中取任意多个,或从两堆中分别取(x,y)(x,y)(x,y)个,且满足∣a−b∣≤k\mid a-b\mid \le k∣a−b∣≤k。其中kkk为题目所给的常数。最后取不到石头的者输。问先手是否有必胜策略。

仿照上述过程

最终得到通项

bn=an+n(k+1)b_n=a_n+n(k+1) bn​=an​+n(k+1)

# 参考

wiki-贝亚蒂定理 (opens new window)

https://blog.csdn.net/qq_30435963/article/details/108100061

上次更新: 2021/02/24, 03:37:30
博弈论学习笔记
01分数规划学习笔记

← 博弈论学习笔记 01分数规划学习笔记→

最近更新
01
深入理解Java虚拟机
03-04
02
DNS工作原理
02-27
03
改用VuePress啦
02-23
更多文章>
Theme by Vdoing | Copyright © 2019-2021
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式