Minimaler Spannbaum: Kruskal und Prim

Verbinde jeden Punkt mit jedem anderen und halte die Gesamtlänge der Straßen so klein wie möglich. Kruskal beginnt mit den kürzesten Straßen und verwirft jede, die einen Kreis schließen würde. Prim lässt von A aus ein einziges Netz wachsen und wählt stets die kürzeste Straße, die aus ihm herausführt. Geh beide Algorithmen Schritt für Schritt durch: Die Seite begründet jede gewählte und jede verworfene Straße. Verschiebe die Punkte, und der Baum wird neu berechnet.

Interaktive Simulation wird geladen...

Lektion

Die Theorie — Minimaler Spannbaum: Kruskal und Prim

Ein Spannbaum einer Punktmenge ist eine Menge von Straßen, die jeden Punkt mit jedem anderen verbindet und keinen Kreis enthält; bei n Punkten hat er stets n − 1 Straßen. Der minimale Spannbaum ist der Spannbaum mit der kleinsten Gesamtlänge. Ein Schnitt teilt die Punkte in zwei Gruppen. Eine Straße überquert den Schnitt, wenn ihre Endpunkte in verschiedenen Gruppen liegen. Ein Steinerbaum darf zusätzlich Knotenpunkte verwenden, die nicht zur ursprünglichen Punktmenge gehören.

Was die einzelnen Symbole bedeuten

n
die Anzahl der Punkte
w(u, v)
die Länge der geraden Straße von u nach v in km
S
die Punkte auf einer Seite eines Schnitts; bei Prim das bisher aufgebaute Netz
Setzt voraus
Die Straßen verlaufen gerade, ihre Kosten entsprechen ihrer Länge, und je zwei Punkte dürfen verbunden werden. Sind keine zwei Entfernungen gleich, ist der minimale Spannbaum eindeutig. Bei gleichen Entfernungen, wie im Dreieck und im Quadrat, können mehrere Bäume dieselbe minimale Länge haben; die beiden Algorithmen wählen dann möglicherweise verschiedene.

Die kürzeste Straße über den Schnitt, nicht die nächste von hier 🖖

Wähle Zwölf Dörfer und geh Kruskal Schritt für Schritt durch. Der Algorithmus betrachtet die 66 möglichen Straßen von der kürzesten an. Deshalb wird K–L mit 13,89 km sofort gewählt; C–D und B–C werden verworfen, weil der rot eingezeichnete Weg ihre Endpunkte bereits verbindet. Wechsle zu Prim, der von A aus ein zusammenhängendes Netz wachsen lässt. Er wählt die Straßen in anderer Reihenfolge, K–L sogar ganz zuletzt, verwirft dieselben beiden und endet bei denselben 11 Straßen mit insgesamt 199,04 km. Beide folgen der Schnitteigenschaft: Teile die Punkte beliebig in zwei Gruppen. Sind keine zwei Straßen gleich lang, gehört die kürzeste Straße zwischen den Gruppen zum minimalen Spannbaum. Ließe man sie weg, müsste der Weg des Baums zwischen ihren Endpunkten den Schnitt an anderer Stelle über eine längere Straße queren. Tauscht man diese gegen die kürzere aus, wird der Baum kürzer. Das schattierte Netz von Prim bildet bei jedem Schritt eine Seite eines solchen Schnitts. Wähle nun Nächster Nachbar. Dieser Algorithmus unterscheidet sich in einem Punkt von Prim: Er sucht vom zuletzt erreichten Dorf aus statt vom gesamten Netz. Im dritten Schritt wählt er deshalb D–F mit 17,96 km, obwohl A–C den Schnitt mit 17,67 km überquert. An A–C geht er noch siebenmal vorbei und ist am Ende 10,76 % länger. Otakar Borůvka, der das Problem 1926 als Erster löste und dabei an das Stromnetz Südmährens dachte, formulierte es für Punkte, deren „gegenseitige Entfernungen verschieden sind“. Unter genau dieser Bedingung können Kruskal und Prim nicht zu unterschiedlichen Ergebnissen kommen.

Das kürzeste Netz bietet nicht die kürzesten Wege 🖖

Wähle Ring aus Städten. Zehn Städte liegen rund um einen See. Der Baum folgt dem Ufer bis auf einen ausgelassenen Abschnitt: die breiteste Lücke zwischen J und A. Diese beiden Städte sind auf direktem Weg 25,89 km voneinander entfernt, entlang des Baums jedoch 128,30 km, also 4,96-mal so weit. Denn der einzige Weg von einer zur anderen führt durch das gesamte Netz. Die gestrichelte violette Linie markiert dieses Paar. Verschiebe eine Stadt, und die Seite ermittelt das neue Paar mit dem größten Umweg. Ein minimaler Spannbaum hält die Gesamtlänge so klein wie möglich; für die Entfernung zwischen einzelnen Städten gibt er keine Garantie. Mit einer zusätzlichen, 25,89 km langen Straße wäre der Weg von A nach J direkt. Ob sich diese Straße lohnt, ist eine Frage nach Reisewegen und damit ein Kürzeste-Wege-Problem. Die Seite zum Dijkstra-Algorithmus führt den Gedanken weiter.

