- 1、本文档共181页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
信息工程大学
国家级实验教学示范中心计算机学科组规划教材算法设计与分析Python案例详解微课视频版
动态规划介绍
动态规划(DynamicProgramming,DP)
20世纪50年代初,美国数学家
理查德•贝尔曼等人在研究多阶段决
策过程的优化问题时,提出了著名的
最优化原理,从而创立了动态规划。
R.RichardBellman(1920~1984)
动态规划介绍
动态规划的应用非常广泛,包括工程技术、经济、
工业生产、军事以及自动化控制等领域。
主要内容
问题引出原理和步骤典型应用
•兔子繁殖•两个重要性•0-1背包
•数字三角形质•矩阵连乘
•最优子结构•最长公共子
•重叠子问题序列
•求解步骤•最长不上升
(四步)子序列
•编辑距离
•最优二叉搜
索树
信息工程大学
国家级实验教学示范中心计算机学科组规划教材算法设计与分析Python案例详解微课视频版
一问题描述
兔子繁殖问题:
一对兔子从出生后第三个月开始,每月会生
一对小兔子。如果兔子只生不死,一月份抱来一
对刚出生的小兔子,问一年中每个月各有多少对
兔子。
二问题分析
F(n)表示第n个月的兔子对数,
F(n)=上个月的兔子+本月新出生的兔子
F(n-1)F(n-2)
二问题分析
斐波纳契数列(FibonacciSequence)
1,1,2,3,5,8,11,19,30,49,……
1ifn=0or1
Fn
()=F(n-1)+F(n-2)ifn1
三问题求解
方法一:递归实现F(n)=F(n-1)+F(n-2)
基于分治的递归实现:
intF(intn)
{
if(n==0||n==1)return1;
returnF(n-1)+F(n-2);
}
问题:该方法求解第n项的时间复杂度是多少?
三问题求解
单选题。
递归求解Fibonacci数列第n项的时间复杂度是多少?
A.O(n)
B.O(n2)
C.O(2n)
D.O(1)
三问题求解
方法一:递归实现F(n)=F(n-1)+F(n-2)
T(n)=T(n-1)+T(n-2)+1=O(2n)
思考:时间复杂度高的原因是什么?
原因:存在大量的重复计算。
F(n)
F(n-1)F(n-2)
F(n-2)F(n-3)F(n-3)F(n-4)
F(n-3)F(n-4)F(n-4)F(n-5)F(n-4)F(n-5)F(n-5)F(n-6)
三问题求解
方法二:带记忆的递归实现(备忘录)
去除重复计算的方法:保存计算结果
/*A[i]表示第i个月的兔子对数,初始化为0*/
intA[MAXSIZE]={0};
intF(intn)
{
if(n==0||n==1)A[n]=1;
elseif(A[n]==0)A[n]=F(n-1)+F(n-2);
returnA[n];
}
您可能关注的文档
- 算法设计与分析 课件 许瑾晨 0 算法导论---第六章 贪心算法.pptx
- 算法设计与分析 课件 许瑾晨 第7--10章 回溯法 --- 综合应用 .pptx
- 算法设计与分析 课件 许瑾晨 第八章 分支限界 .pptx
- 算法设计与分析 课件 许瑾晨 第九章 概率算法 .pptx
- 算法设计与分析 课件 许瑾晨 第六章 贪心算法.pptx
- 算法设计与分析 课件 许瑾晨 第十章 -综合应用 .pptx
- 算法设计与分析 课件 许瑾晨 第四章 分治法.pptx
- 通用汇报总结陈述述职商务ppt模板 现代城市企业风格128.pptx
- 通用汇报总结陈述述职商务ppt模板 现代城市企业风格65.pptx
- 有关清明节祭祖讲话稿汇编24篇.docx
文档评论(0)