floyd

作者: warManHy | 来源:发表于2021-01-08 13:22 被阅读0次

佛洛依德算法:

    多源最短路径算法 三人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. 输出

相关文章

网友评论

      本文标题:floyd

      本文链接:https://www.haomeiwen.com/subject/vaxfaktx.html