ZU DEN KURSEN!

Operations Research 1 - Fifo-Algorithmus

Kursangebot | Operations Research 1 | Fifo-Algorithmus

Operations Research 1

Fifo-Algorithmus

In diesem Abschnitt wird der FIFO-Algorithmus zur Bestimmung von kürzesten Wegen in Graphen ausführlich behandelt.

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

FIFO-Algorithmus

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 Speicherung der Menge der markierten Knoten als Warteschlange, wobei der Anfangszeiger der Warteschlange darstellt und der Endzeiger der Warteschlange.

Initialisierung:

mit

und für alle Knoten .

für alle Knoten .


Iteration:

1. Schritt: Auswahl des Knotens .

2. Schritt: Es wird nun jeder Nachfolger vom Knoten separat betrachtet und folgende Berechnung durchgeführt:  , so wird gesetzt. Danach wird der Nachfolgerknoten gesetzt, sofern dieser nicht bereits in enthalten ist. Der Knoten wird dabei in aufgenommen und aus der Warteschlange entfernt.

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

Die Vorgehensweise soll im Folgenden anhand eines Beispiels demonstriert werden.

Beispiel

Hier klicken zum Ausklappen

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:

   

,

für die Knoten ,

für alle Knoten .


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 zugeordnet, allen anderen Knoten . ist zunächst für alle Knoten leer. Der Anfangszeiger und der Endzeiger sind bei der Initialisierung gleich dem Startknoten 1.

Methode

Hier klicken zum Ausklappen

Die Schlange ergibt sich also zu .

Hierbei ist der 1. Wert immer der Anfangszeiger und der 2. Wert immer der Endzeiger . Es wird zusätzlich eine Schlange aufgestellt, welche alle Anfangszeiger berücksichtigt: .

1. Iteration

Es werden nun alle Nachfolger vom Anfangszeiger betrachtet. In diesem Fall ist und die Nachfolger:



Knoten 2:

Es wird dann der kürzeste Weg des Startknotens zur Pfeilbewertung des Nachfolgerknotens 2 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 :

.

Es gilt außerdem, dass Knoten 2 noch nicht in vorhanden ist und demnach als Endzeiger in die Schlange aufgenommen . Der Knoten wird aus der Schlange entfernt:

Methode

Hier klicken zum Ausklappen


Knoten 3:

Für den Knoten 3 gilt dieselbe Vorgehensweise:

.

.

Knoten 3 ist noch nicht in vorhanden  und wird demnach als Endzeiger in die Schlange aufgenommen . Der Knoten wird aus der Schlange entfernt:

Methode

Hier klicken zum Ausklappen

Es gilt jetzt (alle Knoten die bereits waren).


Die neue Tabelle ergibt sich zu:

                  
           
           
           
            xx

Die Schlange bedeutet, dass nach dem Knoten 2 der Knoten 3 folgt. Demnach wird bei Knoten 2 unter der Knoten 3 eingetragen.

2. Iteration

Es werden nun alle Nachfolger vom Anfangszeiger betrachtet. In diesem Fall ist . Der Nachfolger von Knoten 2 ist:



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

Hier klicken zum Ausklappen

Der Knoten 2 wird aus der Schlange entfernt:

Methode

Hier klicken zum Ausklappen


Die neue Tabelle ergibt sich zu:

                  
           
           
           
            xxx
3. Iteration

Es werden nun alle Nachfolger vom Anfangszeiger betrachtet. In diesem Fall ist . Die Nachfolger von Knoten 3 sind:



Knoten 4:

.

.

:

Methode

Hier klicken zum Ausklappen

 

Es wird der Knoten 3 aus der Schlange entfernt:

Methode

Hier klicken zum Ausklappen

 

Knoten 5:

.

.

:

Methode

Hier klicken zum Ausklappen

Am Ende wird der Knoten 3 aus der Schlange entfernt:

Methode

Hier klicken zum Ausklappen


Die neue Tabelle ergibt sich zu:

                  
           
           
           
             xxxx
4. Iteration

Es werden nun alle Nachfolger vom Anfangszeiger betrachtet. In diesem Fall ist . Die Nachfolger von Knoten 4 sind:



Knoten 2:

Es wird keine Änderung vorgenommen, da der vorhande Weg kürzer ist. Der Vorgänger bleibt also Knoten 1.

Da Knoten 2 bereits war (siehe Tabelle unterste Zeile)), wird dieser nicht mehr in die Schlange aufgenommen.

Knoten 6:

.

.

:

Methode

Hier klicken zum Ausklappen

Am Ende wird der Knoten 4 aus der Schlange entfernt:

Methode

Hier klicken zum Ausklappen


Die neue Tabelle ergibt sich zu:

                  
           
           
           
            xxxxx

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 betrachtet. In diesem Fall ist . Die Nachfolger von Knoten 5 sind:



Knoten 4:

Knoten 4 war bereits (siehe unterste Zeile der Tabelle) und wird nicht in die Schlange aufgenommen.


Knoten 6:

.

.

:

Methode

Hier klicken zum Ausklappen

Am Ende wird der Knoten 5 aus der Schlange entfernt:

Methode

Hier klicken zum Ausklappen


Die Tabelle ergibt sich wie folgt:

                  
           
           
           
             xxxxxx
6. Iteration

Es werden nun alle Nachfolger vom Anfangszeiger betrachtet. In diesem Fall ist . Der Nachfolger von Knoten 6 ist:



Knoten 4:

 Es wird keine Änderung vorgenommen, da der vorhande Weg kürzer ist. Der Vorgänger bleibt also Knoten 5.

Der Knoten 4 ist bereist (siehe unterste Zeile der Tabelle) wird demnach nicht aufgenommen:

Methode

Hier klicken zum Ausklappen

 

Es gilt und demnach wird das Verfahren hier abgebrochen! Der kürzeste Weg wurde bestimmt.

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.

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