首页 > 代码库 > 博弈知识(二)
博弈知识(二)
有关取火柴的游戏
桌上有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态必输。
博弈知识(二)