In diesem Abschnitt wird der FIFO-Algorithmus zur Bestimmung von kürzesten Wegen in Graphen ausführlich behandelt.
Gegeben sei ein Diagraph mit
Methode
FIFO-Algorithmus
Gegeben sei ein Diagraph mit
Sei
Initialisierung:
Iteration:
1. Schritt: Auswahl des Knotens
2. Schritt: Es wird nun jeder Nachfolger
Die Schritte 1-2 werden so lange wiederholt bis gilt
Die Vorgehensweise soll im Folgenden anhand eines Beispiels demonstriert werden.
Beispiel
Gegeben sei der obige Diagraph. Für diesen soll nach dem FIFO-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:
| | | | | | |
x |
In der obigen Tabelle ist die Initialisierung eingetragen. Dabei wurde als Startknoten der Knoten 1 gewählt. Dem Startknoten 1 wird
Methode
Die Schlange ergibt sich also zu
Hierbei ist der 1. Wert immer der Anfangszeiger
1. Iteration
Es werden nun alle Nachfolger vom Anfangszeiger
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
Es gilt außerdem, dass Knoten 2 noch nicht in
Methode
Knoten 3:
Für den Knoten 3 gilt dieselbe Vorgehensweise:
Knoten 3 ist noch nicht in
Methode
Es gilt jetzt
Die neue Tabelle ergibt sich zu:
| | | ||||
x | x |
Die Schlange
2. Iteration
Es werden nun alle Nachfolger vom Anfangszeiger
Knoten 3:
Da hier der Weg von Knoten 2 zu Knoten 3 länger ist als (155) als der bereits festgelegte Wert (30) wird in diesem Fall nichts verändert. Der Vorgänger bleibt der Knoten 1 mit
Methode
Der Knoten 2 wird aus der Schlange entfernt:
Methode
Die neue Tabelle ergibt sich zu:
| | | ||||
x | x | x |
3. Iteration
Es werden nun alle Nachfolger vom Anfangszeiger
Knoten 4:
Methode
Es wird der Knoten 3 aus der Schlange entfernt:
Methode
Knoten 5:
Methode
Am Ende wird der Knoten 3 aus der Schlange entfernt:
Methode
Die neue Tabelle ergibt sich zu:
| | | ||||
x | x | x | x |
4. Iteration
Es werden nun alle Nachfolger vom Anfangszeiger
Knoten 2:
Da Knoten 2 bereits
Knoten 6:
Methode
Am Ende wird der Knoten 4 aus der Schlange entfernt:
Methode
Die neue Tabelle ergibt sich zu:
| | | ||||
x | x | x | x | x |
Die Schlange wird wir folgt eingetragen: Knoten 5 hat als Nachfolger der Schlange den Knoten 6. Knoten 6 ist das Ende der Schlange und hat keinen Nachfolger.
5. Iteration
Es werden nun alle Nachfolger vom Anfangszeiger
Knoten 4:
Knoten 4 war bereits
Knoten 6:
Methode
Am Ende wird der Knoten 5 aus der Schlange entfernt:
Methode
Die Tabelle ergibt sich wie folgt:
| | | ||||
x | x | x | x | x | x |
6. Iteration
Es werden nun alle Nachfolger vom Anfangszeiger
Knoten 4:
Der Knoten 4 ist bereist
Methode
Es gilt
Kürzester Weg
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
-
Dijkstra-Algorithmus
Vielleicht ist für Sie auch das Thema Dijkstra-Algorithmus (Greedy-Algorithmus) aus unserem Online-Kurs Operations Research 1 interessant.