动态规划法(七)鸡蛋掉落问题(二)

简介:   上次我们讲到,我们的主人公丁丁由于用动态规划法解决了鸡蛋掉落问题(egg dropping problem)而获得了当地科学家的赏识。

  上次我们讲到,我们的主人公丁丁由于用动态规划法解决了鸡蛋掉落问题(egg dropping problem)而获得了当地科学家的赏识。这不,正当丁丁还沉浸在解决问题的喜悦中,科学家又给丁丁出了一个难题:

假设有n个鸡蛋和d次尝试机会,那么,最多能探索多少层楼?

这无疑是鸡蛋问题的翻版,因为这两个问题实在太像了。丁丁没有犹豫,立马按照之前的想法开始思考:

  用f(d,n)f(d,n)表示该问题的解。假设从k层楼扔下鸡蛋(k足够大),若鸡蛋碎了,则剩下n-1个鸡蛋,d-1次尝试机会,最多能向下探索f(d1,n1)f(d−1,n−1)层楼;若鸡蛋没碎,则剩下n个鸡蛋,d-1次尝试机会,最多能向上探索f(d1,n)f(d−1,n)层楼,于是:

f(d,n)=1+f(d1,n1)+f(d1,n).f(d,n)=1+f(d−1,n−1)+f(d−1,n).

g(d,n)=f(d,n+1)f(d,n)g(d,n)=f(d,n+1)−f(d,n),则:
g(d,n)=f(d,n+1)f(d,n)=[1+f(d1,n)+f(d1,n+1)][1+f(d1,n1)+f(d1,n)]=[f(d1,n+1)f(d1,n)]+[f(d1,n)f(d1,n1)]=g(d1,n)+g(d1,n1)g(d,n)=f(d,n+1)−f(d,n)=[1+f(d−1,n)+f(d−1,n+1)]−[1+f(d−1,n−1)+f(d−1,n)]=[f(d−1,n+1)−f(d−1,n)]+[f(d−1,n)−f(d−1,n−1)]=g(d−1,n)+g(d−1,n−1)

因为 f(0,n)=f(d,0)=0f(0,n)=f(d,0)=0,对于任意的 n,dn,d,且 f(d,1)=df(d,1)=d,故 g(0,n)=0,g(d,0)=d.g(0,n)=0,g(d,0)=d.因为在组合数学中,有:
Ckn=Ckn1+Ck1n1,Cnk=Cn−1k+Cn−1k−1,

因此,由数学归纳法可知: g(d,n)=Cn+1d.g(d,n)=Cdn+1. n+1dn+1≥d时, Cn+1d=0.Cdn+1=0.对于 f(d,n)f(d,n),有:
f(d,n)=++++[f(d,n)f(d,n1)][f(d,n1)f(d,n2)][f(d,1)f(d,0)]f(d,0).f(d,n)=[f(d,n)−f(d,n−1)]+[f(d,n−1)−f(d,n−2)]+⋯+[f(d,1)−f(d,0)]+f(d,0).

因为 f(d,0)=0f(d,0)=0,因此 f(d,n)=i=1nCid,d1.f(d,n)=∑i=1nCdi,d≥1.于是,科学家的问题就解决了。
  突然,丁丁又想到了:能不能用这个结果来解决鸡蛋掉落问题呢?答案是肯定的,对于给定的 k=f(d,n)k=f(d,n),只需要对d从1开始算起,得到d,恰好使得 f(d,n)k,f(d,n)≥k,则d即可鸡蛋掉落问题的解。
  科学家看了丁丁的解答,十分满意,他终于下定决心招丁丁为自己的助手。不过,丁丁说,他还要去外面的世界再看看,因此,科学家也没有挽留,但他祝愿丁丁好运。
  本文不再给出相关的程序,读者可以自己实现哦~~
  本文的参考文献为: https://brilliant.org/wiki/egg-dropping/

注意:本人现已开通两个微信公众号: 用Python做数学(微信号为:python_math)以及轻松学会Python爬虫(微信号为:easy_web_scrape), 欢迎大家关注哦~~

目录
相关文章
|
存储 缓存 前端开发
关于JWT Token 自动续期的解决方案
在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个jwt token。前端(如vue)在接收到jwt token后会将token存储到LocalStorage中。
2124 0
|
8月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
731 2
|
6月前
|
机器学习/深度学习 存储 弹性计算
阿里云服务器2核4G租用价格,最新实例收费标准与活动价格及选择参考
租用阿里云服务器2核4G配置多少钱?2025年,企业用户专享的通用算力型u1实例,2核4G配置、5M带宽及80G ESSD Entry云盘的组合,仅需199元即可使用一年,堪称性价比之选。此外,通用算力型u1、通用算力型u2i以及计算型c9i等实例也提供了2核4G配置的优惠,具体价格因带宽、系统盘种类及大小而异。本文将为大家详细梳理2025年阿里云最新活动中的2核4G配置价格,并解析阿里云服务器的公网带宽及系统盘收费标准,以供大家了解和参考。
884 11
|
计算机视觉
pyt魔搭训练常用代码
本文分享了在魔搭社区进行目标检测训练的经验与代码,涵盖数据解压、配置文件设置、模型训练及格式转换等关键步骤,助力快速上手YOLO模型训练。
|
安全 搜索推荐 网络安全
U2F和FIDO2 两种安全认证技术优劣势对比?如何选择?
数字化时代,网络安全至关重要。FIDO U2F和FIDO2是两种领先的安全认证技术,前者通过物理密钥提供双因素认证,后者则支持无密码认证和生物识别,两者均显著提升了账户安全性。本文详细介绍这两种技术的特点、优缺点及其应用场景,帮助企业选择最适合的安全认证方案。
1689 7
|
NoSQL Redis Docker
Docker 安装 Redis
Docker 安装 Redis
476 2
|
存储 编解码 算法
图像的压缩算法--尺寸压缩、格式压缩和品质压缩
图像的压缩算法--尺寸压缩、格式压缩和品质压缩
725 0
|
机器学习/深度学习 算法 计算机视觉
【计算机视觉】图像分割中FCN、DeepLab、SegNet、U-Net、Mask R-CNN等算法的讲解(图文解释 超详细)
【计算机视觉】图像分割中FCN、DeepLab、SegNet、U-Net、Mask R-CNN等算法的讲解(图文解释 超详细)
2119 0
|
Shell 测试技术 Android开发
08-adb命令之monkey压测
08-adb命令之monkey压测