Złożoność znalezienia związku z kompresją ścieżki, bez rangi


10

Wikipedia twierdzi, że związek według rangi bez kompresji ścieżki daje zamortyzowaną złożoność czasu O(log⁡n)oraz że zarówno połączenie według kompresji rang, jak i ścieżki zapewnia zamortyzowaną złożoność czasową O(α(n)) (gdzie αjest odwrotnością funkcji Ackermana). Jednak nie wspomina o czasie działania kompresji ścieżki bez rangi związkowej, co zwykle realizuję sam.

Jaka jest zamortyzowana złożoność czasowa znalezienia związku z optymalizacją kompresji ścieżki, ale bez połączenia według optymalizacji rang?


5
Zauważ, że α(n) jest odwrotnością funkcji Ackermana, a nie 1/ZA(n,n)). Tutaj „odwrotność” oznacza odwrotność jako funkcję, a nie odwrotność: tzn. Jeślifa(n)=ZA(n,n), α(n)=f−1(n), nie 1/f(n).
— DW

Rozumiem, że jest to stosunkowo stare pytanie, ale zobacz moją odpowiedź i odpowiedni artykuł: epubs.siam.org/doi/abs/10.1137/S0097539703439088 . Mogłem przeoczyć jakiś szczegół lub dwa podczas kopiowania poza granice. W takim przypadku zaproponuj edycję :-)
— BearAqua

Odpowiedzi:


4

Seidel i Sharir udowodnili w 2005 r. [1], że z grubsza korzystają z kompresji ścieżki z arbitralnym łączeniem m operacje mają z grubsza złożoność O((m+n)log⁡(n)).

Patrz [1], sekcja 3 (Arbitrary Linking): Let fa(m,n) oznacza środowisko wykonawcze union-find with m operacje i nelementy. Udowodniono, że:

Roszczenie 3.1. Dla dowolnej liczby całkowitejk>1 mamy f(m,n)≤(m+(k−1)n)⌈logk⁡(n)⌉.

Zgodnie z [1] ustawienie k=⌈m/n⌉+1 daje

f(m,n)≤(2m+n)log⌈m/n⌉+1⁡n
.

Podobną granicę podał stosując bardziej złożoną metodę Tarjan i van Leeuwen w [2], Rozdział 3:

Lemat 7 z [2]. Przypuszczaćm≥n. W dowolnej sekwencji zestawów operacji realizowanych przy użyciu dowolnej formy zagęszczania i naiwnego łączenia całkowita liczba węzłów na ścieżkach wyszukiwania wynosi co najwyżej(4m+n)⌈log⌊1+m/n⌋⁡n⌉ Przy zmniejszeniu o połowę i naiwnym łączeniu całkowita liczba węzłów na ścieżkach wyszukiwania wynosi co najwyżej (8m+2)n)⌈log⌊1+m/n⌋⁡(n)⌉.

Lemat 9 z [2]. Przypuszczaćm<n. W dowolnej sekwencji operacji ustawiania realizowanych przy użyciu kompresji i naiwnego łączenia całkowita liczba węzłów na ścieżkach wyszukiwania wynosi co najwyżejn+2)m⌈log⁡n⌉+m.

[1]: R. Seidel i M. Sharir. Analiza z góry na dół kompresji ścieżki. Siam J. Computing, 2005, tom. 34, nr 3, str. 515–525.

[2]: R. Tarjan i J. van Leeuwen. Analiza najgorszego przypadku zestawu algorytmów unii. J. ACM, tom. 31, nr 2, kwiecień 1984, s. 245–281.


2

Nie wiem, jaki jest zamortyzowany czas działania, ale mogę przytoczyć jeden z możliwych powodów, dla których w niektórych sytuacjach możesz chcieć używać obu zamiast kompresji ścieżki: najgorszy przypadek czasu na operację to Θ(n) jeśli użyjesz tylko kompresji ścieżki, która jest znacznie większa niż jeśli użyjesz zarówno łączenia według rangi, jak i kompresji ścieżki.

Rozważ sekwencję n Operacje unijne złośliwie wybrane w celu uzyskania drzewa głębi n-1(jest to tylko sekwencyjna ścieżka węzłów, gdzie każdy węzeł jest dzieckiem poprzedniego węzła). Następnie wykonanie pojedynczej operacji Znajdź w najgłębszym węźle zajmujeΘ(n)czas. Zatem najgorszy możliwy czas działania przypada na jedną operacjęΘ(n).

W przeciwieństwie do optymalizacji łączenia według rang, najgorszy możliwy jest czas działania na operację O(log⁡n): żadna operacja nie może trwać dłużej niż O(log⁡n). W przypadku wielu aplikacji nie będzie to miało znaczenia: liczy się tylko całkowity czas działania wszystkich operacji (tj. Zamortyzowany czas działania), a nie najgorszy czas dla pojedynczej operacji. Jednak w niektórych przypadkach najgorszy przypadek na operację może mieć znaczenie: na przykład skrócenie najgorszego przypadku na operację doO(log⁡n) może być przydatny w interaktywnej aplikacji, w której chcesz się upewnić, że żadna pojedyncza operacja nie może spowodować dużego opóźnienia (np. chcesz mieć gwarancję, że żadna pojedyncza operacja nie spowoduje zawieszenia aplikacji na długi czas) lub w czasie rzeczywistym aplikacja, w której chcesz mieć pewność, że zawsze będziesz spełniać gwarancje w czasie rzeczywistym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.