书中介绍了基于矩阵乘法的动态规划,floyd-warshall和Johnson这三种算法来解决单源最短路径问题。它们的适用情形如下:
算法 | 适用情形 |
---|---|
基于矩阵乘法的动态规划 | 有向图(能应用于无向图,因为可以把无向图理解为有向图),边的权重可以为负值,不能有权重和为负值的环路 |
floyd-warshall | 有向图(也能应用于无向图),边的权重可以为负值,不能存在权重和为负值的环路 |
Johsnon | 有向图(也能应用于无向图),边的权重必须可以为负值,如果存在权重和为负值的环路,算法会探测到并报告出来 |
一:基于矩阵乘法的动态规划算法
该算法适用于边权重可以为负值,但不能有权重和为负值的环路。当不应用“重复平方”技术时,算法的运行时间为 Θ(V4) ;应用该技术时,算法的运行时间为 Θ(V3lgV) ,
假设 lmij 为从结点i到结点j的至多包含m条边的任意路径中的最小权重。当m等于1时,不难发现 l1ij=W ,W为图边权重矩阵。对于m>1,我们需要计算的 lmij 是 lm−1ij