首页 > 其他分享 >博弈论:公平组合游戏(Nim 游戏 & SG 定理)学习笔记

博弈论:公平组合游戏(Nim 游戏 & SG 定理)学习笔记

时间:2024-11-20 17:41:54浏览次数:1  
标签:状态 游戏 Nim 后继 必胜 oplus SG

博弈论:公平组合游戏(Nim 游戏 & SG 定理)学习笔记

公平组合游戏

定义:

  1. 两人轮流以最优方式操作,两人的操作方式相同。
  2. 每次操作游戏状态必须改变,不能操作者输,另一人赢。
  3. 每个游戏状态不能重复到达。

我们把每个状态看作一个点,每个状态的点向它后继状态的点连有向边,可以生成一张 DAG(有向无环图)。

所以公平组合游戏也叫做有向图游戏

必胜状态 & 必负状态

定义:

  1. 没有后继状态的状态为必负状态。
  2. 至少有一个后继状态为必负状态的状态为必胜状态。
  3. 所有后继状态都为必胜状态的状态为必负状态。
  4. 所有状态为必胜状态或必负状态。

记 \(n,m\) 为游戏生成的有向图的点数和边数。
则我们可以根据必胜状态和必负状态在 \(O(n+m)\) 的时间用记忆化搜索解决游戏的胜负。

Nim 游戏

有 \(n\) 堆石子,每堆石子有 \(a_i\) 个,两个人轮流取正整数个石子,不能取者输。

Nim 和

设一个状态 Nim 和为 \(S=a_1\oplus a_2\oplus\cdots\oplus a_n\)。

性质:Nim 和为 0 的状态为必负状态,Nim 和不为 0 的状态为必胜状态

证明

根据必胜状态和必负状态的定义,我们只需证明:

  1. 没有后继状态的状态,满足 \(S=0\)。
  2. 对于 \(S\ne0\) 的状态,至少有一种操作使得后继状态 \(S=0\)。
  3. 对于 \(S=0\) 的状态,没有一种操作使得后继状态 \(S\ne 0\)。

