【算法模板】博弈论:尼姆博弈定理与SG定理

博弈论是经济学的一个重要分支,研究多位玩家在竞争或对抗环境中根据规则所做的决策和优化策略。博弈论中分为公平组合游戏和非公平组合游戏两类。公平组合游戏中,参与者轮流决策,且决策与参与者身份无关,而非公平组合游戏则要求决策与玩家身份相关。大多数棋类游戏属于非公平组合游戏。此外,反常游戏采用常规游戏规则,但胜者是第一个无法进行决策的玩家,例如在反常Nim游戏中,取走最后一颗石子的玩家为失败者。

Nim Game 定理

尼姆博弈(Nim Game)是组合博弈论中最著名的博弈之一,常用于研究博弈策略。尼姆博弈的规则如下:

  • 游戏开始时有若干堆石子,每堆石子的数量可以不同。
  • 两个玩家轮流进行操作,每次操作时,玩家可以从其中一堆石子中取走任意数量的石子(至少取走一个)。
  • 取走最后一个石子的玩家获胜。

定理陈述

尼姆博弈定理(Nim Game Theorem):

  1. 局面状态:在尼姆博弈中,给定 n 堆石子,每堆石子的数量分别为 a1,a2,…,an。

  2. 尼姆和(Nim-Sum):定义为所有石子堆的数量按位异或操作的结果:

    Nim-Sum=a1⊕a2⊕⋯⊕an

    其中 ⊕ 表示按位异或操作。

  3. 胜负判断

    • 如果 Nim-Sum=0,则先手玩家(即轮到移动的玩家)必败,假设对手也采用最佳策略。
    • 如果 Nim-Sum≠0,则先手玩家有必胜策略,假设对手也采用最佳策略。

定理证明

我们通过归纳法来证明尼姆博弈定理:

基础情况(n = 1)

当 n=1 时,只有一堆石子,假设该堆有 a1 个石子:

  • 尼姆和:Nim-Sum=a1。
  • 胜负判断
    • 如果 a1=0,尼姆和为 0,先手玩家无合法操作,必败。
    • 如果 a1>0,先手玩家可以取走所有石子,赢得比赛。

基础情况成立。

归纳假设

假设对于任意 k 堆石子的局面,当 Nim-Sum=0 时,先手玩家必败;当 Nim-Sum≠0 时,先手玩家必胜。

归纳步骤

考虑有 k+1 堆石子的局面,其石子数量分别为 a1,a2,…,ak+1:

  1. 尼姆和为 0 的情况

    假设当前局面的尼姆和为 0,即:
    Nim-Sum = a 1 ⊕ a 2 ⊕ ⋯ ⊕ a k + 1 = 0 \text{Nim-Sum} = a_1 \oplus a_2 \oplus \dots \oplus a_{k+1} = 0 Nim-Sum=a1a2ak+1=0
    若先手玩家从某一堆中取走部分石子,使得该堆石子的数量从 ai 变为 bi ,则新的尼姆和为:
    b 1 ⊕ b 2 ⊕ ⋯ ⊕ b k + 1 = a 1 ⊕ a 2 ⊕ ⋯ ⊕ b i ⊕ ⋯ ⊕ b_1 \oplus b_2 \oplus \dots \oplus b_{k+1} = a_1 \oplus a_2 \oplus \dots \oplus b_i \oplus \dots \oplus b1b2bk+1=a1a2bi
    因为原本的尼姆和为 0,所以:
    a 1 ⊕ a 2 ⊕ ⋯ ⊕ b i ⊕ ⋯ ⊕ a k + 1 ≠ 0 a_1 \oplus a_2 \oplus \dots \oplus b_i \oplus \dots \oplus a_{k+1} \neq 0 a1a2biak+1=0
    即任何合法的移动都会使新的局面的尼姆和不为 0。因此,对手的局面必然是一个必胜局面。根据归纳假设,对手有必胜策略,因此,先手玩家在原局面中必败。

  2. 尼姆和不为 0 的情况

    假设当前局面的尼姆和为 S≠0,即:
    Nim-Sum = S = a 1 ⊕ a 2 ⊕ ⋯ ⊕ a k + 1 \text{Nim-Sum} = S = a_1 \oplus a_2 \oplus \dots \oplus a_{k+1} Nim-Sum=S=a1a2ak+1
    先手玩家可以选择某个堆 ai 并将其减少到 bi=ai⊕S ,使得新的尼姆和为:
    b 1 ⊕ b 2 ⊕ ⋯ ⊕ b k + 1 = ( a i ⊕ S ) ⊕ a 1 ⊕ ⋯ ⊕ a i − 1 ⊕ a i + 1 ⊕ ⋯ ⊕ a k + 1 = 0 b_1 \oplus b_2 \oplus \dots \oplus b_{k+1} = (a_i \oplus S) \oplus a_1 \oplus \dots \oplus a_{i-1} \oplus a_{i+1} \oplus \dots \oplus a_{k+1} = 0 b1b2bk+1=(aiS)a1ai1ai+1ak+1=0
    因为:
    a i ⊕ ( a i ⊕ S ) = S a_i \oplus (a_i \oplus S) = S ai(aiS)=S
    所以:
    a 1 ⊕ a 2 ⊕ ⋯ ⊕ ( a i ⊕ S ) ⊕ ⋯ ⊕ a k + 1 = 0 a_1 \oplus a_2 \oplus \dots \oplus (a_i \oplus S) \oplus \dots \oplus a_{k+1} = 0 a1a2(aiS)ak+1=0
    这样,先手玩家可以将局面转换为一个尼姆和为 0 的局面。根据归纳假设,对手在这个新局面中必败,因此先手玩家有必胜策略。

