不平等博弈问题学习记录(一)(超实数篇)

14 篇文章 0 订阅
4 篇文章 0 订阅

前言

听到博弈问题,第一个想到的想必是用SG函数做的博弈题,就比如Nim游戏

Nim游戏: 有N堆石子,每次选一堆石子,拿走若干石子(不能不取),先不能取的人输

定义个SG函数
对于SG函数,大致就记录两个东西吧

定义SG函数g(x)=mex{ g(y) | y是x的后继 }
游戏的和的SG函数值是它的所有子游戏的SG函数值的异或

SG函数能解决很多问题,但是它并不是万能的。他只适用于两个玩家家能进行的操作完全相同的情况(平等博弈)
今天上午做清华集训2017day3T2,一开始以为是SG就可以做,后来因为T1、T3比较好打,所以就没打T2,下午讲题的时候听讲题的时候才知道这是不平等博弈题,所以不能使用SG函数
那么怎么做呢,听高三同学讲完了一遍,我仿佛还是在云里雾里,于是去找了2009的集训队论文方展鹏《浅谈如何解决不平等博弈问题》 感觉这篇论文还是讲的挺好的,但是呢,为了让我更好的记忆,我就开始写这一系列的学习记录了

正文

不平等博弈问题(Partizan Games)有一个很好的解决方法是用 超实数(Surreal Number,高届的同学戏称其为super real number),具体的用处会在后面写到
话不多说,对于不平等博弈问题,先定义状态

一个及以下后继状态(从有理数上定义)

首先考虑每个状态都只有一个及以下的后继状态的情况

  • 如果没有人能操作,那么状态为0
  • 如果当前状态只有第一个玩家能进行操作,那么状态为 x x x x x x为第一个玩家连续能走的步数-[后继状态中第二个玩家是否能走])
  • 如果当前状态只有第二个玩家能进行操作,那么状态为 − x -x x x x x为第二个玩家连续能走的步数-[后继状态中第一个玩家是否能走])

我们发现,这种定义的状态对单局而言非常无脑
我们发现当状态为 0 0 0时,一定是先手必败态
当状态不等于 0 0 0时,我们不能直接的根据状态值判断谁必胜(证明略)

多个后继状态(引入超实数辅助定义)

如果状态的后继不止一个怎么办?
这是大部分题目里的情况,也是文章的重点
我们用超实数来概括所有的情况
定义超实数 { X ∣ Y } \{X|Y\} {XY}(本质上它是超实数,但是好理解一点可以将其当成运算), X X X是第一个玩家能执行操作的后继状态的集合 Y Y Y是第二个玩家能执行操作的后继状态的集合(可以是空集,这个之后会讨论),结果为当前的状态

X , Y X,Y X,Y都是有限集,那么 { L ∣ R } = { m a x ( L ) ∣ m i n ( R ) } \{L|R\}=\{max(L)|min(R)\} {LR}={max(L)min(R)}
对于一个状态 l ∣ r {l|r} lr,如果 l &lt; r l&lt;r l<r那么 { l ∣ r } \{l|r\} {lr}的结果:
l 、 r l、r lr之间有整数, { l ∣ r } = x \{l|r\}=x {lr}=x l &lt; x &lt; r l &lt; x &lt; r l<x<r x x x是所有满足的数中离 0 0 0最近的整数)
l 、 r l、r lr之间无整数, { l ∣ r } = x / y \{l|r\}=x/y {lr}=x/y l &lt; x / y &lt; r l &lt; x/y &lt; r l<x/y<r y = 2 k ( k ∈ Z ∗ ) y=2^k(k\in\Z^*) y=2k(kZ)且y是所有满足条件的数中最小的数,x是在满足前面的条件下的可取值中离 0 0 0最近的整数

前面说到在 { L ∣ R } \{L|R\} {LR}的运算中, L L L R R R会有为空集的情况
空集可以用 Φ \Phi Φ表示,不过一般也用"不写任何东西"来表示,比如说 { ∣ } = 0 \{|\}=0 {}=0
事实上,空集可以当做无穷(如果是左边是空集,那么可以视为是无穷小,如果右边是空集,那么可以视为是无穷大)

总结

这里的内容已经是真·简化版了
根据定义, L ∣ R {L|R} LR才是超实数,而定义这个结果,建立了博弈的实数定义与超实数的部分联系
下图为达利函数(即一个实数与超实数的对应关系)
在这里插入图片描述
这个东西本身就是超实数,为什么这样你可以去论文里看超实数的定义
当然如果懒的看论文,那记住这些就好了,到后面的灵活运用才是最重要的
在下一篇文章中我会讲述 { l ∣ r } \{l|r\} {lr}中的特殊情况的结果,记录(一)到这里就结束了
update by 2019.1.9:对文章进行了结构调整(开头一段我进行了保留,算是对我一开始写这篇博客时的感受的纪念吧)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值