zoukankan      html  css  js  c++  java
  • [学习笔记]博弈论初步

    博弈论初步

    零.前言

    ​ 想到一些很棒的台词来着。

    「白,我们总是在开始游戏前就获胜。」-空《游戏人生》

    「世界如此单纯,没有赢不了的比试,努力的话怎么都有可能,世界单纯明了,胜利、失败、平局,那是愚蠢的小孩子所想过的事」-利库《游戏人生zero》

    一.什么是博弈论

    ​ 简要来说,就是智商爆表的人尝试在游戏开始之前就结束这个游戏。并寻找到其方法(像我这种从五子棋到围棋,斗地主到英雄联盟一个都玩不好的是不是不该学这个啊),前提是这个游戏公平。

    二.巴什博弈

    ​ 这种事最初的模型(连我都能会),给你n个石子,每次可以取 k 个(0<k<x),交替行动,不能行动者判负,那么若(x|n),则先手必败,否则先手必胜。

    ​ 首先在没有平局的游戏里,我们要明白一个事实,非必胜,则必败。(见 零.前言),那么来看看在这个博弈中,我们是如何取胜的。策略只有一个。

    跟着对方取,使得和为x

    动动脑筋就知道为什么可行了哦。

    三.尼姆博弈

    ​ 哎呀其实我也不太明白这个东西,乱写吧。有 n 堆石子,这次可以在任意一堆中随便取,交替行动,无法行动者判负。建立模型吧,首先假设个数分别为 (a_1,a_2...a_n) 如此。那么想像现在我输了,那么摆在我面前的是一个怎么样的死局?答:均为0。这里使用异或(别问我为什么用就对了),令(k=a_1 xor ;a_2;xor;...a_n),显然此时 k 为 0.

    那么不止这一种情况会使得 k=0 ,则有推论,在一个 k=0的情况中,你已经输了。那么如何证明呢?首先 你的下一步一定会使得 k!=0
    

    假设下一步 (a_1)处取走了 x,(a几都一样),则 (k'=(a_1-x)xor; a_2;xor;..a_n; xor;a_1; xor ;a_1)(=(a_1-x)xor;a_1!=1)

    那么又考虑到你的对手是一群魔鬼,并早已洞悉了推论,则他们会想方设法使你的上一步无效化,面临同样危险的局面,那么他们又会如何出手呢?

    手上有一个k,从它的二进制可以看到一个最高位1,这个1存在的根源必定是某一个数(a_i),此时我们只要让(a_i)变换为(a_i;xor;k),就达到了目的

    那么可否变换呢?答案是可以。因为消掉了一个最高位,所以变换之后会更小,符合规则。

    四.SG函数

    ​ 它,是一个工具,是博弈论向前一大步的一个美妙的工具。首先定义一个函数 mex(S),为集合 S 中未出现的最小非负整数。然后给出(SG(x)=mex(SG(y)),x->y),那么这么定义有什么用呢?

    • (SG(终点)=0)
    • (SG(x)=0),败

    为什么这么设计能行我目前还没有想清楚,不过他是对的。且当操作随意(>1)时(SG(x)=x)

    五.SG定理

    ​ 看到上面最后一句话的时候,可能有人会有一些想法。是否尼姆博弈可以看作使用SG函数来进行计算的呢?如此是否能探寻到一些规律性的东西?

    ​ 那么SG定理出现了,其表述为:一个游戏的SG值为其子游戏的SG异或和。

    如此便能将大游戏化成小游戏来解决问题,至于合理性我还没想好。(将就看看吧)

  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/clockwhite/p/12386449.html
Copyright © 2011-2022 走看看