Kursangebot | Operations Research 1 | Dijkstra-Algorithmus

Operations Research 1

Dijkstra-Algorithmus

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

Hier klicken zum Ausklappen

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 Knoten und einem Startknoten. Es werden alle kürzesten Wege zwischen dem Startknoten und allen anderen Knoten gesucht.

Methode

Hier klicken zum Ausklappen

Algorithmus von Dijkstra

Gegeben sei ein Diagraph mit Knoten und einem Startknoten . Alle Pfeile seien mit bewertet. Gesucht wird der kürzeste Weg zwischen dem Startknoten und allen anderen Knoten des Diagraphen.

Sei die kürzeste Entfernung vom Startknoten zum Knoten , der unmittelbare Vorgänger von Knoten auf dem kürzesten Weg vom Startknoten zum Knoten und die Menge die Menge einer bestimmten Auswahl von Knoten.

Initialisierung:

und für alle Knoten .

für alle Knoten .

Iteration:

1. Schritt: Auswahl eines Knotens mit .

2. Schritt: Gilt für alle Nachfolger vom Knoten : , so wird gesetzt und der Knoten wird mit in die Menge aufgenommen.

3. Schritt: Der ausgewählte Knoten wird aus der Menge entfernt.

Die Schritte 1-3 werden so lange wiederholt bis gilt .

Die Vorgehensweise soll im Folgenden anhand eines Beispiels demonstriert werden.

Beispiel: Dijkstra-Algorithmus

Beispiel

Hier klicken zum Ausklappen

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:

,

,

für die Knoten und

für alle Knoten .


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 . Dem Startknoten 1 wird zugeordnet, allen anderen Knoten . ist zunächst für alle Knoten leer. 

Es kann nun mit der 1. Iteration begonnen werden.

1. Iteration

1. Schritt: 

Zunächst wird ein Knoten ausgewählt, welcher sich in befindet und den kürzesten Weg aufweist. In befindet sich zunächst der Startknoten 1, also

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 zur Pfeilbewertung des Nachfolgerknotens addiert:

Das Ergebnis wird mit dem kürzesten Weg des Nachfolgerknotens verglichen:

.

Ist das Ergebnis (hier: 120) kleiner als der kürzeste Weg des Nachfolgerknotens (hier: ) so wird der kürzeste Weg des Nachfolgerknotens gleich dem Ergebnis gesetzt.

Es gilt also und demnach wird gesetzt. Der Vorgänger von Knoten ist demnach Knoten :

.


Knoten 3:

Für den Knoten 3 gilt dieselbe Vorgehensweise:

.

.

3. Schritt: 

Der Knoten 1 welcher sich in befindet wird entfernt und bei der weiteren Betrachtung nicht weiter berücksichtigt.

Die neue Tabelle ergibt sich zu:

                  
           
           
               

2. Iteration

1. Schritt: 

Zunächst wird ein Knoten ausgewählt, welcher sich in befindet und den kürzesten Weg aufweist. In befinden sich die Knoten 1 und 2. Den kürzesten Weg besitzt Knoten 3 mit . Dieser wird ausgewählt.

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 befindet wird entfernt und bei der weiteren Betrachtung nicht weiter berücksichtigt.

                                    
           
           -
              

3. Iteration

1. Schritt: 

Zunächst wird ein Knoten ausgewählt, welcher sich in befindet und den kürzesten Weg aufweist. In befinden sich die Knoten 2, 4 und 5. Den kürzesten Weg besitzt Knoten 5 mit . Dieser wird ausgewählt.

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 befindet wird entfernt und bei der weiteren Betrachtung nicht weiter berücksichtigt.

                                    
           
           
              

4. - 6. Iteration

Es wird Knoten mit den Nachfolgern 2 und 6 gewählt. Die kürzesten Wege der Nachfolgerknoten werden nicht verändert, da:

: . Der Vorgänger bleibt Knoten .

: . Der Vorgänger bleibt Knoten .

Der Knoten wird aus entfernt. 

                                    
           
           
                

Es wird der Knoten mit den Nachfolgerknoten 4 gewählt. Der kürzeste Weg von Knoten 4 wird nicht verändert:

: . Der Vorgänger bleibt Knoten .

Der Knoten 6 wird aus entfernt. 

                                    
           
           
                

Es wird der Knoten mit den Nachfolgerknoten gewählt. Der kürzeste Weg von Knoten wird nicht verändert:

: . Der Vorgänger bleibt Knoten .

Der Knoten 2 wird aus entfernt. 

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.

Lerne erfolgreich mit unseren Online-Kursen

This browser does not support the video element.

Sichere dir jetzt das kompakte Wissen mit unserem Vollzugriff Komplettpaket für Ingenieurstudenten


  • Alle Lernmaterialien komplett mit 494 Videos, 5120 interaktiven Übungsaufgaben und 3108 Lerntexten
  • Günstiger als bei Einzelbuchung nur 14,90 € mtl. bei 1 Monaten Mindestvertragslaufzeit
Jetzt entdecken

This browser does not support the video element.

Einzelkurs: Operations Research 1


  • Die besten Lernmaterialien: 77 Texte, 184 Abbildungen, 13 Videos und 42 Übungsaufgaben.
Jetzt entdecken