参考资料

问题描述

在某一棵树上删除一条边,同时删去所有在删除后不再与根相连的部分
双方轮流操作,无法再进行删除者判定为失败
一个游戏中有多棵树,我们把ta们的根都放在地板上,方便之后的处理

在此,我们讨论的将是公平游戏,即双方都可以删除任意的树边
我们称这个游戏为:Green Hachenbush(树上公平删边游戏)

之所以强调是公平博弈,是因为还有另一种删边游戏,是不公平的,参与者双方一方只能删除蓝边,一方只能删除红边,而绿边双方都可以删除

竹子

为了更好地理解树上删边游戏,我们要由浅入深,从简单的情况入手
因此我们引入“竹子”

根据上面的游戏规则,拿掉竹子上的某一节,那么此节上面的部分都会被删除
仔细一看,这就是Nim游戏的变形
那么相应的SG函数就非常简单了: SG[x]=x S G [ x ] = x SG[x]=x

克朗原理(Colon Principle)

我们把树的形态变的稍微复杂一点,在竹子上加一些分支,就可以得到一棵朴素的树

其实,树上删边游戏就是一个披上了狼皮树皮的Nim游戏
为了说明此问题,我们先介绍克朗原理

克朗原理

对于树上的某一个点,ta的分支可以转化成以这个点为根的一根竹子,这个竹子的长度就是ta各个分支的边的数量的异或和

我们来举个例子?

//随意写了一个计算异或和的小程序
#include<cstdio>using namespace std;int main()
{int n;while (scanf("%d",&n)!=EOF){int a=0,x;for (int i=1;i<=n;i++) scanf("%d",&x),a^=x;printf("%d\n",a);}return 0;
}

1号树:最后是一条边的竹子,SG=1
2号树:SG=8

3号树:SG=4

至于具体的证明,由于没大看懂,就不在blog上胡说了

图上删边游戏

通过上面的讨论,我们得到了把树上删边游戏转化成Nim游戏的有力方法
下面就继续升级:图上删边

直接看一个xue微有点复杂的图:

我们当然希望把上图也转化成一个树形结构,之后利用克朗原理转化成竹子,变成Nim游戏解决
为了实现这个目标,我们需要另一个原理:费森原理

费森原理

环上的点可以融合,且不改变图的SG值

不是很好理解?没关系,我们从例子入手
可以发现,上图中门是独立于整个大框外的,所以我们从门开始

首先,我们可以把地板上的两个点视为一个,因为地板本身就可以看成是一个大点
这样这扇门就变成一个三角形(一个有三个点的环)
费森原理指出,我们可以把环上一个点等价成一个自环,而这个环又可以变成一条边

一般来说
我们可以把一个带有奇数边的环等价成只有一个端点的一条边
偶数边的环等价于一个点

有了这个结论,就简单多了
因此,上图中房子的烟囱和窗户都可以等价成一个点
那我们继续我们的化简:

从上面所有的讨论中,我们可以得到启发:
对于博弈的大部分问题,只要SG值相同,就可以互相转化

例题

题解

