具有邻接矩阵的Floyd Warshall算法

时间:2019-07-02 17:21:08

标签: julia

我正在尝试实现floyd warshall算法,但无法正常工作。

我想要的是从一个顶点到另一个顶点的最短路径距离,该距离写在矩阵d中,而前任元素写在矩阵pred中。输入是一个包含所有边缘权重的邻接矩阵。

function FloWa(C)

N = size(C)
n = min(C[1],C[2])

pred = -1*ones(C[1],C[2])
d = C

for k in 1:n
    for i in 1:n
        for j in 1:n
            if d[i,j] > d[i,k] + d[k,j]
                if pred[i,k] == -1
                    pred[i,j] = k
                else
                    pred[i,j] = pred[k,j]
                end
                d[i,j] = d[i,k] + d[k,j]
            end
            if i == j && d[i,i] < 0
                    println("negative Dicycle")
            end
        end
    end
end
return d, pred
end

当我使用矩阵运行代码

A = [0 2 1 4 5 1; 1 0 4 2 3 4; 2 1 0 1 2 4; 3 5 2 0 3 3; 2 4 3 4 0 1; 3 4 7 3 1 0]

我没有得到正确的结果。

对于d,我得到与A相同的矩阵,并且pred打印为Array {Float64}(0,1)。

1 个答案:

答案 0 :(得分:1)

我还没有检查算法的实现,但是您似乎错误地初始化了http://localhost:3000/posts/1{ "id": 1, "title": "json-server", "author": "typicode" } 。这是我认为您已缩进的一种方法:

pred