在带权图中,求解的是最短的权重路径;在无权图中,将每一条边的权重,都看做单位权重,也就是每条边的权重是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