博弈论3:图游戏SG函数(Graph Games)

目录

一、图游戏是什么

1.游戏特征

2.游戏实例

 二、图游戏的必胜策略

1.SG 函数(Sprague-Grundy Function)

2.必胜策略(利用SG函数)

3.拿走游戏转化成图游戏(Take-away Game -> Graph Game)


一、图游戏是什么

1.游戏特征

给出一个有向无环图G(X,F),其中X是游戏可抵达位置的非空集合(点集,设开始节点为x0∈X),F是一个函数(F(x)代表x的后继节点,即从x位置往下走一步能抵达的位置。若x为终点,F(x)为空集)。

  • 两个玩家,I&II,每轮交替行动。玩家I先行动,从开始节点x0出发。
  • 若当下处在位置x,可以选择走向一个位置y,其中y∈F(x).(即:若x->y有一条有向边,玩家可以从x走到y)
  • 先走到终点的玩家获胜

说白了就是有张“地图”,图上有一个又一个的节点,绘制着一条又一条的单向路径。两个人都从开始位置出发,轮流走一条路;谁先走到终点,谁获胜。

2.游戏实例

你和小红在同一起点x0.

你和小红每轮交替行动,每次可以走一条有向边。

你或小红的移动都会造成双方的移动(也就是说,如果你从x0走到x1,那么小红也走到了x1,她将从x1开始往下走)。

第一轮,你从x0走到x1;第二轮小红从x1走到x3;第三轮,你从x3走到终点x4。于是你光荣地获得了胜利。

 二、图游戏的必胜策略

然而,实际游戏中的图不会像示例的那么简单。那么怎么找到一个获胜策略呢?别急,我们先引入一个基本概念。

