Możesz spróbować stworzyć wersję Floyd-Warshall, która będzie szybsza na rzadkich matrycach.
Najpierw przypomnijmy sobie, co robi ten algorytm:
Niech będzie macierzą odległości. Na początku algorytmu M í , j jest waga krawędzi i → j . Jeśli to krawędź nie istnieje wówczas M I , J = ∞ .M.M.ja , ji → jM.ja , j= ∞
Algorytm ma kroków. W kroku k algorytmu dla każdej pary węzłów i , j ustawiamyV.kja , j
M.ja , j← min { Mja , j, Mja , k+ M.k , j} .
M.ja , k= ∞M.k , j= ∞ree gi n( k ) ⋅ de go U T( k )ree gi n( k )ree go U T( k )kM.
k
mi= O ( V)k = 0O ( 1 )M.O ( V)k = | V.|O ( V2))O ( V3))