威佐夫博弈,Beatty定理和黄金分割数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wu_tongtong/article/details/79295069

所有的博弈问题都是一些看起来挺有趣的问题
实际上其中的分析比较复杂

那我们就来看看博弈中的一种特殊类型:威佐夫博弈

描述

威佐夫博弈Wythoffs game

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

很典型的一个博弈问题
比较暴力的做法就是计算SG函数
一般来说我们先打个表看一下:

//打印必败态 
void get()
{
    int n=20;
    for (int i=0;i<=n;i++)
        for (int j=0;j<=n;j++) 
        {
            int win=0,lose=0; 
            for (int k=1;k<=min(i,j);k++)
                if (SG[i-k][j-k]) win++; else lose++;
            for (int k=0;k<i;k++) 
                if (SG[k][j]) win++; else lose++;
            for (int k=0;k<j;k++)
                if (SG[i][k]) win++; else lose++;
            if (lose==0)             //所有后继都是必胜态,当前是必败态
                printf("%d %d\n",i,j);
            else SG[i][j]=1; 
        }
}

这里写图片描述

我们称这个问题中的必败态为奇异局势(ak,bk)

可以看到,a0=b0=0ak是未在前面出现过的最小自然数,而bk=ak+k

性质

① 任何自然数都包含在一个且仅有一个奇异局势中

由于ak是未在前面出现过的最小自然数,所以有a[k]>a[k1]
bk=a[k]+k>a[k1]+k>a[k1]+k1=b[k1]>a[k1]

② 任意操作都可将奇异局势变为非奇异局势

这个性质可以简单的理解为:必败态的后继一定都是必胜态
事实上,若只改变奇异局势(akbk)的某一个分量,那么另一个分量不可能在其他奇异局势中,所以必然是非奇异局势
如果使(akbk)的两个分量同时减少,则由于其差不变,且不可能是其他奇异局势的差,因此也是非奇异局势

③ 采用适当的方法,可以将非奇异局势变为奇异局势

假设面对的局势是(a,b),若b=a,则同时从两堆中取走 a 个物体,就变为了奇异局势(0,0)
如果a=akb>bk,那么,取走bbk个物体,即变为奇异局势
如果a=akb<bk,则同时从两堆中拿走aa[ba]个物体变为奇异局势
如果a>akb=ak+k则从第一堆中拿走多余的数量aak即可
如果a<akb=ak+k,分两种情况
第一种,a=ajj<k,从第二堆里面拿走bbj即可
第二种,a=bjj<k,从第二堆里面拿走baj即可

简单的证明

显然,两堆石头地位是一样的,我们用余下的石子数(a,b)来表示状态,并画在平面直角坐标系上
之后我们在坐标系上找到所有的奇异局势
先标出(0,0),划去所有(0,k),(k,0),(k,k)的格点
找y=x上方未被划去的格点,标出(1,2),然后划去(1,k),(k,2),(1+k,2+k)
同时标出对称点(2,1),划去(2,k),(1,k),(2+k,1+k)
在未被划去的点中在y=x上方再找出(3,5),以此类推
按照这样的方法做下去,如果只列出a<=b的必败态的话,前面的一些是(0,0),(1,2),(3,5),(4,7),(6,10),
忽略(0,0),记第n组必败态为(a[n],b[n])

命题一:a[n+1]=n组必败态中未出现过的最小正整数
如果a[n+1]不是未出现的数中最小的,那么可以从a[n+1]的状态走到一个使a[n+1]更小的状态,和我们的寻找方法矛盾

命题二:b[n]=a[n]+n
归纳法:若前k个必败态分别为(ak,ak+k),下证:第k+1个必败态为(ak+1,ak+1+k+1)
从该第k+1个必败态出发,一共可能走向三类状态,从左边堆拿走一些,从右边堆拿走一些,或者从两堆中拿走一些
下面证明这三类都是胜态

情况一:
由命题一,任意一个比a[k+1]小的数都在之前的必败态中出现过,一旦把左边堆拿少了,我们只要再拿成那个数相应的必败态即可
情况二之一(从右边堆拿走不太多):
这使得两堆之间的差变小了,(ak+1,ak+1+m),则可再拿成(am,am+m)
情况二之二(从右边堆拿走很多):
使得右边一堆比左边一堆更少,这时类似于情况一,比如拿成了(ak+1,am)(其中a[m]<a[k+1]) ,则可再拿成(am+m,am)
情况三:比如拿成(am,am+k+1),则可再拿成(am,am+m)

以上两个命题对于确定(a[n],b[n])是完备的了,给定(0,0)然后按照这两个命题,就可以写出(1,2),(3,5),(4,7),
这样我们得到了这个数列的递推式:

实际上a[n]b[n]就是一个Beatty序列

Beatty 序列

Beatty定理

设a,b是正无理数且1a+1b=1
P=[na]|nQ=[nb]|n
[x]指的是取x的整数部分)
PQZ+的一个划分,即PQ为空集且PQ为正整数集合N+

