fib博弈定义
fib:
性质1:
f
(
i
)
>
f
(
i
−
1
)
,
因为
f
(
i
)
=
f
(
i
−
1
)
+
f
(
i
−
2
)
,
f
(
i
−
2
)
>
0
;
f(i)>f(i-1),因为f(i)=f(i-1)+f(i-2),f(i-2)>0;
f(i)>f(i−1),因为f(i)=f(i−1)+f(i−2),f(i−2)>0;
性质2:
f
(
i
)
>
2
f
(
i
−
2
)
,
证明类
1
f(i)>2f(i-2),证明类1
f(i)>2f(i−2),证明类1
性质3:
f
(
i
)
<
2
f
(
i
−
1
)
f
(
i
)
=
f
(
i
−
1
)
+
f
(
i
−
2
)
,
由性质
1
得
f
(
i
−
1
)
>
f
(
i
−
2
)
,故
f
(
i
)
<
2
f
(
i
−
1
)
.
f(i)<2f(i-1)\\\\ f(i)=f(i-1)+f(i-2),由性质1得f(i-1)>f(i-2),故f(i)<2f(i-1).
f(i)<2f(i−1)f(i)=f(i−1)+f(i−2),由性质1得f(i−1)>f(i−2),故f(i)<2f(i−1).
性质4:
f
(
i
)
>
3
f
(
i
−
2
)
f
(
i
)
=
f
(
i
−
1
)
+
f
(
i
−
2
)
=
f
(
i
−
2
)
+
f
(
i
−
3
)
+
f
(
i
−
2
)
<
3
f
(
i
−
2
)
\begin{align} f(i)>3f(i-2)\\\\f(i)=f(i-1)+f(i-2)&=f(i-2)+f(i-3)+f(i-2)\\&<3f(i-2) \end{align}
f(i)>3f(i−2)f(i)=f(i−1)+f(i−2)=f(i−2)+f(i−3)+f(i−2)<3f(i−2)
性质5:
4
f
(
i
−
2
)
<
3
f
(
i
−
1
)
由性质
3
得:
4
f
(
i
−
2
)
<
f
(
i
+
1
)
<
3
f
(
i
−
1
)
f
(
i
+
1
)
=
f
(
i
)
+
f
(
i
−
1
)
=
[
f
(
i
−
1
)
+
f
(
i
−
2
)
]
+
[
f
(
i
−
2
)
+
f
(
i
−
3
)
]
=
[
f
(
i
−
2
)
+
f
(
i
−
3
)
+
f
(
i
−
2
)
]
+
[
f
(
i
−
2
)
+
f
(
i
−
3
)
]
=
3
∗
f
(
i
−
2
)
+
2
∗
f
(
i
−
3
)
>
4
f
(
i
−
2
)
\begin{align} 4f(i-2)<3f(i-1)\\ \\ 由性质3得:\\ 4f(i-2)<f(i+1)<3f(i-1)\\ f(i+1)=f(i)+f(i-1)&=[f(i-1)+f(i-2)]+[f(i-2)+f(i-3)]\\ &=[f(i-2)+f(i-3)+f(i-2)]+[f(i-2)+f(i-3)]\\ &=3*f(i-2)+2*f(i-3)>4f(i-2) \end{align}
4f(i−2)<3f(i−1)由性质3得:4f(i−2)<f(i+1)<3f(i−1)f(i+1)=f(i)+f(i−1)=[f(i−1)+f(i−2)]+[f(i−2)+f(i−3)]=[f(i−2)+f(i−3)+f(i−2)]+[f(i−2)+f(i−3)]=3∗f(i−2)+2∗f(i−3)>4f(i−2)
石子个数
n
>
=
2
n>=2
n>=2,先手一开始可以拿任意个,第一次不可直接拿完,接下来每次至少拿一个,且不能超过上一次的两倍,求先手必败态。
必败态性质:
后手最后一次最多可以拿
2
3
f
(
k
)
\frac{2}{3}f(k)
32f(k)个,最后一次后手拿完,共拿
k
k
k个,则前一次至少为
k
/
2
k/2
k/2个,和为
3
2
k
\frac{3}{2}k
23k,故不能超过
2
3
f
(
k
)
\frac{2}{3}f(k)
32f(k)个。
结论,fib数均为必败态。
##证明
- f ( 1 ) = 2 , f ( 2 ) = 3 f(1)=2,f(2)=3 f(1)=2,f(2)=3均为必败态。
- 假设 f ( i − 1 ) , f ( i − 2 ) f(i-1),f(i-2) f(i−1),f(i−2)均为必败态。
-
f
(
i
)
=
f
(
i
−
1
)
+
f
(
i
−
2
)
f(i)=f(i-1)+f(i-2)
f(i)=f(i−1)+f(i−2),对于状态
f
(
i
)
f(i)
f(i),如果先手拿了不少于
k
>
=
f
(
i
−
2
)
k>=f(i-2)
k>=f(i−2),则后手可直接拿完,fib数性质。
f ( i ) = f ( i − 1 ) + f ( i − 2 ) f(i)=f(i-1)+f(i-2) f(i)=f(i−1)+f(i−2),对于状态 f ( i ) f(i) f(i),如果先手拿了小于 k > = 1 3 f ( i − 2 ) k>=\frac{1}{3}f(i-2) k>=31f(i−2),后手拿 y = f ( i − 2 ) − k < = 2 3 f ( i − 2 ) y=f(i-2)-k<=\frac{2}{3}f(i-2) y=f(i−2)−k<=32f(i−2), f ( i − 1 ) > 4 3 f ( i − 2 ) f(i-1)>\frac{4}{3}f(i-2) f(i−1)>34f(i−2),变为了 f ( i − 1 ) f(i-1) f(i−1)问题的一个子集。 - f ( i ) = f ( i − 1 ) + f ( i − 2 ) f(i)=f(i-1)+f(i-2) f(i)=f(i−1)+f(i−2),如果先手拿了小于 k < 1 3 f ( i − 2 ) k<\frac{1}{3}f(i-2) k<31f(i−2),由于 f ( i − 2 ) f(i-2) f(i−2)必败,故后手一定可以拿最后k个,易得 k < = 2 3 f ( i − 2 ) k<=\frac{2}{3}f(i-2) k<=32f(i−2),反证,假设大于,则有倒数第二次不少于 1 3 f ( i − 2 ) \frac{1}{3}f(i-2) 31f(i−2),其和超过 f ( i − 2 ) f(i-2) f(i−2)不可能。
非fib数均为必胜态
任何一个整数均可以拆为fib数之和,齐肯多夫定理的结论。
任何正整数可以表示为若干个不连续的Fibonacci数之和
对于Fib数是显然成立的。
对于非Fib数,
长为2的连续段为
f
(
k
)
+
f
(
k
−
1
)
f(k)+f(k-1)
f(k)+f(k−1)可拆为
f
(
k
+
1
)
f(k+1)
f(k+1)
长为3的连续段为
f
(
k
)
+
f
(
k
−
1
)
+
f
(
k
−
2
)
f(k)+f(k-1)+f(k-2)
f(k)+f(k−1)+f(k−2)可拆为
f
(
k
+
1
)
+
f
(
k
+
2
)
f(k+1)+f(k+2)
f(k+1)+f(k+2)
长为4的连续段为
f
(
k
)
+
f
(
k
−
1
)
+
f
(
k
−
2
)
+
f
(
k
−
3
)
f(k)+f(k-1)+f(k-2)+f(k-3)
f(k)+f(k−1)+f(k−2)+f(k−3)可拆为
f
(
k
+
1
)
+
g
a
p
+
f
(
k
−
2
)
+
f
(
k
−
3
)
f(k+1)+ gap+f(k-2)+f(k-3)
f(k+1)+gap+f(k−2)+f(k−3)变成了长为2的连续段了。
必胜取法, f ( a ) + f ( b ) + f ( c ) + . . . + f ( z ) f(a)+f(b)+f(c)+...+f(z) f(a)+f(b)+f(c)+...+f(z),第一步直接取 f ( z ) f(z) f(z)个。 f ( b e f o r e ) > 2 f ( z ) f(before)>2f(z) f(before)>2f(z),走完第一步后,后手变先手,由于他不能一次拿完,则在 f ( b e f o r e ) f(before) f(before)最后一些个必由先手拿完,同理,后手将一直输下去,直到人都输麻了。