打印Floyd Warshall的最短路径

时间:2016-01-17 14:48:25

标签: java shortest-path floyd-warshall

我正在努力完成我的Floyd-Warshall算法,我试图根据wikipedia伪代码编写我的程序,但它并没有像我那样工作。我创建第二个矩阵来存储路线中的变化,以便我的代码:

    for (int w = 0; w < wierzcholki; w++)

    {

        for (int i = 0; i < wierzcholki; i++)

        {

            for (int j = 0; j < wierzcholki; j++)

            {

                if (tablica[i][w] + tablica[w][j] < tablica[i][j]) {

                    tablica[i][j] = tablica[i][w]

                    + tablica[w][j];
                    next[i][j] = next[i][w];

                }

            }

        }

    }

这是我打印最短路径的方法

    List<Double> Path(double i, double j) {

        if (next[(int) i][(int) j] == Double.POSITIVE_INFINITY) {
            return null;
        }
        List<Double> Wynik = new ArrayList<Double>();
        while (i != j) {
            i = next[(int) i][(int) j];
            Wynik.add(i);
            return Path(i, j);

        }
return Wynik;
}

然后我把它叫出来找到所有节点之间的路由

Path(0, wierzcholki);

我昨天发布过类似的问题(https://stackoverflow.com/questions/34828364/java-floyd-warshall-algorithm),但我认为我已经接近解决方案了,所以我决定创建新的解决方案。我希望这是允许的。

0 个答案:

没有答案