floyd算法新理解

(f_{k,i,j})表示从(i o j)经过编号不超过(k)(i,j)编号可以超过(k))的节点的最短路。
转移方程有两种。
1.(f_{k,i,j}=min(f_{k-1,i,j})),意义是(i o j)不经过(k)
2.(f_{k,i,j}=min(f_{k-1,i,k}+f_{k-1,k,j})),意义是(i o j)经过(k)
时间/空间复杂度(O(n^3))
事实上,如果把第一维滚动掉,空间就优化到(O(n^2))

原文地址:https://www.cnblogs.com/ctmlpfs/p/14648811.html