• [学习笔记]博弈论初步


    博弈论初步

    零.前言

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

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

    「世界如此单纯,没有赢不了的比试,努力的话怎么都有可能,世界单纯明了,胜利、失败、平局,那是愚蠢的小孩子所想过的事」-利库《游戏人生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异或和。

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

  • 相关阅读:
    聊聊关于性能优化和其他(一)
    JavaScript 事件循环及异步原理(完全指北)
    SPA路由机制详解(看不懂不要钱~~)
    Web安全系列(三):XSS 攻击进阶(挖掘漏洞)
    Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)
    浅谈Generator和Promise原理及实现
    Kubernetes 服务目录
    Kubernetes 网络模型
    个人开源贡献记录
    【转载】DTO – 服务实现中的核心数据
  • 原文地址:https://www.cnblogs.com/clockwhite/p/12386449.html
Copyright © 2020-2023  润新知