Kontrola przechodniości a zamknięcie przechodnie

9

Czy sprawdzenie przechodniości digrapha nie jest łatwiejsze niż (pod względem asymptotycznej złożoności) przyjęcie przejścia przechodniego digrapha? Czy znamy dolną granicę lepiej niż aby ustalić, czy digraf jest przechodni?Ω(n2)

ekayaaslan
źródło
1
Przechowywanie całego zamknięcia przechodniego będzie kosztować dodatkowe miejsce. W przypadku niektórych wykresów powinieneś być w stanie przechwycić i skrócić kontrolę przechodniości bez powrotu do krawędzi. Patrz: Algorytm łączności równoległej , Y Shiloach, U Vishkin - Journal of Al Algorytmy, 1982O(logn)
Chad Brewbaker
1
Tutaj Siek ma uwagi dotyczące implementacji Boost Graph Library boost.org/doc/libs/1_54_0/libs/graph/doc/…
Chad Brewbaker
2
Nie jestem pewien, co rozumiesz przez , ale dolna granica jest prosta - rozważ dla niektórych krawędzi . Każdy algorytm poprosi o sprawdzenie, czy dla wszystkich , w przeciwnym razie krawędź, o którą nie zapytał, może być tą brakującą. jest górną granicą, ponieważ jest to czas potrzebny do obliczenia zamknięcia przechodniego. nΩ(|V|2)Kn{e}e(u,v)Eu,vVO(|V||E|)
RB
2
Rozważ skierowany wykres z wierzchołków: wierzchołki źródłowe , pośrednie wierzchołki które są bezpośrednimi następcami każdego , i zatapianie wierzchołków które są bezpośrednimi następcami każdego z nich . Digraf jest przechodni, jeśli każdy z łuków jest obecny na wykresie. Wymaga to sprawdzenia krawędzi. Z drugiej strony znalezienie zamknięcia przechodniego można wykonać w czasie , gdzie jest wykładnikiem mnożenia macierzy. Są to najbardziej znane granice. n=3ks1,,skt1,,tksiu1,,ukti(si,uj)k2=(n/3)2=Ω(n2)O(nω)ω<2.373
András Salamon,
Czy Twój DAG może mieć jakąś dodatkową strukturę, czy chcesz mieć w pełni ogólne wyniki?
Niel de Beaudrap

Odpowiedzi:

9

Poniżej pokażę: jeśli masz O (n3ε) algorytm czasowy do sprawdzania, czy wykres jest przechodni dla dowolnego ε>0, masz O (n3ε) algorytm czasowy do wykrywania trójkąta w nwykres węzłów, a zatem (na papierze z FOCS'10 ) miałbyś O (n3ε/3) algorytm czasowy do pomnożenia dwóch wartości logicznych n×nmacierze, a zatem w wyniku Fischera i Meyera z lat 70. , oznacza to również O (n3ε/3) algorytm czasowy zamknięcia przechodniego.

Załóżmy, że chcesz wykryć trójkąt w n węzeł G. Możemy teraz utworzyć następujący wykresH. H jest trójstronny z partycjami I,J,K na nwęzły każdy. Tutaj każdy węzełx z G ma kopie xI,xJ,xKW części . Dla każdej krawędzi zI,J,K(u,v)G dodaj skierowane krawędzie (uI,vJ) i (uJ,vK). Dla każdego nonedge(u,v) z G dodaj skierowaną krawędź (uI,vK).

Po pierwsze, jeśli G zawiera trójkąt u,v,w, następnie Hnie jest przechodnie. Wynika to z krawędzi(uI,vJ),(vJ,wK) są w H ale (uI,wK)nie jest. Po drugie, jeśliH nie jest przechodnie, więc musi istnieć jakaś ukierunkowana ścieżka z jakiegoś węzła s do jakiegoś węzła t w H takie, że (s,t) nie jest ukierunkowaną krawędzią H. Najdłuższe ścieżki wH mieć 2 krawędzie, więc każda taka ścieżka musi mieć formę (uI,vJ),(vJ,wK) i (uI,wK) nie jest w H, W związku z tym u,v,w uformować trójkąt w G.

dziewice
źródło
1
Znalezienie zamknięcia przechodniego jest zasadniczo takie samo jak mnożenie macierzy. Pytanie brzmi, czy wykładnik w dolnej granicy można podnieść z 2, czy wykładnik w górnej granicy można obniżyć z 2,373. Wykazany przez ciebie ciąg rozumowania pokazuje, że nawet optymalneO(n2) algorytm sprawdzania przechodniości dawałby tylko O(n2.667) algorytm czasowy dla przejścia przechodniego - ale już mamy O(n2.373)algorytm czasowy.
András Salamon
Chodzi o to, że istnieją redukcje czarnej skrzynki. The O (n2.373) algorytm czasu jest daleki od praktycznego. Praktyczny algorytm sprawdzania przechodniości, który działa w czasie subububowym, przy powyższych redukcjach, sugeruje jednak również praktyczny algorytm dla BMM, a tym samym zamykanie przechodnie. Ponadto, nawet jeśli nie przejmujesz się praktycznymi algorytmami, jest całkiem możliwe, że utrata wykładnika z papieru FOCS'10 nie jest konieczna, a wykrywanie trójkątów jest prawdopodobnie równoważne BMM.
virgi
No i oczywiście, możemy po prostu oprzeć twardość problemu przechodniości tylko na założonej twardości detekcji trójkąta. Zauważ, że nie ma znanych dolnych granic lepszych niżn2 do wykrywania trójkątów, a najlepsza górna granica to O(nω).
virgi
Mamy już podklubiczny praktyczny algorytm, wykorzystujący dowolną metodę szybkiego mnożenia macierzy: patrz na przykład cacm.acm.org/magazines/2014/2/…
András Salamon
2
W cytowanym przez Ballarda i wsp. Cytowanym artykule mowa jest w szczególności o algorytmie Strassena. Z tego co wiem, żaden z algorytmów mnożenia macierzy, które używają granicy rangi, nie jest praktyczny. W szczególności nie znam praktycznych algorytmów dla jakichkolwiek ograniczeńω niższe niż 2.78.
virgi
7

Tak to wygląda Ω(n2)jest najlepiej znaną dolną granicą, ponieważ dowolna dolna granica oznacza dolną granicę dla mnożenia macierzy boolowskiej. Wiemy, że kontrolę przechodniości można uzyskać za pomocą jednego mnożenia macierzy boolowskiej, to znaczyG jest przechodnie, jeśli i tylko jeśli G=G2.

ekayaaslan
źródło
4

Ustalenie, czy DAG jest przechodnie, jest tak trudne, jak podjęcie decyzji, czy ogólny digraf jest przechodni (co przywraca nas do poprzedniego pytania :)).