证明如下:

  1. 没有后继状态的状态,\(a_1=a_2=\cdots=a_n=0\),则 \(S=0\)。
  2. 对于 \(S\ne 0\) 的状态,考虑操作 \(a_i\) 变为 \(a_i'\) 可以满足条件。则 \(S\oplus a_i\oplus a_i'=0\),即 \(a_i'=a_i\oplus S\)。
    由于 \(S\ne 0\),因此考虑 \(S\) 的最高位的一位 1,根据异或的定义,有奇数个 \(a\) 这一位为 1,对于这一位为 1 的 \(a_j\),一定有 \(a_j\oplus S<a_j\),则操作 \(j\) 可以使 \(S'\) 为 0。
  3. 对于 \(S=0\) 的状态,根据异或的定义,其中一个 \(a\) 改变则 \(S\) 也会改变。

SG 函数

定义

  1. 对于没有后继状态的状态 \(x\),\(SG(x)=0\)。
  2. 对于状态 \(x\) 和它的所有后继状态 \(y\),\(SG(x)=mex(\{SG(y)\})\)。

其中 \(mex(S)\) 表示集合 \(S\) 中最小没出现过的非负整数

性质:\(SG(x)=0\) 时,\(x\) 为必败状态;\(SG(x)\ne 0\) 时 \(x\) 为必胜状态。

证明

根据必胜状态和必败状态的定义,我们只需证明:

  1. 没有后继状态的状态满足 \(SG=0\)。
  2. 对于后继状态存在 \(SG=0\) 的状态,它的 \(SG\ne 0\)。
  3. 对于后继状态没有 \(SG=0\) 的状态,它的 \(SG=0\)。

根据 \(SG\) 的定义,这三点都是显然的。

SG 定理

对于由 \(n\) 个有向图游戏组成的游戏,这个游戏每次操作可以选择一张图操作一次。

若当前每张图的状态为 \(s_i\),当且仅当 \(SG(s_1)\oplus SG(s_2)\oplus\cdots SG(s_n)\ne 0\) 时,先手必胜

证明

我们可以把第 \(i\) 堆石子有 \(SG(s_i)\) 个,由于 \(SG(x)=mex(\{SG(y)\})\),则 \(SG(s_i)=x\) 可以转移到所有的 \(SG(s_i')=y,0\le y<x\),这符合 Nim 游戏的要求,于是可以用 Nim 和来解释。

标签:状态,游戏,Nim,后继,必胜,oplus,SG
From: https://www.cnblogs.com/dccy/p/18558886

相关文章

  • P7115 [NOIP2020] 移球游戏
    link这道题我觉得是我做到过极好的构造题了,思路和优化的方法都比较有特点,对数据点范围的分析已经对数据的给分也比较恰到好处。之前做了这道题,特此写一篇题解。首先要批判一下给的小样例,对解题很容易起到反作用。所以构造题不能只看样例,要自己去手搓一下,这样才方便去做。本题我......
  • 【AN】Adobe Animate专业动画和互动内容制作软件下载安装(附win/mac安装包)
    目录AdobeAnimate简介一、功能介绍1.1动画制作1.2互动设计1.3多平台输出二、下载2.1获取安装包2.2 安装AdobeAnimate三、快捷键使用3.1基础操作快捷键3.2编辑快捷键3.3动画快捷键AdobeAnimate简介AdobeAnimate(AN)是Adobe公司推出的专业动画和互动......
  • 揭秘顶尖游戏网站蓝旗手游体验
    随着游戏行业的蓬勃发展,玩家们对游戏资源获取的需求越来越高。而在众多游戏软件网站中,某知名平台脱颖而出,以其丰富的内容和卓越的用户体验成为广大游戏爱好者的首选。今天,我们将深入分析这家网站,探讨它为何能在激烈的竞争中占据一席之地。蓝旗手游内容丰富多样:满足全方位需求......
  • Let'sGoFurther - Chapter 13: Sending Emails
    File:internal/mailer/templates/user_welcome.html:{{define"subject"}}WelcometoGrrenlight!{{end}}{{define"plainBody"}}Hi,ThanksforsigningupforaGrrenlightaccount.We'reexcitedtohaveyouonboard!Forfuturere......
  • # 优化底层启动方式 UWSGI 和 gunicorn 比对
    UWSGI和Gunicorn比对摘要:本文档旨在对PythonWeb项目优化底层启动方式进行比较,特别是UWSGI和Gunicorn。UWSGI(UniversalWebServerGatewayInterface)是一种PythonWeb服务器网关接口,它可以与各种Web服务器结合使用,提供高效的Web应用程序部署解决方案。Gunicorn(Gre......
  • C语言分支和循环相关游戏
    文章目录猜数字游戏1随机数生成1.1rand1.2srand1.3time1.4设置随机数的范围2.猜数字游戏实现猜数字游戏游戏要求:电脑自动生成1~100的随机数玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束1随机数生成如何产生随机数,一......
  • osg三维场景中拾取鼠标在模型表面的点击点
    osg三维场景中拾取鼠标在模型表面的点击点 #include<osg/Group>#include<osg/Geode>#include<osg/ShapeDrawable>#include<osgDB/ReadFile>#include<osgViewer/Viewer>#include<osgGA/GUIEventHandler>#include<osgGA/TrackballManipula......
  • SQL——512.游戏玩法分析Ⅱ
    题目来源:https://leetcode.cn/problems/game-play-analysis-ii/description/?envType=study-plan-v2&envId=sql-premium-50题目描述:题目示例:解题代码:```sql#法一:窗口函数SELECTplayer_id,device_idfrom(SELECTplayer_id, device_id, event_date, MIN(......
  • BSGS
    给定\(a,b,p\)。求最小非负整数\(x\)使得\(a^x\equivb\pmodp\),或报告无解。保证\((a,p)=1\)。首先根据欧拉定理,\(a^x\equiva^{x\bmod\varphi(p)}\bmodp\)。所以最优的\(x\)一定不大于\(\varphi(p)\)。换一个比较松上限\(p\)。不妨先随便找一个数\(k\)......
  • 现场可编程门阵列英特尔® Stratix® 10 GX FPGA 1SG166HN2F43E2LG设计用于满足高吞吐
    英特尔®Stratix®10GXFPGA包含多达1020万个LE。它们在单独的收发器块上配备多达96个通用收发器,可提供2666MbpsDDR4外部内存接口性能。这些收发器可提供高达28.3Gbps的短距离和跨背板传输。这些设备针对需要最高收发器带宽和核心结构性能的FPGA应用而优化。优......