Minimaler-Spannbaum-Rechner
Kruskal's Algorithm · Prim's Algorithm · Graph-Visualisierung
Gib einen gewichteten ungerichteten Graphen als Kantenliste ein und berechne den MST mit den Algorithmen von Kruskal und Prim algorithms. See step-by-step tables und a canvas visualization.
Schnellbeispiele
MST-Kantenliste
Noch keine Ergebnisse
Enter edges on the Rechner tab und click Minimalen Spannbaum berechnen.
Kruskal-Algorithmus — Schritte
Kanten werden in aufsteigender Gewichtsreihenfolge verarbeitet. Grüne Zeilen = zum MST hinzugefügt. Gelbe Zeilen = übersprungen (würden einen Zyklus bilden).
| Schritt | Kante | Gewicht | Aktion | Komponenten |
|---|
Noch keine Ergebnisse
Enter edges on the Rechner tab und click Minimalen Spannbaum berechnen.
Prim's Algorithm — Schritts
Ausgehend vom ausgewählten Knoten wächst der MST, indem immer die Kante mit dem minimalen Gewicht zu einem unbesuchten Knoten gewählt wird.
| Schritt | Knoten hinzugefügt | Via Kante | Gewicht | MST bisher |
|---|
Noch keine Ergebnisse
Enter edges on the Rechner tab und click Minimalen Spannbaum berechnen.
Graph-Visualisierung
MST-Kante Non-MST-Kante
Was ist ein Spannbaum?
A spanning tree of a connected undirected graph G = (V, E) is a subgraph that includes all vertices V und a subset of edges forming a tree — a connected, acyclic graph. For a graph with n vertices, every spanning tree has exactly n−1 edges. The concept is fundamental to network design, where you want every node reachable from every other node with no redundant connections.
Was ist ein minimaler Spannbaum?
A minimum spanning tree (MST) is a spanning tree whose total edge weight is minimised over all possible spanning trees of the graph. Given a weighted undirected graph, the MST answers the question: "What is the cheapest way to connect all vertices?" For a graph with n vertices und m edges, the MST contains exactly n−1 edges und its total weight is the smallest achievable.
Two classical greedy algorithms solve this problem efficiently: Kruskal's algorithm und Prim's algorithm. Both are guaranteed to find an MST, und when all edge weights are distinct they both find the same unique tree.
Kruskal-Algorithmus
Kruskal's algorithm processes edges globally, sorted by weight. It starts with each vertex in its own component und merges components by greedily adding the cheapest edge that does not create a cycle.
Schritts
- Sortiere alle Kanten aufsteigend nach Gewicht.
- Initialisiere eine Union-Find-Struktur (Disjoint-Set), bei der jeder Knoten seine eigene Menge ist.
- For each edge (u, v, w) in sorted order: if u und v are in different components, add the edge to the MST und union the two components.
- Stoppe, wenn n−1 Kanten hinzugefügt wurden.
The Union-Find data structure with path compression und union by rank makes the cycle detection nearly O(1) per edge, giving Kruskal's algorithm an overall time complexity of O(E log E) — dominated by the sort.
Prim-Algorithmus
Der Prim-Algorithmus lässt den MST ausgehend von einem einzelnen Startknoten wachsen und wählt immer die günstigste Kante aus, die den aktuellen MST mit einem noch nicht im Baum befindlichen Knoten verbindet.
Schritts
- Beginne mit einem beliebigen Knoten; markiere ihn als besucht.
- Füge alle Kanten vom aktuellen MST zu einer Min-Prioritätswarteschlange hinzu.
- Extrahiere die Kante (u, v) mit dem minimalen Gewicht, wobei v unbesucht ist; füge sie zum MST hinzu.
- Mark v visited und enqueue its edges. Repeat until n−1 edges are added.
Mit einem binären Heap läuft Prim in O(E log V). Mit einem Fibonacci-Heap erreicht er O(E + V log V), was für dichte Graphen überlegen ist.
Kruskal vs. Prim — Vergleich
| Eigenschaft | Kruskal | Prim |
|---|---|---|
| Ansatz | Globale Kantensortierung | Knoten-für-Knoten-Wachstum |
| Datenstruktur | Union-Find | Min-Heap / Prioritätswarteschlange |
| Zeitkomplexität | O(E log E) | O(E log V) |
| Am besten für | Dünnbesetzte Graphen | Dichte Graphen |
| Startpunkt | Keiner (alle Kanten) | Gewählter Startknoten |
| Produziert gleichen MST? | Ja (für eindeutige Gewichte) | Ja (für eindeutige Gewichte) |
Eindeutigkeit des MST
Ein MST ist eindeutig, wenn alle Kantengewichte verschieden sind. Wenn sich zwei Kanten dasselbe Gewicht teilen, können mehrere MSTs mit gleichem Gesamtgewicht existieren. Das MST-Gesamtgewicht ist jedoch immer eindeutig.
Unzusammenhängende Graphen — Spannwälder
If the graph is disconnected, no spanning tree exists. Instead, each connected component has its own MST, und together they form a minimum spanning forest. For a graph with n vertices und k components, the spanning forest contains exactly n−k edges.
Praxisanwendungen
- Netzwerkdesign: Entwurf von Telefon-, Strom- oder Internetnetzwerken mit minimaler Gesamtkabellänge.
- Kabel-/Pipeline-Verlegung: Den günstigsten Weg finden, um Städte oder Infrastruktur zu verbinden.
- Clusteranalyse: Hierarchisches Clustering verwendet MSTs, um ähnliche Datenpunkte zu gruppieren.
- TSP-Näherung: Der MST liefert eine 2-Approximation für das metrische Problem des Handlungsreisenden.
- Bildsegmentierung: Graphbasierte Segmentierungsalgorithmen erstellen MSTs über Pixelähnlichkeitsgraphen.
- VLSI-Schaltungsentwurf: Minimierung der Drahtlänge zur Verbindung von Schaltungskomponenten auf einem Chip.