最短路径的并行算法综述

合集下载

物流领域中的运输路径规划算法综述与优化

物流领域中的运输路径规划算法综述与优化

物流领域中的运输路径规划算法综述与优化运输路径规划是物流领域中至关重要的环节,它涉及到货物的运输安排、运输成本的控制以及运输效率的提升。

在物流管理中,合理的运输路径规划可以有效地降低物流成本,提高运输效率,优化供应链管理。

本文将综述物流领域中常用的运输路径规划算法,并探讨其优化方法和应用。

一、传统运输路径规划算法综述1. 最短路径算法最短路径算法是物流领域中最基础且常用的路径规划算法之一。

其主要目标是通过确定节点之间的最短路径来实现快速、高效的货物配送。

常用的最短路径算法包括Dijkstra算法、Floyd-Warshall算法和A*算法。

这些算法通过考虑节点之间的距离、时间、耗费等因素来进行路径选择,以最小化总体的运输成本。

2. 蚁群算法蚁群算法是一种模拟蚂蚁寻找食物路径的群体智能算法。

在物流领域中,蚁群算法被广泛应用于货车路径规划、货柜装载问题等。

它通过模拟蚂蚁在搜索食物时的信息素传递和选择机制,寻找最优的运输路径。

蚁群算法具有较强的自适应性和全局搜索能力,能够有效解决复杂的路径规划问题。

3. 遗传算法遗传算法是一种模拟生物进化过程的启发式算法。

在物流领域中,遗传算法被广泛应用于货物配送路径优化、车辆调度等问题。

它通过模拟自然选择、交叉、变异等操作,不断优化运输路径的适应度,以提高运输效率和降低成本。

遗传算法具有较强的全局搜索能力和并行计算能力,能够获取较优的解。

二、运输路径规划算法的优化方法1. 路径规划算法与实时数据的结合传统的运输路径规划算法大多是基于固定的网络拓扑结构,未考虑实时数据的变化。

而结合实时数据的路径规划算法可以更加准确地预测交通状况,从而选择更优的运输路径。

例如,通过实时交通数据可以选择空闲路段,避开拥堵路段,从而降低运输时间和成本。

2. 多目标优化算法在实际的物流运输中,往往涉及到多个目标,如最短路径、最小成本、最小时间等。

传统的路径规划算法往往只考虑一个目标,忽略了其他因素的影响。

动态路由优化中的最短路径并行计算方法研究进展

动态路由优化中的最短路径并行计算方法研究进展

动态路由优化中的最短路径并行计算方法研究进展杨忠明秦勇茂名学院广东茂名525000摘要:本文总结了国内外一些最短路径并行计算算法目前的主要研究结果,并从QoS路由选择目标中的一些方法特点对动态路由优化算法进行改进,使用最短路径并行计算是解决动态路由优化的计算量问题的方法之一,并提出了最短路径并行计算算法优化路由策略的实验方法。

关键词: 最短路径;并行计算;动态路由优化;QoS路由;Pareto子集;中图分类号:TP391 文献标识码:A1 引言网络中流量的特点是影响网络路由设计的主要因素,对于路由算法设计则必须基于流量,但对于大多数AS(Autonomous System),基于目前的算法,网络中大部分时间内的流量是相当稳定的,但是通常会存在一些时段,网络中的流量会突然变化,对于现有的路由算法基于性能和复杂度考虑没有进行重新计算或调整。

已经许多研究者对AS中高突发流量究,通过这些高突发流量的调查报告发现,导致网络高突发流量的原因有诸如病毒的爆发、ISP路由变动、拒绝服务攻击等原因,另外基于多媒体的UDP流量日益增多,使得突发流量往往影响到网络中的关键业务[1-4]。

如果路由算法没有考虑到网络中的突发流量的负载均衡,通常会导致网络链路和路由不必要的过载,延迟加大,丢包率增加,网络的吞吐量降低,甚至威胁路由器安全。

传统的路由算法通常是基于数据传输对网络情况的预测[5]。

而基于算法性能和复杂度不考虑网络突发流量的实际,算法通常是根据采集到网络流量的部分度量样本,基于采样对网络性能优化,而这些采样并不能反映网络的真实情况[6]。

