floyd算法新理解

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

posted @ 2021-04-12 16:50  celerity1  阅读(59)  评论(0编辑  收藏  举报