二:Floyd-Warshall算法
该算法适用于边权重可以为负值,但环路权重和不能为负值的图,其运行时间为 Θ(V3) 。
假设 dkij 为从结点i到结点j的所有中间结点全部取自集合{1,2,…,k}的一条最短路径权重。当k=0时,从结点i到结点j的一条不包括编号大于0的中间结点的路径将没有任何中间结点。这样的路径最多只有一条边,因此 d(0)ij=wij 。因此如果k=0, dkij=wij ,若k>=1,则 dkij=min(d(k−1)ij,d(k−1)ik+d(k−1)kj
该算法适用于边权重可以为负值,但环路权重和不能为负值的图,其运行时间为 Θ(V3) 。
假设 dkij 为从结点i到结点j的所有中间结点全部取自集合{1,2,…,k}的一条最短路径权重。当k=0时,从结点i到结点j的一条不包括编号大于0的中间结点的路径将没有任何中间结点。这样的路径最多只有一条边,因此 d(0)ij=wij 。因此如果k=0, dkij=wij ,若k>=1,则 dkij=min(d(k−1)ij,d(k−1)ik+d(k−1)kj