博弈论专题

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游戏 , 有向图游戏)的更多相关文章

  1. 博弈论进阶之Anti-SG游戏与SJ定理

    前言 在上一节中,我们初步了解了一下SG函数与SG定理. 今天我们来分析一下SG游戏的变式--Anti-SG游戏以及它所对应的SG定理 首先从最基本的Anti-Nim游戏开始 Anti-Nim游戏是这 ...

  2. 51nod1069【Nim取石子游戏】

    具体看:萌新笔记之Nim取石子游戏可以这么写: #include <bits/stdc++.h> using namespace std; typedef long long LL; in ...

  3. 萌新笔记之Nim取石子游戏

    以下笔记摘自计算机丛书组合数学,机械工业出版社. Nim取石子游戏 Nim(来自德语Nimm!,意为拿取)取石子游戏. 前言: 哇咔咔,让我们来追寻娱乐数学的组合数学起源! 游戏内容: 有两个玩家面对 ...

  4. MMORPG大型游戏设计与开发(游戏服务器 游戏场景 概述 updated)

    我们在玩游戏的时候,我们进入游戏后第一眼往往都是看到游戏世界中的场景,当然除了个别例外,因为那些游戏将游戏场景隐藏了起来,如文字游戏中的地点一样.既然我们接触了游戏世界的核心,那么作为核心的场景又包括 ...

  5. MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载

    MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载  武侠类手机文字游戏,经典再现高度自由玩法宠物 自制装备 师徒自立门派 自造武功欢迎来玩 Q群 1 ...

  6. (NO.00005)iOS实现炸弹人游戏(八):游戏主角(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近一直在做另一个RPG游戏,所以本系列迟迟没有更新,上一篇博 ...

  7. python小练习:使用循环和函数实现一个摇骰子小游戏。游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“大”,3<=总值<=10为“小”。然后告诉玩家猜对或者是猜错的结果。

    python小练习:使用循环和函数实现一个摇骰子小游戏.游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“ ...

  8. Unity3D游戏-愤怒的小鸟游戏源码和教程(二)

    Unity愤怒的小鸟游戏教程(二) 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) AngryEva游戏效果 ...

  9. Unity3D游戏-愤怒的小鸟游戏源码和教程(一)

    Unity愤怒的小鸟游戏教程 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) AngryEva游戏效果: 1 ...

  10. Java初学者作业——实现控制台的猜数字游戏。游戏运行时产生一个1~100之间的随机数字

    返回本章节 返回作业目录 需求说明: (1)实现控制台的猜数字游戏.游戏运行时产生一个1-100之间的随机数字 (2)要求用户从控制台输入数字,若输入的数字比随机数小,则输出"太小了,再大一 ...

随机推荐

  1. 求任意两个正整数的最大公约数(GCD)。

    问题描述 求任意两个正整数的最大公约数(GCD). 问题分析 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数.几个自然数公有的约数,叫做这几个自然数的公约数.公约数中最大的一个公约 ...

  2. Android LinearLayout快速设置每个item间隔

    原文地址: Android LinearLayout快速设置每个item间隔 平常使用LinearLayout的时候,有时候会需要对每个item设置间距,但是每个item都加上margin的方法实在有 ...

  3. 2023郑州轻工业大学校赛邀请赛wh

    在这里,很感谢程立老师的帮助和选择我,我以后会跟着程老师,既然热爱,就要走下去! 2022年4月2号,我代表河南工业大学与郑州17所高校在郑州轻工业大学举办的"卓见杯"郑州轻工业大 ...

  4. BigCode 背后的大规模数据去重

    目标受众 本文面向对大规模文档去重感兴趣,且对散列 (hashing) .图 (graph) 及文本处理有一定了解的读者. 动机 老话说得好: 垃圾进,垃圾出 (garbage in, garbage ...

  5. Html转换PDF(Java实用版)

    前言: 在工作当中,遇到了需要把HTML页面转化为PDF文档,有很多中实现,如下进行一个对比,大家个借鉴去进行使用 各实现对比表 于Windows平台进行测试: 此博客仅基于IText和基于WKHtm ...

  6. redis 中的 字符串

    String是redis 中的最基本的类型, 为二进制安全  ,意味着String可以表示各种类型  一个字符串value 最大为 521M set k1 v100 set k2 v200 get 命 ...

  7. Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-4_w0c665/PyQt5/

    错误: 解决方式:输入一下命令 1 pip3 install --upgrade setuptools 2 python3 -m pip install --upgrade pip 输入命令: 1 p ...

  8. pycharm链接mysql报错: Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.

    检查驱动 我本机安装的mysql版本是5.6的,那么IDEA要连接mysql也应该匹配下驱动版本.把Driver改成MySQL for 5.1就可以了. 参考链接:https://blog.csdn. ...

  9. MySQL5.5+配置主从同步并结合ThinkPHP5设置分布式数据库

    前言: 本文章是在同处局域网内的两台windows电脑,且MySQL是5.5以上版本下进行的一主多从同步配置,并且使用的是集成环境工具PHPStudy为例.最后就是ThinkPHP5的分布式的连接,读 ...

  10. nflsoj 1351 抓住奶牛

    这题类似走迷宫,走迷宫是向四个方向进行拓展,而这道题好比是向三个方向拓展,分别是:\(x+1,x-1,x×2\) 在这里拓展的时候我写了一个函数 operation 来计算拓展后的坐标 这里判断坐标是 ...