《算法设计与分析》第三章 动态规划.ppt

合集下载

算法设计与分析讲义动态规划

算法设计与分析讲义动态规划

动态规划算法的设计思路和技巧
设计思路
动态规划算法的设计思路是将原问题分解为子问题,通过对子问题的求解,得到 原问题的最优解。在设计和实现动态规划算法时,需要确定状态转移方程和边界 条件,并选择合适的状态变量和决策变量。
技巧
动态规划算法的技巧包括利用记忆化搜索、优化状态转移方程、预处理和缓存等 技巧来提高算法的效率和性能。此外,还应注意避免出现冗余计算和空间复杂度 过高的情况。
出最优的动态规划算法。
如何避免和解决动态规划中的状态重叠问题
避免状态重叠
在建立状态转移方程时,要注意避免状态重叠问题,即确保每 个状态只被计算一次,减少冗余计算。
使用记忆化搜索
通过使用记忆化搜索,将已经计算过的子问题的解存储起来, 避免重复计算,提高算法效率。
使用滚动数组
通过使用滚动数组,将子问题的解存储起来,避免重复计算, 提高算法效率,同时减少空间复杂度。
边界条件
边界条件是指问题在某个或某些边界状态下的最 优解。
通过设定合适的边界条件,可以限定搜索范围, 减少计算量。
在求解最优化问题时,通常从边界条件开始逐步 向内扩展,直到找到问题的最优解。
递归树
递归树是描述问题所有可能状 态的树形结构。
在动态规划算法中,通过构建 递归树,可以系统地枚举所有 可能的状态,并找到最优解所
背包问题算法及实现
总结词
背包问题是一类典型的动态规划问题,通 过将问题划分为多个子问题,并利用子问 题的解来构建原问题的解。
详细描述
背包问题是一类典型的优化问题,它涉及 到多个约束条件和多个选择方案。背包问 题可以通过动态规划算法求解,将问题划 分为多个子问题,并利用子问题的解来构 建原问题的解。常见的背包问题包括0/1背 包问题和分数背包问题等。

《算法设计与分析》第3章 动态规划法

《算法设计与分析》第3章 动态规划法

