博弈论们:
-
Nim 博弈:
两个人以最优策略在玩游戏,有 堆石子,第 堆有 个,每人每次能从一堆石子中取任意多个石子但不能不取,不能拿的人输,请问先手与后手谁必胜?
-
先手,后手:第一个,第二个行动者。
-
必胜,必败:指先手必胜或必败。
-
定理:Nim 博弈先手必胜,当且仅当:
证明:反证法假设 得出矛盾。(懒,咕了,有机会再说)
-
-
SG 函数
-
mex 运算:
对于一个非空数集:
我们将 定义为不属于数集的最小非负整数,如 为 。 -
SG 函数:
对于每种可能状态的后继状态 ,我们将当前状态 的 SG 函数定义为: -
SG 定理:
只有当:
时,有先手必胜局面。
证明:放在有向图上,剩下基本一样。(懒,咕)
-
-
有向图游戏:
在一个有向无环图有一枚棋子,两个人轮流操纵棋子沿有向边移动,知道有一方不能移动后游戏结束,并此一方失败。
-
有向图游戏的和的 SG 函数值与其各子游戏的 SG 值的异或和相等。
-
有向图游戏必胜当且仅当当前局面的 SG 函数值大于 。
-
有向图游戏必败当且仅当当前局面的 SG 函数值等于 。
实际上任意的公平组合游戏均能转化成为有向图游戏,具体只要抽象出游戏的每个可能局面,以合法行动为局面之间连边。
-
-
威佐夫博弈:
两个人以最优策略在玩游戏,有 堆石子,每人每次可以拿走任意一堆中任意数量的石子或在两堆石子中拿走相同数量的石子,不能拿的人输,请问先手与后手谁必胜?
我们首先考虑必败局面,我们不妨将其称之为“奇异局面”, 与 显然是一组“奇异局面” 那么我们考虑将这两种“奇异局面”中的一堆石子加减任意数,或同时加减任意数,得到“非奇异局面”,那便筛去了 ,,,,, 这几种局面。
这样,我们就可以推出接下来的几种”奇异局面“:观察可知,”奇异局面“ 中, 为前几种局面中数集取 操作,而 。
绘制函数,在坐标系中考虑,问题就抽象为了在坐标系中轮流进行游戏,每人可以向左(或向下)移动若干步,也可以向左下移动若干步,那我们把可以一步到达“奇异局面点”的坐标全部打标记,这些点均为“必胜局面”,如下:
那么下一个“奇异局面”也就对应两个横纵坐标最小的未被染色的点。
-
斐波那契博弈:
两个人在以最优策略玩游戏,有一堆石子,先手第一次可以拿任意多个但不能全拿走也不能不拿,之后每个人最少拿一个,最多拿前一个人两倍那么多个,谁取到最后一个谁就能获胜,请问先手后手谁必胜?
先不去考虑正解证明,我们来大力手玩一下( 不做考虑):
-
当 时,显然有先手必败。
-
当 时,先手不论抓几个,均面临必败局面。
-
当 时,先手以最优策略抓一个,后手至多只能抓两个,局面向 连边。
-
当 时,先手不论抓几个,后手均能将当前局面连向前局面,先手必败。
-
当 时,先手以最优策略抓一个,则当前局面向 连边,先手必胜。
我们似乎可以得出:如当前石子数为斐波那契数,则当前局面先手必败。
正确否?
我们考虑证明,但那之前,先看这样一个定理:
-
Zeckendorf 定理:
对于任意一个正整数 ,都可以视作若干个不相邻的斐波那契数之和。
证明(我不会)
知道了它,我们开始证明:
- 假设当前石子数为斐波那契数 ,那么 一定可以拆分为 的形式,现在假设所取石子数小于等于 那么必然先手失败,若取得石子数大于了 显然此时先手必败。
- 假设当前石子数为非斐波那契数,利用 定理,那么先手的策略是:拆分后取走最小的斐波那契数,后手面对下一个斐波那契数没有办法一次取走,取完这个部分的仍旧是先手,依次直到石子全部取走。先手必胜。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?