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?
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?
Odpowiedzi:
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 n wykres 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×n macierze, 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 wn węzeł G . Możemy teraz utworzyć następujący wykresH . H jest trójstronny z partycjami I,J,K na n węzły każdy. Tutaj każdy węzełx z G ma kopie xI,xJ,xK W 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śliG zawiera trójkąt u,v,w , następnie H nie 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 .
źródło
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 .
źródło
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 czasieO(f(n)) do decydowania, czy DAG jest przechodnie.
Biorąc pod uwagę ukierunkowany wykresG , 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 ≤δ :
Teraz jest oczywiste, że jeśliG był przechodni, ten algorytm zwraca true.
Załóżmy terazG nie był przechodni. Pozwoliće1=(vi,vj),e2=(vj,vk)∈E takie, że (vi,vk)∉E (muszą być takie krawędzie jak G nie jest przechodni). Prawdopodobieństwo, żee1,e2∈G′ 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 δ .
źródło
Myślę, że powinno to być wykonalne w czasie liniowym, tjO(n+m) gdzie n to liczba wierzchołków i m liczba 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 ?
źródło
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 zestawR niezbadanych wierzchołków, zainicjowanych do całego zestawu. Na każdym kroku wykonujemy następujące czynności:
Wybierz wierzchołekx∈R którego multiset M(x) jest minimalny (w kolejności wielosetowej);
Aktualizacjai(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?
źródło