Game Theory In Competitive Programming|Part2(原创)

博客以之前介绍的游戏为基础,深入探讨博弈论。引入Grundy数判断游戏局面胜负,定义了Mex及运算。阐述Sprague - Grundy定理,可解决类似Nim的公平组合游戏。还通过多个石子、迷宫等游戏实例,展示如何运用Grundy数和该定理判断先手胜负。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一个Part部分,我们介绍了Bash game、Nim game、Misere Nim game 这三个游戏的玩法、必胜策略,以及必胜策略的证明,并介绍了有关必胜态以及必败态的两条定理,接下来我们会以Part1为基础,深挖其中的理论。

1、Grundy Numbers/Numbers and Mex的引入

G r u n d y N u m b e r s Grundy Numbers GrundyNumbers 是一种在组合游戏理论中用来分析游戏局势的数学概念。

它主要用于判断在一些特定游戏中,当前局面对先手玩家是有利的还是不利的。

具体地说,给定一个游戏状态或局面, G r u n d y Grundy Grundy数能表示这个局面的胜负情况。

定义如下:

1、如果一个局面是终止局面,其 G r u n d y Grundy Grundy数为 0 0 0

2、对于非终止局面,其 G r u n d y Grundy Grundy数定义为所有可能的下一步局面的 G r u n d y Grundy Grundy​数中最小未出现的非负整数。

设当前状态为 S S S,其进行一次合法操作后的可能状态集合为: { S 1 , S 2 , . . . S k } \lbrace S_1,S_2,...S_k\rbrace { S1,S2,...Sk}

则有: G r u n d y ( S ) = M e x ( { G r u n d y ( S 1 ) , G r u n d y ( S 2 ) , . . . , G r u n d y ( S k ) } ) Grundy(S)=Mex(\lbrace Grundy(S_1),Grundy(S_2),...,Grundy(S_k)\rbrace) Grundy(S)=Mex({ Grundy(S1),Grundy(S2),...,Grundy(Sk)})

定义Mex

集合中未出现的最小非负整数。

定义运算Mex(set)

求出集合中未出现的最小非负整数。

列表观察:

Mex(set) 结果
Mex( ∅ \emptyset ) 0
Mex({1,2,3}) 0
Mex({0,2,3,4}) 1
Mex({0,1,2,3,4,…, w w w}) w + 1 w+1 w+1

下面用几个简单的游戏来验证 G r u n d y Grundy Grundy数:

Game1

题目:

有一堆数量为 n n n的石子,两个人轮流操作,每次操作可以取走任意数量的石子(不能不取)。

取走最后一个石子的玩家获胜。

列表观察 0 ∼ 10 0\sim10 010​的Grundy Numbers:

G r u n d y ( 0 ) = M e x ( ∅ ) = 0 Grundy(0)=Mex(\empty)=0 Grundy(0)=Mex()=0

G r u n d y ( 1 ) = M e x ( { G r u n d y ( 0 ) } ) = 1 Grundy(1)=Mex(\lbrace Grundy(0)\rbrace)=1 Grundy(1)=Mex({ Grundy(0)})=1

G r u n d y ( 2 ) = M e x ( { G r u n d y ( 0 ) , G r u n d y ( 1 ) } ) = 2 Grundy(2)=Mex(\lbrace Grundy(0),Grundy(1)\rbrace)=2 Grundy(2)=Mex({ Grundy(0),Grundy(1)})=2

. . . ... ...

G r u n d y ( n ) = M e x ( { G r u n d y ( n − 1 ) , . . . , G r u n d y ( 0 ) } ) = n Grundy(n)=Mex(\lbrace Grundy(n-1),...,Grundy(0)\rbrace)=n Grundy(n)=Mex({ Grundy(n1),...,Grundy(0)})=n

N 0 1 2 3 4 5 6 7 8 9
Grundy(N) 0 1 2 3 4 5 6 7 8 9

观察到,只有 n = 0 n=0 n=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

louisdlee.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值