java利用迪克斯特拉(Dijkstra)算法求拓扑关系最短路径

Posted 洛阳泰山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java利用迪克斯特拉(Dijkstra)算法求拓扑关系最短路径相关的知识,希望对你有一定的参考价值。

算法简介

迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学迪家迪杰斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点最短路劲算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。

代码实现思路

1.先初始化源节点(起始点)到其他各个拓扑节点的最短距离,可以用map存放,key为节点,value为节点到源节点的距离。

比如数据库中存储的各个拓扑点的信息,我们需要先把数据库各地拓扑点之间的距离,加载出来,用map和矩阵(二维数组)方式。数据库拓扑信息存储表demo:

id source target dist
1 v1 v2 15.67

soure和target为相连的两个拓扑点,dist是相连接的两个拓扑点之间的距离。

2.初始化源节点到各个节点之间的距离时,源节点到自身节点的距离设为0,到不相连或者间接相连的节点距离设置为最大。

3.从源节点开始,不断循环迭代,各个节点到源节点的最短路线和距离,更新距离map里

以上是关于java利用迪克斯特拉(Dijkstra)算法求拓扑关系最短路径的主要内容,如果未能解决你的问题,请参考以下文章

广度优先搜索(BreadthFirstSearch)& 迪克斯特拉算法 (Dijkstra's algorithm)

简谈迪克斯特拉算法

核心算法8最短路径问题

迪克斯特拉算法初探——图解算法

迪克斯特拉算法python实现

最快路径与迪克斯特拉