Sprague–Grundy 定理

Sprague–Grundy 定理是组合博弈论中的一个核心定理,它将任意有限的无偏组合博弈与尼姆博弈联系起来。该定理指出,对于每个无偏博弈状态,都存在一个等价的尼姆堆大小(即 Grundy 数),使得该状态下的博弈等价于在这个尼姆堆上的博弈。

定理陈述

Sprague-Grundy 定理:对于任意有限无偏博弈中的每一个状态 S ,都存在一个非负整数 g(S) ,称为该状态的 Grundy 数(或 Nimber),使得在该状态下的博弈等价于在大小为 g(S) 的尼姆堆上的博弈。特别地,Grundy 数为 0 的状态是必败状态。

Grundy 数定义

对于任意状态 S 的 Grundy 数 g(S) 定义为所有可以从 S 直接到达的状态的 Grundy 数的最小非负缺失值(mex, Minimum Excludant):
g ( S ) = mex { g ( S 1 ) , g ( S 2 ) , … , g ( S n ) } g(S) = \text{mex}\{ g(S_1), g(S_2), \dots, g(S_n) \} g(S)=mex{g(S1),g(S2),,g(Sn)}
其中,S1,S2,…,Sn 是从 S 可以到达的所有合法状态。

证明

基础步骤
  1. 终止状态:定义所有终止状态 T 的 Grundy 数为 0,即:

g ( T ) = 0 g(T)=0 g(T)=0

这是因为对于终止状态,没有任何可移动的选择,因此进入终止状态的玩家必败(没有合法的后续状态),Grundy 数为 0。

递归定义
  1. 非终止状态:对于任何非终止状态 SSS,Grundy 数 g(S)g(S)g(S) 定义为所有从 SSS 可以到达的状态的 Grundy 数的 mex 值:

g ( S ) = mex { g ( S 1 ) , g ( S 2 ) , … , g ( S n ) } g(S) = \text{mex}\{ g(S_1), g(S_2), \dots, g(S_n) \} g(S)=mex{g(S1),g(S2),,g(Sn)}

这里 S1,S2,…,Sn 是从 S 可以直接到达的状态。通过递归定义,我们确保每个状态的 Grundy 数是唯一确定的,并且与其后的状态有关。

Grundy 数的性质
  1. Grundy 数为 0 的状态是必败状态
    • 如果 g(S)=0 ,那么所有从 S 直接可以到达的状态 Si 的 Grundy 数都不为 0。这是因为 Grundy 数的定义是最小非负缺失值(mex),0 不在这些 g(Si) 的集合中。当前玩家无论怎么移动,对手都将进入一个 Grundy 数不为 0 的状态,即对手将处于必胜状态。
  2. Grundy 数不为 0 的状态是必胜状态
    • 如果 g(S)≠0 ,则存在至少一个从 S 移动到的状态 Si ,使得 g(Si)=0 。因为 g(S) 是所有可能的后继状态 Grundy 数的 mex,所以存在某个状态的 Grundy 数为 0,当前玩家可以迫使对手进入必败状态。
归纳证明
  1. 归纳假设:假设对于所有小于状态 S 的博弈,Grundy 数已经正确定义并满足上述性质。
    • 对于状态 S,通过定义其 Grundy 数为所有可以到达状态的 Grundy 数的 mex 值:

g ( S ) = mex { g ( S 1 ) , g ( S 2 ) , … , g ( S n ) } g(S) = \text{mex}\{ g(S_1), g(S_2), \dots, g(S_n) \} g(S)=mex{g(S1),g(S2),,g(Sn)}

可以保证 g(S) 符合上述性质,即 g(S)=0 时必败,g(S)≠0 时必胜。这个定义确保了 g(S) 是正确的 Grundy 数,并且符合博弈的等价性条件。

等价性验证
  1. 等价性:对于任意一个无偏博弈,我们可以将其分解为若干个子游戏(子状态),每个子游戏都有其自身的 Grundy 数。Sprague-Grundy 定理的另一个推论是,多个子游戏的组合(联合游戏)的 Grundy 数是这些子游戏的 Grundy 数的异或和(XOR):

g ( S ) = g ( S 1 ) ⊕ g ( S 2 ) ⊕ ⋯ ⊕ g ( S n ) g(S) = g(S_1) \oplus g(S_2) \oplus \dots \oplus g(S_n) g(S)=g(S1)g(S2)g(Sn)

这使得原问题可以等价为一个尼姆博弈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值