Giả sử không có tự cạnh trong .G
Đối với mỗi cạnh giữa nút và trong , hãy để và nếu không có cạnh. Tính ma trận , đưa ra số lượng đường dẫn hai bước giữa mỗi cặp nút và . Sau đó, cho cạnh giữa và trong tính nếu không đặt , sẽ cho số lượng tam giác cạnh là một phần của (hoặc vô cực nếu không có cạnh). Phép nhân ma trận cần thiết để tính toánv j G E [ i , j ] = 1 E [ i , j ] = 0 n × n C [ i , j ] = ∑ n k = 1 E [ i , k ] ⋅ E [ k , j ] v i v j v i v j G D [ ivivjGE[i,j]=1E[i,j]=0n×nC[i,j]=∑nk=1E[i,k]⋅E[k,j]vTôivjvTôivjGD [D [ i , j ] = E[ tôi , j ] ⋅ C[ i , j ]C O ( n 3 ) GD [ i , j ] = ∞C chi phí (có thể được tính nhanh hơn tùy thuộc vào độ thưa của ).Ô ( n3)G
Bây giờ hãy tính ma trận , sao cho . là tất cả các đường dẫn ngắn nhất trong có độ dài lên đến hai lần tăng để tính các đường đi dọc theo hai cạnh của một số tam giác.A A [ i , j ] = min ( D [ i , j ] , min k ( D [ i , k ] + D [ k , j ] - En × nMộtA DA [ i , j ] = phút (D[i,j],mink(D[i,k]+D[k,j]−E[i,j]))AD
Bây giờ chỉ cần tính toán đường đi ngắn nhất giữa và trong trên biểu đồ mới trong đó là ma trận kề (có trọng số) sử dụng Dijkstra (vì tất cả các trọng số cạnh đều dương) và xác định xem , trong đó là kết thúc của nửa cung nhiệt đới (cung cấp ma trận khoảng cách).v j G Một Một * [ i , j ] ≤ k Một *vivjGAA∗[i,j]≤kA∗