Suponga que no hay auto-bordes en .G
Para cada arista entre el nodo y v j en G , sea E [ i , j ] = 1 y E [ i , j ] = 0 si no hay arista. Calcular n × n matriz C [ i , j ] = ∑ n k = 1 E [ i , k ] ⋅ E [ k , jvivjGE[i,j]=1E[i,j]=0n×n , que proporciona el número de rutas de dos saltos entre cada par de nodos v i y v j . Luego, para el borde entre v i y v j en G, calcule D [ i , j ] = E [ i , j ] ⋅ C [ i , j ] de lo contrario, establezca 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]=∞, que proporciona el número de triángulos de los que forma parte el borde (o infinito si no hay borde). La multiplicación de la matriz necesaria para calcular cuesta O ( n 3 ) (podría calcularse más rápido dependiendo de la dispersión de G ).CO(n3)G
Ahora calcule matriz A , de modo que A [ i , j ] = min ( D [ i , j ] , min k ( D [ i , k ] + D [ k , j ] - E [ i , j ] ) ) . es todos los caminos más cortos enn×nAA[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]−E[i,j]))DAD de longitud hasta dos aumentados para tener en cuenta los caminos que van a lo largo de dos bordes de algún triángulo.
Ahora solo calcule la ruta más corta entre y en en un nuevo gráfico del cual es la matriz de adyacencia (ponderada) usando Dijkstra (ya que todos los pesos de borde son positivos), es decir, y determine si , donde es el cierre sobre el semiring tropical (que da la matriz de distancia).v j G A A ∗ [ i , j ] ≤ k A ∗vivjGAA∗[i,j]≤kA∗