/
/
·
·
/
/
·
·
  • Einführung
  • Die Idee in einem Satz
  • Eigenschaften jedes Spannbaums
  • Voraussetzung
  • Kruskal-Algorithmus
  • Prim-Algorithmus
  • Prim vs. Kruskal
  • Cut-Eigenschaft (Beweis-Werkzeug)
  • MST ist nicht eindeutig
  • Beispiel
  • Klausur-Faustregeln
  • Häufige Stolpersteine
ThemenAlgorithmenMinimale Spannbäume (Prim, Kruskal)
Algorithmen·4Lerneinheiten·20min·Stand17.07.2026

Minimale Spannbäume (Prim, Kruskal).

Minimale Spannbäume (MST), Prim & Kruskal

Du sollst alle Städte mit Glasfaser verbinden, möglichst billig. Welche Kabel-Strecken? Das ist das MST-Problem: in einem zusammenhängenden, gewichteten Graphen den billigsten Baum finden, der alle Knoten verbindet. Klausur-Klassiker in 11/17 WInf-Algo-Klausuren, zwei Algorithmen (Prim, Kruskal), beide greedy.

Spannbaum: Teilgraph, der alle Knoten enthält + ein Baum ist (zusammenhängend + zyklenfrei + V−1V-1V−1 Kanten). Minimaler Spannbaum (MST): Spannbaum mit minimalem Gesamtgewicht der Kanten.

Bei VVV Knoten und Spannbaum:

  • Genau V−1V - 1V−1 Kanten
  • Kein Zyklus
  • Zusammenhängend (jeder Knoten erreichbar)

Wenn du eine Kante hinzufügst → ein Zyklus entsteht. Wenn du eine Kante entfernst → Graph zerfällt in zwei Komponenten.

MST ist nur definiert für zusammenhängende, ungerichtete, gewichtete Graphen. Bei gerichteten Graphen heißt das Konzept "Arboreszenz" und nutzt andere Algorithmen (Edmonds).

Greedy auf Kanten. Iteriere durch alle Kanten in aufsteigender Gewicht-Reihenfolge und nimm jede, die KEINEN Zyklus schließt.

kruskal(graph):
    mst = []
    sort edges by weight ascending
    init union-find with all nodes
    for edge (u, v) in sorted edges:
        if find(u) != find(v):  # nicht im selben Cluster
            mst.append(edge)
            union(u, v)
            if len(mst) == V - 1: break
    return mst

Zyklen-Check: Union-Find-Datenstruktur, O(α(n))≈O(1)O(\alpha(n)) \approx O(1)O(α(n))≈O(1) pro Operation (Inverse Ackermann).

Komplexität: O(Elog⁡E)O(E \log E)O(ElogE) (dominiert von Sortierung).

Greedy auf Knoten. Starte bei einem Knoten, erweitere den Baum schrittweise um die billigste Außen-Kante (Kante mit einem Endpunkt im Baum, einem außerhalb).

prim(graph, start):
    mst = []
    visited = {start}
    pq = PriorityQueue of edges from start
    while len(visited) < V:
        (weight, u, v) = pq.extractMin()
        if v in visited: continue
        mst.append((u, v))
        visited.add(v)
        for each neighbor w of v:
            if w not in visited:
                pq.insert((weight(v, w), v, w))
    return mst

Komplexität: O((V+E)log⁡V)O((V + E) \log V)O((V+E)logV) mit Binary Heap. Wie Dijkstra.

PrimKruskal
StrategieKnoten-orientiert (wachsender Baum)Kanten-orientiert (kleinste Kanten zuerst)
DatenstrukturPriority Queue (Heap)Union-Find + sortierte Kanten
KomplexitätO((V+E)log⁡V)O((V+E) \log V)O((V+E)logV)O(Elog⁡E)O(E \log E)O(ElogE)
Besser fürdichte Graphen (E≈V2E \approx V^2E≈V2)dünne Graphen (E≪V2E \ll V^2E≪V2)
Implementierungwie Dijkstraeinfacher

