Zum Inhalt springen

Informatik · Klasse 11–13 · aktualisiert

Dijkstra-Algorithmus einfach erklärt

Du lernst, wie Dijkstra kürzeste Wege in Graphen mit Gewichten findet, wann er passt und warum negative Kanten ihn stören.

0 von 12 Aufgaben gelöst

Dijkstra-Algorithmus einfach erklärt

Kurz gesagt

Der Dijkstra-Algorithmus berechnet kürzeste Wege von einem Startknoten aus, sofern es keine negativen Kantengewichte gibt. Er besucht den Knoten mit der kleinsten Distanz und verbessert die Distanzen seiner Nachbarn. Über die Vorgänger liest du den Weg ab.

Ein Routenplaner sucht die kürzeste Route zwischen zwei Punkten im Straßennetz. Für solche Aufgaben ist der Dijkstra-Algorithmus ein bekanntes Verfahren. Hier lernst du, wann er passt, wie du ihn von Hand ausführst und wo seine Grenzen liegen.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.

5 Abschnitte

Ein Graph besteht aus Knoten und Kanten. In einem kantengewichteten Graphen trägt jede Kante eine Zahl, zum Beispiel eine Streckenlänge. Der Dijkstra-Algorithmus berechnet einen kürzesten Pfad von einem gegebenen Startknoten zu einem der übrigen Knoten oder zu allen. Das klappt, sofern der Graph keine negativen Kantengewichte enthält.

Ein bekanntes Beispiel sind Routenplaner: Der Graph stellt das Verkehrswegenetz dar, und gesucht ist die kürzeste Route zwischen zwei Punkten. Die Kantengewichte dürfen dabei verschieden sein, später etwa 5 für S–A und 6 für S–B.

Willst du nur den Weg zu einem bestimmten Zielknoten, kannst du abbrechen, sobald der gesuchte Knoten an der Reihe ist. Du musst dann nicht alle Knoten besuchen. In einem unzusammenhängenden ungerichteten Graphen ist der Abstand zu Knoten unendlich, zu denen kein Pfad vom Startknoten aus existiert.

Haben alle Kanten dasselbe Gewicht, genügt für einen kürzesten Pfad schon die Breitensuche. Für Graphen mit negativen Kantengewichten gibt es den Bellman-Ford-Algorithmus, der mit negativen Kantengewichten umgehen kann.

Dijkstra gehört zu den Greedy-Algorithmen. „Greedy“ heißt gierig: Sie bevorzugen in jedem Schritt die momentan aussichtsreichste Teillösung. Anders als manche andere Greedy-Algorithmen berechnet Dijkstra unter der Voraussetzung positiver Kantengewichte eine optimale, also kürzeste Lösung.

Definition

Dijkstra-Algorithmus

Ein Verfahren, das in einem kantengewichteten Graphen kürzeste Pfade von einem Startknoten zu einem oder allen übrigen Knoten berechnet, sofern der Graph keine negativen Kantengewichte enthält.

Merke: Dijkstra passt zu kürzesten Wegen von einem Startknoten in kantengewichteten Graphen ohne negative Kantengewichte, zum Beispiel bei Routenplanern.

Teste dich

LeichtWelche Voraussetzung gilt für Dijkstra, damit er kürzeste Wege berechnet?
MittelDu suchst nur den Weg zu einem Zielknoten. Wann darfst du Dijkstra beenden?

Alles auf einen Blick

Dijkstra-Algorithmus

  • Einsatz

    Dijkstra berechnet kürzeste Wege von einem Startknoten in kantengewichteten Graphen, sofern es keine negativen Kantengewichte gibt

  • Ablauf

    Wähle den unbesuchten Knoten mit der kleinsten Distanz und verbessere die Distanzen seiner Nachbarn

  • Relaxierung

    Neue Distanz = Distanz des gewählten Knotens plus Kantengewicht. Nur wenn sie kleiner ist, wird sie übernommen

  • Weg

    Vom Ziel aus über die Vorgänger rückwärts gehen

  • Negative Kanten

    Festgelegte Distanzen werden nicht mehr geändert, deshalb kann das Ergebnis nicht-optimal werden

  • Abgrenzung

    Breitensuche geht Ebene für Ebene, ein minimaler Spannbaum hat das kleinste Gesamtgewicht, Dijkstra liefert kürzeste Wege

Musteraufgabe · Schritt für Schritt

Kürzesten Weg von P nach T finden (ausgedachtes Beispiel)

  1. 1Ungerichteter Graph: P–Q:2, P–R:7, Q–R:3, Q–T:8, R–T:1. Start P, Ziel T.
  2. 2Anfang: P hat 0, Q, R und T haben ∞.
  3. 3P besuchen: Q = 0 + 2 = 2 (über P), R = 0 + 7 = 7 (über P).
  4. 4Q besuchen (kleinste Distanz 2): R über Q wäre 2 + 3 = 5, kleiner als 7, also R = 5 (über Q). T = 2 + 8 = 10 (über Q).
  5. 5R besuchen (Distanz 5): T über R wäre 5 + 1 = 6, kleiner als 10, also T = 6 (über R).
  6. 6T ist an der Reihe, du kannst abbrechen. Rückwärts über die Vorgänger: T, R, Q, P.
  7. 7Weg: P → Q → R → T mit Länge 6. Probe: 2 + 3 + 1 = 6.

Fehler finden

Prüfe die Schritte bei Dijkstra mit Start K (ausgedachtes Beispiel) In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Dijkstra berechnet kürzeste Wege, sofern der Graph keine Kantengewichte enthält. Von den unbesuchten Knoten wählt er den mit der Distanz. Jeden gefundenen Vorgänger fügst du am der Wegliste ein.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Dijkstra-Algorithmus

LeichtDu suchst die kürzeste Route zwischen zwei Orten. Die Straßenstücke haben verschiedene, positive Längen. Welches Verfahren passt?
MittelAusgedachtes Beispiel: Ungerichteter Graph, Start U, Kanten U–V:3, U–W:5, V–W:1. Nach dem Besuch von U und V: Welche Distanz und welchen Vorgänger hat W?
SchwerWelche Aussage über den Dijkstra-Baum und einen minimalen Spannbaum desselben Graphen stimmt?

Weiterlesen in Informatik