Zhang C.等提及算法考虑多个具有代表性的流量矩阵,然后找到一组优化路由使得代表性的流量矩阵的最差代价达到最小,但是这里的最差代价并非全局仅限于网络流量的采样[7, 8]。

Kandula S.等提及算法对实际网络上流量进行管理,以响应瞬时流量的需求做出优化[9]。

这些动态适应算法的优点在于如果它们能够迅速收敛,则不需要过多的采样或者做出预测。

基于Java多线程实现所有顶点间最短路径的并行算法

基于Java多线程实现所有顶点间最短路径的并行算法
中 图分 类 号 : P 1 T 32 文 献标 识码 : A 文 章 编 号 :17 —2 X( 06 0 —0 70 6 104 2 0 )4 0 6 — 3
Re lz to f m o ts r - t pa a l la g r t m r n l pe e a i a i n o s ho tpa h r l l o ih du e i g a la x s
理论 分析 , 最后通过 实验证明 了此构想的正确性. 中还依据 Djs a 法的 实现原理提 出了一种新 的所 文 i t 算 kr 有顶点对间的并行 算法, 并且利用 Jv aa多线程技 术对给 出的并行算法进行 了实现. 关键词 : 最短路径 ;所有顶点对 间的最短路径 ; i s a算法;并行算法 ; aa多线程 Dj t kr Jv
维普资讯
第2 5卷 第 4期 20 0





Vo . 5 No. 12 4
Au us 2 06 g t 0
J J oI RNAL ANJ N OLYTECHNI I 『Ⅶ RS TY oF TI I P C l I
d r gal p x si po o e ae n te Djs a a o tm ra zt n pic l,a d te p a e a o tm u n e e rp s d b sd o h i t g r h e i i r i e n h al l g r h i l a s kr l i l ao np r l i l
whc a e n p o u e sr aie y u ig t e J v hi r a i g t c n lg . ih h sb e r d c d i e z d b sn h a a mu t e d n e h o o l h y

求解最短路径问题的几种算法和应用总结

求解最短路径问题的几种算法和应用总结

求解最短路径问题的几种算法和应用总结最短路径问题在生活中随处可见,只要在各种现实问题上,我们能够结合现代智能交通的利用,并且成分考虑实地的不同的交通资源,从而能够真正的实现最短路径,那么首先第一有利的是可以有效地减少交通事故的发生频率。

并且在环境方面来讲,也符合了国际可持续性发展的理念,即达到了节能的效果,有有效的减少了汽车尾气,缓解了大气污染,并且在车辆越来越多的今天,减轻了市民旅途停车位不足的情况,并且能够节约人们的时间。

本文就是对于最短路径问题的几种算法及应用的研究,本文首先从最短路径问题研究背景以及研究意义出发,然后对于最短路径问题国内外研究现状进行了探讨,接着对于研究方法进行了总结,最后对于本文要用到的一些理论知识进行了总结,比如:图的概念,有向图以及无向图的说明,最短路径的一些概述,以及一般求解最短路径的步骤,还有一些求解最短路径的基本方法做了一些说明。

最后基于迪杰斯特拉算法以及改进的Floyd算法二种算法进行了详细的分析推到计算,最后本文将最短路径问题应用到了在生产车间中智能AGV小车的最短路径规划问题上,并且对于二种方法进行了仿真分析,对仿真的结果进行了分析,得到了相关的结论。

参考文献:[1] 张默.Dijkstra最短路径算法的研究[J].数学学习与研究,2018(16):152.[2]司连法,王文静.快速Dijkstra最短路径优化算法的实现[J].测绘通报,2005(08):15-18.[3] Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein,殷建平,徐云,王刚,刘晓光,苏明,邹恒明,王宏志.算法导论(原书第3版)[J].计算机教育,2013(10):51[4]张引发,刘乾,王鲸鱼.必经节点约束下的光网络最短路径算法[J].光通信技术,2018,42(10):30-32.[5]虞谦,高岳毅,李俊.最短路径算法在事故应急救援中的应用[J].安全,2018,39(09):15-17.[6]郑海虹.常用最短路径算法分析与比较[J].安徽电子信息职业技术学院学报,2013,12(04):31-33.[7]肖金声.关于最短路径算法[J].中山大学学报(自然科学版),1987(03):42-47.[8]姜启源.数学模型(第三版)[M].北京:高等教育出版社,2003:250-300.[9]俞飞蝶,罗杰.最短路径算法在外卖配送中的应用[J].福建电脑,2018,34(08):155-156.[10]宋青,汪小帆.最短路径算法加速技术研究综述[J].电子科技大学学报,2012,41(02):176-184.致谢本课题是在我的指导老师李敏的悉心指导和严格要求下由本人独立完成的,从课题选择、方案论证到具体设计和调试的每个环节,无不凝聚着李敏的心血和汗水,在四年的本科学习和生活期间,也始终感受着导师的精心指导和无私的关怀,我受益匪浅。

