Oto podział na unii/znaleźć algorytm rozłącznych zestaw lasach na wikipedia:Union/Znajdź algorytmu bez unii W rankingu dla struktury danych lasy rozłączne ustawiony
- Barebone rozłączne-set lasy ... (
O(n)
)- ... z unii w rankingu ... (teraz poprawiła się
O(log(n)
)- ... z kompresją ścieżki (teraz poprawiła się
O(a(n))
skutecznieO(1)
)
- ... z kompresją ścieżki (teraz poprawiła się
- ... z unii w rankingu ... (teraz poprawiła się
unii W rankingu Wdrożenie wymaga, aby każdy węzeł utrzymuje pole rank
dla celów porównawczych. Moje pytanie brzmi: czy związek według rangi jest wart tej dodatkowej przestrzeni? Co się stanie, jeśli pominiemy związek według rangi i zamiast tego zrobię tylko kompresję ścieżek? Czy to wystarczająco dobre? Jaka jest teraz amortyzowana złożoność?
Komentarz składa, że zakłada, że związek o randze bez kompresji ścieżki (zamortyzowanego O(log(n)
złożoność) jest wystarczająca dla większości praktycznych zastosowań. To jest poprawne. To, o co pytam, jest odwrotne: co, jeśli pominiesz związek według rangi i TYLKO zrobisz kompresję ścieżek?
W pewnym sensie kompresja ścieżki jest dodatkowym krokiem w celu poprawy unii według rangi i dlatego ten dodatkowy krok można pominąć bez katastrofalnych konsekwencji. Ale czy związek po klasie jest koniecznym pośrednim krokiem do kompresji ścieżki? Czy mogę go pominąć i przejść od razu do kompresji ścieżki, czy może to być katastrofa?
Zwrócono również uwagę, że bez związków według rang, powtarzające się związki mogłyby stworzyć strukturę o podobnej strukturze. Oznacza to, że operacja kompresji z pojedynczą ścieżką może w najgorszym przypadku zająć O(n)
. To oczywiście będzie miało wpływ na przyszłe operacje, więc to, w jaki sposób to się dzieje, gdy amortyzuje się wiele operacji, jest tym, co mnie bardziej interesuje.
Mój ulubiony papier na to: Yossi Shiloach, Uzi Vishkin: An O (log n) Równoległy algorytm łączności. J. Algorithms 3 (1): 57-67 (1982) –
Z drugiej strony, nawet jeśli * przyszły * proces kompresji z pojedynczą ścieżką mógłby potencjalnie przyjąć najgorszy przypadek 'O (n)', to najgorsza ścieżka ulegają kompresji z powodu tej operacji, więc nie jest tak, że ten sam najgorszy czas może wystąpić wielokrotnie - przynajmniej nie na tej samej ścieżce lub jakiejkolwiek jego części. Dlatego, jak sądzę, analiza najgorszego przypadku powtórzenia operacji może być inna od najgorszej z pojedynczych operacji? – rwong