zoukankan      html  css  js  c++  java
  • 博弈小专题

    //取石子专题

    First:巴什博弈

           只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。

    如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。将这一状态进行推广,那么当能够使得状态为n%(m+1)==0的人必胜。也就是说,只要n%(m+1)!=0,则先手必胜。

    Second:尼姆博弈   详解戳

           有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。

    首先只要最后剩两堆物品一样多(不为零),第三堆为零,那面对这种局势的一方就必败,我们用(a,b,c)表示某种局势,(0,0,0)显然是必败态;第二种必败态是(0,n,n),自己在某一堆拿走k(k ≤ n)个物品,不论k为多少,对方只要在另一堆拿走k个物品,最后自己都将面临(0,0,0)的局势,必败。
    对于任何必败局势(a,b,c),都有a XOR b XOR c = 0。
    那么现在面临的问题就是,非必败态如何转化为必败态。假设 a < b < c,我们只要将 c 变为a XOR b,即可。因为有如下的运算结果:a XOR b XOR (a XOR b)=(a XOR a) XOR (b XOR b) = 0要将c 变为a XOR b,只要对 c进行 c-(a XOR b)这样的运算即可。
    推广->n堆物品:

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

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

    若两堆物品的初始值为(x,y),且x<y;

    记w=(int)[((sqrt(5)+1)/2)*(y-x)];//很奇妙的黄金分割比

    若w=x,则先手必败,否则先手必胜。

    Forth:斐波那契博弈

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

    当且仅当n不为斐波那契数时先手胜。

  • 相关阅读:
    一代人的青春--芳华
    用切面对监控日志的实现2
    一个在java后台实现的对图片进行加网纹或水印的工具类
    家乡的河
    家乡的鬼节—十来一儿
    八里沟印象
    双城记
    记忆中的那一树梨花
    用切面对监控日志的实现
    关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
  • 原文地址:https://www.cnblogs.com/Egoist-/p/8418212.html
Copyright © 2011-2022 走看看