树上删边游戏及其拓展(公平博弈:克朗原理+费森原理)相关推荐

  1. 【HDU5299】Circles Game,圆的扫描线+树上删边游戏

    传送门 思路: 两个板子的结合 如果会方法的话没什么难度 至于为什么要写这个博客呢? 只是拿来当板子用-- 圆的扫描线理解了好久,终于想出来是怎么一回事了 我觉得这种东西还是自己主动去思考的好,写的长 ...

  2. 博弈——无向图删边游戏

    关于无向图删边游戏,首先游戏的规则如下: 然后看下最关键的定理: 叶子节点的 SG 值为 0; 中间节点的 SG 值为它的所有子节点的 SG 值 加 1 后的异或和. 精彩证明: 有了这个定理,这个问 ...

  3. HDU 3094 树上删边 NIM变形

    基本的树上删边游戏 写过很多遍了 /** @Date : 2017-10-13 18:19:37* @FileName: HDU 3094 树上删边 NIM变形.cpp* @Platform: Win ...

  4. HDU 3590 PP and QQ(反nim博弈,删边游戏)

    PP and QQ 思路 删边游戏了解一下,其实就是个nim博弈吧,只是删边个数有特殊限制, 然后就是一个反nim博弈了. 删边定理: 遇到分叉口时,它的子树上的可操作的sg函数为所有子树节点的sg函 ...

  5. 【学习笔记】平等博弈及常见的公平博弈类型

    文章目录 平等博弈 nim堆 SG定理 nim和 常见的公平博弈模型 bash博弈 nim博弈 nim-k博弈 wythoff博弈 扩展wythoff博弈 fibonacci博弈 阶梯博弈 green ...

  6. 图删边游戏(强连通分量)

    图删边游戏 时间限制 : 10000 MS 空间限制 : 65536 KB 单个测试点为1000MS 问题描述 Alice & Bob有一天发现了一株奇怪的灌木.他的枝分叉之后又可以汇合.更奇 ...

  7. 【Qt象棋游戏】08_人机博弈高阶算法

    文章目录 01 - 极大极小值算法 02 - 电脑和人类所有走棋路径 03 - 走一步看两步 04 - 走一步看多步 04 - 总结 01 - 极大极小值算法   上一期博客介绍了最为简单的人机博弈算 ...

  8. 【Qt象棋游戏】07_人机博弈算法开端

    文章目录 01 - 人机博弈算法简述 02 - 相关成员与方法 03 - 获取电脑棋子能走路径 04 - 电脑走棋 05 - 总结 01 - 人机博弈算法简述   前面详细介绍了棋盘类的封装.棋子类的 ...

  9. 模拟上帝之手的对抗博弈——GAN背后的数学原理

    模拟上帝之手的对抗博弈--GAN背后的数学原理 深度学习 人工智能 机器学习 神经网络 神经网络与机器学习-英文版 阅读1984  作者:李乐 CSDN专栏作家 简介 深度学习的潜在优势就在于可以利用 ...

最新文章

  1. [编解码] 关于base64编码的原理及实现
  2. POS 客显 设备 显示 总价 单价 找零 收款 C# SerialPort 法
  3. ML之监督学习算法之分类算法一 ——— 决策树算法
  4. ElasticSearch wildcard查询(英文检索)
  5. 程序员如何拓展知识面 推荐几个技术公众号
  6. 什么是计算机应用上机报告,计算机应用实验报告样本.doc
  7. 光伏并网matlab,基于MATLAB的光伏并网设计
  8. 详解Android定位,AndroidGPS定位详解(1)
  9. 冒泡排序(java)——3种方法
  10. 中铁汇达保险经纪保单计算个人理解
  11. Windows10windows server 2012r2作为slave 用jenkins部署微信小程序自动化打包
  12. 计算机联锁想系统包括哪几层,计算机联锁系统技术_习题.ppt
  13. 电脑发到,电脑发送到手机的文件在哪里
  14. random()随机数的产生方式与原理
  15. Android Connectivity分析(1)- ConnectivityManager
  16. 苹果原壁纸高清_绝美 | 风景手机壁纸图片
  17. 我的PLSQL学习之路-基础
  18. Oracle 批量插入(insert all into)
  19. 中国4K/8K超高清电视机行业发展研究与投资战略分析报告2021年版
  20. 联想集团收购IBM x86服务器业务

热门文章

  1. Web控制SG90 9g舵机(180度版)-MicroPython-NodeMcu-Esp8266开发板
  2. 华北电力计算机技术考研难度,华北电力大学考研难吗?一般要什么水平才可以进入?...
  3. RK3568-ANDROID11-4G-EC20-(详细步骤)
  4. 游戏中的人工智能(一)
  5. 排序在实际生活中的应用
  6. 【企业微信scrm】员工离职带走客户资源?企业微信教你三招
  7. 计算机网络实验一的总结报告,计算机网络思科实验报告精选
  8. 必看:华为云服务器选择注意事项
  9. 强化学习matlab工具箱应用
  10. linux查看已挂载目录,Linux查看目录挂载点