首页 > 其他分享 >博弈论(Nim游戏 , 有向图游戏)

博弈论(Nim游戏 , 有向图游戏)

时间:2023-10-27 21:14:39浏览次数:50  
标签:有向图 游戏 Nim 必败 石子 异或 SG

博弈论专题

Nim游戏

内容:

 

有 n 堆石子,每堆石子的石子数给出,甲乙两人回合制取石子,每次可以取任意一堆石子的任意多个(可以直接取完,但不能不取),每个人都按照最优策略来取(抽象),问先手必胜先手必败

 

结论:

 

设有 n 堆石子,每堆的个数分别为 a1 , a2 , a3 , …… , an-1 , an 。则有:

先手必胜态:a1 ^ a2 ^ a3 ^ …… ^ an-1!= 0

先手必败态:a1 ^ a2 ^ a3 ^ …… ^ an-1 = 0

 

证明:

每堆石子数的异或和等于零,说明:二进制位下,每个数的各位数对齐。将 2^0 , 2^1 , 2^2 , …… , 2^x 各位的 1 相加,每位一的个数和必定是偶数个(含0)。

先手必胜态:先手必然可以拿走一些石子,使异或和为0(感性可理解)。后手拿走石子后,异或和必然不为零,因为同一二进制位上最多只能拿一次(只能拿同一堆内的),又不能不拿。直到先手拿走最后一个。

先手必败态同理。

 

拓展:

台阶型Nim游戏,同样是异或和,必胜态与必败态之间的转化,自己推。

有向图游戏

 

内容:

给定一个有向无环图,图中只有一个起点,在起点上放一个棋子,两个玩家轮流沿着有向边推动棋子,每次走一步,不能走的玩家失败。

 

定理:

mex运算:mex( S ) 为集合 S 中没有的最小非负整数。 例:mex( { 1,2,3 } ) = 0 , mex( { 0 } )= 1

SG函数:SG(x) = mex( { SG(y1),SG(y2),SG(y3),……,SG(yk) } ) (其中y1等是x可以走到的点)

SG定理:i)当这个游戏只有一个有向图时,若 SG(start) != 0,则先手必胜;反之先手必败。

  • 证明:因为起点值不为 0,所以它必定可以移动到一个值为 0的点,值为零的点又只能移动到值不为零的点,当值为 0 的点是走不动的点时,后手就输了,故后手必输 

 

                ii)当有多个有向图时,若 SG(s1) ^ SG(s2) ^ SG(s3) ^ …… ^ SG(sn) != 0 时先手必胜;反之先手必败

  • 证明:此时每一个有向图游戏的起点处都有一颗棋子,先手后手可能走的是不同图上的棋子。若异或和不为 0,则先手一定可以选择其中一个有向图,那个点 (x) 所连的点的 SG() 值是 [ 0,SG(x) ),必定有构造将所有的 SG() 的异或值为 0(此时移动过后的有向图start发生改变),将必败态留给对手。当所有的 SG() 值都为不能继续走的 0 时,先手获胜。

标签:有向图,游戏,Nim,必败,石子,异或,SG
From: https://www.cnblogs.com/wenyutao1/p/17793133.html

相关文章

  • 基于ssm的星空游戏交易平台
    博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言,只有实实在在的写点程序。技术:ssm+mysql+jsp随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,......
  • [ABC299G] Minimum Permutation
    ABC229G洛谷链接atcoder链接容易发现如果最终答案有两个相邻的数\(b_i,b_{i+1}\)满足\(b_i>b_{i+1}\)且\(b_i\)之后出现过,则显然可以找到另一个不劣的答案不满足这个性质先说一个错误的结论:从前往后考虑,用链表维护答案,对于加入的一个数\(a_i\),如果之前在\(a_j\)出现......
  • 潮玩宇宙游戏系统开发详细规则
      一、游戏概述  潮玩宇宙游戏软件开发主题是以策略类游戏为主,玩家扮演各种的潮玩角色,通过收集相关的潮玩形象,培养潮玩宠物,打造出属于自己的潮玩宇宙项目。  二、系统概述  该游戏系统软件包括潮玩收集,潮玩养成,宇宙区域探索,战斗环境。玩家通过游戏内的各种玩法......
  • P4069 SDOI2016 游戏
    传送门solution树剖后一段路径变成了若干链拼起来。自上而下和自下而上分别维护两棵李超线段树,每条链就是一段数轴,提前处理每个点两种方向上的在链内的横坐标。以最近公共祖先为界,把路径分成两段。从一个点向链的顶端跳就是区间加线段。每次跳完要把线段的截距增加一个横坐标偏......
  • 加入Ban-Pick机制对即时战略游戏的意义
    1.一定程度上的解决平衡性的问题:即时战略游戏的平衡性设计是一个很难的工作,很多开发团队为了达到平衡的目的而选择让各种族的兵种同质化。与其把这个难度都交给开发者,不如学习Dota等游戏,引入Ban-Pick机制。2. 减少兵种设计难度,让设计师放开手脚:在大多数的即时战略游戏中,平衡性......
  • 2023CCPC女生专场 L 字符串游戏【AC自动机】
    一句话题解:AC自动机,在fail树上自顶向下预处理,以实现O(1)统计答案Description:n个模式串{Sn},1个文本串T。每次小B会选取T的一个子串(只要子串位置不相同则视作不同),对答案的贡献是该子串中含有的模式串的总数目。对于选取子串的所有方法,求总共的答案。Solution:对于文本串出现的......
  • 网络游戏中支付系统的架构与设计
    游戏支付系统如何架构与设计目前游戏开发中主流的支付是微信支付,支付宝支付,苹果支付等。今天来给大家分享一下游戏中支付系统如何架构与设计。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。游戏......
  • #yyds干货盘点# LeetCode程序员面试金典:生命游戏
    题目根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。给定一个包含m×n个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1即为活细胞(live),或0即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂......
  • C语言小游戏篇
    大家好!今天我将为你展示一款由C语言编写的小游戏。这款游戏名为“数字猜猜乐”。让我们一起来体验一下吧!游戏开始时,系统会随机生成一个1到100之间的整数,然后你需要从1到100中猜出这个数字是多少。系统会根据你的猜测给出相应的提示,直到你猜中为止。我们首先定义一个变量来存储系统......
  • 猜数字小游戏
    文章目录一、案例分析二、制作步骤1.系统生成随机数2.开始猜三、总结一、案例分析while循环案例:猜数字!案例分析:系统随机生成1~100之间的随机数,玩家进行猜测,如果猜错了,则提示猜测过大或过小,如果猜对,就提示玩家猜对并退出游戏。二、制作步骤1.系统生成随机数生成随机数种子作用:利......