佛洛依德算法:
多源最短路径算法 三人for循环 领接矩阵 一个存最短路径权 一个存路径
逐个顶点试探,加入节点,看v0到v1的最小距离
H(c,w) > H(c,v) + H(v, w) 那么 cvw距离< cw
设置矩阵A(ij) if i==j a(ij)=0; if 存在弧<i,j> a(ij) = c(ij); 其他 a(ij) = 无穷
图示:
代码:
1. 构建矩阵,初始化
python二维数组建立方式:[ [0] for i in range(n) for j in range(m) ] 得出m*n阶的矩阵
2. 遍历K个节点,替换矩阵和路径
for k in range(k):
for m in range(m):
for n in range(n):
if G(m,n) > G(m,k) + G(k,n):
G(m,n) = G(m,k) + G(k,n)
P(m,n) = k
3. 输出
网友评论