第4讲 动态规划
动态规划

多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状 态的转移,一个决策序列就是在变化的状态中产生出来的,故有“动态”的含义,称这种解决多阶段决策最优化 问题的方法为动态规划方法 。
任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用。同样,动态规划也并不是万能的。适 用动态规划的问题必须满足最优化原理和无后效性 。
动态规划
运筹学的分支
01 原理
03 局限性
目录
02 分类
动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年 代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理, 从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域, 并在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等中取得了 显著的效果 。
最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成 的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。一个问题满足 最优化原理又称其具有最优子结构性质 。
将各阶段按照一定的次序排列好之后,对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来 的决策,而只能通过当前的这个状态。换句话说,每个状态都是过去历史的一个完整总结。这就是无后向性,又 称为无后效性 。
状态:状态表示每个阶段开始面临的自然状况或客观条件,它不以人们的主观意志为转移,也称为不可控因 素。在上面的例子中状态就是某阶段的出发位置,它既是该阶段某路的起点,同时又是前一阶段某支路的终点 。
动态规划的基本思想

动态规划的基本思想动态规划是一种常见的解决问题的算法思想,它通过将复杂的问题分解成一个个子问题,逐步求解并记录下每个子问题的解,最终得到原问题的解。
这种思想在很多领域都有广泛的应用,例如计算机科学、经济学、物理学等。
一、动态规划的定义与特点动态规划是一种分治法的改进方法,它主要用于解决具有重叠子问题和最优子结构性质的问题。
它的基本思想可以概括为“记住中间结果,以便在需要的时候直接使用”。
动态规划算法的特点包括:1. 问题可以分解为若干个重叠的子问题;2. 子问题的解可以通过已知的子问题解来求解,且子问题的解可以重复使用;3. 需要使用一个数据结构(通常是一个矩阵)来存储子问题的解,以便在需要时直接取出。
二、动态规划的基本步骤动态规划算法通常可以分为以下几个基本步骤:1. 确定问题的状态:将原问题转化为一个或多个子问题,并定义清楚每个子问题的状态是什么。
2. 定义问题的状态转移方程:找出子问题之间的关系,即如何通过已知的子问题解来解决当前问题。
3. 设置边界条件:确定最简单的子问题的解,即边界条件。
4. 计算子问题的解并记录:按顺序计算子问题的解,并将每个子问题的解记录下来,以便在需要时直接使用。
5. 由子问题的解得到原问题的解:根据子问题的解和状态转移方程,计算得到原问题的解。
三、动态规划的实例分析为了更好地理解动态规划的基本思想,我们以求解斐波那契数列为例进行分析。
问题描述:斐波那契数列是一个经典的数学问题,它由以下递推关系定义:F(n) = F(n-1) + F(n-2),其中F(0) = 0,F(1) = 1。
解决思路:根据递推关系,可以将问题分解为求解F(n-1)和F(n-2)两个子问题,并将子问题的解累加得到原问题的解。
根据以上思路,可以得到以下的动态规划算法实现:1. 确定问题的状态:将第n个斐波那契数定义为一个状态,记为F(n)。
2. 定义问题的状态转移方程:由递推关系F(n) = F(n-1) + F(n-2)可得,F(n)的值等于前两个斐波那契数之和。
运筹学动态规划04