最短路径算法的原理和方法

最短路径算法的原理和方法

最短路径算法的原理和方法最短路径算法是一类解决图中节点最短路径问题的算法,例如在网络中找到从一个节点到另一个节点的最短路径,或者在地图中找到从一个地点到另一个地点的最短路线。

最短路径问题可以用图论来描述,即在有向或无向的图中,根据边的权重找到连接两个顶点的最短路径。

最短路径算法可以分为以下几种:1. Dijkstra 算法Dijkstra 算法是最常用的找到单源最短路径的算法,它适用于没有负权边的有向无环图或仅含正权边的图。

算法步骤:(1)初始化,将起点到所有其他顶点的距离初始化为正无穷,将起点到自己的距离初始化为0。

(2)选择一个起点,将其距离设为0。

(3)将起点加入已知最短路径集合。

(4)遍历与起点相邻的所有顶点,将它们到起点的距离更新为起点到它们的距离。

(5)从未加入已知最短路径集合中的顶点中选择最小距离的顶点,将它加入已知最短路径集合中。

(6)重复步骤4和步骤5直到所有顶点都被加入已知最短路径集合中。

2. Bellman-Ford 算法Bellman-Ford 算法是一种解决有负权边的单源最短路径问题的算法。

算法步骤:(1)初始化,将起点到所有其他顶点的距离初始化为正无穷,将起点到自己的距离初始化为0。

(2)遍历每条边,将该边起点的距离加上该边的权重,如果得到的距离比该边终点的距离小,则更新该终点的距离为该距离。

(3)重复步骤2 V-1 次,其中V 是图中的顶点数。

(4)检查是否存在负环,即在V-1 次迭代后,仍然可以更新顶点的距离。

如果存在负环,算法无法执行。

3. Floyd-Warshall 算法Floyd-Warshall 算法是一种解决所有顶点对之间的最短路径问题的算法。

算法步骤:(1)初始化,将每个顶点到其他顶点的距离初始化为边权,如果两个顶点之间没有边相连,则初始化为正无穷。

(2)依次加入每个顶点,如果通过加入该顶点可以得到更短的路径,则更新路径。

(3)输出结果,即每个顶点对之间的最短路径。

单源最短路径问题并行算法分析

单源最短路径问题并行算法分析

单源最短路径问题并行算法分析实验报告一、实验名称单源最短路径问题并行算法分析。

二、实验目的分析单源最短路径Dijkstra并行算法和MPI源程序,并分析比较Dijkstra并行算法和Moore并行算法的性能。

三、实验内容1、分析单源最短路径Dijkstra并行算法和MPI源程序。

2、分析单源最短路径问题的Moore并行算法,比较两种并行算法的性能。

四、实验步骤1、问题描述单源最短路径问题即指:已知一个n结点有向图G=(V,E)和边的权函数c(e),求由G中某指定结点v0到其他各个结点的最短路径。

这里还假定所有的权值都是正的。

2、比较串行Dijkstra算法和Moore算法2.1、Dijkstra算法基本思想假定有一个待搜索顶点表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=Φ时算法终止。

算法描述如下:输入:加权邻接矩阵W,约定i,j之间无边连接时w(i,j)=∞,且w(i,i)=∞;输出:dist(1:n),其中,dist(i)表示顶点s到顶点i的最短路径(1≤i≤n)。

begin/*初始化*/(1)dist(s)←0;(2)for i←1 to n doif i≠s then dist(i)←∞endifendfor;(3)VL←V;(4)for i←1 to n do /*找最短距离*/(5)find a vertex u∈VL,such that dist(u) is minimal;(6)for each(<u,v>∈E) ∧(v∈VL) doif dist(u)+w(u,v)<dist(v) thendist(v)←dist(u)+w(u,v)endifendfor;(7)VL←VL-{u}endforend.2.2、Moore算法的基本思想设源点为s∈V,从s到其它各顶点的最短路径长度用一个一维数组dist存储。

