[516数据]R语言:最短路径之Dijkstra算法
Posted 516数据工作室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[516数据]R语言:最短路径之Dijkstra算法相关的知识,希望对你有一定的参考价值。
hey,小伙,如果不坚强懦弱给谁看!
——516侃爷
今天给大家讲一下最短路径中的Dijkstra算法。
Dijkstra算法介绍:Dijkstra(迪杰斯特拉)算法是很有代表性的最短路径算法,它是按照路径长度递增的顺序来计算一个节点到其他所有节点的最短路径。
算法思想:首先将图中的顶点分成两组,第一组S中包括已经确定最短路径的顶点(初始情况包含源点);第二组V-S中包括还未确定最短路径的顶点。然后按照路径长度递增的顺序计算源点到各顶点的最短路径,逐个将第二组中的数据加入到第一组中,知道S = V。
问题描述:如下图所示,表示的是各个点之间的距离关系图,现在我们要得到点V1到所有点的最短距离递增的排序。通过图我们可以清楚的看出得到的结果应该是:
a.首先V1到V2的距离最短为10;
b.其次是V1到V4的距离最短为30;
c.其次是V1到V3(经过点V4)距离最短为50
d.最后是V1到V5(经过点V4和V3)距离最短为60
Dijkstra算法实现:
a.首先我们建立一个各个点之间的距离矩阵
b.然后实现Dijkstra算法的核心部分
c.根据测试数据得到结果
算法结果分析:算法结果输出的是一个矩阵,矩阵第一列表示的是点V1到哪个点,第二列表示到该点对应的最短距离,并且矩阵是按照距离递增来存储数据的。这里测试数据得到的结果和前面的分析结果可以看出来是一样的。
我们下次再见,如果还有下次的话!!!
【新浪微博@516数据工作室】
以上是关于[516数据]R语言:最短路径之Dijkstra算法的主要内容,如果未能解决你的问题,请参考以下文章
数据结构 - 单源最短路径之迪杰斯特拉(Dijkstra)算法详解(Java)
最短路径之Dijkstra算法和Floyd-Warshall算法