ゲームスター

简单博弈论

Estar_Mailyn·2022-11-10 18:51·79 次阅读

简单博弈论

前置知识#

IGC游戏#

一、定义:#

  1. 两名选手
  2. 两名选手轮流行动,每一次行动可以在有限合法操作集合中选择一个
  3. 游戏的任何一种可能的局面(position),合法操作集合只取决于这个局面本身,不取决于轮到哪名选手操作、以前的任何操作、骰子的点数或者其它因素;局面的改变称为“移动”(move)
  4. 如果轮到某名选手移动,且这个局面的合法的移动集合为空(也就是说此时无法进行移动),则这名选手负

 对于第三条,我们有更进一步的定义Position,我们将Position分为两类:

Copy
P-position:在当前的局面下,先手必败 N-position:在当前的局面下,先手必胜

N/P性质:

  1. 合法操作集合为空的局面是P-position
  2. 可以移动到P-position的局面是N-position
  3. 所有移动都只能到N-position的局面是P-position

二、步骤#

步骤1:将所有终结位置标记为必败点(P点);
步骤2: 将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)
步骤3:如果从某个点开始的所有一步操作都只能进入必胜点(N点) ,则将该点标记为必败点(P点) ;
步骤4: 如果在步骤3未能找到新的必败(P点),则算法终止;否则,返回到步骤2。

SG函数#

一、定义#

任何一个 ICG 游戏都可以通过把每个局面看成一个顶点,对每个局面和它的子局面连一条有向边来抽象成这个“有向图游戏”。下面我们就在有向无环图的顶点上定义 SG(Sprague-Garundy) 函数。

image

建立#

首先定义mex(minimalexcludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如

mex0,1,2,4=3mex2,3,5=0mex=0

对于一个给定的有向无环图,定义关于图的每个顶点的SG函数sg如下:sg(x)=mex{ sg(y) | y是x的后继 }。也就是说,一个点的SG函数为在它所有后继中都未出现的最小的值。

SG值的计算方法:(重点)#

  1. 可选步数为1~m的连续整数,直接取模即可,SG(x) = x % (m+1);
  2. 可选步数为任意步,SG(x) = x;
  3. 可选步数为一系列不连续的数,用模板计算。

nim游戏#

  1. 初始:n

  2. 玩法:每次从一堆中选任意扔掉,不可选 0

  3. 胜负判断:拿走最后的石子win

做法#

性质:对于一个局面,当且仅当A1 xor A2 xor ... xor AN =0时,该局面为P局面。

image

威佐夫博弈#

posted @   Estar_Mailyn  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
目录
?