1
概述
1951年Bellman提出,1957《动态规划》
动态规划是解决多阶段决策问题的一种数学方法。 动态规划思想:把多阶段决策问题变换为一系列互相联系的 单阶段问题,然后逐个加以解决。即:把一个n 维决策问题 变换为几个一维最优化问题,从而一个一个地去解决。 需指出:动态规划是求解某类问题的一种方法,是考察问题 的一种途径,而不是一种算法。必须对具体问题进行具体分 析,运用动态规划的原理和方法,建立相应的模型,然后再 用动态规划求解方法去求解。 应用:最短路线、资源分配、生产调度问题
fk (s k ) opt V k n (s k ,u k , ,s n
u k ,,u n
,
) 1
在不同的问题中,指标函数的含义是不同的,它 可能是距离、利润、成本、产量或资源消耗等。
21
小结: 动态规划本质上是多阶段决策过程;
要求:无后效性
概念 : 阶段变量k﹑状态变量sk﹑决策变量uk
* 1
* 2
* n
最优目标函数值
* V1,n * * * 从 k 到终点最优策略 * * V1,n ( s1 , u1 ,, sn , un )
子策略的最优目标函数值
f s opt v s , u
k k
u
k
,,
un
k ,n
k
k
, , sn1
24
三、动态规划基本思想
1、动态规划方法的关键在于正确地写出基本的递推 关系式和恰当的边界条件(简称基本方程)。要做到 这一点,就必须将问题的过程分成几个相互联系的阶 段,恰当的选取状态变量和决策变量及定义最优值函 数,从而把一个大问题转化成一组同类型的子问题, 然后逐个求解。即从边界条件开始,逐段递推寻优, 在每一个子问题的求解中,均利用了它前面的子问题 的最优化结果,依次进行,最后一个子问题所得的最 优解,就是整个问题的最优解。
动态规划(生产和存储问题)

动态规划(生产和存储问题)一、动态规划法的发展及其研究内容动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。
20世纪50年代初美国数学家R.E.BELLMAN等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,把多阶段问题转化为一系列的单阶段问题,逐个求解创立了解决这类过程优化问题的新方法——动态规划。
1957年出版的他的名著《Dynamic Proggramming》,这是该领域的第一本著作。
动态规划问世以来,在经济管理·生产调度·工程技术和最优控制等方面得到了广泛的应用。
例如最短路线·库存管理·资源分配·设备更新·组合·排序·装载等问题,采用动态规划法求解比用其他方法更为简便。
二、动态规划法基本概念一个多阶段决策过程最优化问题的动态规划模型通常包括以下几个要素:1.阶段阶段(stage)是对整个过程的自然划分。
通常根据时间顺序或是空间特征来划分阶段,对于与时间,空间无关的“静态”优化问题,可以根据其自然特征,人为的赋予“时段”概念,将静态问题动态化,以便按阶段的顺序解优化问题。
阶段变量一般用k=1.2….n.表示。
1.状态状态(state)是我们所研究的问题(也叫系统)在过个阶段的初始状态或客观条件。
它应能描述过程的特征并且具有无后效性,即当某阶段的状态给定时,这个阶段以后的过程的演变与该阶段以前各阶段的状态无关。
通常还要求状态是可以直接或者是间接可以观测的。
描述状态的变量称为状态变量(State Virable)用s 表示,状态变量的取值集合称为状态集合,用S表示。
变量允许取值的范围称为允许状态集合(set of admissble states).用x(k)表示第k阶段的状态变量,它可以是一个数或者是一个向量。
用X(k)表示第k阶段的允许状态集合。
n 个阶段的决策过程有n+1个状态变量,x(n+1)是x(n)的演变的结果。
动态规划

分别击落“7 5 4 1”与“6 3 2”则只要用2套系统。所以不能 用多次“动态规划”的方法做,那么,正确的做法又是什么呢?
本质上是一种贪心算法,从拦截某个导弹所选的系统入手。
“拦截导弹”问题分析
题目告诉我们,已有系统目前的瞄准高度必须不低于来犯导 弹高度,所以,当已有的系统均无法拦截该导弹时,就不得不启 用新系统。如果已有系统中有一个能拦截该导弹,我们是应该继 续使用它,如果已有系统中有多个可以拦截该导弹,究竟选哪一 个呢?当前瞄准高度较高的系统的“潜力”较大,而瞄准高度较 低的系统则不同,它能打下的导弹别的系统也能打下,它够不到 的导弹却未必是别的系统所够不到的。所以,当有多个系统供选 择时,要选瞄准高度最低的使用,当然瞄准高度同时也要大于等 于来犯导弹高度。
0/1 背包
按递归的思想我们可以把问题分解为子问题, 设 f(i,x)表示前 i 件物品,总重量不超过 x 的最优价值 f(i,x)=max{f(i-1,x-W[i])+C[i],f(i-1,x)} 1=<i<=n
边界条件
f(0,x)=0 ,f(i,0)=0; f(n,m)即为最优解
f:array[0..maxn,0..maxm] of integer; function max(x,y:integer):integer; begin if x>y then max:=x else max:=y; end; begin
5、状态转移方程 前一阶段的终点就是后一阶段的起点,这种关系描述了由K 阶段到K+1阶段状态的演变规律,是关于两个相邻阶段状态的 方程,称为状态转移方程,是动态规划的核心。
运用动态规划的条件
1、最优化原理
子问题的局部最优将导致整个问题的全局最优,即问题具 有最优子结构的性质。也就是说一个问题的最优解只取决于其 子问题的最优解,非最优解对问题的求解没有影响。
《动态规划》课件

