从Nim游戏到SG函数

从Nim游戏到SG函数

Nim游戏

公平组合问题在蓝桥杯等算法竞赛中经常出现,最经典的例子莫过于Nim游戏

Nim游戏:两个玩家面前有若干堆石子,每个玩家每次可在每堆石子中取走任意多个石子,取走最后一枚石子的玩家获胜。

其结论为如果所有堆的石子个数的异或值为0,那么代表这个状态是先手必负,否则说明该状态为先手必胜状态。

SG函数

由SG定理可知,所有的公平组合问题都等价于若干单堆Nim游戏的和(要求是类似取走最后一个石子的人获胜)

例子

Bash博弈

一堆石子,每次只能取1~k个,取到最后一个石子的人获胜。

首先SG(0)=0为先手必负状态

SG(1)=1

SG(2)=2

SG(3)=3

...

SG(k)=k

SG(k+1)=0

因此Bash博弈的先手必负条件等价于n%(k+1)=0

否则先手必胜.

相关推荐
郝学胜_神的一滴14 分钟前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
复杂网络15 分钟前
论最小 Agent 计算机的形态
算法
kisshyshy16 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
众少成多积小致巨17 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
猿人谷1 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络1 天前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络1 天前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao4001 天前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao4001 天前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
JieE2122 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法