【博弈】删边游戏

原文地址:http://blog.sina.com.cn/s/blog_51cea4040100h5j4.html

忽忽,今天终于结束了贾志豪博弈的论文,很高兴,ccy都弄懂了。

这里,特别感谢一个人,在ccy思考最后一部分无向图删边游戏遇到困难准备沉入厚厚的英语大书里时,伟大地拯救了ccy,真的很感谢,td哥哥~~~

现在,ccy一步一步的来。

一、链的删边游戏

游戏规则:对于一条链,两人轮流删边,脱离根的部分byebye,没边可删的人,输。

这个,应该很简单。那么,它的sg究竟怎么回事捏?

当只有一个根存在时,先手必败。

【博弈】无向图删边游戏

当有2个结点时,如图:

【博弈】无向图删边游戏

所以,红点的sg=1。

当有3个结点时,如图:

【博弈】无向图删边游戏

所以,红点的sg=2。

依次类推。

链表的sg就这么简单。

二、树的删边游戏

游戏规则:对于一棵树,两人轮流删边,脱离根的部分byebye,没边可删的人,输。

有了链后,我们看树,其实,就是一个组合游戏。

【博弈】无向图删边游戏

于是乎,很明显,这成了一个Nim游戏的组合。

所以,在树中,叶子结点的sg=0,其他节点的sg等于儿子结点的sg+1的异或和。

三、局部连通图的删边游戏

游戏规则:在一个局部连通图上,两人轮流删边,脱离根的部分byebye,没边可删的人,输。局部连通图的构图规则是,在一棵基础树上加边得到,所有形成的环保证不共用边,且只与基础树有一个公共点。

如图,是一个局部连通图:

【博弈】无向图删边游戏

因为这些环都是单独悬浮在一棵树上的某些点的。我们单独考虑环。

对于一个独立的偶环而言,根在偶环上,一定有先手必败。

原因是,先手删去偶环上的仪表边后,根有了两条链,链的长度一定为一奇一偶,既长短不一,后手只需要把长的那条链转移成合短的那条链长度一样即可。这样,先手必输,根的sg=0。

对于一个独立的奇环而言,根在奇环上,一定有先手必胜,根的sg=1。

原因是,先手删去某条边后,可以保证根结点连接的两条链的长度一样长。这样,先手必胜。

现在把环带进局部连通图中,那些环上的红点就相当于环的根。对于整个图,我们只需要无视所有偶环,把奇环换成一条边。

如上面的图,按照这个规则变后,就是:

【博弈】无向图删边游戏

这个时候,又转成了树的删边游戏。

四、无向图的删边游戏

游戏规则:在一个乱七八糟的无向图里,有一点作取名叫根,两人轮流删边,脱离根的部分byebye,没有边可以删的人,输。

(就这里,ccy一下就况了,贾志豪给了个Fusion Principle,ccy看得一下子就吐了血!!!幸好天上掉下来个td,谢谢~O(∩_∩)O~)

(无语一下,td讲错了,所以ccy顺着不对的思路想下去,写了不对的东西……重新写下一段!汗~)

对于一个无向图,其中一定有这样的部分,ccy叫它环团吧,如图所示:

【博弈】无向图删边游戏
这种团的性质是,删去其中任意一条边,点并不会闪架,它一定还与原图其他边相连。这样,对于这样的团,两人轮流删,一次删一条边,那关键就在于这样的团有多少条边可用来被轮流删了。

我们还是先看下奇偶吧。

对于一个单独的偶环,一定是先手必败,其sg=0。

对于一个单独的奇环,一定是先手必胜,其sg=1。

那么,在一个环团中,若有偶数条边,一定是先手必败。若有奇数条边,一定是先手必胜。

实现时,我们可以把环团缩成一个点,环团上的每条边都作为一个与这个代表结点直接连接的一个点。这些点都是图里的子结点,sg=0,那么偶数条边,先手必败,代表结点经环上新生成的子节点异或和正好是0。如果是奇数条边,先手必胜,代表结点经环上新生成的子节点异或和正好是1。

如这样一图:

【博弈】无向图删边游戏

现在,再纠结一个问题,如果无向图中选择为根的那点本身就在双连通图里怎么办。额,不是有个代表结点吗?所以,算他就好,这个也很好想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
博弈论是研究决策制定和策略选择的数学理论。在博弈论中,有合作博弈和非合作博弈、静态博弈和动态博弈、完全信息博弈和不完全信息博弈、零和博弈和非零和博弈等不同的概念和分类。\[2\] 对于你提到的C++两人轮流取数的博弈论问题,根据引用\[3\]中的nim游戏的规则,如果有n堆石子,每堆有若干石子,两人轮流取一堆里面的任意石子,先取完所有石子的人胜利。在这种情况下,可以通过对n堆棋子进行异或运算来判断先手是否必胜。如果异或运算的结果为0,则先手必败;否则,先手必胜。\[3\] 至于你提到的交换两个数不使用中间变量的问题,可以使用异或运算来实现。具体的做法是:假设有两个数a和b,首先将a与b进行异或运算并赋值给a,然后再将a与b进行异或运算并赋值给b,最后再将a与b进行异或运算并赋值给a,这样就完成了两个数的交换。\[1\] 综上所述,博弈论是研究决策制定和策略选择的数学理论,而在C++中,可以使用异或运算来实现两个数的交换。 #### 引用[.reference_title] - *1* *2* [博弈论(初级)——数学知识(C++)](https://blog.csdn.net/Annabel_CM/article/details/110286728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++中的博弈问题](https://blog.csdn.net/weixin_45405406/article/details/96349507)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值