Contrôle de la transivité vs fermeture transitive


9

La vérification de la transitivité d'un digraphe n'est-elle pas plus facile que (en termes de complexité asymptotique) de prendre la fermeture transitive du digraphe? Connaissons-nous mieux une borne inférieure que pour déterminer si un digraphe est transitif ou non?Ω(n2)


1
Le stockage de la fermeture transitive entière vous coûtera de l'espace supplémentaire. Pour certains graphiques, vous devriez pouvoir accrocher et raccourcir le contrôle de transitivité sans revoir les bords. Voir: Un algorithme de connectivité parallèle , Y Shiloach, U Vishkin - Journal of Algorithms, 1982O(logn)
Chad Brewbaker

1
Ici, Siek a des notes de mise en œuvre pour la bibliothèque de graphiques Boost boost.org/doc/libs/1_54_0/libs/graph/doc/…
Chad Brewbaker

2
Je ne sais pas ce que vous entendez par , mais une borne inférieure de Ω ( | V | 2 ) est simple - considérez K n{ e } pour une arête e . Tout algorithme demandera de vérifier si ( u , v ) E pour tout u , v V , sinon le bord qu'il n'a pas demandé pourrait être celui manquant. O ( | V || E | )nΩ(|V|2)Kn{e}e(u,v)Eu,vVO(|V||E|)est une borne supérieure, car c'est le temps qu'il faut pour calculer une fermeture transitive.
RB

2
Considérons un graphe orienté avec sommets: sommets source s 1 , , s k , sommets intermédiaires t 1 , , t k qui sont les successeurs immédiats de chaque s i , et creux sommets u 1 , , u k qui sont les successeurs immédiats de chaque t i . Le digraphe est transitif si chacun des arcs ( s i , u j )n=3ks1,,skt1,,tksiu1,,ukti(si,uj)est présent dans le graphique. Cela nécessite de vérifier arêtes. D'un autre côté, trouver la fermeture transitive peut être fait en temps O ( n ω ) , où ω < 2,373 est l'exposant de la multiplication matricielle. Ce sont les limites les plus connues. k2=(n/3)2=Ω(n2)O(nω)ω<2.373
András Salamon

Votre DAG a-t-il éventuellement une structure supplémentaire ou souhaitez-vous des résultats entièrement généraux?
Niel de Beaudrap

Réponses:


9

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


1
Trouver une fermeture transitive est essentiellement la même chose que la multiplication matricielle. La question est de savoir si l'exposant dans la limite inférieure peut être augmenté de 2, ou l'exposant dans la limite supérieure peut être abaissé de 2,373. La chaîne de raisonnement vous démontrer montre que même un optimal algorithme pour le contrôle de la transitivité ne ferait que donner un O ( n 2,667 ) algorithme de temps pour la fermeture transitive - mais nous avons déjà un O ( n 2,373 ) algorithme de temps. O(n2)O(n2.667)O(n2.373)
András Salamon

Le fait est qu'il existe des réductions de boîte noire. L' algorithme de temps O ( ) est loin d'être pratique. Un algorithme de vérification de la transitivité pratique qui s'exécute en temps subcubique par les réductions ci-dessus implique également un algorithme pratique pour la BMM et donc la fermeture transitive. De plus, même si vous ne vous souciez pas des algorithmes pratiques, il est fort possible que la perte d'exposant du papier FOCS'10 ne soit pas nécessaire, et la détection de triangle est probablement équivalente à BMM. n2.373
virgi

Oh et bien sûr, nous pourrions simplement fonder la dureté du problème de transitivité uniquement sur la dureté présumée de la détection du triangle. Notez qu'il n'y a pas de bornes inférieures connues mieux que pour la détection de triangle, et la meilleure borne supérieure est O ( n ω ) . n2O(nω)
virgi

Nous avons déjà un algorithme pratique sous-cubique, en utilisant n'importe quelle méthode de multiplication matricielle rapide: voir par exemple cacm.acm.org/magazines/2014/2/…
András Salamon

2
ω2.78


4

Déterminer si un DAG est transitif est aussi difficile que de décider si un digraphe général est transitif (ce qui nous ramène à votre question précédente :)).

O(f(n))

GGO(f(n)log(1δ))δ

 1. for $O(\log{\frac{1}{\delta}})$ iterations:

   1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.

   1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).

   1.3. If $G'$ (which is acyclic) is not transitive return false.

 2. return true.

G

Ge1=(vi,vj),e2=(vj,vk)E(vi,vk)EGe1,e2G16G16O(log(δ))δ


1
O(f(n))f(n)=Ω(n2)O(f(n))O(n2)O(n2)O(n2)O(f(n))

1

O(n+m)nm


2
Cela est peu probable IMO, car cela donnerait un algorithme de temps linéaire probabiliste pour la vérification de la transitivité dans les digraphes généraux, voir ma réponse.
RB

0

xi(x)0xM(x)R

  1. xRM(x)

  2. i(x)xR

Cet algorithme peut-il être utilisé pour votre problème ou pour une autre application?


Ce serait plus approprié comme commentaire.
Suresh Venkat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.