博弈论进阶之Anti-SG游戏与SJ定理
前言
在上一节中,我们初步了解了一下SG函数与SG定理。
今天我们来分析一下SG游戏的变式——Anti-SG游戏以及它所对应的SG定理
首先从最基本的Anti-Nim游戏开始
Anti-Nim游戏是这样的
有两个顶尖聪明的人在玩游戏,游戏规则是这样的:
有\(n\)堆石子,两个人可以从任意一堆石子中拿任意多个石子(不能不拿),拿走最后一个石子的人失败。问谁会胜利
博弈分析
Anti-Nim游戏与Nim游戏唯一的不同就是两人的胜利条件发生了改变,不过这并不影响我们对结论的推导
对于这个游戏,先手必胜有两种情况
- 当
每堆石子都只有一个,且游戏的SG值为\(0\) 至少一堆石子多于一个,且游戏的SG值不为\(0\)
粗略的证明一下
游戏大概可以被分为\(3\)种情况
- 每堆只有一个石子
- 当异或值为\(0\)时,先手必胜
- 当异或值不为\(0\)时,先手必败
- 只有一堆石子数大于1,先手必胜
经过分析不难发现,先手可以对数量大于1的那堆石子下手脚,从而构造出后手必败的状态
- 存在至少两堆石子数大于1
- 当异或和为0时,先手必败
- 当异或和不为0时,先手必败
这一步的结论与Nim游戏非常相似,同时它们的证明也非常相似,大概就是从异或和为\(0\)的状态无论怎样都会变为异或和不为\(0\)的状态,反过来从异或和不为\(0\)的状态总有一步能到达异或和为\(0\)的状态
推广
按照我们学习SG函数的思路,我们是否可以把Anti-Nim游戏推广开来呢?
答案是肯定的
定义Anti-SG游戏
- Anti-SG游戏规定:决策集合为空的游戏者赢
- 其余规则与SG游戏相同
同时我们定义SJ定理
对于Anti-SG游戏,如果我们规定当局面中所有单一游戏的SG值为0时,游戏结束,则先手必胜当且仅当
- 游戏的SG函数不为0且游戏中某个单一游戏的SG函数值大于1
- 游戏的SG函数为0且没有某个单一游戏的SG函数大于1
证明与SG函数类似,
不追求完美的可以从DAG上归纳
追求完美的可以用模仿棋证明出该游戏的等价性然后推出该游戏是可数集合然后通过计算推出在模\(2\)意义下线性空间的基可以为\(nim(0),nim(1)\)最后归纳证明一个后继是若干Anti-nim游戏的游戏等价于\(mex(S)\)
例题
按照whx老师的说法
Anti-SG不怎么重要,我至今为止就做到过一道题
那道题在这儿
博弈论进阶之Anti-SG游戏与SJ定理的更多相关文章
- BZOJ 1022: [SHOI2008]小约翰的游戏John [SJ定理]
传送门 $anti-nim$游戏,$SJ$定理裸题 规定所有单一游戏$sg=0$结束 先手必胜: $1.\ sg \neq 0,\ 某个单一游戏sg >1$ $2.\ sg = 0,\ 没有单一 ...
- [BZOJ1022] [SHOI2008] 小约翰的游戏John (SJ定理)
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取 ...
- 【HDU 3590】 PP and QQ (博弈-Anti-SG游戏,SJ定理,树上删边游戏)
PP and QQ Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- [您有新的未分配科技点]博弈论进阶:似乎不那么恐惧了…… (SJ定理,简单的基础模型)
这次,我们来继续学习博弈论的知识.今天我们会学习更多的基础模型,以及SJ定理的应用. 首先,我们来看博弈论在DAG上的应用.首先来看一个小例子:在一个有向无环图中,有一个棋子从某一个点开始一直向它的出 ...
- 博弈论进阶之Multi-SG
Multi-Nim 从最简单的Nim模型开始 它的定义是这样的 有\(n\)堆石子,两个人可以从任意一堆石子中拿任意多个石子(不能不拿)或把一堆数量不少于\(2\)石子分为两堆不为空的石子,没法拿的人 ...
- 博弈论进阶之Every-SG
Every-SG 给定一张无向图,上面有一些棋子,两个顶尖聪明的人在做游戏,每人每次必须将可以移动的棋子进行移动,不能移动的人输 博弈分析 题目中的要求实际是"不论前面输与否,只要最后一个棋 ...
- POJ 3480 John(SJ定理博弈)题解
题意:n堆石头,拿走最后一块的输 思路:SJ定理:先手必胜当且仅当:(1)游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1:(2)游戏的SG函数为0且游戏中没有单一游戏的SG函数大于1. 参考 ...
- SJ定理——省选前的学习2
——博弈论?上SG定理!什么?不行?那就SJ定理吧. 原来还有这么个玩意... bzoj1022. 大意是Nim取石子游戏中取到最后一个石子就算输,即无法取了就获胜(原版是无法取了就输). 我们试图套 ...
- bzoj 1022 SJ定理
与传统的SG游戏不同的是,完成最后一个状态的人是输的,我们把这一类问题称作Anti-SG,这类问题的解决我们需要引入一个定理—SJ定理: 对于任意一个Anti-SG游戏,如果我们规定当局面中所有的单一 ...
随机推荐
- Mesos源码分析(7): Mesos-Slave的启动
Mesos-Slave的启动是从src/slave/main.cpp中的main函数开始的. 看过了Mesos-Master的启动过程,Mesos-Slave的启动没有那么复杂了. 1. ...
- html5 postMessage 实现类似 sendMessage 的同步效果,支持跨域
实现一个客户端发送 “save 一个答案,在获取答案, 跨域的另一个页面中,回调返回”3“的场景. 客户端:请在 http://127.0.0.1/pk/index.html 打开 <html& ...
- 图片转web字体库,如何制作web字体库
最近项目上用到了很多svg图,设计师经常频繁改版,苦不堪言,于是就想到了把图片转成字体库来使用. 使用图片的缺点: 1. 图片加载速度慢 2. 图片大小固定,无法调节 3. 当代码重构或者图片目录位置 ...
- [Swift]LeetCode296. 最佳开会地点 $ Best Meeting Point
A group of two or more people wants to meet and minimize the total travel distance. You are given a ...
- [Swift]LeetCode714. 买卖股票的最佳时机含手续费 | Best Time to Buy and Sell Stock with Transaction Fee
Your are given an array of integers prices, for which the i-th element is the price of a given stock ...
- mybatis-generator XML Parser Error on line 38: 必须为元素类型 "table" 声明属性 "enableInsertByPrimaryKey"。
1. 解决方法 在 table 元素中删除属性 enableInsertByPrimaryKey 即可.就是这么神奇... 2. 情景重现 使用 mybatis-generator 插件生成代码时报错 ...
- Python内置函数(55)——round
英文文档: round(number[, ndigits]) Return the floating point value number rounded to ndigits digits afte ...
- 【Docker】(1)---Docker入门篇
Docker入门篇 简单一句话: Docker 是一个便携的应用容器. 一.Docker的作用 网上铺天盖地的是这么说的: (1) Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得 ...
- IView组件化之部署及按钮学习
IView是什么? iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品. Npm安装IView npm install iview 在main.js中配置I ...
- Mac电脑C语言开发的入门帖
本文是写给Mac电脑开发新手的入门帖,诸神请退散. C语言 C语言可说是电脑环境中的"镇国神器",从发明至今,虽然C语言的使用者缓慢的减少,但从当前市场应用情况看,尚无一台电脑能够 ...