博弈论

7 篇文章 0 订阅

博弈,就分别介绍一下巴什博弈,威佐夫博弈,尼姆博弈,外加一个SG函数。
首先我们还是讲一下必胜点和必败点。
P点:必败点,就是说,谁在这个位置,在双方都操作正确的情况下必败。
N点:必胜点,在这个位置的时候,双方操作正确的情况下必胜。
必败点与必胜点性质:
1.所有的终结点都是必败点p。
2.从任何必胜点N操作,至少有一种方式可以进入必败点P。
3.无论如何操作,必败点p都能进入必胜点。
我们研究必败点和必胜点就是为了对题目中的模型进行简化。

巴什博弈

模型

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

  • (n% (m+1)==0,先取着必败)。

  • 其余情况下,先取着必胜。

    威佐夫博弈

    模型
    有两堆各若干物品,两个人轮流从某一堆或者同时从两堆中取同样多的物品,规定每次最少取一个,多着不限,最后取光着胜。

  • 假设有两堆a,b;设a>b,k=a-b;

  • a ∗ ( s q r t ( 5 ) + 1 ) / 2 ∗ k = = b a*(sqrt(5)+1)/2*k==b a(sqrt(5)+1)/2k==b那么就为必败态,否则必胜。

尼姆博弈

模型
有n堆若干物品,两个人轮流从这某一堆物品中取物,规定每次最少取一个,最后取光着为胜。

  • 全部 全部异或一遍,判断是否为0就可以得出是否为必胜态。

SG函数

性质:

    1. 所有总结点对应的顶点其SG值都是0,因为它的后继全是空集——所有的终结点是必败点(P点)。
    1. 对于一个SG(x)=0的顶点x,它的所有的后继y都满足SG(y)!=0——无论如何操作,从必败点(P点)都能进入必胜点(N点)//对手走完又能把N留给我们。
  • 3.对于每一个SG(x)!=0的顶点x,必定存在一个后继点SG(y)=0,——从任何必胜点(N点)操作,至少有一种方法可以进入必败点(p点)//那就是我们要走的方法。
    SG函数有多种求法。
    打表法
int f[N];//可以取的石子数。
int sg[N],vis[N],ps;
void get_sg(int n)
{
    memset(sg,0,sizeof(0));
    for(int i=1;i<=n;i++)
    {
        memset(vis 0,sizeof(vis));
        for(int j=1;f[j]<=i&&j<=ps;j++)
        {
            vis[sg[i-f[j]]=1;
        }
        for(int j=0;j<=n;j++)
        {
            if(!vis[j])
            {
                sg[i]=j;
                break;
            }

        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值