最短路——Floyd算法

在带权图中,求解的是最短的权重路径;在无权图中,将每一条边的权重,都看做单位权重,也就是每条边的权重是1


Floyd-Warshall算法
解决问题:所有节点对的最短路径问题
解决方式:从图的邻接矩阵推导出最短路径矩阵
算法思想:对于其中的一个结点k而言,对于任何一个起点i终点j而言,只有两种情况:经过k,不经过k

复杂度:O(n^3)

代码:

void floyd(){
    for(int k=1;k<=n;k++){//以k为转移节点 
        for(int i=1;i<=n;i++){//i,j为起点终点 
            for(int j=1;j<=n;j++){
                dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
            } 
        } 
    }
}

无权图的最短路:可以使用bfs


作者:孙建钊
出处:http://www.cnblogs.com/sunjianzhao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/sunjianzhao/p/13461242.html