这次,我们来继续学习博弈论的知识。今天我们会学习更多的基础模型,以及SJ定理的应用。

首先,我们来看博弈论在DAG上的应用。首先来看一个小例子:在一个有向无环图中,有一个棋子从某一个点开始一直向它的出点移动,双方轮流操作,无法操作者输,问是否先手必胜。

考虑一下我们之前的Nim游戏,如果我们把后继状态看成后继点的话,不难发现Nim游戏的互相转移也是一个DAG。因此,DAG上出度为0的点的sg值为0,再用上一篇博客提到的mex操作来求每个点的值就可以了(注意,这并不是一个“大”子图,不能拆成子游戏,因此不能异或了!)。在图上的递推操作是O(n)的,按照逆向拓扑序递推即可;如果有向无环图有多个,又怎么办呢?那么显然这个时候就可以异或了,直接计算即可。

接下来,我们来看一种Anti-SG游戏。顾名思义,这种游戏和一般的SG函数游戏不太一样:在这种游戏中,最后不能行动的人反而是赢家。那么现在怎么判断一个状态是N-Position(必胜)还是P-Position(必败)呢?

首先,很显然,如果有奇数个大小为1的石子堆,则先手必败;如果有偶数个,则先手必胜。

接着,我们从最简单的情况开始考虑,石子堆全是1的状态,肯定是由恰好有一个石子堆大于1个的状态走过来的

那么,谁拿到了这个状态,谁就能获胜。因为拿到这个状态的人可以通过控制最大那堆石子剩下的个数(1个或者0个)来使自己必胜

那么我们继续考虑。如果有一个人可以拿到这个先手必胜的状态,他一定是在初始状态是就“先手必胜”了。而初始状态的“先手必胜”和上一条的“先手必胜”意义不同:这里的初始状态先手必胜,指的是他能控制游戏的走向,从而使自己能拿到想要的状态,因此这里的“先手必胜”和Nim游戏一样,要求子游戏异或和大于0即可;而在拿到上述恰好有一个石子堆大于1个的状态之后,他一定是必胜的。

因此,只要初始的石子状态不是全为1,我们仍然可以用Nim的异或和做法来判断;而当状态全是1时,我们直接根据堆数奇偶判断即可。上面这些东西的学名就叫做“SJ定理”。如果不是取石子游戏,而是其他不确定sg计算方法的游戏(有向图游戏,台阶游戏……均可),我们可以先假设不能移动者赢,求出sg函数计算式,再利用SJ定理转化求解。

接下来,我们再来看一种新游戏模型:Muitl-SG游戏。这种游戏允许取走某些东西后,使原游戏呗分成几个新游戏。我们来看一道小例题:有n排石子,每次要从其中的一排中取出相邻的两个石子。无法操作者输。

这种问题如何操作呢?不难发现,在取走这两个石子后,原来的大游戏的后继状态变成了2个(或1个)子游戏。而我们知道,在符合条件时,异或可以对子游戏进行加和操作。所以,这个大游戏的后继状态的sg值,就是这个后继游戏状态中新产生的石子堆sg值的异或和,然后我们对后继状态的sg值再取异或和,就得到了这个大游戏状态的sg函数值。

我们再看一个更加复杂一点的游戏:Every-SG游戏。这种游戏除了是输赢的博弈之外,还是时间的博弈。我们看一道小例题:

有n个同时进行的游戏,每次都必须在还未结束的游戏中进行一步操作,不能在任何游戏里操作的人输。很明显,这个游戏的胜利在于不断在必胜的游戏中续命拖长时间,在必败的游戏里速战速决。那么我们可以在递归搜索时额外加入如下的语句,维护从这个游戏状态开始,最长的持续时间:

对于必胜状态的步数要最大化,必败状态的步数要最小化,双方都是如此。

显然,先手必胜局面的步数一定是奇数,所以所有游戏中,最长步数若是奇数,先手必胜,否则先手必败。

今天我们介绍了4种博弈论的经典模型,并且还引入了SJ定理这一新的工具。下一次,我们会结合不同模型的经典例题来继续了解博弈论这个神奇的知识点。希望我的博文给你带来了帮助~:)

