树上博弈
作者:互联网
树上博弈
前置知识
基础图论知识,SG定理
问题描述
设\(T\)为一个森林,其中有\(n\)颗有根树,且树根都在地面上。\(Alice、Bob\)每次选择某一棵树的一条边,删除这条边以及这条边所连接的地上部分,最后无法操作的人输掉博弈。
简化问题
引入“竹子”的概念,如果一棵树退化成链,那么我们称其为一根竹子。
若是由竹子形成的森林(竹林),那么显然这个游戏就等价于一个Nim游戏,对于每棵树有\(SG(x)\)为这棵竹子的边数,于是我们所求解的问题就是这样\(n\)颗竹子所形成的组合游戏,根据\(SG\)定理求解即可。
那么我们想是的一棵树能够等价于一颗竹子的形状(已经变成竹子的形状了)
Colon Principle(克朗原理)
首先,我们约定一个点的\(SG\)值为以这个点为根张成的子树的\(SG\)值,对于某一个点\(x\),其子节点为\(x_1,x_2,x_3, \dots, x_t\)
那么由\(Colon Principle\),我们有
\[SG(x)= \begin{cases} 0 & t=0 \\ SG(x_1) \oplus SG(x_2) \oplus \dots \oplus SG(x_n) & t>0\end{cases} \]通俗的解释来说,一棵树等价于一颗长度为其所有子树的“长度”的异或值的竹子。这里子树的“长度”可以通过递归的方法求得。
证明(口胡):
首先,若一颗树只有根节点,那么显然其\(SG\)值为\(0\)。
而若这棵树有多个节点,对于其根节点\(x\),考虑其子节点\(x_1,\dots,x_t\)所构成的子树。
则此游戏相当于有\(t\)颗由根节点\(x\)加上其一颗子树\(x_i\)所构成的组合游戏。那么对于这样的组合游戏我们由SG定理能知道其\(SG\)值为所有游戏的异或值。原因如下:
我们将本来的树,拆成\(t\)颗子树构成的森林,每颗子树的构造方法如上所述。那么我们每次在原树上进行的操作,都和在森林中进行的操作等价。
于是显然证毕?
而且从证明过程中可以看出,克朗原理不止适用于删边游戏于是我们就能很轻松的解决树上博弈的问题了喵
对于博弈的大部分问题,只要SG值相同,就可以互相转化
一些题目?
标签:子树,博弈,游戏,竹子,树上,SG,节点 来源: https://www.cnblogs.com/sora-13/p/15149895.html