您的位置:首页 > 其它

组合博弈 -- 三大基本博弈

2018-01-21 10:54 218 查看

寒假博弈学习初步

组合游戏定义

1、有且仅有两个玩家 2、游戏双方轮流操作 3、游戏操作状态是个有限的集合(比如:取石子游戏,石子是有限的,棋盘中的棋盘大小的有限的) 4、游戏必须在有限次内结束 5、当一方无法操作时,游戏结束。

(一)巴什博奕(Bash Game):

有一堆 n 个物品,两人轮流从堆中取物品,每次取 x 个 ( 1 ≤ x ≤ m)最多取m个。最后取光者获胜。如果有 n = m + 1, 一次至多取 m 个,所以无论先取者,取了多少个,一定还剩下 x 个( 1 ≤ x ≤ m)。所以,后取者必胜。因此我们发现了取胜的秘诀:如果我们把 n 表示为 n = (m + 1) * r + s 。(0 ≤ s < m , r ≥ 0)。先取者拿走 s 个, 后取者拿走 k 个 (1 ≤ k ≤ m),那么先取者 再 拿走 m + 1 - k 个。结果还剩下 ( m + 1 ) * ( r - 1 ) 个。我们只要始终给对手留下 m + 1 的倍数,那么先取者肯定必胜。 现在 我们可以知道,如果 s = 0,那么后取者必胜。 否则 先取者 必胜。

练习题目:

HDU 1846 Brave Game

HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者

HDU 2149 Public Sale

另一类巴什博弈为:

给定一个数 n, p, q;两人轮流取,最少取p个,最多取q个,最后剩余不足p个一次性取完,最后取完者获胜。

问先取者是否有必胜的策略。

练习题目:HDU 2897 邂逅光明

详解请移步:这里

(二)威佐夫博弈

有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,规定最后取光者得胜。

分析:首先我们根据条件来分析博弈中的奇异局势

第一个(0, 0),则面对此局面的人一定输。

接着分析(0,1)和(1,0)是一样的,两堆没有顺序,所以只研究一个就ok,我们很容易看出,面对这一局面,一定能将其转化为(0,0),则他一定赢。而(1,1)也是一样,都可以直接转化为(0,0),此处我觉得我无需解释。

第二个(1,2),面对此局面的人,只能将其转化为(0,1),(0,2),(1,1),这些都是非奇异局面,则面对(1,2)局面的人必输。

如图分析:



第三个(3,5)

。。
4000
。。

仔细分析,就能看出其差值为0,1,2,3,4,5,6…n;

用数学方法分析发现局面中第一个值为前面局面中没有出现过的第一个值,比如第三个局面,前面出现了 0 1 2,那么第三个局面的第一个值为 3 ,比如第五个局面,前面出现了 0 1 2 3 4 5 ,那么第五个局面第一个值为6。

在分析一下规律,我们发现第一个值 = 差值 * 1.618;

而1.618 = (sqrt(5)+ 1) / 2 。

大家都知道0.618是黄金分割率。而威佐夫博弈正好是1.618,这就是博弈的奇妙之处!

威佐夫两类问题

1、给你一个局面,让你求是先手输赢。

有了上面的分析,那么这个问题应该不难解决。首先求出差值,差值 * p == 最小值 的话后手赢,否则先手赢。(注意这里的p = (sqrt(5)+ 1) / 2 )

练习题目:HDU 1527

2、给你一个局面,让你求先手输赢,假设先手赢的话输出他第一次的取法。

首先讨论在两边同时取的情况,很明显两边同时取的话,不论怎样取他的差值是不变的,那么我们可以根据差值计算出其中的小值,然后加上差值就是大的值。

能取的条件是求出的最小的值不能大于其中小的一堆的石子数目。

只在一堆中取的话,可以取任意一堆,那么其差值是不定的,所以我们枚举差值,差值范围是0 到 大的一堆石子数目,然后根据上面的理论判断满足条件的话就是一种合理的取法。

练习题目HDU 2177

题目解释:请移步这里

(三)减法博弈(Subtraction Games)

规则如下:

有两个游戏者,A和B。

桌上有n颗石子。

每次操作可以取走1或2或3颗石子,不可以不取。

从A开始取,AB轮流操作。

最后一个可以取石子的人赢。没有石子可取的人输。

我们从结局开始分析到初始状态,这个方法有时被称为逆向归纳法

我自己感觉这个方法对我启发很大。

如果只剩下1,2 或 3 颗石子,下一个操作的人可以拿走全部石子成为赢家。

假设剩下 4 颗石子,下一个操作的人必须要拿走1,2 或 3 颗石子,那么他的对手成为赢家。所以面对 4 颗石子的人会输,前一个留下这 4 颗石子的人会赢。

如果剩下5,6 或 7 颗石子,那么下一个操作的人可以取到剩下 4 颗石子,他就赢了。

如果剩下 8 颗石子,那么下一个操作的人肯定会取到剩下5,6,7 颗石子,那么前一个人就赢了。

我们可以看到 0,4,8,12,16… 是目标局面,我们希望操作之后转移到目标局面。

我们现在可以分析这个游戏。n是否是4的倍数是关键。

P态,N态

在上面的取石子游戏中,我们可以看到0,4,8,12,16…是让前一个操作者赢的状态,1,2,3,5,6,7,9,10,11…是让接下来的操作者赢的状态。前者称为P(Previous)态(第二个操作者赢),后者称为N(Next)态(第一个操作者赢)。P态是石子数被4整除的状态,在上面被称为目标状态。

在对等博弈中,可以根据下面的原则来找到P态和N态。我们定义博弈中的终态(Terminal Position)是指没有下一步操作可执行的状态。这个算法就是我们在1.1中用过的方法:

1. 标记每一个终态为P态。

2. 标记每一个能到达P态的状态为N态。

3. 找到通往状态全为N态的状态为P态。

4. 如果没有新的P态被加入,则停止;否则返回第2步。

很容易看出 移到P态的策略 会赢。从P态开始,你的对手只能移动到N态,那你又可以移动到P态。最后游戏在终态结束,因为这是个P态,那你就赢了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: