前言
最近在准备机考题,之前也做过一些与博弈有关的题目,所以在这里总结几类常见的博弈问题.
巴什博弈
假设有n个石子,有两个玩家first(先取)和second(后取),玩家每次可以交替取1-m个石子,取到最后一个石子的玩家获胜。现在给定m,n,问那个玩家可以胜利。
判定的条件为n%(m+1)==0,分析如下:
- n%(m+1)==0 second赢
假设玩家first先取k个石子,那么玩家second可以取m+1-k个石子,这样,每回合都会取走m+1个石子,这样,最后一个石子一定是second取走。 - n%(m+1)!=0 first赢
思路与前一种情况类似,玩家first先取走n%(m+1)个石子,这样的话,形势与情况一一致 n ′ % ( m + 1 ) = = 0 n'\%(m+1)==0 n′%(m+1)==0,只不过这个时候first每回合取 m + 1 − k s e c o n d m+1-k_{second} m+1−ksecond个石子即可取得胜利。
威佐夫博弈
有两堆石子,两个人交替取石子,可以从一堆中取,也可以从两堆中取走相同数目的石子,每次取走石子的数量至少为1,最后取走者获胜,问谁能取得胜利。
我们可以定义先手输的局势为奇异局势,比如(0,0),这种情况下,取走最后一个石子的必定是后手。前几种奇异局势是(0,0),(1,2),(3,5),(4,7),(6,10),(8,13),(9,15)…,用数对表示的话,
(
a
k
,
b
k
)
(a_k,b_k)
(ak,bk),
a
0
=
0
,
b
0
=
0
,
b
k
=
a
k
+
k
a_0=0,b_0=0,b_k=a_k+k
a0=0,b0=0,bk=ak+k,
a
k
a_k
ak是前面未出现的最小自然数。奇异局势的性质可以参考百度百科。
结论: 给定(a,b),满足
(
b
−
a
)
∗
5
+
1
2
=
x
(b-a)*\frac{\sqrt{5}+1}{2}=x
(b−a)∗25+1=x,则为奇异局势。
尼姆博弈
有三堆石子,两个人轮流从任一堆石子中取出任意多(至少为1)的石子,最后取光者胜。
结论:若每堆石子的数量的异或和为0,则处于平衡状态,面对平衡状态的选手将会输。