浅谈博弈论

来源:互联网 发布:服装试穿软件 编辑:程序博客网 时间:2024/05/02 23:21
/*博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达到取胜的目的博弈论分类:一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。得到先手必败状态 n = (m+1)*k   k = 1,2,3......    这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十个,谁能报到100者胜。巴什博弈博弈论里面最简单的一种形式。以下题目利用巴什博弈可以轻松解决:1. http://acm.hdu.edu.cn/showproblem.php?pid=1846brave game2. http://acm.hdu.edu.cn/showproblem.php?pid=2147kiki's game3. http://acm.hdu.edu.cn/showproblem.php?pid=2149public sale4. http://acm.hdu.edu.cn/showproblem.php?pid=2188 (选拔志愿者)下面介绍分析此类题目的通用方法:P/N分析:P点: 即必败点,某玩家位于此点,只要对方无失误,则必败;N点: 即必胜点,某玩家位于此点,只要自己无失误,则必胜。三个定理:定理:     一、 所有终结点都是必败点P(上游戏中,轮到谁拿牌,还剩0张牌的时候,此人就输了,因为无牌可取);    二、所有一步能走到必败点P的就是N点;    三、通过一步操作只能到N点的就是P点;以上题目均可以通过P/N分析法来解决。(二)威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况下是颇为复杂的。我们用(akbk)(akbk ,k=0,1,2,…,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。如下三条性质:1。任何自然数都包含在一个且仅有一个奇异局势中。2。任意操作都可将奇异局势变为非奇异局势。 3。采用适当的方法,可以将非奇异局势变为奇异局势。可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k,奇异局势有 那么任给一个局势(ab),怎样判断它是不是奇异局势呢?我们有如下公式:ak = [ k * (1 + √5 ) / 2 ] , bk = ak + k    k = 0,1,2,3........ 在求ak中还涉及一个取整符号,要判断是否是奇异局势,如果a = floor( ( b - a )*(1 + √5 ) / 2),那么是奇异局势。题目链接:http://poj.org/problem?id=1067 (三)尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。种情况最有意思,它与二进制有密切关系,我们用(abc)表示某种局势,首先(000)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0nn),只要与对手拿走一样多的物品,最后都将导致(000)。仔细分析一下,(123)也是奇异局势,无论对手如何拿,接下来都可以变为(0nn)的情形。    计算机算法里面有一种叫做按位模2加,也叫做异或的运算,我们用符号(+)表示这种运算。这种运算和一般加法不同的一点是1+1=0。先看(1,2,3)的按位模2加的结果:1 =二进制012 =二进制103 =二进制11 (+)———————0 =二进制00 (注意不进位)    对于奇异局势(0nn)也一样,结果也是0。    任何奇异局势(abc)都有a(+)b(+)c =0。如果我们面对的是一个非奇异局势(abc),要如何变为奇异局势呢?假设 a < b< c,我们只要将 c 变为 a(+)b,即可,因为有如下的运算结果: a(+)b(+)(a(+)b)=(a(+)a)(+)(b(+)b)=0(+)0=0。要将c 变为a(+)b,只要从 c中减去 c-a(+)b)即可。    例1。(142139),14(+)21=27,39-27=12,所以从39中拿走12个物体即可达到奇异局势(14,21,27)。2。(5581121),55(+)81=102,121-102=19,所以从121中拿走19个物品就形成了奇异局势(5581102)。    例3。(294558),29(+)45=48,58-48=10,从58中拿走10个,变为(29,4548)。下面先是一道简单的尼姆博弈题目(Nim游戏)http://acm.hdu.edu.cn/showproblem.php?pid=1850然而上述都不是博弈论的重中之中,博弈论的王道是SG函数http://blog.csdn.net/u013509299/article/details/37918441(四)最后我们来看组合博弈:(博弈的精华)博弈-取石子游戏组合博弈无疑是对sg值的熟练操作例如:有n堆石子,每次可以从第1堆石子里取1颗、2颗或3颗,可以从第2堆石子里取奇数颗,可以从第3堆及以后石子里取任意颗…… 我们可以把它看作3个子游戏,第1个子游戏只有一堆石子,每次可以取123颗,很容易看出x颗石子的局面的SG值是x%4。第2个子游戏也是只有一堆 石子,每次可以取奇数颗,经过简单的画图可以知道这个游戏有x颗石子时的SG值是x%2。第3个游戏有n-2堆石子,就是一个Nim游戏。对于原游戏的每 个局面,把三个子游戏的SG值异或一下就得到了整个游戏的SG值,然后就可以根据这个SG值判断是否有必胜策略以及做出决策了。其实看作3个子游戏还是保 守了些,干脆看作n个子游戏,其中第12个子游戏如上所述,第3个及以后的子游戏都是“1堆石子,每次取几颗都可以”,称为“任取石子游戏”,这个超简单的游戏有x颗石子的SG值显然就是x。*/
0 0
原创粉丝点击