并行dijkstra最短路径算法

并行dijkstra最短路径算法

并行dijkstra最短路径算法一,并行算法设计与分析1.1 并行化思路串行的dijkstra算法有两层N次循环,第一层循环必须得按次序执行,不可并行。

那么只有将第二层循环并行。

第二层循环有两个N次的循环,第一次循环是求dist数组的最小值。

复杂度为O(N)第二次循环是更新dist数组的值,复杂度也是O(N)。

所以串行的总复杂度为O(N*N)那么必须将这两次循环都并行才可以降低复杂度。

1.2 求最小值的并行方法假设有p个处理器,N个顶点。

给每个处理器分配N/p个顶点,求出局部的最小值,复杂度为O (N/p)。

然后后一半的处理器将自己的最小值发送给第前p/2个处理器。

前一半处理器接收到传来的值后,与局部的最小值比较,作为新值。

继续循环,直到剩下一个处理器为止。

注意:若p为偶数,则进行一次合并后,还剩p/2个处理器。

若p为奇数,则进行一次合并后,还剩p/2+1个处理器复杂度为O (N/p+logp)1.3 更新dist数组的并行方法给每个处理器分配N/p个节点。

设选取的dist最小的顶点为u。

for(j=0;j<mynum;j++){if dist[u]+w[u][j]<dist[j] then dist[j]= dist[u]+w[u][j];}采用行块带状划分,这是为了可以连续的传送邻接矩阵。

所以不采用行循环带状划分。

复杂度为O (N/p)1.4 算法总复杂度并行的dijkstra算法复杂度为O (N*(N/p+logp+N/p))=O (N*N/p+Nlogp)二,行块带状划分方法改进之前的代码采用此方法比如5个处理器P0,P1,P2,P3,P4。

12个顶点划分方法如下图所示P1负责计算dist[0~2]P2负责计算dist[3~5]P3负责计算dist[6~8]P4负责计算dist[9~11]P1需要矩阵W[0~2][0~11]P2需要矩阵W[3~5][0~11]P3需要矩阵W[6~8][0~11]P4需要矩阵W[9~11][0~11]三,算法改进3.1 无需单独分出一个处理器读数据实际上当0号处理器读完邻接矩阵,并且初始化好其它处理器后,也可以参与并行dijkstra算法求解。

【算法总结】图论-最短路径

【算法总结】图论-最短路径

【算法总结】图论-最短路径【算法总结】图论-最短路径⼀、概念最短路径问题。

即寻找图中某两个特定结点间最短的路径长度。

所谓图上的路径,即从图中⼀个起始结点到⼀个终⽌结点途中经过的所有结点序列,路径的长度即所经过的边权和。

⼆、Floyd算法⽤邻接矩阵保存原图,那么此时邻接矩阵中edge[i][j]的值即表⽰从结点i到结点j,中间不经过任何结点时距离的最⼩值(若它们之间有多条边,取最⼩权值保存⾄邻接矩阵;也可能为⽆穷,即不可达)。

假设结点编号为 1 到 N,我们再考虑从结点i到结点j中间只能经过编号⼩于等于1的结点(也可以不经过)时最短路径长度。

与原始状况相⽐,在中间路径上可以经过的结点增加了编号为1 的结点。

我们⼜知道,最短路径上的结点⼀定不会出现重复(不考虑存在负权值的情况)。

那么,某两个结点间若由于允许经过结点 1 ⽽出现了新的最短路径,则该路径被结点 1 分割成两部分:由 i 到结点 1,同时中间路径上不经过结点 1 的第⼀段路径;由结点 1 到 j,中间路径上同样不经过结点 1 的第⼆段路径,其路径总长度为edge[i][1] + edge[1][j]。

要确定该路径是否⽐不允许经过结点1时更短,我们⽐较edge[i][1] + edge[1][j]与edge[i][j]之间的⼤⼩关系。

若前者较⼩,则说明中间路径经过结点1时⽐原来更短,则⽤该值代表由i 到j 中间路径结点编号⼩于等于1的最短路径长度;否则,该路径长度将依然保持原值edge[i][j],即虽然允许经过结点1,但是不经过时路径长度最短。

