- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划所有点对的最短距离
7.5所有点对的最短路径问题 对于一个各边权值均大于0的有n个顶点的带权有向图G=(V,E),求所有顶点之间的最短路径和最短距离。 复习Dijkstra算法 其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。 初始时,S中仅含有源点。设u是G的某一个顶点,把从源点到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组distance记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路长度的顶点u,将u添加到S中,同时对数组distance作必要的修改。一旦S包含了所有V中顶点,distance就记录了从源到所有其它顶点之间的最短路径长度。 算法中,我们不断更新以下三个数组: s数组: s[i],当顶点i加入S时,s[i]置1 Distance数组: Distance[i]记录原点到 顶点i的最短特殊路径长度。 path数组: path[i]记录顶点i在其最短特殊路径上的前驱顶点。由该数组可求得原点到各点的最短路径。如:设源点是顶点1, path数组如下 例如,对右图中的有向图,应用Dijkstra算法计算从源顶点1到其它顶点间最短路径的过程列在下页的表中。 方法一:重复调用Dijkstra算法n次 可轮流以每一个顶点为源点,重复调用狄克斯特拉算法函数Dijkstra() n次,即可求得所有顶点之间的最短路径和最短距离。 利用Dijkstra()函数求所有顶点之间的最短路径算法如下。其中,distance[i][j]中存放着从顶点i到顶点j的最短距离,path[i][j]中存放着从顶点i到顶点j的最短路径的前一顶点下标。 voidShortPath(AdjMWGraph G, int **distance, int **path) { Int n=G.NumOfVertices(); for(inti=0;in;i++) Dijkstra(G,i,distance[i],path[i]); } 该问题具有最优子结构性质 例如上图中,若路线I和J是A到C的最优路径,则根据最优化原理,路线J必是从B到C的最优路线。 子问题的构造 原问题:每个顶点到其他所有顶点的最短距离 最小的子问题D0:从顶点i (不得经过任何其他顶点)到顶点j的距离; 子问题D1:从顶点i(可以经过顶点1,不得经过其他任何其他顶点)到顶点j的距离。 子问题Dk:从顶点i(可以经过顶点1、顶点2、……顶点k,不得经过任何其他顶点)到顶点j的距离。 子问题Dn:从顶点i(可以经过顶点1、顶点2、……顶点n )到顶点j的距离。 ——即原问题 递推关系的建立 由di,jk-1推出di,jk的过程如下 若k=0, di,jk=L[i][j] (因为从i到j不允许经过任何其他顶点) 若1≤k ≤ n, di,jk=min{di,jk-1 , di,kk-1 +dk,jk-1} 计算过程 例:考虑下图所示的带权有向图,求所有顶点之间的最短距离。 算法设计 FLOYD算法 FLOYD(int *L,int n) {int *D=(int *)malloc((n+1)*(n+1)*sizeof(int)); D L {将数组L复制到D}; for(k=0;kn;k++) for(i=0;in;i++) for(j=0;jn;j++) D[i*n+j]=min(D[i*n+j], D[i*n+k]+D[k*n+j]); } 练习 有四种面值的硬币:1分 5 分 7分 11分,要找钱15分,最少要找多少个硬币? 用动态规划来解决 选做题 1、设A和B是两个字符串。我们要用最少的字符操作将字符串A转换为字符串B。这里所说的字符串操作包括: (1) 删除一个字符; (2) 插入一个字符; (3) 将一个字符改为另一个字符; 将字符串A变换为字符串B所用的最少字符操作成为字符串A到字符串B的编辑距离,记为d(A,B)。试设计一个有效算法,对任给的两个字符串A和B,求他们的编辑距离d(A,B) A=“abcde”,B=“acdefa” 4 单源最短路径 给定带权有向图G =(V,E),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。 8.3 单源最短路径 例如,对右图中的有向图,应用Dijkstra算法计算从源顶点1到其它顶点间最短路径。 Dijks
您可能关注的文档
- 工程光学习题解答第十章_光的干涉.doc
- MyEclipse10连接sql server 2008 企业版.doc
- 最短路径问题的几个算法.doc
- 1、下列几种存储器中,存取周期最短的是( ).doc
- 小学生好句摘抄大全.doc
- NI.Multisim.V10.0.1安装说明书(序列号).doc
- 药酒 保健酒生产销售企业网站.doc
- vs2010打包winform程序详解.doc
- 恒星英语学习网第一时间为大家整理2010年12月大学英语四级听力真题的试题与答案.doc
- 新编2012年会计从业资格考试应试模拟试卷-会计电算化理论(2012电理36卷).doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)