当前位置: 首页 > news >正文

博弈论杂谈

公平组合游戏

在任意确定状态下,所有参与者可选择的行动完全相同,仅取决于当前状态,与身份无关;
博弈中的同一个状态不可能多次抵达,博弈以参与者无法行动为结束,且博弈一定会在有限步后以非平局结束。

OI wiki 上是这么说的,大概意思就是说游戏双方可以干相同的事不会相互影响,一方无法行动结束了,并且会在有限步内结束。

每一个局面都有一个必胜必败态,如果它的后继状态中有一个必败态,则当前局面是必胜态;反之,如果后继状态没有必败态,则当前局面是必败态。

将局面放在图上向后继状态连边会形成 DAG。

Nim 游戏

游戏内容

\(n\) 堆石子,两人轮流取,每人每次只能选择其中一堆拿走任意多石子,但不能不拿,无法操作者输。

结论

求最开始每一堆石子个数的异或和,若不为 \(0\) 则先手必胜,否则必败。

证明

需证明异或和为 \(0\) 是必败态,不为 \(0\) 为必胜态。

首先若无法操作即所有堆个数均为 \(0\),异或和显然为 \(0\)

如果当前局面的异或和不为 \(0\),考虑其最高位,则一定有一堆石子个数的二进制最高位和异或和的最高位相同,拿这堆石子即可让异或和重新为 \(0\),即进入对方必败态。

如果当前局面异或和为 \(0\),则无论取哪一堆,异或和都会变化,即进入对方必胜态。

SG 函数

SG 函数是用来描述当前局面的必胜必败状态的函数,其参数就是当前局面。

定义 \(SG(x)\) 为局面 \(x\) 的 SG 函数,若 \(x\)\(k\) 个后继状态 \(y_1,y_2,\cdots,y_k\),则:

\[SG(x) = mex\{SG(y_1),SG(y_2),\cdots,SG(y_k)\} \]

容易发现结束局面没有后继状态,\(SG(x) = 0\),进而发现如果一个局面的 \(SG(x) =0\),则当前局面必败,否则必胜。

因为如果 \(SG(x)=0\),也就是后继状态没有 \(SG(y) = 0\),即必败态;若存在 \(SG(y)=0\),则 \(SG(x)>0\),能够转移到必败态,所以是必胜态。

SG 定理

其实如果只有 SG 函数这一个东西还不是很有用,还不如做一个必胜必败 DP,所以我们需要 SG 函数更优秀的性质。

内容

如果一个局面 \(x\) 能够划分成 \(k\) 个子局面 \(y_1,y_2,\cdots,y_k\),则:

\[SG(x) = SG(y_1) \oplus SG(y_2) \oplus \cdots \oplus SG(y_k) \]

也就是我们可以用多个子局面的 SG 值拼出整个局面的 SG 值。

对于子局面,可以理解为 DAG 上几个不同的点,它们一起组成了当前局面。

证明

显然对于每一个 \(y_i\),一定能够走到一个 \(SG(p) < SG(y_i)\) 的一个后继状态,但还有一些 \(SG(q)>SG(y_i)\) 的后继状态。

分类讨论,如果走到了一个 \(SG(q) > SG(y_i)\) 的后继局面,那么后手显然可以重新走到 \(SG(q')=SG(y_i)\) 的局面 \(q'\),换言之,这是无效操作。

如果走到了 \(SG(p) < SG(y_i)\),那么这就和 Nim 游戏本质相同了,每次可以让一个子局面的 \(SG\) 值减少任意值。

使用 Nim 游戏的结论即可得证。

例题

[ARC151D] Binary Representations and Queries

statement

显然每一个不同的全 \(0\) 段都是一个子局面,考虑分开讨论最后异或起来。

\(f_1(x),f_2(x),f_3(x),f_4(x)\) 表示两侧没有元素,只有一侧有元素,两侧元素相同,两侧元素不同的 SG 函数,我们写出转移方程:

\[f_1(x) = mex\{ f_2(i-1) \oplus f_2(n-i)\} \]

\[f_2(x) = mex\{ f_3(i-1) \oplus f_2(n-i) , f_4(i-1) \oplus f_2(n-i)\} \]

\[f_3(x) = mex\{ f_3(i-1) \oplus f_3(n-i) , f_4(i-1) \oplus f_4(n-i)\} \]

\[f_4(x) = mex\{ f_3(i-1) \oplus f_4(n-i) , f_4(i-1) \oplus f_3(n-i)\} \]

打表发现:

\[f_1(x) = x \bmod 2 \]

\[f_2(x) = x \]

\[f_3(x) = 1 \]

\[f_4(x) = 0 \]

计算出全局 SG 值即可。

http://www.wxhsa.cn/company.asp?id=319

相关文章:

  • 基于MATLAB的图像配准与拼接实现
  • ESP-IDF在vscode环境下编译速度
  • Docker容器
  • EtherCAT总线介绍及耦合器EK1100
  • centos服务器定时任务备份数据库脚本
  • 小红书全量笔记数据集(含标题、正文、标签、互动量、图片等),可用于NLP、推荐算法、大模型训练、爆款文章生成、精准营销与市场分析
  • PVE跨集群迁移虚机
  • CF2022E 题解 | 数学、并查集
  • 领悟2025.9.10
  • Codeforces Round 1049 (Div. 2)
  • 告别资料混乱!PJMan 让项目文件管理,简单到不用找
  • 公众号文章如何添加附件?微信公众号支持附件下载Word、Excel、PDF、PPT等
  • 揭秘LedgerCTF的AES白盒挑战:逆向工程与密码学分析
  • Java11-快速启动指南-全-
  • 三万小时PB级院线级电影数据集,包含完整视频、音频和字幕多模态资源,专为视频大模型训练和多模态研究设计,适用于文生视频生成、影视剪辑、语义检索及智能内容管理
  • openssl编程之sm3哈希代码示例
  • CRMEB标准版PHP订单列表功能解析与实战应用
  • timescaledb在ubuntu上的高可用部署步骤记录
  • Mybatis
  • vue3不允许缓存组件keep-alive直接包裹router-view
  • 你的部署流程已然落伍-热重启的失传艺术
  • 安全不是一个功能-而是一个地基
  • Hall 定理相关
  • docker save load 案例
  • Python中的枚举类
  • 数据结构与算法-25.红黑树
  • 第一周个人作业
  • Python 虚拟环境使用和打包成exe程序
  • Docker存储
  • linux调优工具的简单介绍