我正在尝试实现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)。
答案 0 :(得分:1)
我还没有检查算法的实现,但是您似乎错误地初始化了http://localhost:3000/posts/1
和{ "id": 1, "title": "json-server", "author": "typicode" }
。这是我认为您已缩进的一种方法:
pred