取正无理数α,β,使得
1α+1β=1
构造两个数列an,bn,通项分别为
an=[αn]
bn=[βn]
an为小于等于αn的最大整数
bn为小于等于βn的最大整数

数列显然都是正整数数列
Beatty定理指出,两个数列都是严格递增的,并且每个正整数在两个数列中出现且仅出现一次。

  • 严格递增:
    因为1α<1,α>1,所以an相邻两项取整前相减大于1,取整后后面一项显然也大于前面一项
    bn同理

  • 出现且仅出现一次:
    对于这个命题,我们只要证明,对于任意正整数k,小于等于k的正整数在两个数列中恰好出现k
    设数列an的前p项小于等于k(而不含p+1项),又因为每一项取整前均为无理数,不可能取到整数值,于是有
    αp<k+1
    α(p+1)>k+1

两者综合起来,就有等式
p=[k+1α]

这就是小于等于k的正整数在数列an中出现的次数
对于数列bn同理
这样我们得到了小于等于k的正整数在两个数列中出现的总次数
S=[k+1α]+[k+1β]

注意到,两个向下取整符号内的数均为无理数,于是有严格的不等式
(k+1α1)+(k+1β1)<S<k+1α+k+1β
k1<S<k+1
S=k

回到之前的问题

可以看到,奇异局势的规律非常符合Beatty定理
那我们就可以考虑计算出αβ

an=[αn],bn=[βn]
an+n=[(α+1)n]=[βn]
解方程1(α+1)+1α=1
α=sqrt(5)+12
到此,我们找到了该必败态的通项公式

实际上这组Beatty序列还有一些别的性质
比如当一个数是Fibonacci数的时候,另一个数也是Fibonacci数
而且两者的比值也越来越接近黄金比

总之卡着定义来就好了

结论

两个人如果都采用最优操作,那么面对非奇异局势,先手必胜;反之,则后手必胜

那么任给一个局势(ab),怎样判断它是不是奇异局势呢?
因为
ak=[k(1+sqrt(5))2]bk=ak+k(k=012...n)

奇妙的是其中出现了黄金分割数(1+sqrt(5))2=1.618...

因此,由akbk组成的矩形近似为黄金矩形

由于21+sqrt(5)=sqrt(5)12
可以先求出n=[a(sqrt(5)1)2]
an=[n(1+sqrt(5))2],那么b=a+n
若不等于,那么a=an+1b=a+n+1
若都不是,那么就不是奇异局势

阅读更多
换一批

期待大牛的出现!威佐夫博弈为什么满足黄金分割

04-03

威佐夫博奕(Wythoff Game):rnrn有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。rn  这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,...,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。rnrn  可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k。rn[编辑本段]奇异局势有如下三条性质:rnrn  1。任何自然数都包含在一个且仅有一个奇异局势中。rn  由于ak是未在前面出现过的最小自然数,所以有ak > ak-1 ,而 bk= ak + k > ak-1 + k-1 = bk-1 > ak-1 。所以性质1。成立。rn  2。任意操作都可将奇异局势变为非奇异局势。rn  事实上,若只改变奇异局势(ak,bk)的某一个分量,那么另一个分量不可能在其他奇异局势中,所以必然是非奇异局势。如果使(ak,bk)的两个分量同时减少,则由于其差不变,且不可能是其他奇异局势的差,因此也是非奇异局势。rn  3。采用适当的方法,可以将非奇异局势变为奇异局势。rn  假设面对的局势是(a,b),若 b = a,则同时从两堆中取走 a 个物体,就变为了奇异局势(0,0);如果a = ak ,b > bk,那么,取走b - bk个物体,即变为奇异局势;如果 a = ak , b < bk ,则同时从两堆中拿走 ak - ab - ak个物体,变为奇异局势( ab - ak , ab - ak+ b - ak);如果a > ak ,b= ak + k,则从第一堆中拿走多余的数量a - ak 即可;如果a < ak ,b= ak + k,分两种情况,第一种,a=aj (j < k),从第二堆里面拿走 b - bj 即可;第二种,a=bj (j < k),从第二堆里面拿走 b - aj 即可。rnrn结论:rn两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜;反之,则后拿者取胜。rn  那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?我们有如下公式:rn  ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,...,n 方括号表示取整函数)rn  奇妙的是其中出现了黄金分割数(1+√5)/2 = 1。618...,因此,由ak,bk组成的矩形近似为黄金矩形,由于2/(1+√5)=(√5-1)/2,可以先求出j=[a(√5-1)/2],若a=[j(1+√5)/2],那么a = aj,bj = aj + j,若不等于,那么a = aj+1,bj+1 = aj+1 + j + 1,若都不是,那么就不是奇异局势。然后再按照上述法则进行,一定会遇到奇异局势。rn=====================rnrn以上内容来自百度百科,我的疑惑是,为什么威佐夫博弈满足黄金分割???rnrn期待大牛出现给与解答!!!

没有更多推荐了,返回首页