首页 > 其他分享 >简单博弈论

简单博弈论

时间:2022-11-10 19:02:50浏览次数:40  
标签:局面 必败 步骤 博弈论 简单 position SG mex

前置知识

IGC游戏

一、定义:

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

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

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(minimal excludant)\)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如

\[mex{0,1,2,4}=3、 mex{2,3,5}=0、mex{}=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

威佐夫博弈

标签:局面,必败,步骤,博弈论,简单,position,SG,mex
From: https://www.cnblogs.com/Estar-Mailyn/p/16654654.html

相关文章

  • u-boot script 简单使用
    1.u-bootscript(HushShell) u-boot脚本语法参照HushShell,和bash还是比较相似的。 下记网站非常好用,记录了uboot脚本支持的命令,还带有使用方法。(具体uboot的支持......
  • Hibernate简单注解开发和事务处理(四)
    勿以恶小而为之,勿以善小而不为--------------------------刘备劝诸君,多行善事积福报,莫作恶上一章简单介绍了Hibernate实现简单的CRUD操作和常见类(三),如果没有看过,​​请观......
  • Linux基础知识(9)- Git 简单使用(一)
    GIT,全称是分布式版本控制系统,Git支持分布式部署,可以有效、高速的处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者......
  • PySide 给予开源的node简单功能开发的交互式node功能及操作
    1,添加界面2,添加操作面板3,添加箭头4,添加双击添加节点功能5,添加连接节点自动添加节点接口数,断开删除接口。6,输出节点信息,并通过读取可以自动创建节点7,删除节点端口后恢......
  • Python爬虫的scrapy框架的简单应用
    load_mzitu\mzitu\​​item.py​​#-*-coding:utf-8-*-#Defineherethemodelsforyourscrapeditems##Seedocumentationin:#http://doc.scrapy.org/en/latest/......
  • 25-jmeter-使用简单数据写入器保存测试结果
    前言jmeter做性能压测的时候,我们希望把每次的结果保存下来,方便写测试总结报告。可以用的监听器SimpleDataWriter,保存测试的结果简单数据写入SimpleDataWriter添加-......
  • @excel 注解_Java读写Excel原来这么简单
    前言相信现在很多搞后端的同学大部分做的都是后台管理系统,那么管理系统就肯定免不了Excel的导出导入功能,今天我们就来介绍一下Java如何实现Excel的导入导出功能。Jav......
  • fastposter v2.10.0 简单易用的海报生成器
    ......
  • 简单排序方式
    冒泡排序对于数组个数比较少的,我们可以采用冒泡排序的方法来进行排序,他的原理其实是利用两层循环来进行比较,如果n个数要进行排序,那至少要进行n-1次的回合,而且每次需要排n-......
  • Java集合简单介绍
    Java集合框架主要包括两种类型的容器,一种是Collection,存储一个元素集合,另一种是Map,存储键/值对映射。一、Collection集合List集合特点:有序可重复ArrayList集合(内部......