考虑更⼀般的情况,若edge[i][j]表⽰从结点i到结点j,中间只能经过编号⼩于k的点时的最短路径长度,我们可以由这些值确定当中间允许经过编号⼩于等于k的结点时,它们之间的最短路径长度。

同样,与原情况相⽐,新情况中允许出现在中间路径的结点新增了编号为 k 的结点,同理我们确定 edge[i][k] + edge[k][j]的值与edge[i][j]的值,若前者较⼩则该值代表了新情况中从结点i到结点j的最短路径长度;否则,新情况中该路径长度依旧保持不变。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最短路径的并行算法综述SA02011105 陈艾(aiai@)摘要:最短路径问题是图论中的一个典范问题,它被应用于众多领域。

最短路径问题可以分成两类:单源最短路径、所有顶点对间的最短路径。

本文对最短路径的并行算法进行综述,并介绍目前最短路径问题中的一个热点问题K条最短路径。

关键字:最短路径,单源最短路径,所有顶点对间的最短路径,K条最短路径A Summary on Parallel Algorthms for Shortest Path ProblemsSA02011105 CHEN AiAbstract:The shortest path problem plays an important role in graph theory .It is applied to numerous area . It is composed of two parts: single source shortest paths and all pairs shortest paths. This paper presents a summary on parallel algorithms for the shortest path problems including introducing a hot issue k shortest paths in shortest path problems at present.Keywords:Shortest paths,Single source shortest paths,All pairs shortest paths,K shortest paths1. 引言二十世纪中后期,随着计算机的出现和发展,图论的研究得到广泛重视,最短路径问题是图论中的一个典范问题,它已经被应用于众多领域。

最短路径问题最直接的应用当数在地理信息领域,如:GIS网络分析、城市规划、电子导航等。

在交通咨询方面,寻找交通路网中两个城市间最短的行车路线就是最短路径问题的一个典型的例子。

在网络通信领域,信息包传递的路径选择问题也与最短路径问题息息相关。

举个例子,OPSF开放路由选择协议,每1SA02011105 陈艾个OPSF路由器都维护一个描述自治系统拓扑结构的数据库,通过这个数据库构建最短路径树来计算路由表,从而跟踪自治系统范围内到每个目标的最短路径。

在图象分割问题中,最短路径也有直接的应用:在语音识别中,一个主要的问题就是区别同音词,例如,to、two、too。

为解决这个问题,我们需要建一个图,顶点代表可能的单词,边连接相邻的单词,边上的权代表相邻的可能行大小。

这样图中的最短路径,就是对句子的最好解释。

由于最短路径问题的广泛应用,很多学者都对此进行了深入的研究,也产生了一些经典的算法。

近些年来,对最短路径研究的热度依然不减,并且时间复杂度降得越来越低。

总的来讲,最短问题可以分成两类:单源最短路径和所有顶点对间的最短路径。

本文就从上述两类来分别介绍最短路径的并行算法,并介绍最短路径问题中的一个热点问题K条最短路径问题。

本文的其它部分组织如下:第2节介绍单源最短路径问题的并行算法;第3节介绍所有顶点对间的最短路径问题的并行算法;第4节介绍K条最短路径问题;最后在第5节总结最短路径的并行算法,并谈谈自己的想法。

2. 单源最短路径问题单源最短路径问题是指从一个给定顶点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}。

2.1. 单处理机上的单源最短路径算法在单处理机上,人们研究最短路径问题已取得许多成果,设计了几十种算法,其中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)2SA02011105 陈艾输入:加权邻接矩阵W,约定i,j之间无边连接时w(i,j)=∞,且w(i,i)=∞;输出:dist(1:n),其中,dist(i)表示顶点s到顶点i的最短路径(1≤i≤n)。

begin/*初始化*/(1) dist(s)←0;(2) for i←1 to n doif i≠s then dist(i)←∞ endifendfor;(3) VL←V;(4) For i←1 to n do /*找最短距离*/(5) Find a vertex u∈VL,such that dist(u) is minimal;(6) For each(<u,v>∈E) ∧ (v∈VL) doIf dist(u)+w(u,v)<dist(v) then dist(v)←dist(u)+w(u,v) endifendfor;(7)VL←VL-{u}EndforEnd.除了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加入到队列的队尾。

