组合数学答案——最短路径的并行算法综述.docVIP

组合数学答案——最短路径的并行算法综述.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
组合数学答案——最短路径的并行算法综述

最短路径的并行算法综述 摘要:最短路径问题是图论中的一个典范问题,它被应用于众多领域。最短路径问题可以分成两类:单源最短路径、所有顶点对间的最短路径。本文对最短路径的并行算法进行综述,并介绍目前最短路径问题中的一个热点问题K条最短路径。 关键字:最短路径,单源最短路径,所有顶点对间的最短路径,K条最短路径 引言 二十世纪中后期,随着计算机的出现和发展,图论的研究得到广泛重视,最短路径问题是图论中的一个典范问题,它已经被应用于众多领域。最短路径问题最直接的应用当数在地理信息领域,如:GIS网络分析、城市规划、电子导航等。在交通咨询方面,寻找交通路网中两个城市间最短的行车路线就是最短路径问题的一个典型的例子。在网络通信领域,信息包传递的路径选择问题也与最短路径问题息息相关。举个例子,OPSF开放路由选择协议,每个OPSF路由器都维护一个描述自治系统拓扑结构的数据库,通过这个数据库构建最短路径树来计算路由表,从而跟踪自治系统范围内到每个目标的最短路径。在图象分割问题中,最短路径也有直接的应用:在语音识别中,一个主要的问题就是区别同音词,例如,to、two、too。为解决这个问题,我们需要建一个图,顶点代表可能的单词,边连接相邻的单词,边上的权代表相邻的可能行大小。这样图中的最短路径,就是对句子的最好解释。 由于最短路径问题的广泛应用,很多学者都对此进行了深入的研究,也产生了一些经典的算法。近些年来,对最短路径研究的热度依然不减,并且时间复杂度降得越来越低。 总的来讲,最短问题可以分成两类:单源最短路径和所有顶点对间的最短路径。本文就从上述两类来分别介绍最短路径的并行算法,并介绍最短路径问题中的一个热点问题K条最短路径问题。 本文的其它部分组织如下:第2节介绍单源最短路径问题的并行算法;第3节介绍所有顶点对间的最短路径问题的并行算法;第4节介绍K条最短路径问题;最后在第5节总结最短路径的并行算法,并谈谈自己的想法。 单源最短路径问题 单源最短路径问题是指从一个给定顶点S到其它所有顶点i之间的距离dist(i)为最短的路径,其中s∈V称为源点,i∈V且i≠s。假定图G(V,E)是一个有向网络,其加权邻接矩阵为W,且边上权值w(i,j)0,i,j∈V,V={1,2,…,n}。 单处理机上的单源最短路径算法 在单处理机上,人们研究最短路径问题已取得许多成果,设计了几十种算法,其中Dijkstra算法是解决这个问题的最有效算法之一。在串行情况下,该算法的时间复杂度为O(m+nlogn)。其基本思想是:假定有一个待搜索顶点表VL,初始化时做:dist(s)←0;dist(i)←∞(i≠s);VL←V。算法执行时,每次从VL(≠Φ)中选取这样一个顶点u,它的dist(u)值最小。将选出的u作为搜索顶点,若u,v∈E,而且dist(u)+w(u,v)dist(v),则更新dist(v)为dist(u)+w(u,v),直到VL=Φ时算法终止。算法描述如下: 算法1 DIJKSTRA ALGORITHM(SISD) 输入:加权邻接矩阵W,约定i,j之间无边连接时w(i,j)=∞,且w(i,i)=∞; 输出:dist(1:n),其中,dist(i)表示顶点s到顶点i的最短路径(1≤i≤n)。 begin /*初始化*/ dist(s)←0; for i←1 to n do if i≠s then dist(i)←∞ endif endfor; VL←V; For i←1 to n do /*找最短距离*/ Find a vertex u∈VL,such that dist(u) is minimal; For each(u,v∈E) ∧ (v∈VL) do If dist(u)+w(u,v)dist(v) then dist(v)←dist(u)+w(u,v) endif endfor; VL←VL-{u} Endfor End. 除了Dijkstra算法外,Moore算法解决单源最短路径问题也是较有效的。在Moore算法中,设源点为s∈V,从s到其它各顶点的最短路径长度用一个一维数组dist存储。首先置dist(s)=0,dist(v)←∞,v≠s,v∈V。Moore算法同Dijkstra算法不同之处是:将Dijkstra算法中的待搜索顶点表替换成待搜索队列。算法开始执行时,队列仅含源点s。以后每次只要待搜索队列非空,则将队头的顶点从队列中移出作为本次搜索的顶点,然后检查u的所有射出边u,v∈E。若dist(u)+w(u,v)dist(v),则此时找出了一条从s到v的更短路径,置dist(v)等于dist(u)+w(u,v)。若v不在搜索队列中,则把v加入到队列的

文档评论(0)

weizhent2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档