- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
success_动态规划的发展及研究内容.doc
动态规划的发展及研究内容动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。1957年出版了他的名著Dynamic Programming,这是该领域的第一本著作。
动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。
虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。
多阶段决策问题
多阶段决策过程,是指这样的一类特殊的活动过程,问题可以按时间顺序分解成若干相互联系的阶段,在每一个阶段都要做出决策,全部过程的决策是一个决策序列。要使整个活动的总体效果达到最优的问题,称为多阶段决策问题。
function MinDistance(v):integer;
begin
if v=E then return 0
else
begin
min:=maxint;
for 所有没有访问过的节点i do
if v和i相邻 then
begin
标记i访问过了;
t:=v到i的距离+MinDistance(i);
标记i未访问过;
if tmin then min=t;
end;
end;
end;
开始时标记所有的顶点未访问过,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只和Bi相邻,Bi只和Ci相邻,...,依此类推。这样,我们可以将原问题的解决过程划分为4个阶段,设S1={A},S2={B1,B2},S3={C1,C2,C3,C4},S4={D1,D2,D3},Fk(u)表示从Sk中的点u到E的最短距离,则
并且有边界条件
显然可以递推地求出F1(A),也就是从A到E的最短距离。这种算法的复杂度为O(n),因为所有的状态总数(节点总数)为n,对每个状态都只要遍历一次,而且程序很简洁。
具体算法如下:
procedure DynamicProgramming;
begin
F5[E]:=0;
for i:=4 downto 1 do
for each u ∈Sk do
begin
Fk[u]:=无穷大;
for each v∈Sk+1∩δ(u) do
if Fk[u]w(u,v)+Fk+1[v] then Fk[u]:=w(u,v)+Fk+1[v];
end;
输出F1[A];
end;
这种高效算法,就是动态规划算法。
动态规划的基本概念
动态规划的发展及研究内容
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段
您可能关注的文档
- 直线运动考点例析2.doc
- 电磁感应测试题5.doc
- 气体摩尔体积教学设计10.doc
- 电磁感应 自感.doc
- DDG系列大电流发生器说明书.doc
- 新视野大学英语教案new.doc
- 【精品学案】第十二章 学案62 判断同分异构体的五种常用方法和有机分子结构的测定.doc
- C语言综合设计new.doc
- 英语_小学三年级_三英下_教案_《三英下第一单元》教案.doc
- 中职专业教师指标1new.doc
- 江苏省常州市前黄高级中学2023年高一10月月考题带答案和解析.pdf
- 柴油发电机安全操作规程1 .pdf
- 江苏省盐城市建湖职业高级中学2021-2022学年高一语文联考试卷含解析.pdf
- 江苏省镇江市丹阳市第八中学2023-2024学年七年级上学期期中考试语文试 .pdf
- 江苏镇江市2025届化学高二第一学期期末复习检测试题含答案 .pdf
- 江西省部分学校2023-2024学年高二下学期第一次阶段性考试地理试题2.pdf
- 标准合作协议书万能模板(5篇) .pdf
- 桂美版小学美术三年级上册全册教案 .pdf
- 某铁路工程施工安全目标、安全保证体系及措施 .pdf
- 水工运行人员岗位职责(多篇) .pdf
文档评论(0)