最优解的递推关系 定义m[i:j],表示矩阵连乘A[i:j]所需的最少计算 量 则有: i j 0 m[i ][ j ] i j minj{m[i ][ k ] m[k 1][ j ] pi 1 pk p j } i k
假设:N个矩阵的维数依序放在一维数组p中, 其中Ai的维数记为Pi-1×Pi
A=A1×A2×A3×…×An
A=(A1×A2×…×Ak) × (Ak+1×Ak+2×…×An)
B
C
1.2 穷举法
穷举法:列举出所有可能的计算次序,并计算出 每一种计算次序相应需要的数乘次数,从中找出 一种数乘次数最少的计算次序。
穷举法复杂度分析: 对于n个矩阵的连乘积,设其不同的计算次序有P(n)种。 由于每种加括号方式都可以分解为两个子连乘的加括号问题: (A1...Ak)(Ak+1…An)可以得到关于P(n)的递推式如下:
【程序】矩阵连乘的 穷举法实现 int MatrixChain::LookupChain(int i, int j) { if(i==j) return 0; int u=LookupChain(i+1,j)+p[i-1]*p[i]*p[j]; //k=i s[i][j]=i; //记录最优分解位置 for ( int k=i+1;k<j; k++ ) { //遍历k int t=LookupChain(i,k)+LookupChain(k+1,j) +p[i]*p[k+1]*p[j+1]; if (t<u) { u=t; s[i][j]=k; //记录最优分解位置 } } int MatrixChain::LookupChain() return u; { } return LookupChain(1,n);

最新2019-算法设计与分析动态规划实例讲解-PPT课件

最新2019-算法设计与分析动态规划实例讲解-PPT课件
最优化原理:作为整个过程的最优策略具有这样的 性质:无论过去的状态和决策如何,相对于前面的决 策所形成的状态而言,余下的决策序列必然构成最优 子策略。”也就是说,一个最优策略的子策略也是最 优的。
(三)、建立动态规划模型的步骤
1、划分阶段k
划分阶段是运用动态规划求解多阶段决策问题的第一 步,在确定多阶段特性后,按时间或空间先后顺序, 将过程划分为若干相互联系的阶段。对于静态问题要 人为地赋予“时间”概念,以便划分阶段。
f1(s1)
最优目标函数值
V 1 * ,n V 1 * ,n (s 1 * ,u 1 * 子, 从策略k,的到s 最终n * 优点,u 目最n * 标优)函策数略值
fs ov ps tu s
, , ,
k k
k ,n k k
uu , ,
k
n
n 1
(二)、动态规划的基本思想
1、动态规划方法的关键在于正确地写出基本的递推 关系式和恰当的边界条件(简称基本方程)。要做到 这一点,就必须将问题的过程分成几个相互联系的阶 段,恰当的选取状态变量和决策变量及定义最优值函 数,从而把一个大问题转化成一组同类型的子问题, 然后逐个求解。即从边界条件开始,逐段递推寻优, 在每一个子问题的求解中,均利用了它前面的子问题 的最优化结果,依次进行,最后一个子问题所得的最 优解,就是整个问题的最优解。
二、最短路径问题
例一、从A 地到D 地要铺设一条煤气管道,其中需经过 两级中间站,两点之间的连线上的数字表示距离,如 图所示。问应该选择什么路线,使总距离最短?
3
C1
2 B1 3
1
A
1 2
3
C2
3
D
4 B2 1
4
C3

动态规划算法教学PPT

动态规划算法教学PPT

03
动态规划算法的实现步骤
明确问题,建立数学模型
1
确定问题的目标和约束条件,将其转化为数学模 型。
2
理解问题的阶段划分,将问题分解为若干个子问 题。
3
确定状态变量和决策变量,以便描述子问题的状 态和决策。
划分阶段,确定状态变量和决策变量
01
根据问题的阶段划分,将问题分解为若干个子问题。
02
确定状态变量和决策变量,以便描述子问题的状态 和决策。
02
将子问题的最优解组合起来,得到原问题的最优解。
对最优解进行验证和性能评估,确保其满足问题的要求。
03
04
动态规划算法的优化技巧
分支定界法
分支定界法是一种求解优化问题的算 法,它通过不断生成问题的分支并确 定每个分支的界限,来寻找最优解。 在动态规划中,分支定界法可以用来 优化状态转移方程,减少计算量。
详细描述
多目标规划问题在实际生活中应用广泛,如资源分配、项目计划、城市规划等领 域都有涉及。常用的求解多目标规划的方法包括权重和法、帕累托最优解等。
多阶段决策问题
总结词
多阶段决策问题是动态规划中的一类,解决的问题需要在多个阶段做出决策,每个阶段的决策都会影响到后续阶 段的决策。
详细描述
多阶段决策问题在实际生活中应用广泛,如生产计划、库存管理、路径规划等领域都有涉及。常用的求解多阶段 决策问题的方法包括递归法、动态规划等。
特点
动态规划算法具有最优子结构、重叠 子问题和最优解性质等特征。
动态规划算法的应用领域
计算机科学
在计算机科学中,动态规划算法广泛应用于字符 串处理、排序、数据压缩和机器学习等领域。
电子工程
在电子工程中,动态规划算法用于信号处理、通 信和控制系统等领域。

算法设计与分析讲义动态规划

算法设计与分析讲义动态规划

动态规划xx年xx月xx日CATALOGUE目录•动态规划算法简介•动态规划的基本原理•常见动态规划问题分析•动态规划算法优化•动态规划在实际应用中的实例•总结与展望01动态规划算法简介动态规划是一种通过将问题分解为相互重叠的子问题来解决问题的方法动态规划适合用于最优化决策序列,具有重叠子问题和最优子结构两个特征1 2 3动态规划的核心思想是记忆已经求解过的子问题的解,避免了重复计算动态规划通常用于最优化问题,可以得出全局最优解动态规划通常是基于自底向上的思路进行实现动态规划的应用场景最短路径问题如Floyd算法、Dijkstra算法等资源分配问题如背包问题、装箱问题、货郎担问题等序列比对问题如Smith-Waterman算法、Genetic Code算法等控制领域如最优控制、预测控制等计算机视觉领域如光流计算、立体视觉匹配等02动态规划的基本原理03自底向上的设计方法可以节省存储空间,减少重复计算,提高算法效率。

动态规划的自底向上设计方法01动态规划的自底向上设计方法是一种通过将问题分解为子问题,并从简单子问题求解逐步设计复杂问题的策略。

02在自底向上的设计过程中,首先解决基本子问题,并利用这些解来解决更大规模的问题,逐步构建出原问题的最优解。

动态规划的递推关系式是算法的核心,它通过将问题分解为子问题,将问题的解表示为子问题的解的组合。

递推关系式通常是一个数学公式,它根据子问题的解来推导出更大规模问题的解。

在递推关系式中,每个子问题的解都会被存储起来,以便后续使用。

动态规划的递推关系式动态规划的边界条件在动态规划中,每个子问题都有一个起始点和终止点,这些点就是边界条件。

边界条件确定了问题的起始状态和终止状态,使得算法可以正确地求解问题。

动态规划的边界条件是算法中非常重要的一个概念,它规定了问题的边界情况。

03常见动态规划问题分析Dijkstra算法、Floyd-Warshall算法、Bellman-Ford 算法总结词最短路径问题是在图中找到从起点到终点的最短路径,有多种算法实现,如Dijkstra算法、Floyd-Warshall 算法和Bellman-Ford算法等。

算法设计与分析_第3章_动态规划2

算法设计与分析_第3章_动态规划2

1算法设计与分析第3章动态规划(2)2理解动态规划算法的概念。

掌握动态规划算法的基本要素(1)最优子结构性质(2)重叠子问题性质掌握设计动态规划算法的步骤。

(1)找出最优解的性质,并刻划其结构特征。

(2)递归地定义最优值。

(3)以自底向上的方式计算出最优值。

(4)根据计算最优值时得到的信息,构造最优解。

3通过应用范例学习动态规划算法设计策略。

(1)矩阵连乘问题;(2)最长公共子序列;(3)凸多边形最优三角剖分;(4)0/1背包问题;(5)最优二叉搜索树。

4应用Catalan 数多边形三角剖分是数字城市研究许多工作的前提城市景观三维重建中的三角剖分算法基于图像特征和三角剖分的水印算法基于三角剖分的小脑模型在增强学习中的应用 传感网中的动态Delauanay 三角剖分算法 ……5多边形的三角剖分是将多边形分割成互不相交的三角形的弦的集合T 。

输入:给定凸多边形P ,以及定义在由多边形的边和弦组成的三角形上的权函数w 。

输出:要求确定该凸多边形的三角剖分,使得即该三角剖分中诸三角形上权之和为最小。

6用多边形顶点的逆时针序列表示凸多边形,即P={v 0,v 1,…,v n-1}表示具有n 条边的凸多边形。

若v i 与v j 是多边形上不相邻的2个顶点,则线段v i v j 称为多边形的一条弦。

弦将多边形分割成2个多边形{v i ,v i+1,…,v j }和{v j ,v j+1,…v i }。

7一个表达式的完全加括号方式相应于一棵完全二叉树,称为表达式的语法树。

叶结点: 表达式中一个原子例如,完全加括号的矩阵连乘积((A 1(A 2A 3))(A 4(A 5A 6)))相应的语法树为 叶结点: 一个矩阵矩阵连乘积A[i+1:j]对应于三角剖分中的一条弦89最优三角剖分问题 输入:多边形P 和代价函数W 输出:求P 的三角剖分T ,使得代价Σs ∈ST W(s)最小,其中ST 是T 所对应的三角形集合P={v,v,…,v}的最优三角步骤11120-1背包问题是一类经典的组合优化问题 对0-1背包问题的研究可以广泛运用于资源分配、投资决策、货物装载等方面。

《动态规划》课件

《动态规划》课件
《动态规划》PPT课件
动态规划(Dynamic Programming)是一种用来解决复杂问题的算法思想。
什么是动态规划
动态规划是一种将问题拆分成子问题并进行最优解比较的算法,常用于求解最优化问题。
问题模型
状态
将问题抽象成能够描述当前情况的状态。
目标
定义问题的目标,通常是最小化或最大化某 个指标。
经典面试题:爬楼梯问题
爬楼梯问题是指给定楼梯的阶数,求解爬到楼顶的不同方式的数量。
经典面试题:硬币找零问题
硬币找零问题是指给定一定面值的硬币和一个金额,找到凑出该金额的最少 硬币数。
经典面试题:最长回文子串问题
最长回文子串问题是指找到给定字符串中最长的回文子串。
实用案例:机器人找出路
机器人找出路是指给定一个迷宫,找到从起点到终点的路径。
决策
根据状态作出选择或决策。
转移方程
根据子问题的最优解推导出整体问题的最优 解。
最优子结构和重叠子问题
1 最优子结构
问题的最优解包含了子问题的最优解。
2 重叠子问题
子问题之间存在重复的计算,可以利用记 忆化存储中间结果来优化。
动态规划三部曲
1
定义状态
明确问题的状导转移方程
国王游戏问题
国王游戏问题是指在一个棋盘上放置国王,使得它们无法互相攻击。
编辑距离问题
编辑距离问题是指计算两个字符串之间转换的最小操作次数,包括插入、删 除和替换操作。
矩阵连乘问题
矩阵连乘问题是指给定一系列矩阵,找到最佳的乘法顺序,使得计算乘法的总次数最小。
最长递增子序列问题
最长递增子序列问题是指找到给定序列中最长的递增子序列的长度。
斐波那契数列问题

《计算机算法设计与分析》第三章动态规划法

《计算机算法设计与分析》第三章动态规划法
解决复杂问题 动态规划可以将复杂问题分解为简单的子问题, 通过逐步求解子问题来得到原问题的解,使得复 杂问题得以解决。
发展历程及现状
发展历程
动态规划的思想起源于20世纪50年代,由美国数学家Richard Bellman提出。随着计 算机科学的发展,动态规划在算法设计和分析领域得到了广泛应用和深入研究。
第六章
总结与展望
动态规划法在计算机科学中重要性
高效求解最优化问题
动态规划法通过把原问题分解为相对简单的子问题,并保存子问题的解,避免了大量重复计算,从而高效地求解最优化问题。
广泛应用
动态规划法在计算机科学、经济学、生物信息学等领域都有广泛应用,如背包问题、最短路径问题、序列比对问题等。
提供算法设计框架 动态规划法不仅为解决特定问题提供了有效方法,而且为算法设计提供了一个通用框架,有助于理解和设 计更复杂的算法。
现状
目前,动态规划已经成为计算机算法设计和分析领域的重要工具之一。在实际应用 中,许多复杂的问题都可以通过动态规划的方法得到有效的解决。同时,随着计算 机技术的不断发展,动态规划的应用领域也在不断扩展。
第二章
动态规划法基本原理
最优子结构性质
在动态规划法中, 子问题之间是相互 独立的,即一个子 问题的求解不会影 响到其他子问题的 求解。这使得动态 规划法能够避免重 复计算,提高算法 效率。
学习相关算法和技术
学习与动态规划法相关的其他算法 和技术,如贪心算法、分治法等, 以便在实际问题中灵活应用。
关注最新研究进展
关注计算机科学和算法设计领域的 最新研究进展,了解动态规划法的 新发展和应用,保持对新技术的敏 感性和好奇心。
THANKS
感谢观看
基本思想

《动态规划》课件

《动态规划》课件
特点
动态规划具有最优子结构和重叠子问题的特点,能够通过保存已解决的子问题来避免重复计 算。
应用场景
动态规划广泛应用于路线规划、资源分配、序列匹配等问题,能够有效地解决复杂的优化和 决策问题。
动态规划的优缺点
1 优点
动态规划能够提供最优的解决方案,同时能够高效地解决问题,避免重复计算。
2 缺点
使用动态规划解决问题需要设计状态转移方程,对于复杂问题可能需要较高的思维和计 算复杂度。
《动态规划》PPT课件
欢迎来到《动态规划》PPT课件! 本课程将深入探讨动态规划的应用和技巧, 帮助你理解这一强大的问题求解方法。
什么是动态规划
动态规划是一种通过将问题拆分为更小的子问题,并根据子问题的解来求解 原问题的方法。它可以应用于许多领域,包括优化、组合数学和图论。动态规划的特点 Nhomakorabea应用场景
参考资料
• 经典教材 • 学术论文 • 网络资源
确定问题的初始状态和结束条件,作为动态规划的边界。
4
确定优化方向
选择最优的状态转移路径,以达到问题的最优解。
经典问题解析
斐波那契数列
通过动态规划求解斐波那契数列,可以有效 地避免重复计算,提高计算效率。
最长公共子序列
使用动态规划求解最长公共子序列,可以在 时间复杂度为O(n*m)的情况下找到最长公共 子序列。
最优子结构
定义
最优子结构表示一个问题的最优解可以通过子 问题的最优解来构建。
举例
在路径规划问题中,通过求解子问题的最短路 径,可以获得整个路径规划的最短路径。
重叠子问题
定义
重叠子问题表示一个问题的子问题会被重复计 算多次。
举例
在斐波那契数列中,计算每个数字需要依赖于 前两个数字,导致重复计算了相同的子问题。

《动态规划算法》课件

《动态规划算法》课件
总结词
多阶段决策优化
详细描述
背包问题是一个经典的动态规划问题,通过将问题分解 为多个阶段,并为每个阶段定义状态和状态转移方程, 我们可以找到最优解。在背包问题中,我们使用一个二 维数组来存储每个状态的最优解,并逐步更新状态以找 到最终的最优解。
最长公共子序列求解
总结词
字符串匹配优化
详细描述
最长公共子序列问题是一个经典的动态规划问题,用 于找到两个序列的最长公共子序列。通过动态规划, 我们可以避免在寻找公共子序列时进行冗余比较,从 而提高算法效率。在动态规划中,我们使用一个二维 数组来存储子问题的最优解,并逐步构建最终的最长 公共子序列。
动态规划的基本思想
01
将问题分解为子问 题
将原始问题分解为若干个子问题 ,子问题的解可以构成原问题的 解。
02
保存已解决的子问 题
将已解决的子问题的解保存起来 ,以便在求解其他子问题时重复 使用。
03
递推求解
从子问题的解逐步推导出原问题 的解,通常采用自底向上的方式 求解。
02
动态规划算法的步骤
可并行化
动态规划算法可以并行化执行,以提高计算效率,这对于 大规模问题的求解非常有利。
缺点
• 空间复杂度高:动态规划算法需要存储大量的中间状态,因此其空间复杂度通常较高,有时甚至会超过问题规 模的一个指数倍。
• 问题规模限制:由于动态规划算法的空间复杂度较高,因此对于大规模问题的求解可能会遇到困难。 • 可能产生大量重复计算:在动态规划算法中,对于每个子问题,可能会被多次计算和存储,这会导致大量的重复计算和存储空间浪费。 • 不易发现:动态规划算法的应用范围有限,对于一些非最优子结构问题或没有重叠子问题的优化问题,动态规划算法可能不适用。因此,在解决问题时需要仔细分析问题特性,判断是
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、最优子结构性质
当问题的最优解包含着其子问题的最优解时,称该问 题具有最优子结构性质。
例1:Fibonacci数问题
n
n≤1
F(n)=
F(n-1)+F(n-2) n>1
3.2 动态规划法的适用条件
一、最优子结构性质
当问题的最优解包含着其子问题的最优解时,称该问题
具有最优子结构性质。
例2:求解二项式系数
3.2 动态规划法的适用条件
二、重叠子问题性质
例1: Fibonacci数问题的递归树
Fib(5)
T(n)=O(Fib(n))
Fib(4)
Fib(3)
Fib(3) Fib(2) Fib(2) Fib(1)
Fib(2) Fib(1)
3.2 动态规划法的适用条件
二、重叠子问题性质
例2:
求解二项式系数的递归树
int Fib(int n) {
f1=f2=0; for(f=1,i=0; i<=n; i++) {
f2=f1; f1=f; f=f1+f2; } return f;
}
3.3 动态规划法的基本步骤
例2 求解二项式系数 求解步骤: 1 具有最优子结构性质 2 具有重叠子问题性质 3 建立递归式或动态规划方程 4 求解。
3.1 动态规划法的基本思想
动态规划法与分治法的异同:
– 与分治法类似,动态规划法也是对问题进行递归分解。 – 而当递归分解得到的子问题不互相独立时,用分治法
求解,则有些子问题被重复计算了许多次。而动态规 划法通过保存已解决的子问题的解,在需要时再找出 已求得的解,可以避免大量重复计算。
3.2 动态规划法的适用条件
一、最优子结构性质
•利用问题的最优子结构性质,以自底向上的 方式递归地从子问题的最优解逐步构造出整 个问题的最优解。最优子结构是问题能用动 态规划算法求解的前提。
3.2 动态规划法的适用条件
二、重叠子问题性质
递归算法求解问题时,每次产生的子问题并不总是新 问题,有些子问题被反复计算多次。这种性质称为子 问题的重叠性质。
1373
1374
1363T(n)=O(
n m
)
1372
1362 1362
1352
1371 13611361 1351 1361 1351 1351 1341
3.3 动态规划法的基本步骤
找出最优解的性质,并刻划其结构特征。-- 考察是否适合采用动态规划法。
递归地定义最优值(建立递归式或动态规划方 程)。
b[i]=1 for(j=i-1;j>0;j++)
b[j]=b[j]+b[j-1]; } return b[m]; }
3.3 动态规划法的基本步骤
例2 求解二项式系数 求解方法: 2 备忘录法:
•备忘录方法的控制结构与直接递归方法的控制结 构相同,区别在于备忘录方法为每个解过的子问 题建立了备忘录以备需要时查看,避免了相同子 问题的重复求解。
n 3
n 4
n 5
n 6
n 7
01
11 1
21 2 1
31 3 31
41 4 641
51 61
5 10 10 5 1 6 15 20 15 6 1
7 1 7 21 35 35 21 7 1
3.3 动态规划法的基本步骤
例2 求解二项式系数 int Binom(int n, int m) {
int b[MAXSIZE]; b[0]=1; for(i=1;i<=n;i++) {
mn
n! m!(n
m)!
n m

1
1
n m
1
mn 11
m=0 n=m 其它
3.2 动态规划法的适用条件
一、最优子结构性质
•在分析问题的最优子结构性质时,所用的方法具有普 遍性:首先假设由问题的最优解导出的子问题的解不 是最优的,然后再设法说明在这个假设下可构造出比 原问题最优解更好的解,从而导致矛盾。
动态规划法解所能解决的问题一般具有以下两个 基本因素:
一、最优子结构性质
当问题的最优解包含着其子问题的最优解时,称该问 题具有最优子结构性质。
二、重叠子问题性质
递归算法求解问题时,每次产生的子问题并不总是新 问题,有些子问题被反复计算多次。这种性质称为子 问题的重叠性质。
其它同分治法
3.2 动态规划法的适用条件
第3章 动态规划(Dynamic-Programming)
3.1 动态规划法的基本思想 3.2 动态规划法的适用条件 3.3 动态规划法的基本步骤 3.4 应用举例-0/1背包问题
3.1 动态规划法的基本思想
为求解给定问题,有一系列子问题需要解答。 对这些子问题按照某种方式仔细设计,使得其 后的每一个子问题都可以通过上面已经求出的 一个或多个子问题的合并而获得其解。
3.2 动态规划法的适用条件
一、最优子结构性质
•例3 最短路径问题 设G是有向图,若G中从顶点i到顶点j有
路径存在,找出最短的一条。 下面证明最短路径问题具有最优子结构性质
3.2 动态规划法的适用条件
一、最优子结构性质 证明: 设i,i1,i2,…,ik,j是从i到j的一条最短路径。从初 始顶点i开始,设从i到下一顶点i1的判定已经做 出。接下去,问题就转化为用i1替代i,重复原 来的问题,找出一条从i1到j的路径。显然, i1,i2,…,ik,j一定构成了从从i1到j的最短路径(与 原问题相同的最优子序列)
3.3 动态规划法的基本步骤
例2 求解二项式系数
求解方法:
1 动态规划法:
计算如下序列:
SS10=={{1000, }11
}
SS2n=={{0n02,,121n,,222n},…,
n n
}
3.3 动态规划法的基本步骤Байду номын сангаас
例2 求解二项式系数
1 动态规划法:
Pascal 三角形
n
n 0
1n
n 2
3.2 动态规划法的适用条件
一、最优子结构性质
证明: 若不然,设i1, r1,r2,…,rp,j是一条从i1 到j的
最短路径,则i,i1, r1,r2,…,rp,j将是一条从i到j的路 径且比路径i,i1,i2,…,ik,j要短,得出矛盾。
所以,最短路径问题具有最优子结构性质。
3.2 动态规划法的适用条件
以自底向上迭代的方式(或以自顶向下的备忘 录方法)计算出最优值;
根据计算最优值时得到的信息,构造最优解。
3.3 动态规划法的基本步骤
例1 Fibonacci数问题 求解步骤: 1 具有最优子结构性质 2 具有重叠子问题性质 3 建立递归式或动态规划方程 4 求解值。
3.3 动态规划法的基本步骤
相关文档
最新文档