Como Chandra Chekuri señaló en un comentario, podría calcular el cierre transitivo a través de una multiplicación de matriz rápida, resolviendo el problema en tiempo O ( ) (use su método favorito, O ( n 2.376 ) a través de Coppersmith y Winograd, o más prácticamente usando Strassen's O ( n 2.81 )), y esto sería bueno para gráficos densos.norteωnorte2.376norte2,81
Ahora, afirmo que si puede superar este tiempo de ejecución para su problema de gráficos densos, obtendría un algoritmo para la detección de triángulos que es más eficiente que calcular el producto de dos matrices booleanas. La existencia de tal algoritmo es un gran problema abierto.
Reduciré el problema del triángulo al problema de n-pares-DAG-accesibilidad. Supongamos que se nos da un gráfico G en n nodos y queremos determinar si G contiene un triángulo.
Ahora, desde G cree un DAG G 'de la siguiente manera. Cree cuatro copias del conjunto de vértices, , V 2 , V 3 , V 4 . Para copias u i ∈ V i , v i + 1 ∈ V i + 1 para i = 1 , 2 , 3 , agregue un borde ( u i , v i + 1 ) iff ( u , v )V1V2V3V4 4tuyo∈ Vyovi + 1∈ Vi + 1i = 1 , 2 , 3( uyo, vi + 1)( u , v )estaba en G. Ahora bien, si nos preguntamos si existe un camino entre cualquiera de los pares para todos u ∈ G, entonces esto exactamente se pregunta si hay un triángulo en G . El gráfico actual tiene 4 n nodos y estamos preguntando acerca de n pares. Sin embargo, podemos agregar 2 n nodos ficticios aislados y tener 3 n consultas en su lugar (agregando una consulta para 2 n pares distintos ( y , d ) donde y ∈ V 2(u1,u4)u∈G4nn2n3n2n(y,d) y d un maniquí), obteniendo así un 6 n ejemplo -node de exactamente su problema.y∈V2∪V3d6n