Java教程

重修 博弈论

本文主要是介绍重修 博弈论,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

由来(doge)

Once upon a time, there were two clever people named Alice and Bob. This is how the story begins...

基础

\(N\) 为先手必胜局面,\(P\) 为先手必败局面。

先手被认为输的局势,我们可以称之为奇异局势。

巴什博弈

小学奥数题:甲乙轮流报数至多报 77 个数,至少报 11 个数,从 11 开始,谁先报到 5050 谁就胜利。甲先报,有无必胜策略?

威佐夫(Wythoff)博弈

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

设两堆分别剩余 \(x,y\) 的局面为 \((x,y)\)。

小范围暴力打表得到奇异局势(pair 之中小的放前面):

\[(0,0),(1,2),(3,5),(4,7),(6,10),(8,13),(9,15),(11,18),(12,20),\dots \]

我们用 \((a_k,b_k)\) 表示。可以看出 \(b_k=a_k+k,a_k=\text{mex}\{a_1,b_1,\dots,a_{k-1},b_{k-1}\}\)

然后,通过「找规律」得到(在考场上不相信有人严谨证明,就是小范围打表得到的):

\[a_k=\lfloor k\phi\rfloor , b_k=\lfloor k\phi^2\rfloor , \phi=1.618\dots \]

Nim 博弈

结论:异或和为 \(0\) 则 \(P\),否则 \(N\)。

猜想:可以用来证明 一组数在某进制下异或为 \(0\) ,则在其他进制下也为 \(0\)。

Anti-Nim

先手必胜:

  • 异或和为 \(0\) 且每一堆都只有 \(1\) 个石子

  • 异或和不为 \(0\) ,且至少有一堆多于 \(1\) 个石子

SG(人名 Sprague-Grundy)函数

分道:\(sg(x)=\text{mex}\{sg(son)\}\)

分局面:\(sg(x)=\text{xor}\{sg(son)\}\)

树上删边博弈

算是 SG 例题。

在树上,我们可以进行这样一种博弈游戏:

给出一个有 \(n\) 个点的树,有一个点作为树的根节点,游戏者只有两人。

游戏者轮流从树中删去边,删去一条边后,不与根节点相连的部分将被移走。

谁无路可走谁输。

简单的树手推一下各个 SG 值,然后找规律。

发现 \(sg(rt)=\text{xor}\{(sg(son)+1)\}\)。

证明对树的大小归纳,不难,略。

当然类似的树上博弈也类似做法,即 SG 扩展性好。

这篇关于重修 博弈论的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!