Ci-dessous, je vais montrer ce qui suit: si vous avez un algorithme de temps O ( ) pour vérifier si un graphe est transitif pour tout ε > 0 , alors vous avez un algorithme de temps O ( n 3 - ε ) pour détecter un triangle dans un graphique à n nœuds, et donc (par un article de FOCS'10 ) vous auriez un algorithme de temps O ( n 3 - ε / 3 ) pour multiplier deux matrices booléennes n × n , et donc par un résultat de Fischer et Meyer des années 70 , cela implique également un O ( n 3 -n3−εε>0n3−εnn3−ε/3n×n ) algorithme de temps pour la fermeture transitive.n3−ε/3
Supposons que vous voulez détecter un triangle dans un noeud G . Nous pouvons maintenant créer le graphique H suivant . H est tripartite avec les partitions I , J , K sur n nœuds chacune. Ici , chaque noeud x de G a des copies x I , x J , x K dans les parties I , J , K . Pour chaque arête ( u , v ) de G, ajoutez des arêtes dirigées (nGHHI,J,KnxGxI,xJ,xKI,J,K(u,v)G et ( u J , v K ) . Pour chaque non-bord ( u , v ) de G, ajoutez l'arête dirigée ( u I , v K ) .(uI,vJ)(uJ,vK)(u,v)G(uI,vK)
Premièrement, si contient un triangle u , v , w , alors H n'est pas transitif. En effet, les arêtes ( u I , v J ) , ( v J , w K ) sont en H mais ( u I , w K ) ne l'est pas. Deuxièmement, si H n'est pas transitif, alors il doit exister un chemin dirigé de certains nœuds s vers un nœud t dans H tel que (Gu,v,wH(uI,vJ),(vJ,wK)H(uI,wK)HstH est pas un bord dirigé en H . Cependant, les chemins les plus longs dans H ont 2 bords, et donc tout chemin doit être de la forme ( u I , v J ) , ( v J , w K ) et ( u I , w K ) n'est pas dans H , d'où u , v , w , forment un triangle dans G .(s,t)HH2(uI,vJ),(vJ,wK)(uI,wK)Hu,v,wG