• 不平等博弈的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:爬

  • 相关阅读:
    如何成为一名专家级的开发人员
    ZapThink探讨未来十年中企业IT的若干趋势
    Adobe CTO:Android将超预期获50%份额
    我的美国之行
    用上Vista了!
    用pylint来检查python程序的潜在错误
    delegate in c++ (new version)
    The GNU Text Utilities
    python程序转为exe文件
    c++头文件,cpp文件,makefile,unit test自动生成器
  • 原文地址:https://www.cnblogs.com/axiomofchoice/p/13580577.html
Copyright © 2020-2023  润新知