zoukankan      html  css  js  c++  java
  • 博弈论的一些结论

    感谢https://www.luogu.org/blog/user38385/solution-p2252

    自从昨天考了博弈论的一道程序填空题,博弈论的阴云便一直在我的心上徘徊,今天把这个坑填一下。

    一.巴什博弈(Bash Game)

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

    其实如果知道原理,这游戏一点运气成分都没有,只和先后手有关,比如第一次报数,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,那么先手必败,否则先手必胜。

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

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

    结论(ztm诡异):

    若两堆物品的初始值为(x,y)且x < y,令z = y-x,记w = (int)((sqrt(5)+1)/2*z)

    if(w == x)先手必败;else 先手必胜.

    三.尼姆博弈(Nim Game)

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

    结论:

    每堆物品数异或和为零先手必败,否则先手必胜。

    四.斐波那契博弈:

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

    结论:

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

  • 相关阅读:
    POJ 2112 Optimal Milking (Dinic + Floyd + 二分)
    POJ 3678 Katu Puzzle (2-SAT)
    超详细的Java面试题总结(一)之Java基础知识篇
    Java高级面试题及答案
    Java线程面试题 Top 50
    Java面试题收集
    Spring基础使用(一)--------IOC、Bean的XML方式装配
    你不知道的Javascript:有趣的setTimeout
    Java 10 的 10 个新特性,将彻底改变你写代码的方式!
    深入理解 Java 多线程核心知识:跳槽面试必备
  • 原文地址:https://www.cnblogs.com/Wangsheng5/p/11707582.html
Copyright © 2011-2022 走看看