Typesetting math: 100%

学习笔记 斐波那契博弈

斐波那契博弈

有一堆个数为n的石子,A,B轮流取石子,满足:

(1)先手不能在第一次把所有的石子取完

(2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间
(包含1和对手刚取的石子数的2倍)

同之前的不同点就是:取的规则动态化

约定取走最后一个石子的就是赢家


就连我看博弈名都知道 这必须要使用斐波那契数列

这里需要借助齐肯多夫定理:(证明自己看)

任何正整数可以表示为若干个不连续的斐波那契数之和

对于所有的正整数适应

首先给出3个定理

1.fibn+1<fibn2<fibn+2.fibn+1<fibn2<fibn+2这个应该可以明白

fibn+1=fibn+fibn1fibn+1=fibn+fibn1

并且fibn>fibn1fibn>fibn1

fibn2>fibn+1fibn2>fibn+1

同理

fibn+2=fibn+fibn+1fibn+2=fibn+fibn+1

并且fibn+1>fibnfibn+1>fibn

所以fibn+2>fibn2fibn+2>fibn2

2.fibn+2<fibn3fibn+2<fibn3

     fibn+2     fibn+2
=fibn+1+fibn=fibn+1+fibn
=fibn+fibn1+fibn=fibn+fibn1+fibn
=fibn2+fibn1=fibn2+fibn1
fibn1<fibnfibn1<fibn

所以fibn+2<fibn3fibn+2<fibn3

3.3fibn+1>4fibn3fibn+1>4fibn

也就是3fibn1>fibn3fibn1>fibn 由定理2 成立

数学归纳法证明:

1.若当前只有一颗也就是i=2i=2 先手只有一颗可取

显然是必败 成立

2.假设所有i<=ki<=k均成立

那么i=k+1i=k+1fibi=fibk+fibk1fibi=fibk+fibk1

那么把石子分为两堆 fibkfibk以及fibk1fibk1

首先 先手绝顶聪明的话取得石子数一定<fibk1<fibk1

因为fibk<fibk12fibk<fibk12

对于当前小堆fibk1fibk1一定可以明白的是

根据假设无论先手如何取 后手总是可以取到最后一颗

分析一下后手最后去了xx

若先手第一次取了y>=fibk13y>=fibk13

那么剩余小堆<=2y<=2y 后手可以直接取光

x=fibk1y<=2fibk13x=fibk1y<=2fibk13

我们比较一下2fibk132fibk13以及fibk2fibk2

也就是4fibk14fibk1以及3fibk3fibk

由定理3可得 后者大于较大

所以先手无法一次性取光fibkfibk这一堆

那么根据之前结论 后手必胜

若先手第一次取了y<fibk13y<fibk13

由于fibn+2<3fibnfibn+2<3fibn

所以y<fibk3y<fibk3

那么感性的理解一下 后手总是可以取走一些石子

然后使先手面临fibk2fibk2的局面 这样的话后手还是可以取走最后一个

这样的话还是先手必败

所以i=k+1i=k+1时 结论依然成立


不是FibonacciFibonacci数列时 先分解

分解时尽量取较大FibonacciFibonacci

例如分解85:

55<=85<=8955<=85<=89所以就是85=55+3085=55+30

以此类推就是85=55+21+8+185=55+21+8+1

n=fibp1+fibp2+fibp3+......+fibpk(p1>p2>p3>......>pk)n=fibp1+fibp2+fibp3+......+fibpk(p1>p2>p3>......>pk)

又因为各个fibfib之间不连续

所以pk1>pk+1pk1>pk+1 所以fibpk1>fibpk2fibpk1>fibpk2

先手先取走fibpkfibpk

那么后手只可以取fibpk1fibpk1并且不可以取完

那么后手面临这个子问题

fibpk1fibpk1并且是后手先取

那么由上可得先手一定可以取走最后一颗

同理对于以后的每一堆都是如此

得证

模板题

HDU2516

posted @   tcswuzb  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示