简单博弈论

公平组合游戏三原则:

定理 1:没有后继状态的状态是必败状态。
定理 2:一个状态是必胜状态当且仅当存在至少一个必败状态为它的后继状态。
定理 3:一个状态是必败状态当且仅当它的所有后继状态均为必胜状态。

基础解法:

用一数组记录博弈状态,由三原则可以写出记忆化搜索的状态转移方程。
其复杂度为O(N+M)

Nim游戏:

n堆物品,每堆有\(a_i\)个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。

取走最后一个物品的人获胜。

Nim和:

通过绘画博弈图,我们可以在\(\Theta(\prod_{i=1}^{n}a_i)\)的时间里求出该局面是否先手必赢。
然而这个时间复杂度我们是不能接受,也难以从算法层面优化的。
这时引入\(Nim和(Nim-sum)\)
\(Nim-sum=a_1\bigoplus a_2\bigoplus\cdots\bigoplus a_n\)
可以证明$$Nim-sum=0时为必胜状态,Nim-sum\neq 0时为必败状态$$

Nim定理证明:

为建立Nim和与必败必胜状态的关系,需要仿证Nim和的三定理:
定理一:没有后继状态的状态是必败态
定理二:任意\(a_1\bigoplus a_2\bigoplus\cdots\bigoplus a_n\neq 0\)的状态都可以通过一次操作后,使得\(a_1\bigoplus a_2\bigoplus\cdots\bigoplus a_n=0\)
定理三:任意\(a_1\bigoplus a_2\bigoplus\cdots\bigoplus a_n=0\)它的后继不存在\(a_1\bigoplus a_2\bigoplus\cdots\bigoplus a_n=0\)的状态

定理一显然,此时为全0状态,异或和为0。
对于定理二,设某状态异或和为k,其二进制最高位不为零(假设为第h位)。易证,存在ai,该位也为1。
  令ai变为ai',且此时异或和为0。由异或和的可逆性得,
  ai'=ai^k,此时ai'和ai从最高位到h+1位相等,第h位ai'<ai。
  所以ai'<ai
  定理成立
对于定理三,
  ai'=ai^k=ai
  所以不存在合法的操作
  定理成立
事实上任意nim和为0的状态,其前继和后继的异或值不为零。

此时当nim和为0时,无论对方采取什么操作,我们都使得nim和回到0,直至经过我们最后一步使得数组为全0态,
  且由于不存在合法操作使得nim操作之后仍为0,所以,对方无法直接到达全0态。
故nim和为0是必败状态,同时nim和不为0时是必胜状态。
命题得证
上一篇:[iOS]隐藏导航栏3种方式


下一篇:Georgia and Bob POJ - 1704