[TOC]html
##组合游戏基础定义 ###游戏的定义:算法
###游戏的表示: 定义:对于一个游戏,若是当前状态$P$,玩家$L$能够转移到的状态为$P_L$,玩家$R$能够转移到的状态为$P_R$,那么记$P = {P_L | P_R}$ 例子:假设当前状态为$P$,玩家$L$能够转移到的状态为$A, B, C$,玩家$R$能够转移到的状态为$D$。 那么$P = {A, B, C | D}$函数
###游戏的和: 若是一个游戏$G$,能够被分解成若干个不相交的子游戏$G_1, G_2, G_3...G_n$,且知足在$G$中的操做等价与在子游戏中选一个进行操做,那么咱们称$G$是这若干个子游戏的和,即$G = \sum_{i = 1}^{n}G_i$学习
##组合游戏模型 ###SG游戏中的SG函数与相关定理 ####SG游戏定义: 这样一类组合游戏:没法操做者输 ####SG函数定义: SG函数是对游戏图中每个节点的评估函数。知足以下等式: $$SG(v) = mex{SG(u) | 图中有一条从v到u的边}$$ 其中$mex(x_1, x_2...x_t)$是定义在非负整数集合上的操做,自变量是任一非负整数集合。获得的结果是不属于该集合的最小天然数。即: $$mex{S} = min(k | k \notin A \land k \in N)$$spa
####性质:.net
1,对于任意局面,若是它的SG值为0,那么它的任意后继SG值不为0 2,对于任意局面,若是它的SG值不为0,那么必定有一个后继状态的SG值为0 在SG游戏中,SG值为0时先手必败。 3,在每次只能进行一步操做的状况下,对于任何游戏的和,若是将其中任一单一SG-组合游戏换成数目为它SG值的一堆石子,则该单一SG-组合游戏的规则变为取石子游戏的规则(能够任意取),则游戏的和的胜负不变。 #####变式: 若只考虑游戏的和,咱们能够将其中任一游戏换成SG值相等的其余游戏,游戏的和的SG值不变。htm
所以,在考虑游戏的和时,咱们不关心每一个单一游戏具体是什么,咱们惟一要关心的就是这个单一游戏的SG值。因而可知,咱们能够把任意游戏的和转换为Nim游戏,这样计算起来就很方便了。 ###Anti-SG游戏和SJ定理 ####Anti-SG游戏定义: 走完最后一步者输,即决策集合为空者赢(由于没法操做)blog
$\Delta$求解Anti-SG游戏时,依然可使用SG函数求解。 ####anti-nim游戏 定义:游戏
结论: 先手必胜当且仅当ip
证实: 两种状况:
但上述证实只对anti-nim游戏成立,由于在证实SG性质时,用到了这样一个性质:SG值为0的局面不必定为终止局面。
####SJ定理 尝试将上述方法推广。 先看一个错命题
先手必胜当且仅当: 1,全部单一游戏的SG值小于$2$且游戏的SG值为$0$ 2,存在单一游戏的SG值大于$1$且游戏的SG值不为$0$
在上图中,这个命题就不成立
定义:
对于任意一个Anti-SG游戏,若是咱们规定当局面中全部的单一游戏的SG值为0时,游戏结束,则先手必胜当且仅当: 1,游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1 2,游戏的SG函数为0且游戏中没有单一游戏的SG函数大于1
证实: 须要证实以下3种状况: 1,全部终止局面为先手必胜.(终止局面指决策集合为空的局面,即没法决策) 2,游戏中任何一个先手必败局必定只能转移到先手必胜局。 3,游戏中的任何一个先手必胜局必定能转移到至少一个先手必败局。
**状况一:**局面的SG函数为0且游戏中某个单一游戏的SG函数大于1. $\because$当前局面的SG函数为0,又$\because$SG函数性质(1) $\therefore$它所能转移到的任何一个局面的SG值不为0 $\because$当前局面的SG值为0且游戏中某个单一游戏的SG函数大于1. $\therefore$当前局面中一定至少有2个单一游戏的SG函数大于1 又$\because$每次之多只能更改一个单一游戏的SG值 $\therefore$它能转移到的任何一个局面都至少有一个单一游戏的SG值大于1 由上述得:状况一所能转移到的任何一个局面都为先手必胜局
**状况二:**局面的SG函数不为0且游戏中没有单一游戏的SG函数大于1 能够发现,当前局面必定有奇数个游戏的SG值为1,其他游戏的SG值为0. 1,将某个单一游戏的SG值更改成大于1的数。 $\because$转移前没有单一游戏的SG值大于1,而转移将某个单一游戏的SG值更改成大于1的数 $\therefore$转移后的局面必定有且只有一个单一游戏的SG值大于1 $\therefore$后继局面的SG值必定不为0 所以,后继局面必定为先手必胜局 2,将某个单一游戏的SG值更改成0或1. $\because$转移是将某个SG值为0的单一游戏改为SG值为1的单一游戏,或将某个SG值为1的单一游戏改为SG值为0的单一游戏。 $\therefore$转移后的局面必定有偶数个SG值为1的单一局面,且不含有SG值大于1的局面(什么意思???) $\therefore$后继局面必定为先手必胜
**状况三:**局面的SG函数不为0且游戏中某个单一游戏的SG函数大于1. 1,局面中只有1个单一游戏的SG值大于1。 选择更改SG最大的单一游戏,能够将其更改成0或1来保证转移后的局面有且只有奇数个SG值为1的单一游戏。(同anti-nim游戏) 2,局面中至少有2个单一游戏的SG值大于1。 根据SG函数性质2,总存在一种决策能够将后继局面的SG值变为0. $\because$局面中至少有2个单一游戏的SG值大于1 又$\because$每次最多只能改变一个单一游戏的SG值。 $\therefore$后继局面中至少有一个游戏的SG值大于1 所以,后继局面为先手必败
**状况四:**局面的SG函数为0且游戏中没有单一游戏的SG函数大于1. 当局面中全部单一游戏的SG值为0时,游戏结束,先手必败。(???) 不然,局面有且仅有偶数个SG值为1的单一游戏,其他游戏的SG值为0. 咱们只须要将其中的某一个SG值为1的单一游戏的SG值变为0,游戏中便可出现奇数个SG值为1的单一游戏,到达先手必败态
$\Delta$SJ定理中的:"规定当局面中全部单一游戏的SG值为0时,游戏结束"能够被替换为"当局面中全部单一游戏的SG值为0时,存在一个单一游戏知足SG值可以经过一次操做变为1"
###Multi-SG游戏 ####定义: 1,在符合拓扑原则的前提下,一个单一游戏的后继能够为多个单一游戏 2,其余规则与SG游戏相同 ####求解: 能够经过将SG函数适当变形来解决。只须要证实:咱们依然能够用SG函数来定义局面。 由于局面在游戏树中知足拓扑关系(无环),因此咱们能够根据拓扑关系用数学概括法来证实。
###Every-SG游戏 ####定义: 1,对于任意单一游戏,若是还未结束,那么就必须操做 2,其余规则同SG游戏 ####求解: 对于咱们必胜的单一游戏,一定是玩的时间越长越优,对于必输的单一游戏,确定是玩的时间越短越优。 那么据此有以下解法: 经过游戏图计算某个状态的SG函数(只需得知是否为0便可),对于SG为0的点,须要知道最快几步能够结束游戏,对于SG不为0的点,须要知道最慢几步游戏会结束,用$step$函数来表示这个值 $$step(v) \begin{cases} 0 \quad v为终止状态\ max(step(u)) + 1 \quad SG(v) > 0 \land u为v的后继状态\ min(step(u)) + 1 \quad SG(v) = 0 \land u为v的后继状态\ \end{cases}$$
定理:对于Every-SG游戏,先手必胜当且仅当单一游戏中最大的step为奇数。
证实:略…… ##常见博弈模型 ###Nim游戏 问题:$n$堆石子,每次从某一堆中拿若干个,没法操做者输。 **结论:**全部石子数异或和为$0$则后手胜,不然前手胜。 证实: 基于一个发现:若是有且只有$2$堆相同数量的石子,那么后手必胜。 这个发现能够进行推广,若是一个状态能够被一分为二到$2$个相同状态,那么后手必胜。 能够看作把$n$堆石子分为$2$组,每一组彻底相同,那么A无论对其中的某一组作了什么操做,B均可以对另一组作彻底相同的对称性可知,B必定会赢。知足这样的一个条件的状态异或和为0; 用概括法来尝试证实:(不严谨) 若是任意一个状态必输,实质上都是因为一个集合S内的若干个状态必输(能够经过SG函数的推导转化过来),那么称集合S为基础必输态集合。 根据游戏的定义,nim游戏的基础必输态集合大小为1,里面只有一个元素,$S = {0}$. 而$0$的异或和为$0$。 所以只须要证实对于任意一个异或和不为$0$的状态,均可以经过某种方式变为异或和为$0$的状态。对于任意一个异或和为$0$的状态,没法经过任意转移变为异或和为$0$的状态。
对于异或和不为$0$的状态。设它们的异或和最高位为$k$,则必定有一个数的最高位也为$k$。
所以咱们能够考虑对这个数进行操做。若是异或和的某一位为$0$,则咱们不对这个数的这一位作任何改变;反之,咱们对这一位取反。那么由异或和的特效能够得知,全部为$0$的位不变,依然为$0$.而全部为$1$的位状态改变,再也不为$1$,所以这个后继状态的异或和就为$0$了。而由于第$k$位变为了$0$,且其余状态取反的位都小于$k$,所以这个数必定会减少,所以咱们必定能够取出必定数量的石子达到目的。
对于异或和为$0$的状态,由于只能改变某一堆石子且必须作出改动,因此无论改哪一堆石子,都必然会使得至少一位的状态改变,从$0$变为$1$.
###NimK游戏 问题:$n$堆石子轮流取,每次能够任选$m$堆取任意个,没法操做者输,求是否先手必胜。 **结论:**在二进制意义上,若是每一位的$1$的个数都是$m + 1$的倍数,那么先手必输。Nim游戏能够看作$m = 1$的NimK游戏。由于异或就至关于把每一位$1$的个数加起来对$2$取模.
###巴什博弈 **问题:**一堆n个物品,2人轮流从这堆物品中取物,每次取$1$~$m$个,没法操做者输。 结论(解法): 若$n = (m + 1)r + s$其中$r$为任意天然数,$s \le m$,即$n % (m + 1) != 0$,则先手必胜。 **证实:**根据题意,若是剩下的石子小于等于$m$个,那么此时先手必胜。所以若是剩下的石子是m + 1个,那么先手取后,一定剩下小于等于$m$个石子,所以$m + 1$是先手必败态。 因此若是$n % (m + 1) != 0$,那么先手只须要每次保持下一次的石子数是$m + 1$的倍数便可,这显然是可作到的。
###威佐夫博弈 **问题:**有两堆若干个物品,两我的轮流从某一堆或同时从$2$堆中取一样多的物品,规定每次能够取任意个,但必须取。没法操做者输。 **奇异局势:**称先手必败局为奇异局势,那么前$n$个奇异局势为: $$(0, 0), (1, 2), (3, 5), (4, 7), (6, 10), (8, 13)……$$ 令$k$表示奇异局势的编号,则$(a[k], b[k])$表示第$k$个奇异局势,其中$(0, 0)$为第$0$个奇异局势。 能够发现:$a[k]$是未在前面出现过的最小天然数,而$b[k] = a[k] + k$. **性质:**任何天然数都包含在一个,且仅有一个天然数里。 证实:$\because a[k]$是未在前面出现过的最小天然数,因此有 $$a[k] > a[k - 1]$$ $$b[k] = a[k] + k > a[k - 1] + k > a[k - 1] + k - 1 = b[k - 1] > a[k - 1]$$ 因此$b,a$都不会重复,显然会包含全部的天然数。 **结论:**奇异局势知足以下等式: $$a[k] = \frac{b[k] - a[k]}{1.618} = \frac{b[k] - a[k]}{\frac{\sqrt{5} + 1}{2}}$$
###斐波那契博弈 **问题:**有一堆n个石子,2人轮流取,先取者能够取走任意多个,但不能全取完,之后每人取的石子数不能超过上我的的2倍,没法操做者输。 **结论:**先手必败当且仅当石子数为斐波那契数
###翻硬币游戏 **问题:**通常的翻硬币游戏规则以下:
###无向图删边游戏
####树的删边游戏 **问题:**有以下规则:
####无向图删边游戏
####Fusion Principle定理
对无向图作以下改动:将图中任意一个偶环缩成一个新点,任意一个奇环缩成一个新点加一个新边;全部连到原先环上的边所有与新点相连,这样的改动不会影响图的SG值。
所以能够将任意无向图改为树形结构。
###二分图博弈 **问题:**基于如下几点: 1,共2人参与。 2,博弈状态(对应节点)可分为两类,任意合法转移都是在两类状态之间转移,而不能在任意一类状态内部转移。 3,不能够转移到已访问状态 4,没法转移者输 解法: 观察题目的特殊性,咱们发现,将每一个状态看作一个点,那么这些点和合法转移会构成一个二分图。 将S集合视做轮到先手决策的点,T集合则表明轮到后手决策的点。 咱们先跑一遍二分图匹配,对于任意一点x,有2种状况: 1,不属于最大匹配(非匹配点) 走一步后必然会走到一个匹配点,不然若是遇到一个非匹配点就会造成一条增广路,那么就不符合最大匹配的前提。而走到一个匹配点后,对方能够不断沿着匹配边走,最后必然会停留在S集合,也就是先手必输。由于若是停留在T集合,依然至关于找到了一条增广路,不符合前提。 2,属于最大匹配 根据1中的描述可知,这个点先手必胜。 其余:
若是一个点$x$,在某种状况下不属于最大匹配,那么无论它怎么走,走到的目标节点必定会在某种状况下属于最大匹配,所以若是从点$x$开始会致使先手必败。反之,若是一个点$x$在任意状况下都属于最大匹配(即为最大匹配的必须点),则先手必胜。
如何检验? 1,最暴力的方法:把$x$从原图中删去,再跑最大匹配,若是跑出的最大匹配大小不变,则说明是非必须点。 2,稍微巧妙一点的方法:考虑一个$x$是必须点,至关于没有点能够取代$x$,所以咱们从$x$开始遍历,看是否能够找到一个同侧的未匹配点,若是能够找到,则说明$x$为非必须点。 即咱们在用匹配点来寻找是否有点能够替换掉它。所以咱们能够在$n + m$的时间内判断出一个点是否为必须点。
将这个作法进行推广,咱们能够获得一个判断二分图中有没有$x$是非必须点的方法: 从每一个未匹配点$x$开始遍历,将通过的同侧点打上标记,最后检验是否有匹配点被打上标记,有则图中至少有一个非必须点,所以若是后手能够选择开始的位置,那么先手必败。
##不平等博弈 ###Surreal Number ####如下内容主要参考自: 如今看不懂……之后再看…… 睡前说:超现实数 实数、超实数和博弈游戏:数学的结构之美 浅谈算法——博弈论 博弈论的总结 简单博弈论 博弈论总结 《浅谈如何解决不平等博弈问题》 Wiki百科 ####定义: #####SN的定义: 为了简便起见,下文中将Surreal Number简写为SN. 定义SN为一个由左集合与右集合组成,表示为${L | R}$的一个东西。且知足以下性质: 左集合和右集合中的元素也是SN,且左集合中的元素严格小于右集合中的元素
#####符号的定义:
####SN的构造方法: 首先有${\varnothing | \varnothing} = { | } = 0$,所以咱们能够用0来构造其余SN,能够获得${0 | }, {| 0}, {0 | 0}$. $\because 0 \le 0 \quad \therefore {0 | 0}$不合法 $\because {|0} < 0 < {0|} \quad \therefore{|0} = -1, {0|} = 1$ 利用0, 1, -1能够构造出7个合法的SN: $\because {1 | } > 1, {| 1} < -1 \quad \therefore {1 | } = 2, {| 1} = -2$ $\because 0 < {0 | 1} < 1$且${0 | 1} + {0 | 1} = 1 \quad \therefore {0 | 1} = \frac{1}{2}$ 同理${-1 | 0} = - \frac{1}{2}$ $\Delta$如此类推,能够构造出全部形如$\frac{j}{2^k}$的有理数,定义达利函数为: $$\delta(x) \begin{cases} {1},\quad x = 0 \ {\delta(x - 1)|}, \quad x > 0 \land x \in z\ {|\delta(x + 1)}, \quad x < 0 \land x \in z\ {\delta(\frac{j - 1}{2^k}) | \delta(\frac{j + 1}{2^k})}, \quad x = \frac{j}{2^k} \land j, k \in z \land k > 0 \end{cases}$$
定理:对于一个SN $x = {L | R}$,若$L$中有最大元素$L_{max}$,那么${L_{max} | R} = x$ ;相似的,若集合$R$中有最小元素$R_{min}$,那么${L | R_{min}} = x$ 例如:${2, 3 | 4, 5} = {3 | 4, 5} = {2, 3 | 4} = {3 | 4}$
####SN在游戏中的应用 对于一个游戏$G$,有以下结论:
定理:若是$G = (SN)x, H = (SN)y \Longrightarrow G + H = (SN) x + y$