floyd算法三重循环的顺序为什么不能改

floyd算法的本质是动态规划算法。

设一共有1-n个点。

设dp[k][i][j]表示:点i、点j之间,经过的点的编号不超过k的最短距离。

那么i、j间的最短距离为经过不经过k点和经过k点的最小值,其中不经过k点的最短距离为dp[k - 1][i][j],经过k点的最短距离为dp[k - 1][i][k] + dp[]k - 1[k][j]。

故状态转移方程为:
dp[k][i][j] = min(dp[k - 1][i][j], dp[k - 1][i][k] + dp[]k - 1[k][j])

i点和j点之间的最短距离为dp[n][i][j]。

你可能感兴趣的:(数据结构与算法,算法,动态规划)