博弈论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,一经查实,立即删除!

相关文章

Redis篇-7--原理篇6--过期机制(定时删除,惰性删除,Redis过期事件监听和Java实现)

Redis提供了丰富的过期机制,允许用户为键设置一个生存时间(TTL,Time To Live),当键的生存时间到期时,Redis会自动删除该键。为了高效地管理过期键,Redis采用了两种主要的过期策略:定…

免费生成AI PPT产品推荐?

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

LeetCode-Golang之【5. 最长回文子串】

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 本算法采用 动态规划去解析 func longes…

音频数据采样入门详解 - 给Python初学者的简单解释

音频数据采样入门详解 - 给Python初学者的简单解释 声音是如何变成数字的?什么是采样率?为什么要懂这个?Python小例子总结 大家好!今天我们来聊一个有趣的话题:音频数据是如何在计算机中处理的。让我用最简单的方式来解…

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 组合期待位数*/…

第十四章:IO流 (java.io包中)

一、理解 1. 简单而言&#xff1a;流就是内存与存储设备之间传输数据的通道、管道。 2. 分类&#xff1a; (1) 按方向(以JVM虚拟机为参照物)【重点】 输入流&#xff1a;将<存储设备>中的内容读入到<内存>中。 输出流&#xff1a;将<内存>中的内容写入到…

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

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

Linux 安装NFS共享文件夹

程序默认使用2049端口&#xff0c;如果被占用需要修改端口104设置为服务端 122设置为客户端 一、在线安装&#xff08;服务端和客户端执行&#xff09; yum install nfs-utils rpcbind -y二、配置启动参数&#xff08;服务端执行&#xff09; 104服务器/mnt路径下创建shareda…

Maven常用插件清单

Maven 是一个强大的项目管理和构建工具&#xff0c;它使用插件来执行各种构建生命周期任务。以下是常用的一些 Maven 构建插件及其主要用途&#xff1a; 1. Maven Compiler Plugin 用途&#xff1a;编译Java源代码。配置示例&#xff1a;<build><plugins><plu…

大模型呼出机器人详解

大模型呼出机器人详解 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc 大模型呼出机器人是基于大规模深度学习模型构建的智能化客服系统&#xff0c;它能够处理海量数据并学习其中的规律&#xff0c;从而实现高…

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

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

React 进阶深入理解核心概念与高阶实践

在上一节中&#xff0c;我们学习了 React 的基础知识&#xff0c;包括组件、状态管理和基本操作。接下来&#xff0c;我们将进一步探索 React 的高级功能和实战技巧&#xff0c;例如 组件间通信、高阶组件、Context API、React Router 等。这些内容将帮助你构建更复杂、功能更丰…