Game Theory In Competitive Programming|Part1 (原创)

本文介绍了博弈论在算法竞赛中的应用,特别是Bashgame和Nimgame等游戏中的必胜策略。通过实例分析,展示了如何通过观察石子数量和规则来确定先手的必胜或必败。同时,探讨了Nim游戏和其变种MisèreNimgame的策略和规则反转问题。

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

Game Theory In Competitive Programming|Part1

在算法竞赛中,博弈论是一个经常出现的题目类型。通常是两个人在给定规则下,每个人都按照最优策略进行博弈,我们的任务是找出获胜者。这通常是贪心算法、动态规划等算法的混合。下面,将对博弈论中的一些经典问题进行讨论。


在这里,我们讨论的是博弈游戏中的一类,即能够找到必胜策略的博弈。

并分析它的通用策略是什么?

Bash game

巴什博弈是一个简单的游戏,我们将通过分析这个游戏来引出我们分析博弈游戏的通用策略

让我们考虑这样一个游戏:

题目:

最初有一堆数量为 15 15 15的石子,选手甲、乙交替操作,每次操作需要从石子堆中拿走不超过 3 3 3个石子。

甲先手操作,取走最后一个石子的选手获胜。请问最终谁获胜?

分析:

没错,这是一个有必胜策略的游戏。

如果必胜策略不明显的话,不妨手动写出所有的状态来观察规律。

(这是一种常用的解决博弈问题的手段)。

下图为当先手操作时,面对特定的石子数量的时候,游戏最终的结果:

(L:Lose,W:Win)。

石子个数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
最终结果 L W W W L W W W L W W W L W W W

结论:

不难观察出,当石子个数被 4 4 4​整除的时候,先手必败,否则先手必胜。

这是为什么呢?

是因为,几乎所有具有必胜策略的游戏,都遵守两条关于必胜态,必败态的准则:

  • 如果当前状态能转移到必败态,当前状态是必胜态。
  • 如果当前状态只能转移到必胜态,当前状态是必败态。

我们能知道的是, 0 0 0是一个必败态。而先手能一次拿走 1 ∼ 3 1\sim3 13个石子。

故当石子个数为 1 1 1 2 2 2 3 3 3的时候,

这三个状态能转移到必败态,所以它们是必胜态。

于是我们可以抽象出一张图:(黑色是必败点,粉色是必胜点)。

在这里插入图片描述


现在我们将题目改的更普通一点还能得到必胜策略吗?

题目:

最初有一堆数量为 N N N的石子,选手甲、乙交替操作,每次操作需要从石子堆中拿走不超过 k k k个石子。

甲先手操作,取走最后一个石子的选手获胜。请问最终谁获胜?

必胜策略:

如果石子的个数是 ( k + 1 ) (k+1) (k+1)​的整数倍,说明先手必败,否则先手必胜。

我们依然能通过画图列表来得到这个结论。

这说明它们是博弈游戏中通用的观察必胜策略的手段。


现在我们考虑另一个游戏来试验这种分析手段是否可行:

题目:

最初有一堆数量为 8 8 8的石子,选手甲、乙交替操作,每次操作可以从石子堆中拿走数量为 x x x的石头,

x x x是当前石子数量的约数,且小于当前石子数量。

甲先手操作,无法取石头的人输。请问最终谁获胜?

分析:

石头数量 1 2 3 4 5 6 7 8
最终结果 L W L W L W L W

通过列表的方法,我们发现了这样的结论:当石头个数为奇数,先手必败,否则先手必胜。

Nim game

Nim游戏是博弈游戏中的一个重要角色,因为它和其他很多博弈有着相同的特性。

甚至能用相同策略进行解决,我们将重点讨论Nim游戏,Nim游戏的策略推广到其他博弈。

题目:

最初有 n n n堆石子,第 i i i堆石子最初有 x i x_i xi个。

A l i c e 、 B o b Alice、Bob AliceBob轮流操作,每次操作可以选择拿走一堆石子中取任意数量的石子(至少为 1 1 1)。

无法取石子的玩家输掉比赛。

这也是一个具有必胜策略的游戏。

结论:

设每一堆石子最初的数量异或和为: s s s ( s = x 1 ⨁ x 2 ⨁ . . . ⨁ x n ) (s=x_1\bigoplus x_2\bigoplus...\bigoplus x_n) (s=x1x2...xn)

s = 0 s=0 s=0的时候,先手必败,否则先手必胜。

分析:

不妨设 W W W是必胜态, L L L是必败态。

根据之前说的理论:

  • 如果当前状态能转移到必败态,当前状态是必胜态。
  • 如果当前状态只能转移到必胜态,当前状态是必败态。

需要验证 N i m   g a m e Nim \:game Nimgame的结论是否符合上述理论:

1、当 s = 0 s=0 s=0时,拿走任意一堆的任意数量的石头,都会使得 s ≠ 0 s\neq0 s=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

louisdlee.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值