xx年xx月xx日
• 动态规划概述 • 动态规划的基本概念 • 动态规划的求解方法 • 动态规划的应用实例 • 动态规划的优化技巧 • 动态规划的总结与展望
目录
01
动态规划概述
定义与特点
定义
动态规划是一种通过将原问题分解为 相互重叠的子问题,并存储子问题的 解以避免重复计算的方法。
特点
动态规划适用于具有重叠子问题和最 优子结构的问题,通过将问题分解为 子问题,可以找到最优解。
动态规划的适用范围
最优化问题
01
动态规划适用于解决最优化问题,如最大/最小化问题、决策问
题等。
子问题重叠
02
动态规划适用于子问题重叠的情况,即子问题之间存在共享状
态或参数。
递归关系
03
动态规划适用于具有递归关系的问题,可以通过递归方式求解
机器调度问题
总结词
动态规划可以应用于机器调度问题,以确定最优的调度方案,满足生产需求并降低成本 。
详细描述
机器调度问题是一个经典的优化问题,涉及到如何分配任务到机器上,以最小化成本或 最大化效率。通过动态规划,可以将机器调度问题分解为一系列子问题,如确定每个任 务的调度顺序、分配机器等,并逐个求解子问题的最优解,最终得到整个调度方案的最
VS
详细描述
记忆化搜索法是一种优化技术,通过存储 已解决的子问题的解,避免重复计算,提 高求解效率。这种方法适用于子问题数量 较少且相互独立的情况。
04
动态规划的应用实例
最短路径问题
总结词
通过动态规划解决最短路径问题,可以找到 从起点到终点的最短路径。
详细描述
在图论中,最短路径问题是一个经典的优化 问题,旨在找到从起点到终点之间的一条路 径,使得路径上的所有边的权重之和最小。 动态规划是一种有效的解决方法,通过将问 题分解为子问题并存储子问题的解,避免了 重复计算,提高了求解效率。
《动态规划课件》课件

应用场景:求解最短路径、背 包问题等
注意事项:避免重复计算子问 题和记忆化搜索
定义:将问题划分为 若干个较小的子问题, 并逐个解决子问题, 最终得到原问题的解
特点:将原问题分解为 更小的子问题,通过求 解子问题的最优解得到 原问题的最优解
应用场景:适用于 具有重叠子问题和 最优子结构特性的 问题
示例:背包问题、 最大子段和问题等
分段算法的代码 实现
分段算法的时间 复杂度分析
避免重复计算:使用备忘录或动态规划表来记录已计算过的子问题 减少子问题的数量:通过合并或减少不必要的子问题来降低计算复杂度 选择合适的递归方式:根据问题的特点选择最优的递归方式 优化递归栈:通过减少递归深度或使用循环代替递归来提高性能
优化算法:动态规划可以优化算法,提高计算效率 避免重复计算:通过记忆化搜索,避免重复计算,提高计算速度
添加标题ቤተ መጻሕፍቲ ባይዱ
添加标题
添加标题
添加标题
动态规划与分治法比较:分治法将 问题分解为子问题,而动态规划将 子问题联系起来
动态规划与回溯法比较:回溯法会 穷举所有可能解,而动态规划可以 避免不必要的搜索
机器学习与深度 学习中的动态规 划
自然语言处理中 的动态规划
计算机视觉中的 动态规划
推荐系统中的动 态规划
最大子段和问题的定义 最大子段和问题的应用场景 最大子段和问题的解决方法 最大子段和问题的实际应用案例
定义:矩阵链乘法问题是一种优化问题,通过动态规划算法来求解
应用场景:在科学计算、机器学习、图像处理等领域都有广泛的应用
算法原理:通过动态规划算法,将矩阵链乘法问题转化为子问题,从而避免重复计算,提高 计算效率
应用场景:背包问题在计算机科学、运筹学、经济学等领域都有广泛的应用,如资源分配、路径规划、时间表安 排等。
最优控制理论及应用讲解

