迪杰斯特拉算法是一种用于寻找图中最短路径的算法。它的工作原理是每次找出距离起点最近的未访问的顶点,并标记它已经被访问。然后更新其他顶点的距离,即如果从起点经过这个被访问的顶点可以更新它们的距离,则更新它们的距离。这个过程会一直进行直到所有的顶点都被访问过。
下面是一个 Java 的实现例子:
``` public class Dijkstra { public static void main(String[] args) { // 邻接矩阵表示图 int[][] graph = { {0, 4, 0, 0, 0, 0, 0, 8, 0}, {4, 0, 8, 0, 0, 0, 0, 11, 0}, {0, 8, 0, 7, 0, 4, 0, 0, 2}, {0, 0, 7, 0, 9, 14, 0, 0, 0}, {0, 0, 0, 9, 0, 10, 0, 0, 0}, {0, 0, 4, 14, 10, 0, 2, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 1, 6}, {8, 11, 0, 0, 0, 0, 1, 0, 7}, {0, 0, 2, 0, 0, 0, 6, 7, 0} }; int[] dist = dijkstra(graph, 0); for (int i = 0; i < dist.length; i++) { System.out.println("0 到 " + i + " 的最短距离为:" + dist[i]); } }
public static int[] dijkstra(int[][] graph, int src) {
int n = graph.length;
int[] dist = new int[n];
// 标记是否已访问
boolean[] visited = new boolean[n];
// 初始化距离
for (int i = 0; i < n; i++) {
dist[i] = Integer.MAX_VALUE;
}
dist[src] = 0;