动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。比较著名的应用实例有:求解最短路径问题,背包问题,项目管理,网络流优化等。
动态规划在查找有很多重叠子问题的情况的最优解时有效。它将问题重新组合成子问题。为了避免多次解决这些子问题,它们的结果都逐渐被计算并被保存,从简单的问题直到整个问题都被解决。因此,动态规划保存递归时的结果,因而不会在解决同样的问题时花费时间。
动态规划只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。
最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。
子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。
计算斐波那契数列的一个最基础的算法是,直接按照定义计算:
function fib(n)
if n = 0 or n = 1
return 1
return fib(n − 1) + fib(n − 2)
当n=5时,fib(5)的计算过程如下:
fib(5)
fib(4) + fib(3)
(fib(3) + fib(2)) + (fib(2) + fib(1))
((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))
(((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))
由上面可以看出,这种算法对于相似的子问题进行了重复的计算,因此不是一种高效的算法。实际上,该算法的运算时间是指数级增长的。 改进的方法是,我们可以通过保存已经算出的子问题的解来避免重复计算:
array map [0...n] = { 0 => 0, 1 => 1 }
fib( n )
if ( map( n ) is cached )
return map( n )
return map( n ) = fib( n - 1 ) + fib( n - 2 )
将前n个已经算出的前n个数保存在数组map中,这样在后面的计算中可以直接易用前面的结果,从而避免了重复计算。算法的运算时间变为O(n)。
分享到:
相关推荐
为了达到这些目标,物流系统分析程序需要解答What(什么)、Why(为什么)、When(何时)、Who(谁)、Where(何处)和How(如何)等问题,通过建立物流模型进行定量和定性的分析。 物流系统模型化是将实际系统的...
例如,利用搜索引擎收集信息,通过网站跟踪了解行业动态,以及使用在线调查工具如腾讯问卷、问卷星等收集用户反馈。 3. **网络市场调研工具**: - **百度指数**:基于百度搜索数据,反映市场趋势,但需要与其他...
这可能涉及到动态规划、贪心策略、二分查找、回溯法等经典算法。在华为OJ平台上,代码的效率至关重要,因此,选择合适的算法和数据结构能显著提高程序运行速度,从而增加获得高分的可能性。 在编程过程中,单元测试...
【大学生职业生涯规划设计】是大学生在求学阶段对自身未来职业发展的系统规划,涵盖了学习...同时,运用有效的规划工具如五“ What” 法和PPDF法,可以帮助大学生更科学地进行职业生涯设计,为未来的成功奠定坚实基础。
同时,关注行业动态,抓住机遇,如新兴市场、政策变化等,也是制定有效职业规划的关键。 总的来说,职业生涯规划是一个持续的过程,涉及到自我认知、目标设定、策略制定和行动执行。通过运用上述方法,技术行业的...
常用的物流系统模型有线性规划、整数规划、指派问题、动态规划、库存控制模型、图与网络分析以及预测模型等。 企业物流系统规划的主要内容包括物流网络配置和局部设施布置。网络配置涉及配送中心的数量、位置、规模...
- 表现出对行业动态的关注和适应能力。 **21.21. If you could make a wish, what would be your perfect job?** - **知识点解析:** - 这个问题是进一步探索应聘者的理想职位。 - 描述理想的职责范围、工作...
《管理科学与工程(系统工程)学科综合课(11)What》的压缩包文件包含了一个名为"管理科学与工程(系统工程)学科综合课(11)What.pptx"的PPTX文档,这显然是一份关于管理科学与工程,特别是系统工程领域的课程资料。...
除此之外,Lingo还具备一些高级特性,如多目标优化、动态规划、遗传算法等,可以应对更为复杂和多变的优化问题。而且,Lingo支持与其他编程语言(如Python、VBA)的集成,方便用户进行二次开发和自动化流程。 总的...
### UCAS算法分析与设计动态规划作业题解析 #### Money Robbing 问题描述:一名窃贼计划抢劫沿街的一排房屋。每个房屋内都存放着一定数量的钱财,但相邻的房屋之间安装了相连的安全系统,如果两所相邻的房屋在同一...
2. 目标设定(What I want to do):明确职业目标是规划的关键。这包括短期目标(如提升特定技能、获得特定职位)和长期目标(如成为行业专家、创业等)。目标应具有可衡量性、可达成性、相关性和时限性,以便跟踪...
它可以创建动态的表格,显示不同输入值下的输出结果,非常适合进行敏感性分析。 **应用场景:** - **投资回报分析:**投资者可以通过数据表来测试不同利率水平下投资项目的回报率。 - **成本效益分析:**企业可以...
二、战略规划SP的理解(What) 战略规划可以从流程架构、时间安排和方法论三个方面来理解。从流程架构上,战略规划可以分为三个方面:运营类、支撑类和使能类。从时间安排上,战略规划可以分为短期、中期和长期三个...
规划不仅要解决“What”(旅游业是什么)、“Why”(为何发展)、“Way”(如何发展)、“Who”(谁来参与)、“When”(何时行动)、“Where”(在哪里发展)等问题,还要确保规划的实施能够带来经济效益、社会效益...
在进行职业生涯规划时,首先要清楚自己的兴趣和愿望,即“Add up everything what you like and everything what you want”,了解自己真正热爱的是什么,想要达成的目标是什么。这一步对于确定职业方向至关重要,...
【人力资源供求预测】是规划中的关键环节,涉及对企业目标、市场动态、技术进步、竞争对手情况等因素的分析,以预测未来所需人员的数量、类别和质量,为招聘、培训和发展等决策提供依据。 综上所述,人力资源规划是...
展示你对公司的研究,包括其业务、产品、市场地位和最新动态。 8. **What kind of salary are you looking for?** 先了解市场行情,给出一个合理的范围,但也可以表示愿意根据公司提供的整体福利进行讨论。 9. *...
3. **业务范围**:“What we do”部分涵盖了项目来源、需求分析和市场前景。项目来源说明公司如何获取项目,需求部分则阐述公司的需求或客户需求,市场前景则展望公司的发展方向和市场潜力。 4. **运营模式**:...
综上所述,Intranet的作用非常多样,它能够整合通信、促进协作、管理知识、建立内部社交网络、提升员工参与度,并有效地规划时间。通过使用Intranet,公司能够将许多分散的应用程序和工具合并为一个全面的解决方案,...
1. **是什么(What’s this?)** 职业生涯规划是对个人职业发展的系统性思考,它包括了解自己的兴趣、能力、价值观和长期目标,然后制定短期和长期的职业目标。在这个过程中,通常需要进行自我评估、环境分析、目标...