博弈论小结
说在前面
首先,你们这些绝顶聪明的人找我干嘛?我这种蒟蒻能要帮你们做什么?
其次,既然都有了我拼命想一想就能想出来的先手必胜后手必胜策略了,那些绝顶聪明的人知道了谁必胜为什么还要赌?
可能这就是我这种不是绝顶聪明的人不能理解的境界吧。
好吧,以上是玩笑话。
那么,
t
h
e
g
a
m
e
i
s
a
f
o
o
t
!
\xcancel{the~game~is~afoot!}
the game is afoot!
Bash 巴什博奕
描述
有一堆共n个石头,两个人交替取石头,每人每次可以取1~m颗石头,谁不能取了谁就输了。
分析
从最简单的开始考虑,如果
n
≤
m
n\leq m
n≤m,那么先手直接取完就赢了,因为这样对面就面对着只剩
0
0
0颗石头的局面,他取不了了他输了。
如果
n
n
n只比
m
m
m大一点比如
n
=
m
+
1
n=m+1
n=m+1,那么先手不论怎么取都取不完,而后手一定可以直接取完,所以先手必败。
当然这种情况对于
n
n
n再大一点,比如
n
=
m
+
2
n=m+2
n=m+2就反过来了,我们先手只需要取
1
1
1颗石头,就把
n
′
=
m
+
1
n'=m+1
n′=m+1颗石头的局面给了对面,对面必输,所以我们先手必胜。
于是我们的目标从“留给对面
0
0
0颗石头的局面我们就赢了”变成了“留给对面
m
+
1
m+1
m+1颗的石头的局面我们就赢了”,当然,如果
0
0
0颗或者
m
+
1
m+1
m+1颗的局面在我们手上我们就输了。
进行类似的讨论,发现要想留给对面
m
+
1
m+1
m+1颗石头,我们只需要给对面
2
∗
(
m
+
1
)
2*(m+1)
2∗(m+1)颗石头即可;想留给对面
2
∗
(
m
+
1
)
2*(m+1)
2∗(m+1)颗石头,只需要留给对面
3
∗
(
m
+
1
)
3*(m+1)
3∗(m+1)颗石头……
所以结论就是,如果
n
n%(m+1)==0
n,我们就必败,否则我们必胜。因为必胜的那一方只需要随时随地留给对面
k
∗
(
m
+
1
)
k*(m+1)
k∗(m+1)颗石头就行了,而这非常容易。
Nim 尼姆博弈
描述
有n堆石子,每堆有若干个,两人轮流取,每人每次可以取一堆石头里的任意颗,不能不取,谁取不了就输了。
分析
正解是看这些堆石子数量的异或和是否等于零,因为最终态的异或和是等于0的,如果始态的异或和为0,对面不管怎么操作,都会改变这个异或和,你再操作操作把异或和再变为零即可。
Wythoff 威佐夫博弈
描述
有两堆若干个石子,每人每次可以在一堆取任意颗(>=1)或在两堆同时取相同的任意个(>=1)。
说在中间
博主太懒了。