Beide finden das GLOBALE Optimum (MST ist eindeutig bei eindeutigen Kantengewichten).

Cut-Eigenschaft: Für jeden Cut (Partition der Knoten in zwei nicht-leere Mengen) ist die billigste Kante, die den Cut kreuzt, in JEDEM MST enthalten.

Folgerung: Beide Algorithmen (Prim und Kruskal) addieren in jedem Schritt eine "sichere" Kante, eine, die in mindestens einem MST liegen MUSS.

Bei mehreren Kanten mit gleichem Gewicht kann es mehrere MSTs geben, alle mit dem gleichen Gesamtgewicht. Klausur-Frage: "Ist der MST eindeutig?" → nur wenn alle Kantengewichte verschieden sind.

Graph mit 5 Knoten + 7 Kanten:

  • A-B (4), A-C (2), B-C (3), B-D (5), C-D (1), C-E (6), D-E (4)

Kruskal:

  1. Sortiere: C-D (1), A-C (2), B-C (3), A-B (4), D-E (4), B-D (5), C-E (6)
  2. Nimm C-D (1) → mst
  3. Nimm A-C (2) → mst
  4. Nimm B-C (3) → mst
  5. A-B (4) → würde Zyklus → skip
  6. D-E (4) → mst (V-1=4 Kanten erreicht → fertig)

MST: {C-D, A-C, B-C, D-E}, Gewicht = 1+2+3+4 = 10.

1. MST hat V−1V-1V−1 Kanten, ist zyklenfrei + zusammenhängend.

2. Kruskal: sortiere Kanten, nimm in Reihenfolge wenn kein Zyklus. Union-Find für Zyklen-Check.

3. Prim: starte irgendwo, erweitere mit billigster Außen-Kante. Priority Queue.

4. Beide O(Elog⁡E)O(E \log E)O(ElogE) bzw. O(Elog⁡V)O(E \log V)O(ElogV). Bei dichten Graphen Prim mit Array O(V2)O(V^2)O(V2).

5. Cut-Eigenschaft = Garantie für Greedy-Korrektheit.

1. Algorithmen verwechseln. Prim ist KNOTEN-zentriert (Baum wächst), Kruskal ist KANTEN-zentriert (alle Kanten sortiert).

2. Zyklen bei Kruskal übersehen. Ohne Union-Find prüfst du falsch. Naive Zyklen-Erkennung wäre O(V)O(V)O(V) pro Kante.

3. MST mit Shortest-Path-Tree verwechseln. MST = globales Minimum aller Kanten. SPT (z.B. von Dijkstra) = kürzeste Wege von einer Wurzel. Andere Bäume!

4. Eindeutigkeit annehmen. Bei gleichen Kantengewichten gibts mehrere MSTs.

5. Auf gerichteten Graphen anwenden. MST funktioniert nur auf UNGERICHTETEN Graphen. Gerichtete Variante = Edmonds-Algorithmus.

Ein Graph mit 5 Knoten + 7 Kanten. Beide Algorithmen finden denselben MST mit Gewicht 10.

Sieh:

  • Welche Kante in welchem Schritt gewählt wird
  • Warum die Wahl getroffen wird (Prim: billigste Außen-Kante, Kruskal: nächste sortierte Kante ohne Zyklus)
  • Identisches Endergebnis trotz unterschiedlicher Strategien
Lade Visualisierung...

Klausur-Tipp: Bei Klausur-Aufgaben zum MST: Welcher Algorithmus ist effizienter? Bei DÜNNEN Graphen (E ≈ V) → Kruskal. Bei DICHTEN (E ≈ V²) → Prim mit Array-Implementierung.

Anmelden, um den Fortschritt zu speichern.

Nächster Schritt

Wenn du fertig bist: jetzt üben.

Aktives Abrufen festigt Wissen schneller als nochmal lesen.

