迪杰斯特拉算法java

迪杰斯特拉算法是一种用于寻找图中最短路径的算法。它的工作原理是每次找出距离起点最近的未访问的顶点,并标记它已经被访问。然后更新其他顶点的距离,即如果从起点经过这个被访问的顶点可以更新它们的距离,则更新它们的距离。这个过程会一直进行直到所有的顶点都被访问过。

下面是一个 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;
   

猜你喜欢

转载自blog.csdn.net/weixin_35755562/article/details/129510682