对阶梯博弈的一点想法

基础的阶梯博弈还是比较好理解的

阶梯博弈,其实指代的是一类只能从后向前逐层(反过来也差不多)传递石子的游戏的模型,同样的,这类问题也可以转化成NIM取石子问题求解

即对应先手必胜态。不考虑编号后的奇数堆(可以假设奇数堆上没有石子可以移动),对于所有偶数堆,率先移动的一方肯定会失败,这是显然的,因为目标堆是第0堆(重点态(比败态)),而移动2k堆只能到2k-1堆,即奇数堆,另一方再次移动又会回到偶数堆的情况,如此往复,最终一定是面对均为偶数堆的一方失败,这样看来,偶数堆对胜负的影响可以转化为哪一方先将所有奇数堆移动完即可取得胜利(因为偶数移动完了就只能动奇数了,所以可以先考虑谁先把奇数移动完毕,这样就相当于是一个nim博弈了,因为奇数堆只能移动到偶数堆,而我们一点都不用考虑偶数堆的东西,还有肯恩出现的状况就是我取奇数,后手也取奇数,哦哦哦,这就是符合nim博弈的状况,完全正常的基础nim博弈,所以完全ojbk。那么奇数阶梯的nim做完, 也就是说奇数阶梯上的石子都被取完了,但是还有偶数阶梯上还有石子. 那么对于奇数阶梯上的石子恰好没有了的时刻, 谁此时是先手谁就必输. 因为此时的先手只能推偶数阶梯上的石子到奇数阶梯上去, 此时的后手只需要跟着先手的步伐, 再把先手转移到奇数阶梯上的石子又推到偶数阶梯上去. 这样一来, 先手每次就只能推偶数阶梯上的石子, 1号阶梯上的石子——1作为奇数, 只能由后手来推, 那么最后的石子一定被后手推下去.

这就证明了对奇数阶梯做nim的正确性. 若对偶数阶梯做nim, 做完nim最后还剩阶梯上的奇数石子, 此时无法确定当前时刻先手后手谁赢. 可以参考上一段最后几句做完nim关于谁赢的正确性.

综上, 我们只需要对奇数阶梯做nim, 最后我们就能知道取走最后一堆奇数阶梯上的石子的是谁, 这个nim游戏的赢家, 也就会成为对只剩偶数阶梯上的石子的游戏局面的后手, 成为最终赢家.

然而对于阶梯博弈的变式确实比较难理解的例如

HDU - 3389

题目大意:有t组数据。每组数据有n个盒子,这n个盒子编号为12345678......(注意不是从0开始的)

每个盒子中有一定量的卡片。每次取编号为B和编号为A的盒子, 要求满足

B<A && (A+B)%2=1 && (A+B)%3=0,把A中的任意数量的卡片转移给B,谁不能再转移了谁输。

咋一看,挺像基础的阶梯博弈的描述的,但是有了很多的限制条件,网上的大多数大牛的题解就是一带而过,这让我可就想了半天,虽然是想出来了点道道,但是不知道对不对

我就一直再看阶梯博弈的初始定义,结合题解,返现终点是寻找某一个状态对应的奇偶性(再来说一遍定义中的解析)偶数为偶性,表示偶性状态不会影响奇性状态,因为偶-》奇-》偶一个循环毫无差别,而且最后的0为必败点,先手偶,这么玩下去必败~~,也就是如果不考虑奇性态,偶性态的状态就已经确定了,如果要考虑奇性态呢,奇性态的东西会移动到偶性,然而毫无影响,相当于nim的取子,这时候对手玩一招将计就计,挪动偶态到奇态,这样就会触发偶态的性质,看我一波太极拳给你打回去~~~

所以面对这个题,我就先去寻找终点态

只要是能一眼看出结果的状态,面对这个的人必输,这个就是偶性的路程线,而对于这个题,我发现134是她的终点态(偶)2肯定是(奇),其余的都还在走,对于5要和4(偶),所以5是(奇数);6要和3(同理6是奇数);7要和27是偶数);8要和7|1(奇数)……

 

这样就真的满足这样的规律,也就是x % 6 == 1 | 3 | 4为偶态,其余为奇数态

 

这样我们就迎刃而解了还皮!!希望能这么理解吧~~

 

原文地址:https://www.cnblogs.com/DF-yimeng/p/8696946.html