Załóżmy, że masz algorytm działający w czasie O(f(n)) do decydowania, czy DAG jest przechodnie.

Biorąc pod uwagę ukierunkowany wykres G, możesz użyć następującego losowego algorytmu, aby zdecydować, czy G jest przechodni w czasie O(f(n)log(1δ)) i prawdopodobieństwo błędu δ:

 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.

Teraz jest oczywiste, że jeśli G był przechodni, ten algorytm zwraca true.

Załóżmy teraz Gnie był przechodni. Pozwoliće1=(vi,vj),e2=(vj,vk)E takie, że (vi,vk)E (muszą być takie krawędzie jak Gnie jest przechodni). Prawdopodobieństwo, żee1,e2G jest 16, dlatego w każdej iteracji prawdopodobieństwo obliczenia algorytmu G nie był przechodni 16 i po O(log(δ)) iteracje prawdopodobieństwo awarii jest co najwyżej δ.

RB
źródło
1
Dziękuję za odpowiedź. Załóżmy, że mam algorytm do decydowania, czy DAG jest przechodniO(f(n)) taki f(n)=Ω(n2). Następnie mogę zdecydować, czy skierowany wykres G jest przechodniO(f(n))-czas jak; 1) Uzyskaj silnie połączony digraf wO(n2)-czas. 2) Sprawdź, czy każdy element jest kompletnyO(n2)-czas. 3) Sprawdź, czy każda para komponentów, dla których istnieje krawędź w digrafie komponentów, jest podwójna, tzn. Czy jest krawędź od każdego wierzchołka jednego komponentu do każdego wierzchołka drugiego komponentu wO(n2)-czas. 4) Sprawdź, czy przechodnie digrafu komponentu jest wO(f(n))-czas.
ekayaaslan
1

Myślę, że powinno to być wykonalne w czasie liniowym, tj O(n+m) gdzie n to liczba wierzchołków i mliczba krawędzi. Może dostosowując schemat przejścia wykresu do ukierunkowanego ustawienia? Punktem wyjścia może być opisany tutaj LexBFS / LexDFS ; w przypadku grafów ukierunkowanych wydaje się, że powinniśmy używać sortowania topologicznego zamiast DFS, więc może jest to możliwe przy użyciu jakiegoś algorytmu LexTSA ?

Super9
źródło
2
Jest to mało prawdopodobne IMO, ponieważ dałoby probabilistyczny algorytm liniowego czasu do sprawdzania przechodniości w ogólnych digrafach, patrz moja odpowiedź.
RB
0

Jeśli chodzi o poprzednią odpowiedź, oto prosty sposób zdefiniowania takiego algorytmu. Przypisz do każdego wierzchołkax indeks i(x), zainicjowano na 0. Dla każdegox, pozwolić M(x)oznaczają zbiór wskaźników jego sąsiadów. Symulujemy sortowanie topologiczne, utrzymując zestawRniezbadanych wierzchołków, zainicjowanych do całego zestawu. Na każdym kroku wykonujemy następujące czynności:

  1. Wybierz wierzchołek xR którego multiset M(x) jest minimalny (w kolejności wielosetowej);

  2. Aktualizacja i(x) do bieżącego licznika pętli i usuń x od R.

Czy można zastosować ten algorytm do rozwiązania problemu lub do innej aplikacji?

NisaiVloot
źródło
Byłoby to bardziej odpowiednie jako komentarz.
Suresh Venkat