Java实现Dijkstra算法的示例代码

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。本文主要介绍了实现这一算法的Java代码,需要的可以参考一下

一 问题描述

小明为位置1,求他到其他各顶点的距离。

二 实现

package graph.dijkstra; import java.util.Scanner; import java.util.Stack; public class Dijkstra { static final int MaxVnum = 100;  // 顶点数最大值 static final int INF = 0x3f3f3f3f; //无穷大 static final int dist[] = new int[MaxVnum]; // 最短距离 static final int p[] = new int[MaxVnum]; // 前驱数组 static final boolean flag[] = new boolean[MaxVnum]; // 如果 s[i] 等于 true,说明顶点 i 已经加入到集合 S ;否则顶点 i 属于集合 V-S static int locatevex(AMGraph G, char x) { for (int i = 0; i  0) { u = scanner.next().charAt(0); v = scanner.next().charAt(0); w = scanner.nextInt(); i = locatevex(G, u);// 查找顶点 u 的存储下标 j = locatevex(G, v);// 查找顶点 v 的存储下标 if (i != -1 && j != -1) G.Edge[i][j] = w; //有向图邻接矩阵 else { System.out.println("输入顶点信息错!请重新输入!"); G.edgenum++; // 本次输入不算 } } } static void print(AMGraph G) { // 输出邻接矩阵 System.out.println("图的邻接矩阵为:"); for (int i = 0; i  (dist[t] + G.Edge[t][j])) { dist[j] = dist[t] + G.Edge[t][j]; p[j] = t; } } } public static void findpath(AMGraph G, char u) { int x; Stack S = new Stack<>(); System.out.println("源点为:" + u); for (int i = 0; i 

三 测试

到此这篇关于Java实现Dijkstra算法的示例代码的文章就介绍到这了,更多相关Java Dijkstra算法内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是Java实现Dijkstra算法的示例代码的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java