Supponiamo che in non ci siano spigoli .G
Per ogni fronte tra nodo e v j in G , sia E [ i , j ] = 1 , ed E [ i , j ] = 0 se non c'è bordo. Calcola n × n matrice C [ i , j ] = ∑ n k = 1 E [ i , k ] ⋅ E [ k , jvivjGE[i,j]=1E[i,j]=0n×n , che fornisce il numero di percorsi a due hop tra ciascuna coppia di nodi v i e v j . Quindi per il bordo tra v i e v j nelcalcolo G D [ i , j ] = E [ i , j ] ⋅ C [ i , j ] altrimenti imposta D [ i , j ] = ∞C[i,j]=∑nk=1E[i,k]⋅E[k,j]vivjvivjGD[i,j]=E[i,j]⋅C[i,j]D[i,j]=∞, che indica il numero di triangoli di cui fa parte il bordo (o l'infinito se non c'è bordo). La moltiplicazione della matrice necessaria per calcolare i costi O ( n 3 ) (potrebbe essere calcolata più velocemente a seconda della scarsità di G ).CO(n3)G
n×nAA DA[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]−E[i,j]))AD
Ora calcola solo il percorso più breve tra e in su un nuovo grafico di cui è la matrice di adiacenza (ponderata) usando Dijkstra (poiché tutti i contorni sono positivi) cioè e determina se , dove è la chiusura sopra il semiring tropicale (che dà la matrice della distanza).v j G A A ∗ [ i , j ] ≤ k A ∗vivjGAA∗[i,j]≤kA∗