zoukankan      html  css  js  c++  java
  • 博弈论总结

    博弈论总结

    本文在混沌 的博客 题解 P2252 【取石子游戏】的基础上创作

    巴什博奕(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 imes (m+1)+r),代入上面的例子我们就可以知道,如果(r=0),那么先手必败;否则,先手必胜。

    威佐夫博弈(Wythoff Game)

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

    直接说结论了,若两堆物品的初始值为((x,y)),且(x<y)
    先手当且仅满足下面的公式时必败

    [(y-x) imes frac{sqrt{5}+1}{2}=x ]

    注意!判断式需向下取整,可以通过强制转化实现,如下:

    if(int((b-a)*(sqrt(5)+1)*1.0/2)==a)
    

    模板题:洛谷 P2252 取石子游戏

    尼姆博弈(Nimm Game)

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

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

    模板题:洛谷 P2197 nim游戏

    斐波那契博弈

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

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

  • 相关阅读:
    10-22 训练 T2 plate
    C语言I博客作业03
    c语言I博客作业02
    数学的数字
    javascript 递归
    WEB 动画的一些实现方式
    javascript 中Object一些高效的操作方法
    javascript 中Array一些高效的操作方法
    mac os 的一些命令
    javascript 继承
  • 原文地址:https://www.cnblogs.com/santiego/p/9545439.html
Copyright © 2011-2022 走看看