Algorithm Floyd Warshall算法在以下情况下的工作原理
假设我有9个顶点。 所以我有9x9解矩阵和Algorithm Floyd Warshall算法在以下情况下的工作原理,algorithm,directed-graph,Algorithm,Directed Graph,假设我有9个顶点。 所以我有9x9解矩阵和 matrix[6,0] = infinity, matrix[6,9]=1, matrix[9,0]=1 现在算法的工作原理如下: for k 1 to 9 for i 1 to 9 for j 1 to 9 现在假设k=6 因此,对于矩阵[5,0]比较将在(矩阵[5,6]+矩阵[6,0])和矩阵[5,0]之间进行,在这种情况下矩阵[6,0]=无穷大因此矩阵[5,0]将是值 但是当k=9 矩阵[6,0]变成=>矩阵[6,
matrix[6,0] = infinity,
matrix[6,9]=1,
matrix[9,0]=1
现在算法的工作原理如下:
for k 1 to 9
for i 1 to 9
for j 1 to 9
现在假设k=6
因此,对于矩阵[5,0]
比较将在(矩阵[5,6]+矩阵[6,0]
)和矩阵[5,0]
之间进行,在这种情况下矩阵[6,0]=无穷大
因此矩阵[5,0]
将是值
但是当k=9
矩阵[6,0]
变成=>矩阵[6,9]+矩阵[9,0]=1+1=2
但是现在无法更新矩阵[5,0]
这是我的理解。那么,在这种情况下,算法是如何工作的。如果循环从0开始,除了
矩阵[6]{0,9}
和矩阵[9][0]之外,其他值都是0
然后
矩阵[6][0]
将从矩阵[6][1]+矩阵[1][0]
更新
矩阵[6][9]
将从矩阵[6][1]+矩阵[1][9]
更新
矩阵[9][0]
将从矩阵[9][1]+矩阵[1][0]
更新
您不需要更新矩阵[5][0]
因为它已经是0了?
基本上,当您在循环K
中有K
值时,这意味着您将要添加另一条边,并且使用边(1->K-1)
更新从(i->j)
然后插入另一个边K
,再次检查是否有任何方法可以使用此边以更便宜的方式从(i->j)
开始。
所以你写矩阵[i][j]=min(矩阵[i][j],矩阵[i][k]+矩阵[k][j])
其他边呢?矩阵[5,6],它是无穷大还是0?它是0。有人能帮我解释一下吗?