首页 > 代码库 > 博弈知识(二)

博弈知识(二)

有关取火柴的游戏

桌上有N堆火柴棒,每一堆火柴棒的数量是任意的。两人按下面的游戏规则轮流取走这些火柴棒:

1,每次只允许从其中一堆取走火柴棒,

2,在选定的那一堆,可取走任意数量的火柴棒(例如,可以全部拿走),但每次至少要取走一根,

3,最后一次取走火柴棒的人获胜。/最后一次取走火柴棒的人失败

 

首先解决第一个问题:

定义:若所有火柴数异或为0,则该状态被称为利他态,用字母T表示;

         否则,即所有火柴异或不为0, 为利己态,用S表示。

则一定有以下性质:

1、对于任何一个S态(利己态),总能从一堆火柴中取出若干个使之成为T态(利他态)。

2、同理任何T态(利他态),取任何一堆的若干根,都将成为S态(利己态)。

3、当为S态(利己态)时,只要方法正确,必赢。 

     最终胜利即由S态转变为T态,任何一个S态,只要把它变为T态,(由定理1,可以把它变成T态。)对方只能把T态转变为S态(定理2)。

     这样,所有S态向T态的转变都可以有己方控制,对方只能被动地实现由T态转变为S态。故S态必赢。

4、T态,只要对方法正确,必败。

     同理3

 

接着来解决第二个问题:
定义:若一堆中仅有1根火柴,则被称为孤单堆。若大于1根,则称为充裕堆。
定义:T态中,若充裕堆的堆数大于等于2,则称为完全利他态,用T2表示;若充裕堆的堆数等于0,则称为部分利他态,用T0表示

 

孤单堆的根数异或只会影响二进制的最后一位

但充裕堆会影响高位(非最后一位)

一个充裕堆,高位必有一位不为0,则所有根数异或不为0。故不会是T态。

 

则有以下的性质

5、S0态,即仅有奇数个孤单堆,必败。T0态必胜(充裕堆的堆数为0)。

    S0态,其实就是每次只能取一根。

    每次第奇数根都由己取, 第偶数根都由对方取,所以最后一根必己取。

    败。同理,  T0态必胜#

6、 S1态,只要方法正确,必胜。

     若此时孤单堆堆数为奇数,把充裕堆取完;否则,取成一根。

    这样,就变成奇数个孤单堆,由对方取。由定理5,对方必输。己必胜。  #

7、S2态不可转一次变为T0态

8、S2态可一次转变为T2态。

9、T2态,只能转变为S2态或S1态。 

10、S2态,只要方法正确,必胜. 

 

 11、T2态必输。

 

博弈知识(二)