1. 程式人生 > >圖演算法---每對頂點間最短路徑

圖演算法---每對頂點間最短路徑

3.2、額外空間儲存2*(n*n)
def floyd_warshall(W):
    import copy
    #需要兩個n*n矩陣的額外儲存
    D_in =  copy.deepcopy(W)
    D_ret = copy.deepcopy(W)
    k = 0
    while k < len(W):
        tmp = D_ret
        D_ret = D_in
        D_in = tmp
        for i in range(0,len(D_ret)):
            for j in range(0,len(W)):
                D_ret[i][j] = min(D_in[i][j],D_in[i][k] + D_in[k][j])
        k = k+1
    print D_ret