动态规划算法应用及其优化---毕业论文.doc
- 文档编号:147043
- 上传时间:2022-10-04
- 格式:DOC
- 页数:45
- 大小:400KB
动态规划算法应用及其优化---毕业论文.doc
《动态规划算法应用及其优化---毕业论文.doc》由会员分享,可在线阅读,更多相关《动态规划算法应用及其优化---毕业论文.doc(45页珍藏版)》请在冰豆网上搜索。
本科毕业论文
动态规划算法应用及其优化
ThePracticeAndOptimizeOfDynamicProgrammingAlgorithm
姓名:
学号:
学 院:
软件学院
系:
软件工程
专业:
软件工程
年级:
指导教师:
年月
摘 要
动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。
它建立在最优原则的基础上,是基本算法中设计难度相当大的一种。
采用动态规划方法,可以高效地解决许多用贪婪算法或分治算法无法解决的问题,是信息学竞赛选手必须熟练掌握的一种算法,以其多元性广受出题者的喜爱。
动态规划算法没有一个固定的解题模式,技巧性很强。
涉及优化问题,一般都离不开动态规划,然而因为在程序算法中动态规划属于最难理解的算法之列,这也使得许多人对此望而却步。
本文从数字三角形问题入手,逐步深入动态规划算法。
介绍了该算法的理论基础,基本概念,涉及领域和解题步骤。
通过矩阵连乘,炮弹拦截,最长单调上升子序列等实际问题的讨论,探讨动态规划的基本思想。
同时本文还对两个与动态规划有密切联系的其他方法进行了比较。
在对该算法的基本问题比较全面的论述后,本文接着探讨了动态规划算法的优化。
从三个方面讨论了动态规划算法时间复杂度的优化,从两个实例讨论了动态规划算法空间复杂度的优化。
关键词:
动态规划;备忘录方法;算法优化
Abstract
Dynamicprogrammingisabranchofoperationalresearch.Itisthemathematicalmethodforsolvingtheoptimizationdecision-makingprocess.Itistheonethatverydifficulttodesigninthebasicalgorithms.Itisbuiltonthebasisofoptimizationprinciple.Bythedynamicprogramming,wecansolvemanyproblem,whichcan`tsolvebythegreedyalgorithmordivideandrulealgorithm,elegantlyandeffectively.Itisthealgorithmthatplayersmustmasterinthecompetition.Itispopularwiththeexaminersforitsdiversity.Dynamicprogrammingalgorithmdoesnothaveafixedproblem-solvingmode.ItisSkillful.Optimizationproblemsgenerallyaresolvedbythedynamicprogramming.Butmanypeopledonothavethecouragetolearndynamicprogrammingalgorithmbecauseitisthemostdifficultalgorithm.
Thisarticlediscussedthedynamicprogrammingalgorithmstepbystepstartedfromthequestionofthenumber-triangle,andintroduceditstheory,domain,conceptionandstepstouse.Itexploredthebasicideaofdynamicprogrammingthroughthematrixchainproblemandmissileinterceptingproblem.Atthesametime,thisarticlecomparedtwootheralgorithmssimilartothedynamicprogrammingalgorithm.
Thenthisarticlediscussedhowtooptimizethedynamicprogrammingalgorithm.Itdiscussedhowtooptimizethetimecomplexityfromthreeaspectsandhowtooptimizethespacecomplexityfromtwoaspects.
Keywords:
dynamicprogramming;memorandum;optimizealgorithm
目 录
第一章 问题的引入 1
1.1问题描述 1
1.2穷举搜索法解题 1
第二章 初识动态规划 4
2.1分析最优解的性质 4
2.2递归地定义最优值 5
2.3计算最优值 5
2.4构造最优解 8
第三章 从理论角度看动态规划 9
3.1最优化原理 9
3.2基本术语 10
3.3动态规划的基本思想 11
3.4动态规划问题的特征 11
3.5动态规划基本步骤 12
第四章 从应用角度看动态规划 13
4.1矩阵连乘问题 13
4.1.1问题描述 13
4.1.2最优解的性质 14
4.1.3递归定义最优值 15
4.1.4计算最优值 15
4.1.5构造最优解 17
4.2导弹拦截问题 17
4.2.1问题描述 17
4.2.2最优子结构性质 18
4.2.3递归的定义最优值 18
4.2.4计算最优解 19
4.2.5构造最优解 20
第五章 动态规划与其它算法比较 21
5.1动态规划与搜索算法 21
5.2动态规划与备忘录方法 22
第六章 动态规划算法的优化 25
6.1动态规划时间优化 25
6.1.1减少状态总数 25
6.1.2减少每个状态转移的状态数 28
6.1.3减少状态转移的时间 30
6.2动态规划空间优化 32
6.2.1最长公共子序列问题空间优化 32
6.6.2数字三角形问题空间优化 35
第七章 总结 36
致谢 37
参考文献 38
Content
Chapter1 Introduction 1
1.1Question 1
1.2Fristanswer 1
Chapter2 Understanddynamicprogramming 4
2.1Thenatureoftheoptimalsolution 4
2.2Optimalvalue 5
2.3Getoptimalvalue 5
2.4Getoptimalsolution 8
Chapter3TheoryOfDynamicprogramming 9
3.1OptimizationPrinciple 9
3.2Terms 10
3.3Thebasicidea 11
3.4Features 11
3.5Steps 12
Chapter4PracticeOfDynamicprogramming 13
4.1Matrixchainproblem 13
4.1.1Question 13
4.1.2Thenatureoftheoptimalsolution 14
4.1.3Optimalvalue 15
4.1.4Getoptimalvalue 15
4.1.5Getoptimalsolution 17
4.2Missileinterceptingproblem 17
4.2.1Question 17
4.2.2Thenatureoftheoptimalsolution 18
4.2.3Optimalvalue 18
4.2.4Getoptimalvalue 19
4.2.5Getoptimalsolution 20
Chapter5Compare 21
5.1Comparetosearchalgorithm 21
5.2Comparetomemorandumalgorithm 22
Chapter6OptimizeTheDynamicProgramming 25
6.1Optimizethetimecomplexity 25
6.1.1Reducethestate 25
6.1.2Reducethestatetransition 28
6.1.3Reducethetimeofstatetransition 30
6.2Optimizethespacecomplexity 32
6.2.1Example1 32
6.6.2Example2 35
Chapter7Summarize 36
Acknowledgement 37
References 38
动态规划算法应用及其规划
第一章问题的引入
——天才设题,智者解题
对于绝大多数没有数据结构和算法知识的编程人员,穷举搜索法经常成了克敌制胜的关键法宝,它也似乎是可以解决一切问题的万能钥匙。
如今计算机的处理器不是号称一秒钟可以处理好多亿条指令,那么穷举搜索法好像是没有什么好担心的了。
事实真的如此吗,先来看看下面这个例子。
1.1问题描述
如下所示为一个数字三角形:
7
38
810
2744
45265
请编写一个程序计算从顶至底的某一条路径,使该路径所经过的数字的总和最大,要求满足一下三个条件:
●每一步可沿直线向下或右斜线向下走;
●1<=三角形行数<=100;
●三角形中的数字为整数0,1,…,99。
1.2穷举搜索法解题
分析上面的题目,要计算所有路径中所经过数字总和最大的路径,那么可以穷举出所有可能的路径,然后从中选出总和最大的路径。
要怎么实现对所有路径的穷举呢,使用深度搜索可以很好的完成任务。
用搜索法写出如下的算法程序:
//参数:
i,路径起始位置所在的行。
j,路径起始位置所在的列。
//n,三角形的总行数。
triangle,存储三角形的二维数组。
intmaxPath(inti,intj,intn,int**triangle)
{
intiMax1,iMax2;
if(i==n)
{
returntriangle[i][j];
}
else
{
iMax1=maxPath(i+1,j,n,triangle);
iMax2=maxPath(i+1,j+1,n,triangle);
if(iMax1 { returniMax2+triangle[i][j]; } returniMax1+triangle[i][j]; } } 接下来,对上面的算法进行数据规模测试,记录下该算法对于不同数据规模(在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 算法 应用 及其 优化 毕业论文