给定一个有向图求出里面所有节点对之间的最短路径。
问题的详细描述见Wikipedia:https://en.wikipedia.org/wiki/Shortest_path_problem。
介绍两个算法 O(V3) 的Floyd算法和 O(V2lgV+VE) 的Jhonson算法。分别应对稠密图和稀疏图的情况。
Floyd
这是一个动态规划算法。设 dkij 是 i,j 之间所有中间节点全部取自 <1,2,...,i,...,k> <script type="math/tex" id="MathJax-Element-1590"><1,2,...,i,...,k></script>的一条最短路的权重。则状态转移方程如下
dkij={ wijmin{ dk−1ij,dk−1ik+dk−1ij}x=0x!=0
伪代码
for k=1 to |V|