博弈知识点整理

博弈知识点整理

博弈满足的条件:
玩家只有两个人,轮流做出决策
游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输
对任何一种局面,胜负只决定于局面本身,而与轮到哪位选手无关


一、巴什博弈(Bash Game)

  1. 问题模型:
    只有一堆 n 个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光者得胜。
  2. 解决思路:
    n=m+1 时,由于一次最多只能取 m 个,所以无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜,所以当一方面对的局势是n时,其面临的是必败的局势。所以当 n=m+1)r+s ,( r 为任意自然数,sm)时,如果先取者要拿走 s 个物品,如果后取者拿走x(xm)个,那么先取者再拿走 m+1k 个,结果剩下 (m+1)(r1) 个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下 m+1 的倍数,就能最后获胜。
  3. 变形:
    条件不变, 改为最后去光的人输。
  4. 解决思路:
    结论:当 (n1)%(m+1)==0 时后手胜利。

二、尼姆博弈(Nim)

  1. 题目类型:
    有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
  2. 解决思路:
    abc 表示某种局势,显证 000 是第一种奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是 0nn ,只要与对手拿走一样多的物品,最后都将导致 000 。 根据 0nn , 我们可一得到a^b^c == 0 为必败状态。

    证明a^b^c != 0为必胜
    拓展到n个数


三、约数博弈:

  1. 题目类型:
    甲乙两个人玩一个博弈游戏。游戏初始状态包含1-n, 这n个正整数。
    甲乙两个人轮流玩这个游戏。每轮游戏中,游戏者任意选择一个还存在的数,然后删掉它和它所有的约数。
    谁最后没有数可删,谁就输掉了。
  2. 解决思路:
    先手有必胜策略。这个证明不是构造性的,也就是说没有给出先手怎么下才能赢。反证法:假设后手B有必胜策略,而先手A第一次取数1,B取了一个数x是必胜策略,然而A完全可以第一次取x(同时也必取了1)是必胜策略。故B必没有必胜策略。
  3. 变形:
    考虑一个新的规则“不准写数字1”。如果加上这个新规则后先写者有必胜策略,那么这个策略对于原游戏同样适用(因为1是所有数的约数,本来就不能写);如果在新规则下后写者必胜,则原游戏中的先写者写下数字1,然后他就变成了新规则下的后写者。于是不管怎么样,先写者总是有必胜策略。

四、 斐波那契数列博弈(Fibonacci)

  1. 问题类型:
    有一堆个数为n的石子,游戏双方轮流取石子,满足:
    • 先手不能在第一次把所有的石子取完;
    • 之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。 约定取走最后一个石子的人为赢家。
  2. 解决思路:
    当n为Fibonacci数时,先手必败。即存在先手的必败态当且仅当石头个数为Fibonacci数。
  3. 证明:
    用第二数学归纳法证明:
    • 为了方便,我们将 n 记为f[i]。当 i=2 时,先手只能取 1 颗,显然必败,结论成立。
    • 假设当i<=k时,结论成立。 则当 i=k+1 时, f[i]=f[k]+f[k1]
      则我们可以把这一堆石子看成两堆,简称 k 堆和k1堆。
      • (一定可以看成两堆,因为假如先手第一次取的石子数大于或等于 f[k1] ,则后手可以直接取完 f[k] ,因为 f[k]<2f[k1]
    • 对于 k1 堆,由假设可知,不论先手怎样取,后手总能取到最后一颗。下面我们分析一下后手最后取的石子数x的情况:
      • 如果先手第一次取的石子数 y>=f[k1]3 ,则这小堆所剩的石子数小于 2y ,即后手可以直接取完,此时 x=f[k1]y ,则 x<=23f[k1]
      • 我们来比较一下 23f[k1] 12f[k] 的大小。即 4f[k1] 3f[k] 的大小,对两值作差后不难得出,后者大。
      • 所以我们得到, x<12f[k] 。即后手取完 k1 堆后,先手不能一下取完 k 堆,所以游戏规则没有改变,则由假设可知,对于k堆,后手仍能取到最后一颗,所以后手必胜。 即 i=k+1 时,结论依然成立。
    • 那么,当n不是Fibonacci数的时候,情况又是怎样的呢?
      • 这里需要借助“Zeckendorf定理”(齐肯多夫定理):任何正整数可以表示为若干个不连续的Fibonacci数之和。
      • 分解的时候,要取尽量大的Fibonacci数。

        比如分解85:85在55和89之间,于是可以写成85=55+30,然后继续分解30,30在21和34之间,所以可以写成30=21+9,依此类推,最后分解成85=55+21+8+1。

      • 则我们可以把 n 写成 n=f[a1]+f[a2]++f[ap]a1>a2>>ap
      • 我们令先手先取完 f[ap] ,即最小的这一堆。由于各个 f 之间不连续,则ap1>ap+1,则有 f[ap1]>2f[ap] 。即后手只能取 f[ap1] 这一堆,且不能一次取完。
      • 此时后手相当于面临这个子游戏(只有 f[ap1] 这一堆石子,且后手先取)的必败态,即先手一定可以取到这一堆的最后一颗石子。
      • 同理可知,对于以后的每一堆,先手都可以取到这一堆的最后一颗石子,从而获得游戏的胜利。

威佐夫博奕


五、公平组合博弈(Impartial Combinatori Games)

  1. 定义:
    (1)两人参与。
    (2)游戏局面的状态集合是有限。
    (3)对于同一个局面,两个游戏者的可操作集合完全相同
    (4)游戏者轮流进行游戏。
    (5)当无法进行操作时游戏结束,此时不能进行操作的一方算输。
    (6)无论游戏如何进行,总可以在有限步数之内结束.
  2. 模型:给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负。事实上,这个游戏可以认为是所有公平组合游戏(Impartial Combinatori Games)的抽象模型。其实,任何一个ICG都可以通过把每个局势看成一个顶点,对每个局势和它的子局势连一条有向边来抽象成这个“有向图游戏”。
    • 一个状态是必败状态当且仅当他的所有后继状态都是必胜状态
    • 一个状态是必胜状态当且仅当他至少有一个后继点是必败状态
  3. Sprague-Grudy定理 (SG函数):
    • N={0,1,2,3,...} 为自然数的集合。Sprague-Grundy 函数给游戏中的每个状态分配了一个自然数。结点v的Grundy值等于没有在v的后继的Grundy值中出现的最小自然数.
    • 形式上:给定一个有限子集 SN ,令mex S(最小排斥值)为没有出现在S中的最小自然数。定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如 mex{0,1,2,4}=3mex{2,3,5}=0mex{}=0
    • 对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Garundy函数g如下: g(x)=mex{g(y)|yx}
  4. 性质:
    • (1)所有的终结点所对应的顶点,其SG值为 0 ,因为它的后继集合是空集——所有终结点是必败点(P点)。
    • (2)对于一个g(x)=0的顶点 x ,它的所有后继y都满足 g(y)!=0 ——无论如何操作,从必败点(P点)都只能进入必胜点(N点)//对手走完又只能把N留给我们。
    • (3)对于一个 g(x)!=0 的顶点,必定存在一个后继点y满足 g(y)=0 ——从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点)//就是那种我们要走的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值