算法设计与分析 课件 第五章 贪心法 5.2.3 单源最短路径问题.ppt

算法设计与分析 课件 第五章 贪心法 5.2.3 单源最短路径问题.ppt

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

计算机算法设计与分析第5章贪心法5.2.3单源最短路径问题给定一个带权有向图?G=(V,E),其中每条边的权是一个非负实数。给定图G中的一个顶点v0∈V,称为源点。求源点v0到G中其余各顶点的最短路径长度。这里的长度是指路径上各边权之和。这个问题通常称为单源最短路径问题。5.2.3单源最短路径问题源点终点最短路径路径长度11无??2(1,3,2)7?3(1,3)3?4(1,3,2,4)9?5(1,3,5)55.2.3单源最短路径问题dist[i]表示计算过程中源点到各目标顶点i的当前最短路径长度,dist[i]随着计算过程会不断变化,其初始值为源点到其余顶点有向边的权值,若不存在有向边则用无穷大。path[i]表示在最短路径上顶点i的前一个顶点编号。集合S表示已求出最短路径的顶点的集合。集合T(T=V-S)表示尚未确定最短路径的顶点集合,V是图G中顶点的集合。二维数组edge表示图G的邻接矩阵。贪心策略,Dijkstra算法迪杰斯特拉(Dijkstra)提出了一个按路径长度递增次序产生最短路径的贪心算法,对于有向带权图,算法步骤如下:(1)令S={1},T=V-S,T中顶点i对应的距离值dist[i]:若边1,i∈E,dist[i]=edge[1][i],否则dist[i]=∞。(2)从T中选取一个其距S最近,即dist值最小的顶点k,加入S,T=V-{k},对T中所有的顶点i的距离值dist[i]进行修改:(3)重复上述步骤(2),直到S中包含所有顶点,即|S|=|V|为止,这时T=V-S={}。单源最短路径问题迭代Sk2345初始{1}--dist[2]=10path[2]=1dist[3]=3path[3]=1dist[4]=∞path[4]=-1dist[5]=∞path[5]=-11{1,3}3dist[2]=7path[2]=3--dist[4]=11path[4]=3dist[5]=5path[5]=32{1,3,5}5dist[2]=7path[2]=3--dist[4]=11path[4]=3--3{1,3,5,2}2----dist[4]=9path[4]=2--4{1,3,5,2,4}4--------效率分析每次从T中寻找一个最小dist值的顶点k加入到S(找最小值时间复杂度O(n)),并修改T中剩余顶点的dist值。对于n个顶点的图G,这个过程需要重复n-1次,所以算法时间复杂度为O(n2)。若在寻找最小dist值过程使用一个堆来完成,则寻找最小值并重新调整堆时间为O(logn),则Dijkstra算法的时间复杂度为O(nlogn)。

文档评论(0)

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

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

1亿VIP精品文档

相关文档