War das hilfreich?

Verwandte Themen

  • Big-O Notation
  • Bubblesort
  • Mergesort
  • Quicksort
  • Sortier-Vergleich

Tools

Bald: Karteikarten · Spaced-Repetition · Mind-Map-Export

Fachliche Qualität
Noch nicht klassifiziertNoch nicht geprüft.

Diese Lerneinheit wurde für typische Bachelor-Klausuren konzipiert. So prüfen wir · Fehler entdeckt? Melde ihn uns oder markiere die fragliche Stelle direkt im Text oben.

Klausur-ÜbersichtKomplette Übersicht: alle Tabs als linearer Text zum Lernen
▾

Alle Tabs der Lerneinheit (Erklärung · Interaktiv verstehen · Praxis-Übung · Klausur-Quiz) als durchgehender Text. Ideal zum Wiederholen vor der Klausur, und für Suchmaschinen wie Google, Bing und KI-Suche (ChatGPT, Perplexity).

Inhalt dieser Übersicht

  1. Erklärung(Erklärung)
  2. Interaktiv verstehen(Visualisierung / Interaktiv)
  3. Praxis-Übung(Quiz / Klausurfragen)
  4. Klausur-Quiz(Quiz / Klausurfragen)
Teil 1·Erklärung

Erklärung

Minimale Spannbäume (MST), Prim & Kruskal

Du sollst alle Städte mit Glasfaser verbinden, möglichst billig. Welche Kabel-Strecken? Das ist das MST-Problem: in einem zusammenhängenden, gewichteten Graphen den billigsten Baum finden, der alle Knoten verbindet. Klausur-Klassiker in 11/17 WInf-Algo-Klausuren, zwei Algorithmen (Prim, Kruskal), beide greedy.

Die Idee in einem Satz

Spannbaum: Teilgraph, der alle Knoten enthält + ein Baum ist (zusammenhängend + zyklenfrei + V-1 Kanten). Minimaler Spannbaum (MST): Spannbaum mit minimalem Gesamtgewicht der Kanten.

Eigenschaften jedes Spannbaums

Bei V Knoten und Spannbaum:

  • Genau V - 1 Kanten
  • Kein Zyklus
  • Zusammenhängend (jeder Knoten erreichbar)

Wenn du eine Kante hinzufügst → ein Zyklus entsteht. Wenn du eine Kante entfernst → Graph zerfällt in zwei Komponenten.

Voraussetzung

MST ist nur definiert für zusammenhängende, ungerichtete, gewichtete Graphen. Bei gerichteten Graphen heißt das Konzept "Arboreszenz" und nutzt andere Algorithmen (Edmonds).

Kruskal-Algorithmus

Greedy auf Kanten. Iteriere durch alle Kanten in aufsteigender Gewicht-Reihenfolge und nimm jede, die KEINEN Zyklus schließt.

kruskal(graph):
    mst = []
    sort edges by weight ascending
    init union-find with all nodes
    for edge (u, v) in sorted edges:
        if find(u) != find(v):  # nicht im selben Cluster
            mst.append(edge)
            union(u, v)
            if len(mst) == V - 1: break
    return mst

Zyklen-Check: Union-Find-Datenstruktur, O(α(n)) ≈ O(1) pro Operation (Inverse Ackermann).

Komplexität: O(E log E) (dominiert von Sortierung).

Prim-Algorithmus

Greedy auf Knoten. Starte bei einem Knoten, erweitere den Baum schrittweise um die billigste Außen-Kante (Kante mit einem Endpunkt im Baum, einem außerhalb).

prim(graph, start):
    mst = []
    visited = {start}
    pq = PriorityQueue of edges from start
    while len(visited) < V:
        (weight, u, v) = pq.extractMin()
        if v in visited: continue
        mst.append((u, v))
        visited.add(v)
        for each neighbor w of v:
            if w not in visited:
                pq.insert((weight(v, w), v, w))
    return mst

Komplexität: O((V + E) log V) mit Binary Heap. Wie Dijkstra.

Prim vs. Kruskal

PrimKruskal
StrategieKnoten-orientiert (wachsender Baum)Kanten-orientiert (kleinste Kanten zuerst)
DatenstrukturPriority Queue (Heap)Union-Find + sortierte Kanten
KomplexitätO((V+E) log V)O(E log E)
Besser fürdichte Graphen (E ≈ V²)dünne Graphen (E ll V²)
Implementierungwie Dijkstraeinfacher

Beide finden das GLOBALE Optimum (MST ist eindeutig bei eindeutigen Kantengewichten).

Cut-Eigenschaft (Beweis-Werkzeug)

Cut-Eigenschaft: Für jeden Cut (Partition der Knoten in zwei nicht-leere Mengen) ist die billigste Kante, die den Cut kreuzt, in JEDEM MST enthalten.

Folgerung: Beide Algorithmen (Prim und Kruskal) addieren in jedem Schritt eine "sichere" Kante, eine, die in mindestens einem MST liegen MUSS.

MST ist nicht eindeutig

Bei mehreren Kanten mit gleichem Gewicht kann es mehrere MSTs geben, alle mit dem gleichen Gesamtgewicht. Klausur-Frage: "Ist der MST eindeutig?" → nur wenn alle Kantengewichte verschieden sind.

Beispiel

Graph mit 5 Knoten + 7 Kanten:

  • A-B (4), A-C (2), B-C (3), B-D (5), C-D (1), C-E (6), D-E (4)

Kruskal:

  1. Sortiere: C-D (1), A-C (2), B-C (3), A-B (4), D-E (4), B-D (5), C-E (6)
  2. Nimm C-D (1) → mst
  3. Nimm A-C (2) → mst
  4. Nimm B-C (3) → mst
  5. A-B (4) → würde Zyklus → skip
  6. D-E (4) → mst (V-1=4 Kanten erreicht → fertig)

MST: {C-D, A-C, B-C, D-E}, Gewicht = 1+2+3+4 = 10.

Klausur-Faustregeln

1. MST hat V-1 Kanten, ist zyklenfrei + zusammenhängend.

2. Kruskal: sortiere Kanten, nimm in Reihenfolge wenn kein Zyklus. Union-Find für Zyklen-Check.

3. Prim: starte irgendwo, erweitere mit billigster Außen-Kante. Priority Queue.

4. Beide O(E log E) bzw. O(E log V). Bei dichten Graphen Prim mit Array O(V²).

5. Cut-Eigenschaft = Garantie für Greedy-Korrektheit.

Häufige Stolpersteine

1. Algorithmen verwechseln. Prim ist KNOTEN-zentriert (Baum wächst), Kruskal ist KANTEN-zentriert (alle Kanten sortiert).

2. Zyklen bei Kruskal übersehen. Ohne Union-Find prüfst du falsch. Naive Zyklen-Erkennung wäre O(V) pro Kante.

3. MST mit Shortest-Path-Tree verwechseln. MST = globales Minimum aller Kanten. SPT (z.B. von Dijkstra) = kürzeste Wege von einer Wurzel. Andere Bäume!

4. Eindeutigkeit annehmen. Bei gleichen Kantengewichten gibts mehrere MSTs.

5. Auf gerichteten Graphen anwenden. MST funktioniert nur auf UNGERICHTETEN Graphen. Gerichtete Variante = Edmonds-Algorithmus.

Teil 2·Visualisierung / Interaktiv

Interaktiv verstehen

Prim vs. Kruskal Side-by-Side

Ein Graph mit 5 Knoten + 7 Kanten. Beide Algorithmen finden denselben MST mit Gewicht 10.

Sieh:

  • Welche Kante in welchem Schritt gewählt wird
  • Warum die Wahl getroffen wird (Prim: billigste Außen-Kante, Kruskal: nächste sortierte Kante ohne Zyklus)
  • Identisches Endergebnis trotz unterschiedlicher Strategien

