zoukankan      html  css  js  c++  java
  • 博弈论基础:巴什博奕和斐波那契额博弈

    leetcode题目:

    你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。

    巴什博奕(Bash Game):
    只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.
    若(m+1) | n,则先手必败,否则先手必胜。
    显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发
    现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿
    走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜.总之,要保持给对手留下(m+1)的倍数,就能最后获胜.

    解法:return n%4 != 0;

    斐波那契博弈

    有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下:

    1)先手不能在第一次把所有的石子取完,至少取1颗;

    2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍。

    约定取走最后一个石子的人为赢家,求先手必败。 结论:当n为Fibonacci数的时候,必败。

    证明详情可参考:https://www.cnblogs.com/kls123/p/6970414.html

    大致思路为:可将f(n) 分为 f(n-1) + f(n-2) 两堆进行归纳

  • 相关阅读:
    jenkins初始化启动报错导致进入web页面无法安装插件
    redis5.0.7集群搭建
    搭建redis哨兵模式
    Linux服务器安装python3.6
    MySQL绿色版安装
    OSChina中远程GIT仓库同步探索
    Android坡度计
    利用ADB获取APP资源
    实现两台路由器无线桥接
    新体能评定软件开发总结(一)
  • 原文地址:https://www.cnblogs.com/Noctis/p/10571540.html
Copyright © 2011-2022 走看看