Der Algorithmus von Dijkstra

Fassung:

Der Algorithmus von Dijkstra

Edsger W. Dijkstra hat 1956 – nach eigener Aussage in zwanzig Minuten beim Kaffee in einem Café – ein Verfahren erdacht, das kürzeste Wege findet, ohne alle Wege auszuprobieren. Es macht genau, was das Wasser tut.

So geht der Algorithmus von Dijkstra

  1. Der Start bekommt den Abstand 0, alle anderen Knoten den vorläufigen Abstand ∞ („noch unbekannt“).
  2. Lege unter den noch nicht festgelegten Knoten den mit dem kleinsten vorläufigen Abstand fest. Sein Abstand ist jetzt endgültig.
  3. Schaue dir die noch nicht festgelegten Nachbarn dieses Knotens an: Abstand des festgelegten Knotens + Kantengewicht. Ist das kleiner als der bisherige Wert, streiche den alten Wert durch und schreibe den neuen daneben.
  4. Wiederhole ab Schritt 2, bis alle Knoten festgelegt sind.

Ein Beispiel – Schritt für Schritt

Gesucht sind die kürzesten Abstände von A zu allen Knoten. Die Zahlen an den Knoten sind die vorläufigen Abstände; wird ein Wert durch einen kleineren ersetzt, wird er durchgestrichen. Starte den Film mit ▶ oder gehe mit ⏮ und ⏭ Schritt für Schritt. Grün sind die festgelegten Knoten, orange der Knoten, dessen Nachbarn gerade geprüft werden.

521477163ABCDEF0∞53∞2∞7∞98∞1311

Im Werkzeug der Aufgaben klickst du einen Knoten an, um ihn festzulegen, und trägst dann die neuen Werte der Nachbarn ein. Die Zahlen über den Knoten sind die vorläufigen Abstände.

Dijkstra mit Anleitung
Aufgabe 1: Bestimme mit dem Algorithmus von Dijkstra die kürzesten Abstände von A zu allen Knoten. Für die ersten beiden Knoten zeigt dir die Anleitung genau, was zu tun ist; danach machst du allein weiter.
13314642ACBDE

Dijkstra Schritt für Schritt
Aufgabe 2: Bestimme mit dem Algorithmus von Dijkstra die kürzesten Abstände von A zu allen Knoten.
42158102ABCDE

Berufsverkehr

Morgens pendeln viele Menschen aus dem Umland zur Arbeit nach Saarbrücken, nach Feierabend fahren sie wieder zurück. Dann sind vor allem die Straßen in die Stadt hinein (morgens) bzw. aus der Stadt heraus (abends) voll. Ein Navi rechnet deshalb nicht mit festen Fahrzeiten, sondern mit den Zeiten, die gerade gelten.

Die rechte Karte zeigt die Fahrzeiten an einem Werktag gegen 7:30 Uhr für die Fahrt Richtung Saarbrücken (gerundet, vereinfacht).

10202281491891210128131518DLSWVPRHB
ohne Verkehr
10202281691894010128301522DLSWVPRHB
morgens Richtung Saarbrücken

S = Saarlouis, D = Dillingen, L = Lebach, W = Schwalbach, V = Völklingen, P = Püttlingen, R = Riegelsberg, H = Heusweiler, B = Saarbrücken

Dijkstra im Berufsverkehr
Aufgabe 3: Bestimme mit dem Algorithmus von Dijkstra die schnellsten Fahrzeiten am Morgen von Saarlouis (S) zu allen Orten.
10202281691894010128301522DLSWVPRHB

Freitext

Aufgabe 4: Dijkstra liefert zunächst nur die Fahrzeiten. Wie kann man sich zusätzlich merken, auf welchem Weg man nach Saarbrücken kommt?

💡 Zum Speichern deiner Antwort bitte einloggen.

Aufgabe 5: Welchen Weg schlägt das Navi morgens von Saarlouis (S) nach Saarbrücken (B) vor? Gib ihn als Knotenfolge und seine Fahrzeit an.

Kürzester Weg
Multiple Choice

Aufgabe 6: Warum muss Dijkstra nicht alle Wege ausprobieren?

✏️ Übungen zu diesem Kapitel

4 freiwillige Aufgaben zum Üben und Weiterdenken.

Zu den Übungen →