Vereinigung nach Rang und Komponenten
Halten Sie Bäume flach und zählen Sie Gruppen
Vereinigung nach Rang und Komponenten ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Union kann träge sein
Eine einfache Union hängt eine Wurzel unter eine andere. Bei unvorsichtiger Umsetzung kann dadurch ein hoher, langsamer Baum entstehen. Wir brauchen daher eine klügere Methode zum Zusammenführen von Wurzeln.
Die Grundidee
Union by rank hängt den kürzeren Baum immer unter den höheren. Flache Bäume machen jedes spätere find schneller. 📏
Was Rang bedeutet
Rank ist eine Schätzung der Höhe eines Baums. Jedes Element beginnt mit Rang 0, da ein einzelner Knoten keine darunterliegende Tiefe besitzt.
rank = [0] * nDen kürzeren unter den höheren hängen
Vergleichen Sie die Ränge der beiden Wurzeln. Die Wurzel mit dem kleineren Rang wird zum Kind, damit der kombinierte Baum möglichst flach bleibt.
if rank[ra] < rank[rb]:
parent[ra] = rbBei Gleichstand steigt der Rang
Wenn beide Wurzeln den gleichen Rang haben, wählen Sie eine beliebige als neue Wurzel und erhöhen ihren Rang um 1, da der Baum gerade um eine Ebene gewachsen ist.
else:
parent[rb] = ra
if rank[ra] == rank[rb]:
rank[ra] += 1Variante: Union by Size
Eine beliebte Alternative ist union by size: Hängen Sie die kleinere Menge unter die größere. Das ist ebenso effektiv und liefert die Gruppengrößen kostenlos mit.
Komponenten zählen
Beginnen Sie mit einer Anzahl von n, da jedes Element seine eigene Gruppe bildet. Jede erfolgreiche Union verbindet zwei Gruppen zu einer, also verringern Sie die Anzahl.
components = nLeere Unions überspringen
Wenn zwei Elemente bereits dieselbe Wurzel haben, bewirkt die Union nichts. Verringern Sie die Anzahl nur, wenn sich ihre Wurzeln tatsächlich unterscheiden.
if find(a) != find(b):
union(a, b)
components -= 1Rang plus Kompression
Kombinieren Sie union by rank mit Pfadkompression, dann läuft DSU in inverser Ackermannzeit – für jede Eingabe aus der Praxis effektiv konstant. ⚡
Gruppengrößen bei Bedarf
Mit union by size können Sie die Größe jeder Gruppe sofort abfragen: Lesen Sie einfach die am Wurzelknoten des Elements gespeicherte size aus.
group = size[find(x)]Wo dies hilft
Das Zählen von Zusammenhangskomponenten beantwortet klassische Fragen wie die Anzahl von Freundeskreisen oder zusammenhängenden Bereichen nach einer Folge von union-Aufrufen. 🌐
Kurztest
Überlegen Sie, wie sich der Komponenten-Zähler verändert.
Zusammenfassung
Sie haben union by rank gelernt, um Bäume flach zu halten, und wie Sie die Anzahl der Komponenten und Gruppengrößen verfolgen. DSU ist jetzt extrem schnell! 🎉
Lerne Coding Interview Prep mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 90
- Lektionen
- 360
Häufig gestellte Fragen
Ist die Lektion „Vereinigung nach Rang und Komponenten“ kostenlos?
Ja — der vollständige Text von „Vereinigung nach Rang und Komponenten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Vereinigung nach Rang und Komponenten“?
Halten Sie Bäume flach und zählen Sie Gruppen Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Vereinigung nach Rang und Komponenten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- DSU mit Pfadkompression
- Vereinigung nach Rang und Komponenten
- Minimaler Spannbaum mit Kruskal
- Prims MST mit einem Heap