Inhaltsverzeichnis
Der Algorithmus von Dijkstra löst das Problem der kürzesten Wege für einen gegebenen Startknoten. Der Algorithmus berechnet einen kürzesten Weg zwischen dem gegebenen Startknoten und den anderen Knoten in einem kantengewichteten, gerichteten Graphen.
Der Dijkstra-Algorithmus gehört zu den Greedy Algorithmen der Graphentheorie.
Merke
Greedy-Algorithmen zeichnen sich dadurch aus, dass sie schrittweise denjengen Folgezustand auswählen, der zum Zeitpunkt der Wahl das beste Ergebnis verspricht.
Der Dijkstra-Algorithmus wurde im Jahr 1959 von dem niederländischen Informatiker Edsger Wybe Dijkstra (1930-2002) in seinem berühmten Artikel "A note on two problems in connexion with graphs" in der Zeitschrift Numerische Mathematik veröffentlicht.
Der Algorithmus
Gegeben sei ein Diagraph mit
Methode
Algorithmus von Dijkstra
Gegeben sei ein Diagraph mit
Sei
Initialisierung:
Iteration:
1. Schritt: Auswahl eines Knotens
2. Schritt: Gilt für alle Nachfolger
3. Schritt: Der ausgewählte Knoten
Die Schritte 1-3 werden so lange wiederholt bis gilt
Die Vorgehensweise soll im Folgenden anhand eines Beispiels demonstriert werden.
Beispiel: Dijkstra-Algorithmus
Beispiel
Gegeben sei der obige Diagraph. Für diesen soll nach dem Dijkstra-Algorithmus der kürzeste Weg von einem Startknoten zu allen anderen Knoten bestimmt werden.
Begonnen wird mit der Initialisierung:
Als Startknoten wird der Knoten 1 gewählt:
Das Ganze wird in eine Tabelle eingetragen:
| | | | | | |
In der obigen Tabelle ist die Initialisierung eingetragen. Dabei wurde als Startknoten der Knoten 1 gewählt. Gekennzeichnet ist dies in der letzten Zeile mit einem
Es kann nun mit der 1. Iteration begonnen werden.
1. Iteration
1. Schritt:
Zunächst wird ein Knoten
2. Schritt:
Es werden nun alle Nachfolger von Knoten 1 betrachtet. Die Nachfolger von Knoten 1 sind Knoten 2 und 3.
Knoten 2:
Es wird dann der kürzeste Weg des Startknotens
Das Ergebnis wird mit dem kürzesten Weg des Nachfolgerknotens
Ist das Ergebnis (hier: 120) kleiner als der kürzeste Weg des Nachfolgerknotens (hier:
Es gilt also
Knoten 3:
Für den Knoten 3 gilt dieselbe Vorgehensweise:
3. Schritt:
Der Knoten 1 welcher sich in
Die neue Tabelle ergibt sich zu:
| | | ||||
2. Iteration
1. Schritt:
Zunächst wird ein Knoten
2. Schritt: .
Es werden nun alle Nachfolger von Knoten 3 betrachtet. Die Nachfolger von Knoten 1 sind Knoten 4 und 5.
Knoten 4:
Knoten 5:
3. Schritt:
Der Knoten 3 welcher sich in
| | | | | | |
- | ||||||
3. Iteration
1. Schritt:
Zunächst wird ein Knoten
2. Schritt:
Es werden nun alle Nachfolger von Knoten 5 betrachtet. Die Nachfolger von Knoten 5 sind Knoten 4 und 6.
Knoten 4:
Knoten 6:
3. Schritt:
Der Knoten 5 welcher sich in
| | | | | | |
4. - 6. Iteration
Es wird Knoten
Der Knoten
| | | | | | |
Es wird der Knoten
Der Knoten 6 wird aus
| | | | | | |
Es wird der Knoten
Der Knoten 2 wird aus
Es kann nun der kürzeste Weg vom Startknoten aus zu den einzelnen Knoten aus der Tabelle abgelesen werden. Wird zum Beispiel der Weg zum Knoten 4 gesucht, so muss man die Tabelle rückwärts lesen:
Der Knoten 4 hat als Vorgänger Knoten 5, dieser hat als Vorgänger Knoten 3 und dieser hat als Vorgänger Knoten 1.
Weitere interessante Inhalte zum Thema
-
Kürzeste Wege
Vielleicht ist für Sie auch das Thema Kürzeste Wege (Graphentheorie) aus unserem Online-Kurs Operations Research 1 interessant.
-
Fifo-Algorithmus
Vielleicht ist für Sie auch das Thema Fifo-Algorithmus (Graphentheorie) aus unserem Online-Kurs Operations Research 1 interessant.