- 8
- 0
- 约1.6万字
- 约 14页
- 2020-10-02 发布于陕西
- 举报
引言——由一个问题引出的算法
考虑以下问题
[例 1] 最短路径问题
现有一张地图,各结点代表城市,两结点间连线代表道路,线上数字表示城市间
的距离。如图1所示,试找出从结点A到结点E的最短距离。
图 1
我们可以用深度优先搜索法来解决此问题,该问题的递归式为
其中 是与v相邻的节点的集合,w(v,u)表示从v到u 的边的长度。
具体算法如下:
开始时标记所有的顶点未访问过,MinDistance(A)就是从A到E 的最短距离。
这个程序的效率如何呢?我们可以看到,每次除了已经访问过的城市外,其他城
市都要访问,所以时间复杂度为O(n!),这是一个“指数级”的算法,那么,还
有没有更好的算法呢?
首先,我们来观察一下这个算法。在求从B1到E的最短距离的时候,先求出从
C2到E的最短距离;而在求从B2到E的最短距离的时候,又求了一遍从C2到E
的最短距离。也就是说,从C2到E的最短距离我们求了两遍。同样可以发现,
在求从C1、C2到E的最短距离的过程中,从D1到E的最短距离也被求了两遍。
而在整个程序中,从D1到E的最短距离被求了四遍。如果在求解的过程中,同
时将求得的最短距离记录在案,随时调用,就可以避免这种情况。于是,可以
改进该算法,将每次求出的从v到E 的最短距离记录下来,在算法中递归地求
MinDistance(v)时先检查以前是否已经求过了MinDistance(v),如果求过了则
不用重新求一遍,只要查找以前的记录就可以了。这样,由于所有的点有n个,
因此不同的状态数目有n个,该算法的数量级为O(n)。
更进一步,可以将这种递归改为递推,这样可以减少递归调用的开销。
请看图1,可以发现,A只和B 相邻,B 只和C 相邻,...,依此类推。这样,我
i i i
们可以将原问题的解决过程划分为4个阶段,设
S ={A},S ={B ,B },S ={C ,C ,C ,C },S ={D ,D ,D },F (u)表示从S 中的点u到E
1 2 1 2 3 1 2 3 4 4 1 2 3 k k
的最短距离,则
并且有边界条件
显然可以递推地求出F1 (A),也就是从A到E 的最短距离。这种算法的复杂度为
O(n),因为所有的状态总数(节点总数)为n,对每个状态都只要遍历一次,而
且程序很简洁。
动态规划的基本概念
动态规划的发展及研究内容
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程
(decision process)最优化的数学方法。20世纪50年代初美国数学家
R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化
问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程
转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法
——动态规划。1957年出版了他的名著 Dynamic Programming,这是该领域的第
一本著作。
动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了
广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问
题,用动态规划方法比用其它方法求解更为方便。
虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与
时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把
它视为多阶段决策过程,也可以用动态规划方法方便地求解。
多阶段决策问题
多阶段决策过程,是指这样的一类特殊的活动过程,问题可以按时间顺序分解成
若干相互联系的阶段,在每一个阶段都要做出决策,全部过程的决策是一个决策
序列。要使整个活动的总体效果达到最优的问题,称为多阶段决策问题。
例1 是一个多阶段决策问题的例子,下面是另一个多阶段
您可能关注的文档
最近下载
- 2025春冀人版(2024)小学科学一年级下册(全册)教案、教学反思、教学计划(附教材目录P101) .pdf VIP
- 《第1课 多样化的沟通与交流》精品课件.pptx VIP
- 《2022中国幽门螺杆菌感染治疗指南》解读.pptx VIP
- GB 55030-2022 建筑与市政工程防水通用规范.docx VIP
- DB34T 5387-2026建筑用免拆保温模板应用技术规程.pdf VIP
- 点火系统——传统点火系统分解.ppt VIP
- 专题一数数块数.doc VIP
- 2026全球家电行业色彩趋势报告-.pdf
- 2020年新版全国内河高等级航道和主要港口布局方案图.docx VIP
- (2023正式版)JBT 10189-2023 滚动轴承 汽车用等速万向节及其总成-精品.docx VIP
原创力文档

文档评论(0)