Interaktive Visualisierung

Interaktive Komponente: probiere sie im Topic-Player oben aus.

Klausur-Tipp: Bei Klausur-Aufgaben zum MST: Welcher Algorithmus ist effizienter? Bei DÜNNEN Graphen (E ≈ V) → Kruskal. Bei DICHTEN (E ≈ V²) → Prim mit Array-Implementierung.

Teil 3·Quiz / Klausurfragen

Praxis-Übung

Minimale Spannbäume, Praxis-Übung

6 Aufgaben zu MST-Eigenschaften, Prim, Kruskal, Komplexität.

Klausurfragen mit Lösungen (6)

F1.Wie viele Kanten hat ein Spannbaum eines Graphen mit V Knoten?

Antwort: V−1

Erklärung: Spannbaum hat exakt V−1 Kanten. Jeder Baum mit V Knoten hat V−1 Kanten. Mehr → Zyklus. Weniger → nicht zusammenhängend.

F2.Welche Daten-Struktur braucht Kruskal hauptsächlich für effiziente Zyklen-Erkennung?

Antwort: Union-Find (Disjoint-Set)

Erklärung: Union-Find erlaubt fast-konstante Zyklen-Checks: find(u) und find(v) sind im selben Set? Wenn ja → Zyklus. Operationen O(α(n)) ≈ O(1).

F3.Prim ist Knoten-zentriert (Baum wächst), Kruskal ist Kanten-zentriert (Kanten sortiert).

Antwort: Wahr

Erklärung: RICHTIG. Prim wählt den nächsten KNOTEN für den wachsenden Baum (billigste Außen-Kante). Kruskal iteriert durch alle KANTEN sortiert und nimmt die zyklenfreien. Beide finden denselben MST.

Typ: Wahr/Falsch

F4.Was ist die Komplexität von Kruskal?

Antwort: O(E log E)

Erklärung: O(E log E), dominiert durch Sortierung der Kanten. Union-Find-Operationen sind nahezu O(1). Bei E ≈ V² wird E log E = V² log V.

F5.Welche Aussagen über MST sind RICHTIG?

Richtige Antworten: MST hat V−1 Kanten; Bei eindeutigen Kantengewichten ist der MST eindeutig; Prim und Kruskal finden denselben MST; Die Cut-Eigenschaft garantiert Greedy-Korrektheit

Erklärung: Richtig: V−1 Kanten, eindeutig bei verschiedenen Gewichten, Prim+Kruskal gleicher MST, Cut-Eigenschaft. Falsch: MST nur ungerichtet (gerichtet = Edmonds); Prim/Kruskal sind O(E log V) bzw. O(E log E), nicht V².

Typ: Multi-Select

F6.Ordne Algorithmus der Hauptidee zu:

Zuordnungen:

  • Prim → Wachsender Baum + billigste Außen-Kante (Priority Queue)
  • Kruskal → Alle Kanten sortieren + Zyklen-Check via Union-Find
  • Borůvka → Parallele Wahl: jeder Baum-Komponente nimmt billigste Außen-Kante
  • Dijkstra → NICHT für MST! Kürzeste Wege von einem Start

Erklärung: MST-Algorithmen-Familie. Prim (Knoten-orientiert), Kruskal (Kanten-orientiert), Borůvka (parallel), Dijkstra ist für SPT, nicht MST.

Typ: Zuordnung

Teil 4·Quiz / Klausurfragen

Klausur-Quiz

Klausurfragen mit Lösungen (6)

F1.Graph: A-B (4), A-C (2), B-C (3), B-D (5), C-D (1), C-E (6), D-E (4). Was ist das Gesamt-Gewicht des MST?

Antwort: 10

