Menganggap tidak ada self-tepi di .G
Untuk setiap tepi antara simpul dan v j di G , misalkan E [ i , j ] = 1 , dan E [ i , j ] = 0 jika tidak ada tepi. Hitung n × n matriks C [ i , j ] = Σ nvivjGE[i,j]=1E[i,j]=0n×n , yang memberikan jumlah jalur dua-hop antara masing-masing pasangan node v i dan v j . Kemudian untuk edge antara v i dan v j dalam G menghitung D [ i , j ] = E [ i , j ] ⋅ C [ i , j ] jika tidak maka set 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]=∞, Yang memberi jumlah segitiga tepi adalah bagian dari (atau tak terhingga jika tidak ada tepi). Penggandaan matriks yang diperlukan untuk menghitung biaya O ( n 3 ) (dapat dihitung lebih cepat tergantung pada tingkat G ).CO(n3)G
Sekarang hitung matriks A , sedemikian sehingga A [ i , j ] = min ( D [ i , j ] , min k ( D [ i , k ] + D [ k ,n×nA . A adalah semua jalur terpendek di DA[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]−E[i,j]))AD panjang hingga dua ditambah untuk menjelaskan jalur yang melewati dua sisi beberapa segitiga.
Sekarang cukup hitung lintasan terpendek antara dan v j dalam G pada grafik baru yang A adalah matriks adjacency (tertimbang) menggunakan Dijkstra (karena semua bobot tepi positif) yaitu dan tentukan apakah A ∗vivjGA , di mana A ∗ adalah penutupan semiring tropis (yang memberikan matriks jarak).A∗[i,j]≤kA∗