1.SG 函数(Sprague-Grundy Function

对于一个有向图G(X,F),我们定义一个SG函数g,  使得对于任意x∈X,都有

g(x)=min\{n\geqslant 0\,n\neq g(y)\ for y \epsilon f(x) \}

说人话,g(x) 是一个最小非负整数,这个非负整数不等于x所有后继节点的g(x)值(也就是SG值)。

显然,终点的SG值肯定为0(我们规定终点不会走向任何后继节点)。

于是求SG值,我们可以从终点开始求,再求只能抵达终点的那些点,再再求能抵达抵达终点的那些点的那些点...

ex.

2.必胜策略(利用SG函数)

事实上,SG值g(x)揭示了制胜策略:若行动后走到g(x)=0的点,一直行动下去就能获胜。

我们称g(x)=0的点为P位置,g(x)≠0的点为N位置。

P位置,即positions that are winning for the Previous player (the player who just moved),行动完走到这个位置的玩家获胜。

N位置,即 winning for the Next player to move,行动完之后走到这个位置,你的对手玩家(也就是下一轮行动的玩家)会获胜

终点一定是P位置;对于任何P位置,只能走到N位置;对于任何N位置,一定可以抵达其中一个P位置。(如果你想证明g(x)=0的点一定是P位置,也一定能获胜,可以利用这三条性质证明)

ex.

回到下面的图,我们观察到起点x0其实是一个P位置。(g(x0)=0)

假如你先行动,就只能走到N位置(x1或x3).

这时候,如果小红掌握了这个必胜策略,即每次移动都走到P位置(比如从x1走到P位置x2,从x3走到P位置x4),那么不管你采用什么策略,小红都会获胜。

3.拿走游戏转化成图游戏(Take-away Game -> Graph Game)

比如在下面博客中,我介绍了拿走游戏。

 博弈论1:拿走游戏(take-away game)-CSDN博客

拿走游戏就像是一个减法游戏,你只可以从原有数字上,选择其中一个指定的数字减去。谁先把数减到0.谁就获胜。而拿走游戏也可以转化成图游戏求解,如果通过指定的减法能从一个筹码数a变成另一个筹码数b.那么a到b之间就有一条有向边,b就是a的后继节点。

比如你和小红面前有17个筹码,每次能拿走1个或3个或4个。那么实际上就可以画出18个点,依次代表0,1,2,...,16,17.当筹码数为17时,能通过拿筹码使剩下筹码数变成16或14或13,于是从节点17到节点16、节点14、节点13就分别有一条有向边。

通过图游戏的转化,我们便可以计算SG值,从而求出g(x)=0的所有P位置,从而掌握制胜策略。比如图中,g(x)=0,g(1)=1,g(2)=0,g(3)= 1,g(4)=2,.....

计算到一定步骤,你会发现P位置其实是有规律的,比如这个图游戏中,P位置都是7k或7k+2的点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费生成AI PPT产品推荐?

要完全免费几乎是没有的,要知道AI还是非常烧钱的。 不过免费蹭还是有很多方法的,这里收集了一些: 下面分享我自己免费蹭过的几款AI制作PPT的工具。 1 金山-WPS PPT对我们来说并不陌生,而微软的PowerPoint与金山的WPS也是我们最常…

Python机器视觉的学习

一、二值化 1.1 二值化图 二值化图:就是将图像中的像素改成只有两种值,其操作的图像必须是灰度图。 1.2 阈值法 阈值法(Thresholding)是一种图像分割技术,旨在根据像素的灰度值或颜色值将图像分成不同的区域。该方法…

Cisco Packet Tarcer配置计网实验笔记

文章目录 概要整体架构流程网络设备互连基础拓扑图拓扑说明配置步骤 RIP/OSPF混合路由拓扑图拓扑说明配置步骤 BGP协议拓扑图拓扑说明配置步骤 ACL访问控制拓扑图拓扑说明配置步骤 HSRP冗余网关拓扑图拓扑说明配置步骤 小结 概要 一些环境配置笔记 整体架构流程 网络设备互连…

【优选算法】二分算法(在排序数组中查找元素的第一个和最后一个位置,寻找峰值,寻找排序数组中的最小值)

二分算法简介: 提到二分我们可能都会想起二分查找,二分查找要求待查找的数组是有序的,与我们今天讲的二分算法不同,并不是数组元素严格按照有序排列才可以使用二分算法,只要数组中有一个点可以将数组分为两个部分&…

下载与使用PCL启动器(2.8.12正式版)

一.下载PCL启动器 PCL启动器下载官网:爱发电 连接创作者与粉丝的会员制平台将创作的自由还给创作者!爱发电是让创作者简单地获得稳定收入的粉丝赞助平台。无论你在创作什么,都能在这里获得持续的资金支持,让创作从此更自由。htt…

【ArcGIS】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

第一章、以问题导入的方式,深入掌握原理基础【理论篇】 1、R语言入门: (1)安装R及集成开发环境(IDE);(2)R语言基础语法与数据结构,包括:程序包安…

泊松编辑 possion editing图像合成笔记

开源地址: GitHub - kono-dada/Reproduction-of-possion-image-editing 掩码必须是矩形框

江科大笔记—DMA数据转运DMA+AD多通道

1. DMA初始化结构体详解 标准库函数对每个外设都建立了一个初始化结构体xxx_InitTypeDef(xxx为外设名称),结构体成员用于设置外设工作参数, 并由标准库函数xxx_Init()调用这些设定参数进入设置外设相应的寄存器,达到配置外设工作环境的目的。…

程序算术题-2

程序算术题-2 输出所有组合逻辑实例代码 输出所有排列逻辑实例代码 输出所有组合 计算一组数字按n位数组合的所有组合。 逻辑 /*** param stringBuilder 用于组合的拼接* param list 组合数序列* param level 目前位数* param exceptedLevel 组合期待位数*/…

MAC M3电脑在idea上搭建Spark环境并跑通第一个程序

我的电脑是Macbook Pro,最近在学习Spark,想要在idea里搭建Spark环境,为之后的Spark编程作准备。下面是在MAC版本的idea里配置Spark环境。 1. 准备工作 1.安装 JDK 确保Mac 上已经安装了 JDK 8 或更高版本。 可通过 java -version 查看是否…

欧科云链研究院:AI时代,如何证明“我是我”?

OKG Research|编辑 近日,OpenAI 发布了新模型 Sora。这是一款高性能的文本到多模态生成工具,支持从文本生成精细的图像和动态视频。 相较早先发布的视频样例,该功能目前已经可以由用户真实上手体验,目前由于服务过载…

任务5 Web服务配置与管理

Web服务概述 Web服务简介 当今人们获取和传播信息的主要方式之一。 Web服务提供的资源多种多样,可能是简单的文本,也可能是图片、音频和视频等多媒体数据。 常用的浏览器有Chrome、Internet Explorer,以及Firefox等。 手机等移动设备成为…

Opencv之图像添加水印

一、实验原理 在图片处理领域,添加水印是一种常见的操作。通过叠加图像的方式,可以将水印无缝嵌入目标图像的指定位置。其基本原理包括以下步骤: 1、模板输入(掩膜生成): 将水印图片转换为灰度图&#xf…

「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门

本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …

远程调试软件对比与使用推荐

远程调试软件对比与使用推荐 远程调试是现代软件开发中不可或缺的一部分,尤其是在处理分布式系统、云端服务或远程服务器上的问题时。以下是对几种常见远程调试工具的详细对比和推荐使用场景。 1. GDB (GNU Debugger) 特点 开源:完全免费且开源&…

HTML和JavaScript实现商品购物系统

下面是一个更全面的商品购物系统示例,包含新增商品、商品的增加删除以及结算找零的功能。这个系统使用HTML和JavaScript实现。 1.功能说明: 这个应用程序使用纯HTML和JavaScript实现。 包含一个商品列表和一个购物车区域。商品列表中有几个示例商品&a…

将带注释的Word文档改造成点击注释引用即可弹窗显示注释的HTML文档

阅读中国古籍电子书的时候,往往有很多注释。在正文和注释之间来回滚动页面是一件挺麻烦的事,比较方便的做法是将它编辑成通过点击注释引用即将注释弹出显示在引用所在位置的HTML文档,然后利用HTML文档制作成PDF或者epub文件,就比较…

Harmony Next开发通过bindSheet绑定半模态窗口

示例概述 Harmony Next开发通过bindSheet绑定半模态窗口 知识点 半模态窗口父子组件传值 组件 LoginComponent Component struct LoginComponent {// Prop 父子单项绑定值Prop message:string // Link 父子双向绑定值Link userName:stringLink password:stringLink isSh…

codeforces一些题目思路复盘

codeforces round 919 dv2 C Partitioning the Array 大致题意,对于n约数i,我们把原数组分成份,并且每份中有i个元素,对于每个分组情况,如果存在一个数m使得数组中元素modm后使得每个部分的数组完全相同,如…

ElasticSearch 简介

一、什么是 ElastcSearch? ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。 1.1 ElasticSearh 的基本术语概念 index 索引 索引类似与 mysql 中的数据库,ES 中的索引是存储数据的地方,包含了一堆有相似结构的文档数据…