[您有新的未分配科技点]博弈论进阶:似乎不那么恐惧了…… (SJ定理,简单的基础模型)的更多相关文章

  1. [您有新的未分配科技点]博弈论入门:被博弈论支配的恐惧(Nim游戏,SG函数)

    今天初步学习了一下博弈论……感觉真的是好精妙啊……希望这篇博客可以帮助到和我一样刚学习博弈论的同学们. 博弈论,又被称为对策论,被用于考虑游戏中个体的预测行为和实际行为,并研究他们的应用策略.(其实这 ...

  2. [您有新的未分配科技点] 无旋treap:从单点到区间(例题 BZOJ1500&NOI2005 维护数列 )

    1500: [NOI2005]维修数列 Time Limit: 10 Sec  Memory Limit: 64 MB Description Input 输入的第1 行包含两个数N 和M(M ≤20 ...

  3. [您有新的未分配科技点]无旋treap:从好奇到入门(例题:bzoj3224 普通平衡树)

    今天我们来学习一种新的数据结构:无旋treap.它和splay一样支持区间操作,和treap一样简单易懂,同时还支持可持久化. 无旋treap的节点定义和treap一样,都要同时满足树性质和堆性质,我 ...

  4. [您有新的未分配科技点]可,可,可持久化!?------0-1Trie和可持久化Trie普及版讲解

    这一次,我们来了解普通Trie树的变种:0-1Trie以及在其基础上产生的可持久化Trie(其实,普通的Trie也可以可持久化,只是不太常见) 先简单介绍一下0-1Trie:一个0-1Trie节点只有 ...

  5. [您有新的未分配科技点]数位DP:从板子到基础(例题 bzoj1026 windy数 bzoj3131 淘金)

    只会统计数位个数或者某种”符合简单规律”的数并不够……我们需要更多的套路和应用 数位dp中常用的思想是“分类讨论”思想.下面我们就看一道典型的分类讨论例题 1026: [SCOI2009]windy数 ...

  6. [您有新的未分配科技点]数位dp:从懵X到板子(例题:HDU2089 不要62)

    数位dp主要用来处理一系列需要数数的问题,一般套路为“求[l,r]区间内满足要求的数/数位的个数” 要求五花八门……比如“不出现某个数字序列”,“某种数的出现次数”等等…… 面对这种数数题,暴力的想法 ...

  7. [您有新的未分配科技点][BZOJ3545&BZOJ3551]克鲁斯卡尔重构树

    这次我们来搞一个很新奇的知识点:克鲁斯卡尔重构树.它也是一种图,是克鲁斯卡尔算法求最小生成树的升级版首先看下面一个问题:BZOJ3545 Peaks. 在Bytemountains有N座山峰,每座山峰 ...

  8. Elasticsearch 学习之 分片未分配原因

    分片未分配的原因主要有: 1)INDEX_CREATED:由于创建索引的API导致未分配.2)CLUSTER_RECOVERED :由于完全集群恢复导致未分配.3)INDEX_REOPENED :由于 ...

  9. centos7 挂载未分配的硬盘空间

    =============================================== 2019/7/28_第1次修改                       ccb_warlock == ...

随机推荐

  1. 在sql server 中查找一定时间段内访问数据库情况

    total_worker_time AS [总消耗CPU 时间(ms)], execution_count [运行次数], qs.total_worker_time AS [平均消耗CPU 时间(ms ...

  2. asp.net 问题:Web 服务器上的请求筛选模块被配置为 拒绝包含的查询字符串过长的请求

    发现问题: post请求,在发送一个图片base64编码的字符串时,服务端报这个错误. 报错信息中给出了解决办法: 最可能的原因: Web 服务器上的请求筛选被配置为拒绝该请求,因为查询字符串过长. ...

  3. CTF--zip伪加密

    刷题 一.BUGKU WEB 1. 变量1 知识点php两个$$是 可变变量,就是一个变量的变量名可以动态的设置和使用 $GLOBALS一个包含了全部变量的全局组合数组.变量的名字就是数组的键 < ...

  4. 关于C语言中内存的3个问题

    1.程序为什么需要内存? 计算机程序 = 代码 + 结果,从宏观上理解,代码就是动作,而数据被动作加工,最终返回结果.程序是被放在内存中运行的,并且需要内存来存储一些临时变量,因此,对于程序来说,内存 ...

  5. 04-容器 What, Why, How

    What - 什么是容器? 容器是一种轻量级.可移植.自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行.开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机 ...

  6. Vue学习计划基础笔记(四) - 事件处理

    事件处理 目标: 熟练掌握事件监听的方式,熟悉事件处理方式以及各类事件修饰符 理解在html中监听事件的意义 监听事件(v-on) 类似普通的on,例如v-on:click或@click就相当于普通的 ...

  7. 451. Swap Nodes in Pairs【LintCode java】

    Description Given a linked list, swap every two adjacent nodes and return its head. Example Given 1- ...

  8. Amazon及其亏本诱饵策略还能坚持多久?

    Amazon 刚刚公布了最新的财报,亏损 4100 万美元.这是这家电子商务巨头连续 5 个季度以来的第 3 次亏损.但是华尔街似乎却一片叫好声,当日 Amazon 的股价也涨了近 8 个点达 359 ...

  9. ArrayList中ensureCapacity的使用与优化

    对于ArrayLis中有一个方法ensureCapacity(int n),这个方法可以对ArrayList低层的数组进行扩容,显示的调用这个函数,如果参数大于低层数组长度的1.5倍,那么这个数组的容 ...

  10. Longge's problem(欧拉函数应用)

    Description Longge is good at mathematics and he likes to think about hard mathematical problems whi ...