动态规划法6 - 算法设计与分析课程.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划法6 - 算法设计与分析课程

TSP问题 ——想法 TSP问题满足最优性原理。 对于图G=(V, E),假设从顶点i出发,令V‘=V-i,则d(i, V’)表示从顶点i出发经过V‘中各个顶点一次且仅一次,最后回到出发点i的最短路径长度, 显然,初始子问题是d(k, {}),即从顶点i出发只经过顶点k回到顶点i。现在考虑原问题的一部分,d(k, V’-{k})表示从顶点k出发经过V‘-{k}中各个顶点一次且仅一次,最后回到出发点i的最短路径长度,则: d(k, {})=cki d(i, V)=min{cik + d(k, V-{k})}(k∈V) 首先计算初始子问题,可以直接获得: d(1, {})= c10 =5(1→0) d(2, {})= c20 =6(2→0) d(3, {})= c30 =3(3→0) 再求解下一个阶段的子问题,有: d(1, {2})= c12+d(2, {})=2+6=8(1→2) d(1, {3})= c13+d(3, {})=3+3=6(1→3) d(2, {1})= c21+d(1, {})=4+5=9(2→1) d(2, {3})= c23+d(3, {})=2+3=5(2→3) d(3, {1})= c31+d(1, {})=7+5=12(3→1) d(3, {2})= c32+d(2, {})=5+6=11(3→2) 再求解下一个阶段的子问题,有: d(1, {2, 3})=min{c12+d(2, {3}), c13+ d(3, {2})}=min{2+5, 3+11}=7(1→2) d(2, {1, 3})=min{c21+d(1, {3}), c23+ d(3, {1})}=min{4+6, 2+12}=10(2→1) d(3, {1, 2})=min{c31+d(1, {2}), c32+ d(2, {1})}=min{7+8, 5+9}=14(3→2) 直到最后一个阶段,有: d(0, {1, 2, 3})=min{c01+ d(1, { 2, 3}), c02+ d(2, {1, 3}), c03+ d(3, {1, 2})} =min{3+7, 6+10, 7+14}=10(0→1) 所以,从顶点0出发的TSP问题的最短路径长度为10,再将状态进行回溯,得到最短路径是0→1→2→3→0。 TSP问题 ——实例 C= ∞ 3 6 7 5 ∞ 2 3 6 4 ∞ 2 3 7 5 ∞ TSP问题带权图的代价矩阵 14 3?2 11 3?2 12 3?1 3 3?0 3 10 2?1 5 2?3 9 2?1 6 2?0 2 7 1?2 6 1?3 8 1?2 5 1?0 1 10 0?1 0 {1, 2, 3} {2, 3} {1, 3} {1, 2} {3} {2} {1} { } 出发点 TSP问题 ——实例(填表过程) TSP问题 ——算法 TSP问题 输入:图的代价矩阵arc[n][n] 输出:从顶点0出发经过所有顶点一次且仅一次再回到顶点0的最短路径长度 1. 初始化第0列: for (i=1; in; i++) d[i][0]=c[i][0]; 2. 依次处理每一个子集数组V[2n-1] for (i=1; in; i++) if (子集V[j]中不包含i) 对V[j]中的每个元素k, 计算d[i][j]=min{arc[i][k]+d[k][j-1]}; 3. 输出最短路径长度d[0][2n-1-1]; 组合问题中的动态规划法 ——最长递增子序列问题 问题描述:在数字序列A={a1, a2, …, an}中按递增下标序列(i1, i2,…, ik)(1≤i1 i2… ik≤n)顺序选出一个子序列B,如果子序列B中的数字都是严格递增的,则子序列B称为序列A的递增子序列。最长递增子序列问题就是要找出序列A的一个最长的递增子序列。 最长递增子序列问题——想法 设序列A={a1, a2, …, an}的最长递增子序列是B={b1, b2,…, bm},则最长递增子序列问题满足最优性原理。 设L(n)为数字序列A={a1, a2, …, an}的最长递增子序列的长度,显然,初始子问题是{a1},即L(1)=1。考虑原问题的一部分,设L(i)为子序列A={a1, a2, …, ai}的最长递增子序列的长度,则满足如下递推式: 1 i = 1或不存在aja

文档评论(0)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档