ACM算法之博弈论

本文介绍了四种常见的博弈论问题在ACM算法中的应用:巴什博弈、威佐夫博弈、尼姆博弈和斐波那契博弈。分析了各种情况下先手玩家的获胜策略,包括必输态和必胜态的判断,并提出了相应的胜负条件和计算方法。

巴什博弈 

 一堆n个物品,两个人轮流从中取出1~m个,最后取光者胜。

如果n是m+1的倍数,则先手必输。如果不是则先手必胜。

对于先手来说如果不能一步到达必输态则先手必输,反之必胜。0是第0个必输态,m+1是第一个必输态,2*(m+1)是第二个必输态,n*(m+1)是第n个必输态。

if(n%(m+1)==0){
    return false;
else
    return true;

威佐夫博弈

两堆物品,两人轮流从一堆或者两堆中取相同1~不限个,最后取光者胜。

如果(x,y)满足([\tiny n\frac{1+\sqrt{5}}{2}],[\tiny n\frac{1+\sqrt{5}}{2}+n])(n\tiny \inN*),则先手必输。如果不是则先手必胜。

对于先手来说如果不能一步到达必输态则先手必输,反之必胜。设(x\tiny m,y\tiny m)和(y\tiny m,x\tiny m)为第m个必输态,如果x\tiny m或y\tiny m在其他必输态的x,y中出现过,则可以一步到达必输态。如果x\tiny m=y\tiny m,则可以一步到达必输态,并且要使得必败态的x\tiny m-y\tiny m尽可能小,所以(a\tiny n,a\tiny n+n)为必败态,

引入Betty定理,a\tiny n=[na],a\tiny n+n=[n(a+1)],可得\tiny \frac{1}{a}+\frac{1}{a+1}=1,得a=\tiny \frac{1+\sqrt{5}}{2}(a=\tiny \frac{1-\sqrt{5}}{2}舍),所以

  ([\tiny n\frac{1+\sqrt{5}}{2}],[\tiny n\frac{1+\sqrt{5}}{2}+n])(n\tiny \inN*)为第n个必败态。

if(abs(x-y)*((sqrt(5)+1)/2)==min(x,y))
    return false;
else
    return true;

尼姆博弈

三堆物品,两人轮流取,每次取其中一堆1~不限个,最后取光者胜。

(a,b,c)满足a^b^c=0则先手必输,反之必胜。

if(a^b^c==0)
    return false;
else
    return true;

斐波那契博弈

一堆物n个,两人轮流取,不能取完,不能取超过上次两倍,最后取光者胜。

n满足斐波那契数列必输,反之必胜。

int a=0,b=1,c=1;
for(int i=2;1;i++){
    int d=c;
    d=a+b;
    a=b;
    b=c;
    c=d;
    if(c==n){
        return false;
    else if(c>n)
        return true;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值