Erklärung: Kruskal-Reihenfolge: C-D (1), A-C (2), B-C (3), D-E (4) → MST. Σ = 1+2+3+4 = 10. A-B(4) würde Zyklus (A-C-B existiert), also skip.

Typ: Zahlen-Eingabe

F2.Der MST eines Graphen mit allen verschiedenen Kantengewichten ist eindeutig.

Antwort: Wahr

Erklärung: RICHTIG. Wenn alle Kantengewichte verschieden sind, ist der MST eindeutig, jeder Greedy-Schritt hat genau eine billigste Wahl. Bei gleichen Gewichten kann es mehrere MSTs gleicher Kosten geben.

Typ: Wahr/Falsch

F3.Bei einem dichten Graphen (E ≈ V²): welcher Algorithmus ist asymptotisch besser?

Antwort: Prim mit Array, O(V²)

Erklärung: Prim mit Array hat O(V²), das ist besser als O(V² log V) für dichte Graphen. Bei dünnen Graphen ist Heap-Prim oder Kruskal schneller. Anpassung an Graph-Dichte zählt!

F4.Was sagt die Cut-Eigenschaft?

Antwort: Für jeden Cut ist die billigste den Cut kreuzende Kante in jedem MST

Erklärung: Cut-Eigenschaft: Für jede Partition (Cut) der Knoten ist die billigste Kante über den Cut in JEDEM MST drin. Garantiert die Korrektheit von Greedy-Algorithmen wie Prim und Kruskal.

F5.Ein MST hat {{1}} Kanten bei V Knoten. {{2}} sortiert alle Kanten und nutzt Union-Find für Zyklen-Check. {{3}} wächst einen Baum vom Start aus mit billigster {{4}}-Kante. Beide sind {{5}}-Algorithmen.

Lösungen pro Lücke:

  • {{1}}: V-1 / V−1 / V−1 Kanten
  • {{2}}: Kruskal
  • {{3}}: Prim
  • {{4}}: Außen / Aussen / äußere
  • {{5}}: Greedy / greedy

Erklärung: MST-Vokabular. V−1 Kanten, Kruskal vs. Prim, Außen-Kante bei Prim, beide Greedy.

Typ: Lückentext

F6.Sortiere: Kruskal-Algorithmus.

Richtige Reihenfolge:

  1. Sortiere alle Kanten aufsteigend nach Gewicht
  2. Initialisiere Union-Find mit allen Knoten
  3. Iteriere durch sortierte Kanten
  4. Wenn find(u) ≠ find(v): nimm Kante in MST
  5. union(u, v): füge Komponenten zusammen
  6. Stoppe bei V-1 Kanten im MST

Erklärung: Standard-Kruskal-Workflow. Sortieren → Union-Find init → Iteration → Zyklen-Check → Union → Stopp bei V-1.

Typ: Reihenfolge

Zur KategorieAlgorithmen.Mehr Themen entdeckenZum Themen-Hub.

UniProMax ist eine themenbasierte Lernplattform für Studierende an deutschen Unis.

Wir glauben, dass Verstehen besser ist als Auswendiglernen. Wir bauen Lerneinheiten die zeigen statt erzählen. Code, Visualisierung, Quiz. Auf Deutsch.

Marke

UniProMaxUniProMax

Themenbasiert, visuell, interaktiv.

Inhalte

  • Alle Themen (Hub)
  • Programmiergrundlagen
  • Algorithmen
  • Mathematik
  • Statistik
  • Datenbanken
  • Rechnungswesen
  • VWL

Studiengang-Filter

  • Informatik
  • Wirtschaftsinformatik
  • BWL
  • Data Science
  • VWL
  • Wirtschaftsingenieurwesen
  • Mathe
  • Psychologie
  • weitere Studiengänge folgen

Plattform

  • Mein Fortschritt
  • Impressum
  • Datenschutz
© 2026 UniProMaxAlle Systeme onlinev0.2 / Sommersemester 2026
UniProMaxUniProMaxUniProMaxUniProMax