如此重复进行,直到整个待搜索队列空时,算法终止。

单处理器上的Moore算法如下:算法2 MOORE ALGORITHM(SISD)3SA02011105 陈艾输入:有向图G(V,E)的加权邻接矩阵W={w ij},i,j∈V;输出:从源s到所有其它顶点i(i≠s)的最短路径dist(i),i∈V。

begin(1) for i←1 to n do /*初始化*/call INITIALIZE(i)endfor;(2) insert s into the queue; /*插入s到队列中*/(3) while the queue is not empty do(4) call SEARCHendwhileend.Procedure SEARCH;Begin(4.1) dequeue vertex u; /*从队列中删去顶点u*/(4.2) for each edge (u,v)∈E do(4.3) new_dist←dist(u)+w(u,v);(4.4) if new_dist<dist(v) then dist(v)←new_dist endif;(4.5) if v is not in the queue then enqueue vertex v endifendforend.Procedure INITIALIZEBegin(1.1)dist(s)←0(1.2)dist(v)←∞(v≠s,v∈V)(1.3)queue←0end.4SA02011105 陈艾SA02011105 陈艾52.2. 单源最短路径的并行算法Paige 等人[1]基于SIMD_EREW PRAM 上,对Dijkstra 算法进行并行化,其时间复杂度为O(n 2/p+nlogp),O (p )个处理器。

具体算法并行化如下:算法的第(2)步的实现为:每个处理器分派⎡⎤p n /个顶点,最后一个处理器分派n-⎡⎤p n /*(p-1)个顶点,每个处理器对所分派的顶点顺序地赋值;第(3)步其实是对数组VL赋值,同第(2)步类似处理;第(5)步实现如下:首先每个处理器检测自己内部⎡⎤p n /个顶点的最小值,然后p 个处理器合作,并行计算p 个最小值中的最小值;第(6)步实现如下:首先将顶点u 广播到所有的处理器中,假定u 是送入处理器i 的B(i)单元中(1≤i ≤p ),则实现广播算法为:算法3 BROADCAST输入:数据u(存放在单元B(1)中);输出:将u 广播到数组B 的所有单元中去。

Begin(1) B(1)←u ;(2)for i ←0 to ⎡⎤p log -1 do(3) for each j:2i +1≤j ≤2i+1 pardoB(j)←B(j-2j )EndforEndforEnd.然后,每个处理器检查所有边<u ,v>∈E ,其中V ∈vl ,且v 是本处理器的顶点。

Paige 等人还在SIMD-CRCW PRAM 运用了上述算法,在这种计算模型上用p 个处理器对n 个元素进行二元结合运算,仅需O (n/p+loglogp )时间。

Deo 等人基于MIMD 紧耦合共享存储模型,实现Moore 算法的并行化[2]。

他们主要针对Moore算法的第(3)到第(4)步的while循环并行化。

MIMD紧耦合多处理机上的单源最短路径算法见[2]。

在MIMD机器模型上,Chen曾经给出一个O(dn2)时间、O(n)处理器的单源最短路径问题的分布式算法。

其后,Lakhai改进了Chen的算法,使得在处理器数不变的前提下,时间复杂度降到O(n2)。

近些年来,单源最短路径的算法改进较少。

第3节中,我们将讨论解决所有顶点对间的最短路径问题的算法。

3. 所有顶点对间的最短路径问题所有点对间的最短路径就是计算所有顶点对间的最短路径。

Floyd算法,又称传递闭包方法,是求解所有顶点对间的最短路径问题的一个经典的算法,其实质就是矩阵自乘n次。

下面将介绍单处理机上的所有顶点对间的最短路径问题的Floyd算法,以及一些解决该问题的并行算法。

3.1. 单处理机上的所有顶点对间的最短路径算法设一个有向图G(V,E),∣V∣=n的加权邻接矩阵为W,且w(i,j)表示边(i,j)的长度,若i和j之间不存在有向边,则w(i,j)为∞,1≤i,j≤n,i,j∈V。

两个矩阵A和B的积C=AB定义为:C(i,j)=min{w(i,k)+w(k,j)∣k=1,2,…n}。

相关文档
最新文档