不平等博弈的Q & A(科普)

众所周知,平等博弈中,SG函数简直就是神器(我还想写一篇SG函数的科普作为前传)。但是与平等博弈不同的是,不平等博弈中的两个玩家的操作有着不一样的约束,比如左玩家只能拿正面朝上的硬币,右玩家只能拿反面朝上的硬币。因此,超现实数出现了,它就是解决不平等博弈问题的神器

Q:超现实数是什么?

A:超现实数(surreal number)是一个船新的数学概念,名字含义为“超越实数的数”。而事实上超现实数不仅包含了所有实数,还引入了“无穷大”(即“无穷大”是一个超现实数),是一个最大的兼容四则运算的全序集合

Q:啥是全序集合?啥是兼容?还有你讲了这么多,超现实数的定义呢?

A:啊这,不要在意这些细节。你只要知道,超现实数和实数一样,是可以比较大小的(就是定义了“小于号”),也可以加减乘除啥的(严格定义的话我也不是专业的我也做不到

A:超现实数的定义啊,这太硬核了,这里我只能简单介绍一下。(感兴趣的小伙伴可以网上搜索一下“surreal number”,我就是这么学废的)每个超现实数都有一个左集合和右集合,(我们研究的)超现实数都可以用实数表达

Q:不是说还有“无穷大”等超越实数的存在吗?

A:因为我们探讨的博弈是有限的所以的确不需要无穷大

Q:怎么通过左、右集合计算超现实数的对应实数呢?

A:这是一个重要的操作(并不)。如果 \(L\) 是左集合中的最大值,\(R\) 是右集合中的最小值。如果 \(L,R\) 之间存在整数,那么超现实数 \(G\)\(L,R\) 之间绝对值最小的整数;如果 \(L,R\) 之间没有整数,那么超现实数 \(G\) 是一个整数除以 \(2\) 的整数次幂,这个值要在 \(L,R\) 之间,并且要让 \(2\) 的幂次尽可能小。(即 \(G=\dfrac A {2^B},L<G<R\),且 \(B\) 尽可能小)特别地,如果左集合为空集,那么 \(L\) 视为负无穷大,右集合为空集则 \(R\) 视为无穷大

  • 比如,\(\{-1,0\ |\ 3\}\)\(L,R\) 之间有 \(1,2\) 两个整数,选绝对值小的那个,\(G=1\)
  • 比如,\(\{-1,0\ |\ 1\}\)\(L,R\) 之间没有整数,那么 \(G=\dfrac 1 2\),因为这个数分母最小
  • 比如,\(\{\dfrac 1 4\ |\ \dfrac 1 2\}\),那么 \(G=\dfrac 3 8\)
  • 特殊情况比如,\(\{\dfrac 1 2\ |\ \}\),那么 \(G=1\)。最特殊的情况,\(\{\ |\ \}\),那么 \(G=0\)

Q:那 \(\dfrac 1 3\) 不能用这个方法生成吗?

A:我们研究的超现实数不包含 \(\dfrac 1 3\) 这样的数,\(\dfrac 1 3\) 和“无穷大”一样,需要涉及无穷才能搞出来

Q:说了那么多超现实数,但是它和博弈有什么关系?

A:介绍博弈之前,先看一个博弈问题Blue-Red Hackenbush string

  • 若干个字符串,每个字符要么是 L 要么是 R,左玩家只能拿 L,右玩家只能拿 R,每次拿走一个字符后其后缀也会消失,最先不能操作的玩家输

A:假如我们简化一下问题,所有字符串都长这样:LLL...或者RRR...,那么左右玩家各自的策略应该是什么样的?

Q:(OS:反了反了,我才是Q好不)很显然,因为最先不能操作的玩家失败,所以左玩家尽量让 L 串存在的时间久一点,右玩家就尽量让 R 串存在的时间久一点

A:对,因此最终比较的其实就是字符 L 的个数和字符 R 的个数。对于L串,我们认为它的surreal number就是它的长度,对于R串,它的surreal number就是它长度的相反数。对每个串的surreal number求和(超现实数当然能做加法),得到的数就是整个局面的值。如果值大于 0,那么左玩家必胜,小于 0 右玩家必胜,等于 0 就是后手必胜。这个规则也适用于其他的不平等博弈(除了一些存在先手必胜的局面的博弈,这时候就要引入Irregular surreal number,就很复杂了,其实Nim Game就是2333

Q:但是LR交错的字符串,一看就不简单

A:因此需要引入一个规则:对于一个博弈局面超现实数的左集合,就是左玩家进行一次操作后的所有可能的博弈局面;右集合就是右玩家进行一次操作后的所有可能的博弈局面

  • 比如LR,左玩家可以把它变成空串(值为0),右玩家可以把它变成L(值为1),那么LR的值就是 \(\{0\ |\ 1\}\),就是 \(\dfrac 1 2\)
  • 比如LRL,左玩家有两种操作方式即空串和LR(值为 \(0,\dfrac 1 2\))(为什么 LR 的值是 \(\dfrac 1 2\)?因为这是上一行的结论鸭),右玩家只能把它变成L(值为 \(1\)),那么LRL的值就是 \(\{0,\dfrac 1 2\ |\ 1\}\),就是 \(\dfrac 3 4\)

A:同样,引入了分数后,博弈局面的值大于 0 左玩家必胜、小于 0 右玩家必胜、等于 0 后手必胜的结论还是使用的。你可以试试看 LR,R(值为 \(-\dfrac 1 2\)),看是不是右玩家必胜,然后试试看 LR,LR,R(值为 \(0\)),看是不是后手必胜

Q:确实,6啊

A:其实超现实数的值,其实可以认为是左玩家比右玩家可以多操作的次数。只不过,这个值会有分数出现,就很神奇

A:刚刚那个问题其实有简化的方法求surreal number。字符串第 \(i\) 位如果是L,记 \(a[i]=1\),否则记 \(a[i]=-1\)。如果字符串是L开始的,我们把第一个R的位置记作p,那么 \(a[p]\) 乘以 \(2^{-1}\),加上 \(a[p+1]\) 乘以 \(2^{-2}\),以此类推,这个数字再加开始一连串L的个数就是surreal number了。如果开头是R那正好相反

  • 比如,字符串LLRL,开头2个L,因此surreal number的整数部分为2。小数部分为 \(-2^{-1}+2^{-2}=-\dfrac 1 4\),因此surreal number为 \(2+(-\dfrac 1 4)=\dfrac {7} 4\)

Q:感觉这个计算方法表明了很多时候都是无视字符串最后的字符,直接删前面的

A:是的,但是由于作者太菜所以我也无法解释其中的精妙之处,甚至连怎么操作都没明白

Q:太强了

A:爬

posted @ 2020-08-29 01:35  axiomofchoice  阅读(427)  评论(0编辑  收藏  举报