最短路——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

posted @ 2020-08-10 08:39  白菜茄子  阅读(128)  评论(0编辑  收藏  举报