博弈论进阶之Every-SG

Every-SG

给定一张无向图,上面有一些棋子,两个顶尖聪明的人在作游戏,每人每次必须将能够移动的棋子进行移动,不能移动的人输php

博弈分析

题目中的要求实际是“不论前面输与否,只要最后一个棋子胜利,那么就算胜利”html

这样的话,能赢得游戏必须赢spa

由于两我的都顶尖聪明,所以当一我的知道某一个游戏必定会输的话,它必定会尽力缩短游戏的时间,当它知道某一个游戏必定会赢的话,必定会尽力延长游戏的时间(毕竟都是为了追求最终的胜利嘛233)htm

可是!咱们怎么来处理时间的?暴力枚举博弈树确定是不可取的,so咱们来研究一下这个问题blog

定义Every-SG游戏游戏

  • 对于尚未结束的单一游戏,游戏者必须对该游戏进行一步决策;
  • 其余规则与普通SG游戏相同

Every-SG游戏与普通SG游戏最大的不一样就是它多了一维时间get

对于\(SG\)值为\(0\)的点,咱们须要知道最少须要多少步才能走到结束,
对于\(SG\)值不为\(0\)的点,咱们须要知道最多须要多少步结束class

这样咱们用\(step\)变量来记录这个步数变量

\(step(u) = \begin{cases} 0, & \text{$u为终止状态$}\\ max\{step(v)\}, & \text{ $sg(u)\neq 0\land v为u的后继\land sg(v)=0$ }\\ min\{step(v)\}, & \text{$sg(u)=0\land v为u的后继$} \end{cases}\)移动

定理

对于Every-SG游戏先手必胜当且仅当单一游戏中最大的step为奇数。

定理是显然的:最大的单一游戏步数若是是奇数的话那么确定是先手取得进行最后一步,不然必定是对手取走最后一个棋子。

例题

这种题目不怎么好找,到如今也就找到一道

HDU 3595

题解

相关文章
相关标签/搜索