第4章 动态规划
求解动态最优化问题的两种基本方法:极小值原理和动态规划。
动态规划:是一种分级最优化方法,其连续形式与极小值原理相 辅相成,深化了最优控制的研究。
Optimal Control Theory & its Application
主要内容
1
多级决策过程和最优性原理
2
离散控制系统的动态规划
3
连续控制系统的动态规划
4 动态规划与变分法、极小值原理的关系
5
本章小结
Optimal Control Theory
Dong Jie 2012. All rights reserved.
Dong Jie 2012. All rights reserved.
Date: 09.05.2019 File: OC_CH4.7
Optimal Control Theory & its Application
Optimal Control Theory
Dong Jie 2012. All rights reserved.
特点:1)将一个多阶段决策问题化为多个单阶段决策问题,易于分析 2)每阶段评估只与前一阶段结果有关,计算量减小
Optimal Control Theory
Dong Jie 2012. All rights reserved.
Date: 09.05.2019 File: OC_CH4.5
Optimal Control Theory & its Application
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4讲动态规划我们先来看一个简单的多阶段决策问题。
现有一张地图,各结点代表城市,两结点间连线代表道路,线上数字表示城市间的距离。
如图1所示,试找出从结点1到结点10的最短路径。
第一阶段第二阶段第三阶段第四阶段第五阶段图1本问题的解决可采用一般的穷举法,即把从结点1至结点10的所有道路列举出来,计算其长度,再进行比较,找出最小的一条。
虽然问题能解决,但采用这种方法,当结点数增加,其运算量将成指数级增长,故而效率是很低的。
我们可以用深度优先搜索法来解决此问题,该问题的递归式为其中是与v相邻的节点的集合,w(v,u)表示从v到u的边的长度。
具体算法如下:int MinDistance(v){if (v==E)return 0;else{min=maxint;while(所有没有访问过的节点i){if(v和i相邻){标记i访问过了;t=v到i的距离+MinDistance(i);标记i未访问过;if (t<min)min=t;}}}}开始时标记所有的顶点未访问过,MinDistance(A)就是从A到E的最短距离。
这个程序的效率如何呢?我们可以看到,每次除了已经访问过的城市外,其他城市都要访问,所以时间复杂度为O(n!),这是一个“指数级”的算法,那么,还有没有更好的算法呢?分析图1可知,各结点的排列特征:(1)可将各结点分为5个阶段;(2)每个阶段上的结点只跟相邻阶段的结点相连,不会出现跨阶段或同阶段结点相连的情况,如不会出现结点1与结点4连、结点4与结点5连的情况。
(3)除起点1和终点10外,其它各阶段的结点既是上一阶段的终点,又是下一阶段的起点。
例如第三阶段的结点4、5、6,它即是上一阶段结点2、3中某结点的终点,又是下一阶段结点7、8、9中某结点的起点。
根据如上特征,若对于第三阶段的结点5,选择1-2-5和1-3-5这两条路径,后者的费用要小于前者。
那么考虑一下,假设在所求的结点1到结点10最短路径中要经过结点5,那我们在结点1到结点5之间会取那条路径呢?显然,无论从结点5出发以后的走法如何,前面选择1-3-5这条路都总是会优于1-2-5的。
也就是说,当某阶段结点一定时,后面各阶段路线的发展不受这点以前各阶段的影响。
反之,到该点的最优决策也不受该点以后的发展影响。
由此,我们可以把原题所求分割成几个小问题,从阶段1开始,往后依次求出结点1到阶段2、3、4、5各结点的最短距离,最终得出答案。
在计算过程中,到某阶段上一结点的决策,只依赖于上一阶段的计算结果,与其它无关。
例如,已求得从结点1到结点5的最优值是6,到结点6的最优值是5,那么要求到下一阶段的结点8的最优值,只须比较min{6+5,5+5}即可。
这样,运用动态规划思想大大节省了计算量。
可以看出,动态规划是解决此类多阶段决策问题的一种有效方法。
算法如下:void short_path(){F5[E]=0;for(i=4,i>=0,i--){while(每一个u ∈S k ){F k[u]=无穷大;While(每一个v∈S k+1∩δ(u)){if (F k[u]>w(u,v)+F k+1[v])F k[u]:=w(u,v)+F k+1[v];}}}输出F1[A];}一、动态规划1、什么是动态规划动态规划:与分治法相似,把问题分解按层次分成子问题,直到可以直接求解的子问题,然后一级一级地向上求解。
与分治法的出别在于:动态规划适用有许多重复子问题出现的问题,它保留已求出问题的解。
例如,计算矩阵连乘积。
问题:(1)矩阵相乘的定义(2)设矩阵321,,A A A 的阶分别为10100,1005,550⨯⨯⨯ 如按321)(A A A 计算需要的计算次数为:50*5*100+50*100*10=75000。
如按)(321A A A 计算需要的计算次数为:50*5*10+5*100*10=7500。
(3)n 个矩阵连乘时,怎样规划它们的乘积次序,使得所有的乘法次数最少2、动态规划中的主要概念,名词术语1) 阶段:把问题分成几个相互联系的有顺序的几个环节,这些环节即称为阶段。
是对整个过程的自然划分。
通常根据时间顺序或空间特征来划分阶段,以便按阶段的次序解优化问题。
2) 状态:某一阶段的出发位置称为状态。
通常一个阶段包含若干状态。
如图1中,阶段3就有三个状态结点4、5、6。
3) 决策:从某阶段的一个状态演变到下一个阶段某状态的选择。
4) 策略:由开始到终点的全过程中,由每段决策组成的决策序列称为全过程策略,简称策略。
5) 状态转移方程:前一阶段的终点就是后一阶段的起点,前一阶段的决策选择导出了后一阶段的状态,这种关系描述了由k 阶段到k+1阶段状态的演变规律,称为状态转移方程。
6) 目标函数与最优化概念:目标函数是衡量多阶段决策过程优劣的准则。
最优化概念是在一定条件下找到一个途径,经过按题目具体性质所确定的运算以后,使全过程的总效益达到最优。
3、运用动态规划需符合的条件1)、最优化原理最优化原理:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。
简而言之,一个最优化策略的子策略总是最优的。
图2如图2中,若路线I 和J 是A 到C 的最优路径,则根据最优化原理,路线J 必是从B 到C 的最优路线。
这可用反证法证明:假设有另一路径J’是B 到C 的最优路径,则A 到C 的路线取I 和J’比I 和J 更优,这与原名题矛盾。
从而证明J’必是B 到C 的最优路径。
最优化原理是动态规划的基础,任何问题,如果失去了最优化原理的支持,就不可能用动态规划方法计算。
2)、无后效性“过去的步骤只能通过当前状态影响未来的发展,当前的状态是历史的总结”。
这条特征说明动态规划只适用于解决当前决策与过去状态无关的问题。
状态,出现在策略任何一个位置,它的地位相同,都可实施同样策略,这就是无后效性的内涵。
由上可知,最优化原理,无后效性,是动态规划必须符合的两个条件。
4、动态规划的基本思路对于一道题,怎样具体运用动态规划方法呢?1) 首先,分析题意,考察此题是否满足最优化原理与无后效性两个条件。
2) 接着,确定题中的阶段,状态,及约束条件。
3) 推导出各阶段状态间的函数基本方程,进行计算。
具体求解则有多种方法。
1) 前向与后向动态规划法:所谓前向与后向,指的是从起点出发,层层递推,直到终点,或从终点出发,逆向求解。
这两种方法本质上是一样的,具体解题时,可根据实际情况来选用。
2) 具有隐含阶段的问题(即阶段不明显):动态规划的一个重要环节是阶段划分,可有些题目无明显阶段,但也符合最优化原理。
二、举例1、矩阵连乘在科学计算中经常要计算矩阵的乘积。
矩阵A 和B 可乘的条件是矩阵A 的列数等于矩阵B 的行数。
若A 是一个p ×q 的矩阵,B 是一个q ×r 的矩阵,则其乘积C=AB 是一个p ×r 的矩阵。
其标准计算公式为:由该公式知计算C=AB 总共需要p*q*r 次的数乘。
现在的问题是,给定n 个矩阵{A 1,A 2,…,A n }。
其中A i 与A i+1是可乘的,i=1,2,…,n-1。
要求计算出这n个矩阵的连乘积A1A2…A n。
由于矩阵乘法满足结合律,故连乘积的计算可以有许多不同的计算次序。
这种计算次序可以用加括号的方式来确定。
若一个矩阵连乘积的计算次序已完全确定,也就是说该连乘积已完全加括号,则我们可以通过反复调用两个矩阵相乘的标准算法计算出矩阵连乘积。
例如,矩阵连乘积A1A2A3 A4可以有以下5种不同的完全加括号方式:(A1(A2(A3A4))),(A1((A2A3)A4)),((A1A2)(A3A4)),((A1(A2A3))A4),(((A1A2)A3)A4)。
每一种完全加括号方式对应于一种矩阵连乘积的计算次序,而这种计算次序与计算矩阵连乘积的计算量有着密切的关系。
为了说明在计算矩阵连乘积时加括号方式对整个计算量的影响,我们来看一个计算3个矩阵{A1,A2,A3}的连乘积的例子。
设这3个矩阵的维数分别为10×100,100×5和5×50。
若按第一种加括号方式((A1A2)A3)来计算,总共需要10×100×5+10×5×50=7500次的数乘。
若按第二种加括号方式(A1(A2A3))来计算,则需要的数乘次数为100×5×50+10×100×50=75000。
第二种加括号方式的计算量是第一种加括号方式的计算量的10倍。
由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对计算量有很大影响。
于是,人们自然会提出矩阵连乘积的最优计算次序问题,即对于给定的相继n个矩阵{A1,A2,…,A n}(其中A i的维数为p i-1×p i,i=1,2,…,n),如何确定计算矩阵连乘积A1A2…A n的一个计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。
下面我们来考虑用动态规划法解矩阵连乘积的最优计算次序问题。
此问题是动态规划的典型应用之一。
1).分析最优解的结构首先,为方便起见,将矩阵连乘积A i A i+1…A j简记为A i…j。
我们来看计算A1…n的一个最优次序。
设这个计算次序在矩阵A k和A k+1之间将矩阵链断开,1<=k<n,则完全加括号方式为((A1…A k)(A k+1…A n))。
照此,我们要先计算A1…k和A k+1…n,然后,将所得的结果相乘才得到A1…n。
显然其总计算量为计算A1…k的计算量加上计算A k+1…n的计算量,再加上A1…k与A k+1…n相乘的计算量。
这个问题的一个关键特征是:计算A1…n的一个最优次序所包含的计算A1…k的次序也是最优的。
事实上,若有一个计算A1…k的次序需要的计算量更少,则用此次序替换原来计算A1…k的次序,得到的计算A1…n的次序需要的计算量将比最优次序所需计算量更少,这是一个矛盾。
同理可知,计算A1…n的一个最优次序所包含的计算矩阵子链A k+1…n的次序也是最优的。
根据该问题的指标函数的特征也可以知道该问题满足最优化原理。
另外,该问题显然满足无后向性,因为前面的矩阵链的计算方法和后面的矩阵链的计算方法无关。
2).建立递归关系对于矩阵连乘积的最优计算次序问题,设计算A i…j ,1≤i≤j≤n,所需的最少数乘次数为m[i,j],原问题的最优值为m[1,n]。
●当i=j时,A i…j=A i为单一矩阵,无需计算,因此m[i,i]=0,i=1,2,…,n ;●当i<j时,可利用最优子结构性质来计算m[i,j]。