Hier ist eine Aufteilung auf die Vereinigung/finden Algorithmus für disjunkte Satz Wälder auf wikipedia:Union/finden Algorithmus ohne Vereinigung von Rang für disjunkte Satz Wälder Datenstruktur
- Barebone disjoint-Set Wälder ... (
O(n)
)- ... mit Vereinigung von Rang ... (jetzt
O(log(n)
) verbesserte- ... mit Pfadkompression (jetzt
O(a(n))
verbessert, effektiv 012.)
- ... mit Pfadkompression (jetzt
- ... mit Vereinigung von Rang ... (jetzt
nach Rang Implementieren Union erfordert, dass jeder Knoten ein rank
Feld zu Vergleichszwecken hält. Meine Frage ist, ist Union um Rang diesen zusätzlichen Raum wert? Was passiert, wenn ich die Vereinigung nach Rang überspringe und stattdessen nur die Pfadkomprimierung vornehme? Ist es gut genug? Wie hoch ist die amortisierte Komplexität?
Ein Kommentar wird das bedeutet, dass Vereinigung von Rang ohne Pfad Kompression (O(log(n)
Komplexität abgeschrieben) ist für die meisten praktische Anwendung ausreichend. Das ist richtig. Was ich frage, ist umgekehrt: Was passiert, wenn Sie die Vereinigung nach Rang überspringen und NUR die Pfadkomprimierung durchführen?
In gewisser Hinsicht ist die Pfadkomprimierung ein zusätzlicher Schritt, um die Vereinigung nach Rang zu verbessern, und deshalb kann dieser zusätzliche Schritt ohne verhängnisvolle Konsequenzen ausgelassen werden. Aber ist Union nach Rang ein notwendiger Zwischenschritt zur Pfadkompression? Kann ich es überspringen und direkt zur Pfadkompression wechseln, oder wird das katastrophal sein?
Es wurde auch darauf hingewiesen, dass wiederholte Vereinigungen ohne eine Vereinigung nach Rang eine Linked-List-ähnliche Struktur erzeugen könnten. Dies bedeutet, dass eine Single-Path-Kompressionsoperation im schlimmsten Fall O(n)
dauern könnte. Dies würde sich natürlich auf zukünftige Operationen auswirken. Wie sich das auswirkt, wenn es über viele Operationen amortisiert wird, interessiert mich mehr.
auf Mein Lieblings Papier dies: Yossi Shiloach, Uzi Vishkin: Ein O (log n) Paralleler Konnektivitätsalgorithmus. J. Algorithms 3 (1): 57-67 (1982) –
Auf der anderen Seite wird, selbst wenn eine * zukünftige * Einpfadkompressionsoperation möglicherweise den schlechtesten Fall 'O (n)' Zeit nehmen könnte, dieser Worst-Case-Pfad aufgrund dieser Operation komprimiert werden, so dass die gleiche Worst-Case-Zeit nicht wiederholt auftreten kann - zumindest nicht auf demselben Pfad oder irgendeinem Teil davon. Daher könnte sich die Analyse für den Worst-Case-Wiederholungsbetrieb von der Worst-Case-Einzeloperation unterscheiden, denke ich? – rwong