Ein Knotenpunkt kann den Baum schlagen, doch niemand weiß, um wie viel 🖖

Wähle Drei Städte. Sie liegen jeweils 40 km auseinander, der Baum ist daher 80,00 km lang. Ein Knotenpunkt in der Mitte, an dem drei Straßen im Winkel von 120° zusammentreffen, verbindet sie mit 69,28 km. Das sind 13,40 % weniger, entsprechend 1 − √3/2. Wähle Vier Städte im Quadrat: Dort sparen zwei Knotenpunkte 8,93 %. Kehre zum Dreieck zurück und zieh C nach unten in Richtung A und B. Sobald der Winkel bei C größer als 120° wird, wandert der Knotenpunkt nach C; von da an bringt ein zusätzlicher Knotenpunkt keine Ersparnis mehr. Die Suche nach den günstigsten Knotenpunkten heißt Steinerbaumproblem. Edgar Gilbert und Henry Pollak vermuteten 1968, das gleichseitige Dreieck sei der ungünstigste Fall: Für keine Punktmenge in der Ebene sei ein Steinerbaum kürzer als √3/2 ihres minimalen Spannbaums. Du und Hwang veröffentlichten 1990 einen Beweis. Innami und drei Kollegen legten 2010 Hinweise vor, dass dessen entscheidender Schritt nicht trägt. Ivanov und Tuzhilin, die seit 2002 auf Lücken hingewiesen hatten, schrieben 2012, die Vermutung sei weiterhin offen. Auch eine Sammlung offener Probleme zu Steinerbäumen aus dem Jahr 2025 führt sie noch als ungelöst. Ob irgendeine Anordnung von Punkten mehr als die 13,40 % des Dreiecks einspart, weiß niemand.

Aufgabe vollständig gelöst

  1. Zwei Knotenpunkte für ein Quadrat 4 Schritte

    Wo liegen die Knotenpunkte, und wie lang sind die Straßen insgesamt? Wähle Vier Städte im Quadrat: Die Städte liegen an den Ecken eines Quadrats mit 40 km Seitenlänge. Ein Spannbaum misst 120,00 km, ein Netz mit Knotenpunkten 109,28 km. Bestimme diese Länge exakt und prüfe die naheliegende erste Vermutung: ein X durch den Mittelpunkt.

    Öffne diese Aufgabe im Tool

    1. Treffen in einem kürzesten Netz drei Straßen an einem Knotenpunkt zusammen, bilden sie Winkel von 120°. Andernfalls würden sich die drei Einheitsvektoren entlang der Straßen nicht aufheben. Verschöbe man den Knotenpunkt in Richtung ihrer Summe, nähme die Gesamtlänge ab.

    2. Lege beide Knotenpunkte auf die Mittellinie des Quadrats. Jeder versorgt die beiden nächstgelegenen Ecken; zwischen den Knotenpunkten verläuft eine mittlere Straße. Jede der vier äußeren Straßen trifft diese unter einem Winkel von 120° und bildet daher mit ihrer Geraden einen Winkel von 60°. Seitlich muss sie 20 km überbrücken, die halbe Seitenlänge. Ihre Länge beträgt also 20/sin 60°, und in Richtung der mittleren Straße überbrückt sie 20/tan 60°.

    3. Vier äußere Straßen und dazwischen eine mittlere Straße, deren Länge dem Rest der 40 km entspricht, den die beiden äußeren Straßen nicht abdecken.

    4. Das X: vier Straßen von den Ecken zum Mittelpunkt, jeweils eine halbe Diagonale lang, also 20√2 km.

    Antwort

    40(1 + √3) = 109,28 km; jeder Knotenpunkt liegt 11,55 km von der Seite entfernt, deren Ecken er verbindet. Das X misst 113,14 km. Das X ist kürzer als der Spannbaum, aber länger als das Netz mit den beiden Knotenpunkten, denn seine Straßen treffen sich unter 90° statt unter 120°. Es gibt zwei Netze mit genau dieser Länge: das auf der Seite gezeigte und dasselbe um 90° gedreht. Die Ersparnis beträgt 1 − (1 + √3)/3 = 8,93 % und ist damit kleiner als die 13,40 % beim Dreieck.

Lernpfad

Warum ein Algorithmus korrekt ist

Quellen (3)