单源最短路算法

这篇文章里将介绍一下图计算中常用的单源最短路径算法(SSSP算法)。

在7月1日发布的国际Graph500排名中,“天河”获得SSSPGraph500(单源最短路径)榜单世界第一和BIGDataGreenGraph500(大数据图计算能效)榜单世界第一的佳绩。这篇文章向大家介绍SSSP的常用最短路径算法。

单源最短路算法(SSSP)计算了图论中的一个经典问题,给出从给定的一个节点(称为源节点)出发到其余各节点的最短路径长度。单源最短路算法(SSSP)适用于网络路由、路径设计等场景。Bellman-Ford算法和Dijkstra算法都是求解图的最短路径的算法。

Dijkstra算法的特点主要是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法采用的是贪心策略,其基本算法思想是指定起点s,再引进2个集合S和U,S用来记录已经找到最短路径的顶点,而U里包含未找到最短路径的顶点。系统不断地找出路径最短的顶点,并且将其移出U集,加入S集中。初始时S为空集,U集包含全部顶点,系统不断执行,遍历完所有顶点后,U集更新为空集,任务结束。

Bellman-Ford算法的原理是连续地进行松弛,在每次松弛时更新每条边,若在n-1次松弛后还能更新,说明图中有负环,因此无法得出结果,否则任务完成。Bellman-Ford算法首先计算除源点外的所有顶点的最短距离估计值,然后对边集中的每条边进行松弛操作,使得每个顶点距离源点的最短距离估计值逐渐逼近其实际的最短距离。

以上就是对于2种简单的单源最短路径算法的介绍,不难发现Dijkstra侧重基于点的扫描(直到全部点标记完),而Bell-ford侧重基于边的关系(直到不再发生更新),这也是两者设计的不同。感兴趣的朋友可以自己动手实现两种算法,体验他们的不同之处,在这里我推荐使用GraphScope这个平台。GraphScope是阿里达摩院智能计算实验室研发并开源的全球首个一站式超大规模分布式图计算平台,支持多种图算法,可以方便地进行图分析和图计算,并且在性能上也达到极致。在图分析测试 LDBC Graph Analytics Benchmark 上,GraphScope 与 PowerGraph 以及其他最新系统比较,几乎在所有算法和数据集的组合中居于领先水平。从下图中我们可以看到,在执行单源最短路径算法(SSSP算法)时,GraphScope用时0.52秒,远小于PowerGraph的6.48秒。

GraphScope 的白皮书、代码已经在 github.com/alibaba/graphscope 开源,可以直接部署安装试用。

posted @   cherishxyy  阅读(469)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示