博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划法(七)鸡蛋掉落问题(二)
阅读量:6925 次
发布时间:2019-06-27

本文共 1491 字,大约阅读时间需要 4 分钟。

  上次我们讲到,我们的主人公丁丁由于用动态规划法解决了鸡蛋掉落问题(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即可鸡蛋掉落问题的解。
  科学家看了丁丁的解答,十分满意,他终于下定决心招丁丁为自己的助手。不过,丁丁说,他还要去外面的世界再看看,因此,科学家也没有挽留,但他祝愿丁丁好运。
  本文不再给出相关的程序,读者可以自己实现哦~~
  本文的参考文献为: 。

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

转载地址:http://djjjl.baihongyu.com/

你可能感兴趣的文章
融合了 JavaScript 之力的 Nashorn 或被 JDK 11 弃用
查看>>
DocHub v2.3 发布,构建你自己的百度文库
查看>>
Fragment初学1——Fragment简介
查看>>
阿里云工程师(ACE)官方博客正式开通啦
查看>>
合理配置6大技术,优化全站HTTPS加密速度
查看>>
twisted服务器端客户端通信(转载填坑)
查看>>
基于Kubernetes的云上机器学习—GPU弹性扩缩容
查看>>
Ansible copy资源
查看>>
java B2B2C 源码 多级分销Springboot多租户电子商城系统-springcloud项目redis分布式锁...
查看>>
如何使用阿里云搭建wordpress网站(图文教程+小白专用+Linux版)?
查看>>
专访阿里云MVP黄胜蓝:90 后 CTO花了6年,改变了你日常生活里的这件事
查看>>
2017-11-17 为clang添加中文关键字
查看>>
Intro.js 分步向导插件使用方法
查看>>
js对象的两种写法
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 7 章 查询_7.8. WITH查询(公共表表达式)...
查看>>
BOSE打造新型AR眼镜Frames,可通过声音来实现身临其境的音频体验
查看>>
提速 10%,V8 引擎推出全新 Liftoff 基线编译器
查看>>
控件篇
查看>>
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色_21.5. 默认角色
查看>>
HTTP响应状态码参考
查看>>