Floyd算法求最短路径

利用Floyd算法进行矩阵运算,可以快速求出所有顶点的最短距离。

其核心思想是将顶点依次带入权重矩阵中,重新计算矩阵中的最优值,python实现如下:

def floyd(matrix):
    for node in range(len(matrix)):
        for i, value in enumerate(matrix):
            if i == node:
                continue
            for j in range(len(value)):
                if j == node or i == j:
                    continue
                if matrix[i][node] + matrix[node][j] < matrix[i][j]:
                    matrix[i][j] = matrix[i][node] + matrix[node][j]
    return matrix


if __name__ == '__main__':
    M = 999
    m = [[0, 1, M, 4],
         [M, 0, 9, 2],
         [3, 5, 0, 8],
         [M, M, 6, 0]]
    p = [[-1, 0, -1, 0],
         [-1, -1, 1, 1],
         [2, 2, -1, 2],
         [-1, -1, 3, -1]]
    res = floyd(m)
    print(res)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容