Instancia: un gráfico no dirigido con dos vértices distinguidos , y un entero .
Pregunta: ¿Existe una ruta en , de modo que la ruta se cruce en la mayoría de los triángulos ? (Para este problema, se dice que una ruta se cruza con un triángulo si la ruta contiene al menos un borde del triángulo).
cc.complexity-theory
graph-algorithms
Andras Farago
fuente
fuente
Respuestas:
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 , jvi vj G E[i,j]=1 E[i,j]=0 n×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] vi vj vi vj G D[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 ).C O(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×n A A[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]−E[i,j])) DA D 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 ∗vi vj G A A∗[i,j]≤k A∗
fuente