迪杰斯特拉算法java
时间: 2023-02-09 17:50:42 浏览: 68
迪杰斯特拉算法是一种用于寻找图中最短路径的算法。它的工作原理是每次找出距离起点最近的未访问的顶点,并标记它已经被访问。然后更新其他顶点的距离,即如果从起点经过这个被访问的顶点可以更新它们的距离,则更新它们的距离。这个过程会一直进行直到所有的顶点都被访问过。
下面是一个 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;
阅读全文