问题
求解图中任意两点的最短距离
算法思想
对于图中任意两点i到j的最短路径graph[i][j],要使路径变短,则必须引入第三个点k(称为中转点)来进行中转即i到k到j,有时候甚至需要进行更多的中转点才能使路径变的最短(其中含有动态规划的思想)
算法使用情况:稠密图,可以含有负权
图的存储:矩阵
时间复杂度:O(n^3)
Java实现
void Floyd(){
for(int k = 1;k<=N;k++)//transmit point
for(int i=1;i<=N;i++)//start
for(int j=1;j<=N;j++){//end
if(graph[i][j]>graph[i][k]+graph[k][j])
graph[i][j]=graph[i][k]+graph[k][j];
}
}