Moin moin und herzlich willkommen zur sechsten Übung der Grundlagen des Operations Research.
Mein Name ist Twias Filcheck und ich werde gemeinsam mit eh
in die ersten acht der zwölf Übungen dieser Vorlesung durchgehen.
Das Thema der sechsten Übung heute ist die Grafentheorie. Und das bedeutet auch,
dass wir das erste Mal die Simplex-Tablos,
die wir aus den ersten fünf Übungen kennen,
einmal so ein bisschen beiseite schieben werden und wir werden uns
heute mit Grafen beschäftigen
Und Sonnengrafen haben wir hier auch in Übungsaufgabe 1.1 gegeben.
Und bei diesem Grafen sollen wir die kompakte Speicherung angeben.
Wollen wir das machen, schauen wir uns noch mal
diesen Grafen an. Der besteht ja aus neun Knoten.
Und aus 15 gerichteten Kanten. Und wieso gerichtete Kanten,
schauen wir uns mal die Kante zwischen dem Knoten 2 und 5 an.
Sie sehen ja, diese Kante ist mit einem Pfeil versehen.
Das heißt, wir können vom Knoten 2 zum Knoten 5
reisen, was uns 16 Einheiten, sonst was kostet.
Wir können aber nicht von Knoten 15 Knoten 2 reisen
Gleichzeitig hat dieser Graf hier nun eine Quelle, also einen Knoten,
der lediglich auskehrende Kanten nur sitzt und eine Senke.
Das ist ein Knoten, der lediglich eingehende Kanten besitzt.
Und zu diesem Grafen stellen wir jetzt hier gemeinsam einmal die kompakte Speicherung auf.
Und bevor wir da jetzt irgendwas großartig speichern können,
müssen wir uns natürlich zuallererst einmal die Frage stellen,
wie denn die kompakte Speicherung eigentlich funktionieren kann.
Und das haben Sie ja bereits in der Vorlesung mit Professor Hasaner gemacht.
Die kompakte Speicherung, die besteht aus vier verschiedenen Tabellen.
Tabelle A, Tabelle B, Tabelle C und Tabelle D.
In Tabelle A können wir dann später ablesen,
wie viele ausgehenden Kanten jeder Knoten hat
In Tabelle B listen wir einfach nur alle Kanten auf
und sortieren sie nach Start und dann nach Endknocken.
Tabelle C, sortieren wir das Ganze einmal um.
Wir sortieren die Tabelle Bebung und zwar so, dass wir
das Ganze nach den Endknoten und dann nach den Startknoten sortieren.
Und in Tabelle D können wir dann am Ende ganz einfach ablesen,
wie viele eingehen kann, jeder Knoten hat.
Hä? Gut, dann fangen wir doch mal gemeinsam an
Wir fangen hier an, indem wir zuallererst einmal Tabelle Babel füllen.
Denn Tabelle B ist die einfachste der Tabellen hier.
Und dafür haben wir ganz links eine Spalte für alle
15 Kanten, die wir hier in dem Graphen haben.
Denn sie erinnern sich, in Tabelle B listen wir ja
alle Kanten mit Stadt und Entknoten und dem jeweiligen Kantengericht auf.
Und das Ganze sortieren wir nach den Startknoten.
Und das ist ja auch das,
was sie in den Spalten daneben der Car-Spalte jetzt sehen.
EK steht für den Ausgangsknoten, der Kante K,
JK steht für den Eingangsknoten,
der Kante K und Lamda
IKJK steht einfach für das Kantengewicht der jeweiligen Kante
Wir schauen uns jetzt hier einmal an, was denn hier unsere erste Kante ist,
wenn wir das Ganze nach Start und Entknoten sortieren.
Und Knoten 1 hat ja nur zwei ausgehende Kanten.
Die eine Kante von 1 zu 2 und die andere Kante
von 1 zu 3. Und da die 2 0,
ein kleinerer Index ist als die 3,
ist die 1, 2 nun die erste Kante,
die wir hier jetzt in die Tabelle übernehmen.
Und die Kante hat ein Gericht von 55. Also, ganz einfach.
Was ist jetzt die zweite Kante hier? Naja klar,
das ist dann die Kante 1, 3 mit dem Gewicht von 15. Und
nun hat der erste Knoten ja keine ausgehenden Kanten mehr,
das heißt,
wir gehen zum nächsten Knoten,
dem Knoten
Um 2 hat nur eine ausgehende Kante. Also es ist
ja super einfach. Wir übernehmen einfach die Kante 2,
5 mit dem Gewicht von 16 und sind da auch schon fertig.
Dann gehen wir weiter zu Knoten 3. Knoten 3 hat nun zwei ausgehende Kanten.
Einmal von 3 zu 4 und dann von 3 zu 6. Aber da die 4 hier ein kleinerer Index,
seit sie 6,
übernehmen wir zuallererst einmal die Kante von 3 zu 4 mit dem Krankengericht von 12. Dann würden wir die Kante 3,
6 übernehmen mit einem Kantengewicht von 42. Ich spule ihnen das Ganze jetzt hier mal vor,
weil ich denke, das ist so einfach,
dass wir hier nicht mehr ausführlich weiter darauf eingehen müssen.
Die finale Tabelle B sieht dann hier
wie folgt aus
Wenn Sie Tabelle B fertig bestimmt haben,
dann können Sie ganz einfach weitermachen mit Tabelle C.
Denn in Tabelle C machen wir jetzt nichts anderes als Tabelle B
einmal umzusortieren. Und zwar sortieren wir Sie so um,
dass wir einmal alle Kanten auflisten,
aber sortiert nach dem Endknoten und dann nach dem Startknoten.
Und da müssen wir jetzt natürlich einmal schauen,
Hat der erste Knoten hier eine eingehende Kante?
Nein. Denn der erste Knoten stellt ja hier die Quelle dar.
Das heißt, der erste Knoten, der hier eingehende Kanten hat, ist der Knoten 2.
Und der hat zwei eingehende Kanten. Das heißt,
die ersten beiden Kanten, die wir jetzt hier in Tabelle C aufschreiben,
das sind die Kanten, die in Knoten 2 münden.
Okay? Und das ist die Kante 1, 2 und
die Kante 4-2. Und da die Kante 1,
2 hier mit der 1 den kleineren Index hat,
müssen wir die Kante 1,
2 zuerst aufschreiben und dann die Kante mit
4-2. Also anstelle 1 ist die Kante 1
und anstelle 2
ist die Kante
Schauen wir uns an, wie viele eingehende Kunden der Knoten 3 hat.
Und der hat ja nur eine eingehende Kante. Das ist ja super,
das heißt, wir können hier gleich einmal die zweite Kante,
anstelle 3 der Tabette C übernehmen.
Dann schauen wir uns an, wie viele eingehende Kanten der Knoten 4 hat.
Der hat ebenfalls nur eine eingehende Kante, also ebenfalls super einfach,
an vierter Stelle hinterbei der C, steht die Kante 4.
Und wie viele eingehende Kanten hat Knoten 5?
Knoten 5 hat jetzt zwei eingehende Kanten.
Und fahrt von 2 zu 5 und von 4 zu 5.
Und da die zwei Jahren kleinerer Index ist als die 4,
schreiben wir zuallererst die Kante 3 auf und dann die Kante
Dann schauen wir uns an, wie viele eingehende Kantenknoten sechs hat.
Und er hat ebenfalls zwei eingehende Kanten.
Davon 3 zu 6 und von 4 zu 6. Oder 3,
jetzt hier wieder der kleinere Index, Salz 4,
schreiben wir zuallererst einmal die Kante 5 auf und dann die Kante 8.
Dann kommen wir auch schon zu Knoten 7,
denn nun ebenfalls nochmal zwei eingehende Kanten hat.
Also, was machen wir? Wir übernehmen zuerst Kante 9
und dann Kante zehn, weil die vier ja der
kleinere Index Salz 5 ist
Wenn wir sie ihm fertig sind, gehen wir weiter zu Knoten 8.
Der hat nochmal zwei einleckigende Kanten, also haben wir alle
fast nur zwei an hier in der Kanten.
Und dort müssen wir nun ebenfalls einmal zuerst Kante 11 und dann kannte 13 aufschreiben.
Index von 5 ist kleiner als Index von 7. Fast fertig.
Dann kommen wir nur noch zum letzten Knoten hier,
das ist der Knoten 9 und der Knoten 9 hat jetzt hier drei eingehende Kanten,
keine ausgehenden Kanten, weil das ja unsere Senke ist.
Und da müssen wir dann ganz einfach schauen, okay,
zuerst kannte 12, dann kannte 14,
dann kannte 15 gemäß halt dann sortiert nach den Stadtknoten
Damit haben wir Tabelle C auch schon fertig abgeschlossen.
Und wir können uns der nächsten Tabelle hier widmen.
Und das ist jetzt die Tabelle A. Und in Tabelle A,
da haben wir jetzt in der linken Spalte hier unser I stehen und das I,
Sie erinnern sich zurück, das steht ja für unsere Knoten.
Dann mögen Sie jetzt vielleicht fragen, okay,
wir so sind hier jetzt zehn Knoten,
unser Graf hat auch nur einen neuen Knoten.
Weil sowohl eine Tabelle A als auch eine Tabelle D
benötigen wir jeweils einen Hilfsknoten.
Und das ist dann immer
der zehnte Knoten
Nun die Tabelle A zu befüllen, müssen wir nochmal
Tabelle B anschauen. Und in Tabelle B gucken wir nun
einmal alle Kannen an und wir gucken für jeden Knoten,
in welcher Zeile er das erste Mal als Startknoten einer Kante auftaucht.
Und zwar taucht der erste Knoten das erste Mal in der
ersten Zeile auf, also bei der Kante 1.
Also tragen die hier in Tabelle A für den Knoten I
die 1 ein
Ein zweiten Knoten taucht da das erste Mal in der dritten Zeile auf.
Und deswegen tragen wir jetzt für den zweiten Knoten in Tabelle
Ali 3 ein. Der dritte Knoten taucht ja als erstes
Mal als ausgehender Knoten in Zeile 4 auf.
Das heißt, wir tragen jetzt beim dritten Knoten
die 4 ein
Beim vierten Knoten taucht dieser Knoten das erste Mal in der
sechsten Zeile als Knoten mit ausgehenden Kanten auf.
Das heißt, wir tragen jetzt für den vierten Knoten,
in Tabelle Adi 6 ein. Beim fünften Knoten tauchte das
erste Mal in der zehnten Zeile von Tabelle B auf.
Und zwar als Knoten mit ausgehenden Kanten. Das heißt,
wir tragen jetzt hier in Tabelle A dort die Zehen ein.
Der sechste Knoten kommt das erste Mal bei Kante 12 vor.
Also tragen wir für Knoten 6 hier in Tabelle A
die 12 ein
Und der siebte Knoten, der kommt das erste Mal bei Kante 13 vor.
Also tragen wir für den siebten Kronoten die 13 Bekannte ein.
Und der achte Knoten, der kommt dann
das erste Mal in Zeile 15 bei Kante 15 vor.
Soweit ja eigentlich ziemlich simpel. Die einzige Schwierigkeit,
die wir hier in Tabelle A haben,
ist eigentlich die Befüllung der letzten beiden Zeilen in Tabelle A.
Denn hier müssen wir mit einer Hilfskante und dem vorher bereits eingeführten Hilfsknoten arbeiten.
Stell uns das also vor, wir haben hier jetzt noch
eine 16. Kante in Tabelle B stehen
Und die 16. Kante benötigen wir ganz einfach,
weil wir jetzt gucken, okay,
wo wurde denn jetzt hier der Knoten 9 das erste Mal vorkommen?
Der würde nämlich das erste Mal ja theoretisch in der Zeile
16, weil er Kante 16 vorkomme.
Wenn wir hier sie denn hier hätten. Damit vermerken wir einfach nur,
dass da Knoten 8 eine ausgehende Kante hat und dann schauen wir uns Knoten 9 an.
Und was bedeutet das nun für den Hissknoten 10?
Den Hilfsknoten 10, den benutzen wir jetzt,
um zu verdeutlichen, dass der neunte Knoten keine ausgehenden Kanten hat.
Denn wenn wir jetzt in unserer Tabelle B schauen müssten,
wo wir denn den zehnten Knoten theoretisch das erste Mal sehen würden,
dann wäre das ebenfalls bei der 16. Kante.
Wenn der neunte Knoten hat ja keiner ausgehenden kann
Und damit sind wir hier auch schon fertig. Aber das
kann jetzt vielleicht trotzdem noch ein bisschen schwierig für sie kriegen.
Deswegen schauen wir es noch mal ganz kurz hier an,
wie ich darauf komme. Denn schauen Sie sich mal ganz
links an. Die Tabelle A, die zeichnet uns ja
die Anzahl der auskennenden Kanten von jedem Knoten an.
Zumindest Indirekt. Und im Dienstbestimmen müssen wir einfach die Formel
verwenden, die Sie da jetzt gerade eingeblendet sehen.
Die ausgehenden Kanten von Knoten I können wir ganz einfach bestimmen,
indem wir in Tabelle A einfach auf Kai plus 1 gucken und davon KI abziehen.
Wenn wir jetzt beispielsweise schauen würden, okay,
wie viele ausgehenden Kanten hat denn hier der Knoten 1?
Dann würden wir einfach nie rechte Spalte gucken. KI plus 1,
das ist ja eine 3, minus die 1,
die KI selber dann in dem Moment oder K1 in dem Moment darstellt,
ist ja gleich 2.
Also Knoten 1 hat 2 ausgehende Kanten
Und damit die Formel hier so einfach gilt,
zumindest für alle Knoten, die wir hier in unserem Graphen
drin haben, brauchen wir jetzt halt auch diesen Hilfsknoten.
Denn wenn wir jetzt für den neunten Knoten beispielsweise prüfen wollen würden,
wie viele ausgehenden Kanten der hat,
dann müssten wir ja auch K9 plus 1,
also K10 hier haben.
Das haben wir ja hier mithilfe des Hilfsknotens erreicht.
Wir würden also gucken, K10 ist gleich 16,
minus K9 ist gleich 16, ist also gleich null.
Der neunte Knoten hat also null ausgehender Kanten.
Machen wir mal weiter mit dem letzten Ponzier. Das ist
die Tabelle D. Und die Tabelle D, die zeigt uns
jetzt die Anzahl der eingehenden Kanten, jedes Knoten sein.
Und die können wir jetzt mit einer ähnlichen Formel wie Tabelle A bestimmen.
Oder aber wir schauen uns hier die mit C umsortierte Tabelle B an.
Und ich sag mal so, das kann man machen,
aber das erfordert dann schon einiges an mentaler Gymnastik,
um sich diese Umsortierung hier vorzustellen und das Ganze dann korrekt abzuzählen.
Weil ich zeige ihnen gleich mal, was ich damit meine.
Kann man zuallererst einmal damit an,
dass wir uns jetzt hier überlegen,
wo wir denn in dieser umsortierten Tabelle das erste Mal
eine Kante haben,
die in den Knoten 1 eingeht
Das muss ja in Zeile 1 sein. Ja? Zeile
0 haben wir ja in der Tabelle nicht. Und da
der Knoten einzelne Quelle ist, hat aber gar keine eingehenden Karten. Das heißt,
wenn wir uns jetzt den zweiten Knoten anschauen und gucken,
wo wir dann in der Tabelle nachgucken müssen,
um das erste Mal eine eingehende Kante in Knoten 2 zu sehen,
müssten wir immer noch in Zeile 1 nachschauen.
Ja? Damit haben wir den ersten Schritt auch schon getan,
der ja dann doch gar nicht so schwer war.
Und jetzt müssten wir gucken,
wo wir denn in dieser umsortierten Tabelle das erste Mal
eine eingehende Kante stehen haben,
die in Knoten 3 angeht
Und das kann man jetzt, wie gesagt, mit dieser
umsortierten Tabelle machen und sich da mental ein wenig verbiegen.
Oder aber man nimmt einen einfacheren Weg,
der hier unten über die Formeln unter Tambette.de abgebildet ist.
Denn wir können diese Formel ja ganz einfach umstellen und so umstellen,
dass da direkt das Ergebnis rauskommt, was wir dort rechts eintragen wollen.
Und um dann die Zeile des nächsten Knotens zu finden,
müssen wir ganz einfach nur die Anzahl der eingehenden Kanten im
aktuellen Knoten nehmen und mit der Zeile des aktuellen Knoten sadieren.
Um ihr also ein 3 herauszufinden,
müssen wir einfach nur die Anzahl der eingehenden Kanten von Knoten
2 nehmen und mit der Zeile vom Knoten 2 addieren.
Also hier zwei eingehende Kanten in Knoten 2
plus Zeile
Damit kommen wir hier auf eine 3, die wir für Knoten 3 eintragen müssen.
Was bedeutet das nun für Knoten 4? Naja,
wir müssen einfach mal schauen, okay, wie viele eingehende
Kanten hat Knoten 3? 1, plus die Zeile,
die wir uns für Knoten 3 hier aufgeschrieben haben in Tabelle D,
ist ja 3,
1 plus 3 ist 4,
also tragen wir für Knoten 4
hier eine 4 ein
Und das Spiel können wir jetzt immer weiter treiben.
Wie viele eingehende Kanten hat Knoppen 4?
Schauen Sie mal längst den Grafen nach. Der Knoten 4
hat hier eine eingehende Kante. Hä? Das heißt,
was machen wir, um jetzt hier herauszufinden,
was wir für Knoten 5 eintragen müssen?
Wir zählen 1 plus 4, also die aktuelle Zeile von Knoten
4. Hammer für 5. Wie viele eingehende Kanten hat Knoten 5
? Naja, Knoppen 5 hat jetzt 2 eingehende Kanten.
Heißt also, was rechnen wir?
Wir rechnen 2 plus 5 und kommen auf eine
Wie viele eingehende Kanten hat Knoten sechs?
Nur um sechs hat zwei eingehende Kanten. Das heißt,
um jetzt herauszufinden, in welcher Zeile wir über Knoten 7 sind,
müssen wir jetzt einfach zwei plus sieben rechnen und bekommen auf neun.
Was machen wir jetzt für die Zeile von Knoten acht?
Naja, wir müssen einfach nur gucken, wie viele eingehende
Kanten hat Knoten 7. Knoten 7 hat nochmal zwei eingehende Kanten.
Also zwei plus, neun gleich elf
Knoten 9 bestimmt er ebenfalls so, wie gerade eben auch,
wir gucken, wie viele eingehende Kantenknoten 8 hat.
Das sind ja zweiten eingehende Kanten.
Und dann rechnen wir 2 plus 11 und bekommen auf 13.
Und was machen wir jetzt für unseren Hilfsknoten? 10? Ja,
wir schauen einfach, wie viele eingehende Kantenknoten 9 hat.
Und Knoten 9 hat ja 3 eingehende Kanten. Das heißt,
wir rechnen jetzt einfach 3 plus 13 und finden dann
das erste Mal den Knoten 10 in unserer Hilfskante 16.
Also in dieser Form ist das dann schon ziemlich einfach.
Aber wie gesagt, das ist ihre Präferenz,
wenn sie lieber die Tabelle im Kopf umsortieren wollen und es
abzählen wollen,
ist das natürlich auch möglich
Gut. Und damit sind wir hier mit der kompakten Speicherung auch schon fertig.
Und wir gehen weiter zu Übungsaufgabe 1.2. Bestimmen Sie mit dem FIFO-Algorithmus
die kürzesten Wege von Knoten 1 zu allen anderen Knoten.
Und der FIFO-Algorithmus ist ein iteratives Verfahren,
bei dem wir quasi Schritt für Schritt vorgehen und die kürzesten
Wege von einem Ausgangsknobel zu allen anderen Knoten im Grafen bestimmen.
Und das machen wir, indem wir die sogenannte FIFO-Liste abarbeiten.
Und das Resultat, das wir dann am Ende hier rausbekommen,
ist ein minimal spannender Baum
Fangen wir mal an. Zuallererst benötigen wir hier jetzt erst
mal auf der rechten Seite eine Tabelle,
in der wir gleich unsere Ergebnisse eintreiben können.
Und diese Tabelle ist ja ziemlich einfach aufgebaut,
wenn wir das mit dem Simplex-Tablos vergleichen,
denn wir haben hier einfach nur für jeden Knoten eine Spalte und wir haben hier bereit Zeilen, die wir befüllen können.
Die erste Zeile mit DJ zeigt uns an,
was denn die aktuell kürzeste Distanz ist,
wie wir vom Ausgangsknoten zu dem jeweiligen Knoten in der Spalte
gefunden haben
In zwei dieser Zeilen mit RJ zeigt uns an,
was denn der Vorgängerknoten dieses Knotens ist,
auf dem aktuell kürzesten gefundenen Weg.
Und die dritte dieser Zeilen mit SJ zeigt das dann an,
was denn der jeweilige Nachfolgerknoten dieses Knotens in der FIFO-Liste ist.
Das sehen sie aber gleich auch nochmal im Detail,
wenn wir hier mit dem FIFO-Algorithmus starten.
Und dann müssen wir dieses Tableau natürlich initialisieren.
Damit fangen wir an, indem wir sagen,
dass wir vom Ausgangsknoten 1 zum Ausgangsknoten 1 natürlich eine Distanz von Null haben.
Da müssen wir ja keinen Weg zurücklegen,
Herr Grafen, wir sind ja bei 1
schon bei
Im nächsten Schritt sagen wir dann,
dass der Vorgängerknoten von Knoten 1 natürlich hier durchgestrichen wird,
weil es braucht hier keinen Vorgängerknoten von Ausgangsknoten.
Das ist ja unser Ausgangsknoten. Und wir müssen noch die
kürzesten Distanzen zu allen anderen Knoten vom Ausgangsknoten erst einmal mit unendlich initialisieren.
Wir wissen ja aktuell einfach noch nicht, was der kürzeste Weg ist.
Deswegen nehmen wir mal an, der ist jetzt unendlich.
Links unten sehen Sie dann hier diese FIFO-Liste,
von der ich auch schon gesprochen habe,
und die Sie ja auch schon aus der Vorlesung kennen.
Und diese FIFO-Liste, die befüllen wir gleich.
Und hier ist noch wichtig, kurzes Recap zur Vorlesung,
in dieser FIFO-Liste ist jeder Knoten maximal einmal aktiv.
Wenn er gestrichen wird, kann er wieder hinten hinzugefügt werden,
aber solange er hier eine FIFO-Liste aktiv ist,
wird er nicht hinten dran gehängt,
wenn wir ihn als weiteren potenziellen Kandidaten identifizieren.
Aber was es damit genau auf sich hat,
das sehen Sie auch gleich,
wenn wir hier in einem Rhythmus
drin sind
Fangen wir mal mit dem FIFA-Algorithmus an. Fangen wir an,
mit unserem Ausgangsknoten und gucken, was sind denn die potenziellen Wege,
die wir hier vom Ausgangsknoten gehen können?
Naja, wir können einmal zu Knoten 2 und wir können
zu Knoten 3 gehen. Von 1 zu 2 haben wir
Kosten von 55 und von 1 zu 3 haben wir Kosten 55.
Wir fangen jetzt an mit 1 zu 2,
weil zwei ist der kleinere Indexer als 3. Also 1 zu
Nehmen wir uns jetzt hier heraus und gucken.
Haben wir hier einen kürzeren Weg gefunden, als unendlich,
mit der Kantenbewertung 55? Vermutlich schon, ja,
denn 55 ist ja niedriger als unendlich.
Deswegen streichen wir die unendlich und tragen hier die 55 ein.
Damit wissen wir natürlich auch,
dass in der drunter liegenden Zeile der Vorgängerknoten von Knoten 2
ist nicht mehr unbekannt ist,
sondern der Vorgängerknoten von Knoten 2
ist jetzt Knoten
Im Anschluss müssen wir noch eintragen,
dass wir jetzt in der Spalte der 1 ganz unten,
in der letzten Zeile, eine 2 haben.
Was heißt das? Naja, das heißt nichts anderes,
als das auf die einzelne FIFO-Liste jetzt der zweite Knoten folgt.
Also auf Knoten 1 in der FIFO-Liste folgt Knoten 2.
Den müssen wir jetzt aufnehmen,
weil wir mit dem zweiten Knoten hier eine neue,
kürzere Distanz gefunden haben
Und dann sind wir auch schon beim Weg von 1 zu 3.
Und ist die Distanz von 15 kleiner,
als er nennt dich, klar, ist sie kleiner.
Also streichen wir dich hier dir unendlich und tragen in der Tabelle
die 15 ein. Der neue Vorgängerknoten ist jetzt natürlich ebenfalls
die 1 und wir müssen jetzt eine Spalte der 2,
in der letzten Zeile, die 3 eintragen,
weil wir ja in der FIFA-Liste jetzt hinter der 2 die 3 aufnehmen.
Wieso nehmen wir die 3 auf? Naja,
wir haben hier ja einen neueren,
kürzeren Weg gefunden
Okay. Und nachdem wir nun alle kannten von 1,
angeschaut haben, die aus 1 rausgehen,
streiche mit ihr einzeln in unserer Feelful-Liste und wir schauen uns
den nächsten Kandidaten in der Feelful-Liste an.
Und das ist die 2. Also schauen wir uns Knoten 2 an und gucken,
was sind denn die ausgehenden Kanten von Knoten 2?
Und da gibt es nur einen Kandidaten, das ist
die 5. Also müssen wir uns jetzt überlegen, okay,
von 2 zu 5 haben wir ja eine Distanz von
55 plus 16. 55 ist ja aktuell die kirstische Distanz,
die wir
zu 2 gefunden haben
Also, 71 ist niedriger als unendlich
und wir tragen jetzt hier die 71 bei der Fünf-Wahl.
Der neue Vorginger Knoten von der Fünf ist dementsprechend natürlich der Knoten 2.
Und sie ahnen es schon, wir müssen ganz unten
in der letzten Zeit auch noch was eintragen.
Und zwar tragen wir in der Spalte der 3 die Fünf ein,
fallen auf die 3 in der FIFO-Liste,
die Fünf folgt
Damit haben wir den Knoten 2 auch schon abgearbeitet,
denn wir haben ja alle ausgehenden Kanten untersucht.
Also streichen wir die 2 und gehen weiter zu Knoten
3. Was für ausgehende Kanten hat Knoten 3 hier,
naja, hier gibt es zwei ausgehende Kanten.
Einmal zu 4 und einmal zu 6. 4 hat einen kleineren Index,
also schauen wir uns zuallererst einmal die 4 an.
Und? Was ist jetzt hier Distanz zu 4?
Naja, okay, wir müssen gucken,
zur 3 kommen wir ja mit 15 Einheiten,
4 brauchen wir noch zwölf weitere Einheiten, wenn wir diesen Weg nehmen.
15 plus 12, 27, das ist kleiner als unendlich.
Also streichen wir die unendlich in der vierten Spalte,
erste Zeile und treiben die 27 ein.
Der neue Vorgängerknoten ist hier natürlich jetzt die 3. Was tragen
die hier jetzt in der letzten Zeile ein? Naja,
wir müssen jetzt in Spalte 5 dort in der letzten Zeile den vierten Knoten aufnehmen,
weil auf Knoten 5 folgt es Knoten 4 in der Phiphonistin.
Der dritte Knoten ist aber immer noch aktiv,
weil wir müssen uns hier noch den Weg von der 13.6 anschauen.
Also gucken wir mal in unserer Tabelle. Was ist die
aktuelle Distanz der 3? Das war die 15, 913,
6 müssen wir 42 Weganhalten zurücklegen, 15 plus 42 ist,
57, 57 ist niedriger als unendlich.
Also haben wir hier jetzt eine neue 57,
erste Zeile,
sechste Sparte stehen
Haben also hier auch einen neuen Vorgängerknoten von Knoten 6 und das ist da
der Knoten 3. Was machen wir unten in der letzten Zeile?
Naja, jetzt müssen wir hier in Spalte 4 einmal die Sechs eintragen,
weil die Sechs ist ja aktuell noch nicht aktiv in der FIFO-Liste,
also müssen sie sich ja nochmal aufnehmen.
Und damit haben wir Knoten 3 abgegearbeitet und streicheln den in
der FIFO-Liste.
Wir machen jetzt weiter mit Knoten
Und, Knoten 5 hat, ah, schauen wir mal
im Graf nach, 1, 2 ausgehende Kanten.
Und zwar zu 7 und zur 8. Also, was machen wir jetzt?
7 hat einen kleineren Index, also Charmons,
die Kante von der 5 zu 7 an und gucken einmal,
was sind die aktuell beste Distanz ist,
die wir zu Knoten 5 gefunden haben.
Das ist die 71. Ja? Und 71 plus 11 ist Weihnachtssich.
82 ist niedriger als unendlich. Wir streichen die unendlich und haben hier
eine neue Knoten, die wir gleich in die 4-Fool-Liste aufnehmen müssen.
Davor müssen wir mal noch mal eintragen,
dass jetzt hier der Vorgängerknoten von Knoten 7,
der Knoten 5 ist,
und natürlich müssen wir in der letzten Zeile auch noch eintragen,
dass jetzt in der FIFO-Liste gleich auch die 6 der Knoten
7 folgt
Damit haben wir Knoten 7 hier auch schon abgearbeitet und gucken
uns einmal die Kante von der 5 zu 8 an.
Ja, 5 zu 8 haben wir eine Distanz von
45. Aktuell ist die beste Distanz zu 8 und endlich.
Wir werden also vermutlich eine neue, kürzere Distanz finden,
denn 71 plus 45 ergibt 116 und das ist natürlich kleiner als unendlich.
Also, nehmen wir die 8 ja auch gleich in die FIFO-Liste auf.
Vorgänger Knoten von Knoten 8 ist der Knoten 5 und sie
haben es schon in der letzten Zeile,
müssen wir jetzt noch in der Spalte der 7
ganz unten einmal die 8 eintragen,
weil auf die 7 folgt ja jetzt
gleich in der FIFO-Liste
Damit haben wir Knoten 5 auch schon abgearbeitet,
streichen ihn in der FIFO-Liste und gehen weiter zu Knoten
4. Und dann schauen wir uns mal an,
wie viele ausgehende Kanten hat dann dieser Knoten?
Dieser Knoten hat 1, 2, 3, 4 ausgehende Kanten.
Okay, und mit welcher Kante fangen wir an?
Natürlich mit der Kante 4-2 wegen dem kleinsten Index bei der 2.
Und wenn wir jetzt von 4 zu 2 fahren,
ist man eine Distanz von elf Einheiten zurücklegen.
Und der aktuell kürzeste Weg zu 4 beträgt 27 Einheiten.
Der aktuell kürzeste Weg, den wir zu 2 gefunden haben,
beträgt 55 Einheiten. Das heißt,
wir haben jetzt so den ersten Fall,
wo wir das Ganze nicht mehr mit nur unendlich vergleichen müssen,
sondern wo wir hier schon eine niedrigere Distanz gefunden haben.
Deswegen müssen wir jetzt hier einmal gucken, okay,
27 plus 11 ist
38 ist kleiner als 55, also streichen wir die 55
und nehmen als neuen kürzesten Weg zu 2 die 38 hiermit auf.
Damit ändert sich natürlich jetzt auch der Vorgängerknoten von der 2,
und zwar ist der Vorgängerknoten von Knoten 2,
jetzt der Knoten 4. Was machen wir jetzt?
FIFO-Listen-technisch? Naja, wir müssen jetzt hier in der
achten Sparte letzte Zeit eine 2 eintragen,
weil die 2 sind in unser FIFO-Liste ja bereits gestrichen.
Das heißt, wir müssen sie jetzt hinter Knoten 8
nochmal neu aufnehmen
Wenn das getan ist, können wir diese Kante schon mal weglegen
und wir schauen uns die Kante 4, 5 an.
Und bei der Kante 4, 5 müssen wir jetzt einen
Weg von 30 Wegeinheiten zurücklegen. Und dann gucken wir mal,
der aktuell kürzeste Weg zum Knoten 4 beträgt 27 Distanzeinheiten,
27 plus 30 ist, 57, 57 ist
kleiner als 71. Also, was bedeutet das?
Wir streichen die 71 und wir tragen hier die 57 ein,
weil wir einen schnelleren Weg über den Knoten 4 gefunden haben.
Damit ändert sich natürlich auch der funginger Knoten von Knoten 5.
Das ist jetzt hier der Knoten
Also, was machen wir jetzt? FIFO-Listen-technisch hier?
Ihr müssen jetzt in der zweiten Spalte letzte Zeile einmal
die dreien streichen und dort die fünf eintragen.
Denn hinter Nutten zwei in unserer FIFO-Liste steht jetzt nicht mehr
die drei, denn da steht jetzt in der aktuellen FIFO-Liste
die fünf
Und damit können wir die Kante 4, 5 hier auch
schon zur Seite legen. Und wir schauen uns die
nächste Kante an. Das ist die Kante 4,
6. Und 4, 6 ist nun mit 16 Distanzeinheiten gewichtet.
Und schauen wir uns an, was brauchen wir aktuell,
um zur 6 zu kommen? Da brauchen wir 57 Einheiten. Okay,
27 plus 16 sind 43. 43 ist kleiner als 57,
also streichen wir die 57, tragen die 43 ein.
Und wir wissen, wir müssen jetzt hier gleich die 6 nochmal an unsere FIFO-Liste aufnehmen.
Aber halt, schauen wir es mal in der aktuellen FIFO-Liste nach.
Dort steht die 6 ja schon drin. Also müssen wir
sie nicht neu aufnehmen. Das einzige,
was wir hier machen müssen, ist einzutragen,
dass der Vorgängerknoten von Knoten 6, Knoten 4s,
unten in der letzten Zeile passiert jetzt nichts mehr,
weil Knoten 6 bereits aktiv in der Liste drin ist
Gut. Hier sechs wird einer so zur Seite gelegt und
wir schauen uns jetzt hier die letzte ausgehende Kante von Knotenfiren.
Das ist die Kante 4-7. Und 4-
7 ist gewichtet mit 40 Einheiten. Haben wir mal,
was brauchen wir aktuell und zum Knoten 7 zu kommen?
Da brauchen wir 82 Einheiten. Und Knoten 4 brauchen eine 27-Einheiten.
Also 27 plus 40 ist 67. Das ist kleiner als 82.
Also streichen wir die 82 durch und ersetzen sie durch die 67.
Neue Vorgängerknoten von Knoten 7 ist jetzt hier also Knoten 4. Wissen wir hier,
was in der letzten Zeile machen und in unserer Feelful-Liste machen?
Nö. Entknoten 7 ist ja bereits aktiv in der Feelful-Liste
drin. Da müssen wir jetzt also nichts mehr unternehmen.
Damit haben wir den Knoten 4 auch schon abgearbeitet,
streichen ihn in der 4-Vorliste und wir machen weiter mit Knoten
Und Knoten 6 hat nur eine auskennende Kante. Das ist ein
ganz einfacher Fall hier. Und diese Kante ist gewichtet mit 62.
Und mit diesen 62 Einheiten kommen wir von der 6 zum Knoten 9.
Schauen wir uns mal an. Aktuell brauchen wir zum Knoten
6,43 Einheiten. 43 plus 62,105. Und am Knoten 9
haben wir aktuell eine Distanz von unendlich.
Also hier ganz einfaches Spiel. 105 ist natürlich kleiner als
in endlich. Wir streichen hier also die unendlich und machen
die 105 draus
Neuer Vorgängerknoten von Knoten 9 ist jetzt hier natürlich Knoten 6.
Was machen wir in der letzten Zeile hier? Naja,
man ist natürlich nun in Spalte 5 dort in der letzten Zeile,
die vier streichen und den neuen eintragen,
weil die neuen jetzt in unserer FIFO-Liste
auf die fünf folgt
Und damit können wir hier den sechsten Knoten auch schon in
der FIFO-Liste streichen und wir machen weiter mit dem siebten Knoten.
Schauen wir uns mal an, was der siebte Knoten hier für ausgehende Kanten hat.
Und der siebte Knoten hat zwei ausgehende Kanten,
und zwar zum Knoten 8,
und zum Knoten 9. Und da nehmen wir natürlich wieder
den Knoten mit dem kleineren Index zuerst und schauen uns einmal
in die Verbindung zwischen 7 und 8 an.
Und von 7 nach 8 zu kommen müssen wir eine Distanz von 17 Einheiten zurücklegen.
Und in unserer Tabelle sehen wir ja, dass wir 67
Einheiten brauchen, um aktuell zum Knoten 7 zu kommen.
Denn das ist ja die Schnittze-Lösung, die wir bisher gefunden haben.
Also rechnen wir einmal 67 plus 17, was ja nichts
anderes ist als 84. Und dann schauen wir uns einmal an,
wie viele Einheiten wir aktuell denn brauchen, um zum Knoten nachzukommen.
Und das sind 116 Einheiten. Und da 116 jetzt natürlich
größer ist als 84, können wir hier ganz einfach
die 116 streichen und tragen die 84 ein
Heißt also hier, unser neuer Vorgängerknoten von Knoten 8 ist der Knoten 7.
Und was müssen wir in der letzten Zeile machen?
Da müssen wir nichts mehr machen. Denn der achte Knoten ist ja bereits
noch aktiv in unserer FIFO-Liste drin. Denn sie erinnern sich,
nur wenn der Knoten in der FIFO-Liste bereits gestrichen ist,
oder gar nicht in der FIFO-Liste drin ist,
müssen wir ihn wieder neu aufnehmen.
Jeder Knoten kann maximal nur einmal aktiv in der FIFO-Liste drin sein.
Also haben wir die Verbindung jetzt hier auch schon abgehakt und
wir schauen uns die Verbindung zwischen 7 und 9 an.
Auf der Kante haben wir ein Gewicht von 31. Dann
gucken wir mal, wie viele Einheiten wir aktuell brauchen,
um zur neuen zu kommen.
Das sind 105 Einheiten
Also, schauen wir mal,
zu 7 brauchen wir 67, 67 plus 31,
das ist ja 98, 98 ist kleiner als 105,
also können wir hier die 105 streichen.
Und die 98 eintragen. Heißt jetzt also,
der neue Vorgängerknoten von Knoten 9
ist der Knoten
In unserer letzten Zeile müssen wir wieder nichts mehr machen,
denn der Knoten 9 ist ja hier aktuell in der FIFO-Liste aktiv drin.
Das heißt, wir können direkt hier die beiden Kanten abhaken,
Knoten 7 aus der aktiven FIFO-Liste streichen und wir können weitermachen mit Knoten 8.
Wenn Sie denken,
dass Sie die Logik hier jetzt schon verstanden haben,
dann können Sie eine Rest der Übung gerne überspringen oder kurz zum Ende vorgehen,
denn wir machen hier als nichts anderes mehr als weiter,
diesen FIFO-Algorithmus zu folgen und zwar so lange,
bis wir
alle aktiven Knoten aus der FIFO-Liste gestrichen haben
Aber machen wir erst mal weiter hier mit Knoten 8.
Was für ausgehenden Kanten hat ein Knoten 8 hier?
Knoten 8 hat nur eine ausgehende Kante und zwar zum Knoten 9.
Und die ist mit 13 gewichtet. Dann müssen wir jetzt
natürlich einmal schauen, was für eine Distanz wird zurückzulegen müssen,
um auf den aktuell schnellsten Weg zu knoten, 8 zu kommen.
Und das ist die Distanz von 84. Und 84 plus 13 ist,
97. Und 97 ist natürlich kleiner als 98. Das heißt,
wir streichen hier die 98 in der Spalte für den neunten Knoten
und drang hier als 97, als im neue kürzeste Distanz sein.
Der neue Vorgängerknoten hier ist natürlich dementsprechend dann die 8.
Müssen wir ja noch irgendwas in unserer Feful-Liste unten machen,
müssen wir den Knoten 9 dann nochmal neu aufnehmen?
Nein. Dann der Knoten 9 ist dort immer noch aktiv drin.
Das heißt, wir sind hier mit der Kante auch
schon durch und können Knoten 8 aus der Liste streichen
Damals sind wir wieder bei Knoten 2. Und Knoten 2 hat,
die erinnern sich, eine ausgehende Kante, und zwar die Kante zu Knoten
5. Nie war er mit 16 gewichtet. Und jetzt müssen
wir mal gucken, ob sich da was ändert.
Und Knoten 2 müssen eine Instanz von 38 zurücklegen aktuell,
und zum Knoten 5. Distanz von 57.
Zwischen 2 und 5 von Mindestanz von 16. Also,
38 plus 16 ist 54. 54 ist kleiner als die 57.
Also, streichen wir die 57, und ersetzen sie durch die
54. Wir haben hier einen neuen, schnelleren Weg gefunden.
Das bedeutet, unser Vorgängerknoten von Knoten 5 ist nicht mehr
die 4,
sondern jetzt die
Und müssen wir unten was in unserer FIFO-Liste machen?
Ist der Knoten 5 da noch aktiv drin? Ja,
wir haben Glück, denn der Knoten 5 ist noch aktiv in der FIFO-Liste drin.
Das heißt, wir müssen jetzt hier nichts hinten an die
FIFO-Liste ranhängen und die dementsprechend länger machen, was natürlich dann auch heißt,
dass wir hier noch länger mit dem Algorithmus arbeiten müssen.
Ihr kürzer die FIFO-Liste, desto besser ihr für uns.
Zumindest was
unsere Rechenzeit hier angeht
Wir streichen jetzt hier also erstmal die Kante zwischen 2 und 5.
Weil wir sie erledigt haben und können dementsprechend dann natürlich auch Knoten 2 aus der FIFO-Liste streichen.
Und damit sind wir dann bei Knoten 5 angelangt.
Und Knoten 5 hat zwei ausgehende Kanten,
und zwar einmal zu Knoten 7 und einmal zu Knoten 8. Gucken wir mal,
aber der neue kürzere Distanzen finden zwischen 5 und 7 haben wir
hier ein Kantengewicht von 11. Aktuell brauchen wir 54 Einheiten,
um zu Knoten 5 hinzukommen.
Schauen wir dann mal nach, zu Knoten 7 brauchen wir aktuell 67 Einheiten,
54 plus 11 ist 65, ist niedriger als 67.
Also streichen wir hier die 67 in unserer Tabelle und ersetzen
sie durch die 65. Der neue Vorgängerknoten von Knoten 7
ist dann
der Knoten
Müssen wir Knoten 7 hier nochmal in die FIFO-Liste aufnehmen.
Schauen Sie mal links eine FIFO-Liste nach. Ja, ne,
dann Knoten 7 ist nicht mehr aktiv in der FIFA-Liste drin,
der ist ja bereits dort gestrichen worden.
Das heißt, wir müssen hier Knoten 7 nochmal hinten ranhängen.
Also müssen wir hier erst mal in der Spalte 9,
die 7 in der letzten Zeile eintragen.
Denn auf die 9 in der Viervorliste folgt ja jetzt hier
Gut. Und wenn das erledigt ist, schauen wir uns
die zweite Kante an. Die Kante 5, 8. Hier
hat aktuell ein Kantengewicht von 45. Und auf dem schnellsten Weg
zu Knoten 5 müssen wir ja erst mal 54 Wegeinheiten zurücklegen.
Und dann brauchen wir zwischen 5 und 8 noch 45 Einheiten.
Heißt also, und wenn wir diesen Weg wählen würden,
dann würden wir insgesamt 54 bis 45 gleich 99 Einheiten Weg zurücklegen müssen.
Das ist ja größer als der schnellste Weg,
den wir aktuell zu 8 über Knoten 7 gefunden haben.
In Dortmund ist ja nur eine Listanz von 84 zurücklegen.
Das heißt, ihr müssen wir den Knoten 8 nicht nochmal
neu in unsere FIFA-Liste aufnehmen, denn die Stunts hier ist größer.
Das heißt, die Kante hier ist da auch gleich abgeschlossen
und wir können weitermachen mit dem Knoten 9 in unserer FIFA-Liste
Account 5 wurde er jetzt gestrichen, da die beiden Kanten weg sind.
Schauen wir uns mal Knoten 9 an, hat Knoten 9 ausgehende Kanten?
Nö. Also können wir Knoten 9 ganz einfach streichen und weitermachen mit Knoten 7.
Und bei Knoten 7 schauen wir uns jetzt an,
was hier die ausgehenden Kanten sind. Und dass er einmal
die Kante zu Knoten 8 und einmal die Kante zu Knoten
9. Und zwischen 7 und 8 müssen wir in Distanz von 17 zurücklegen.
Und aktuell der schnellste Weg zu Knoten 7 hat eine Bewertung von 65. Das heißt,
65 plus 17 ist ja nichts anderes als 82
und das ist ja kleiner als die 84,
die wir aktuell benötigen,
um zu Knoten nachzukommen
Das heißt, wir streichen jetzt hier die 84 und ersetzen sie durch die 82.
Am Vorgängerknoten ändert sich nichts. Das ist immer noch der Knoten
7. Wir haben jetzt hier bloß einen schnelleren Weg gefunden,
weil sie erinnern sich,
wir haben ja vorhin auch einen schnelleren Weg zu Knoten 7 gefunden.
Die Verbesserung wird hier also so iterativ Schritt für Schritt an die Nachfolgerknoten weitergegeben.
Und müssen wir den Knoten 8 jetzt noch in unsere FIFA-Liste aufnehmen?
Ja, klar müssen wir den aufnehmen, denn in unserer
FIFA-Liste ist ja aktuell nur noch der Knoten 7 aktiv.
Müssen wir das in unserer letzten Zeile ergänzen?
Da müssen wir jetzt nichts ergänzen,
denn wir haben ja schon bereits dort stehen,
dass auf Knoten 7,
Knoten 8 folgt
Ja. Also, was machen wir jetzt? Naja,
wir streichen hier die Verbindung zwischen 7 und 8,
gucken sie uns also nicht mehr an und gucken uns die zweite Kante an.
Die Kante zwischen 7 und 9 und die hat ein Krankengewicht von
31. Wir schauen also wieder auf den schnellsten Weg zu Knoten 7.
Das ist die 65. Und wir schauen,
ob wir mit dieser 31 jetzt schneller zum Knoten 9 kommen.
65 plus 31 ist 96. Der schnellste Weg zu Knoten 9
ist aktuell bei 97. 96 ist der kleine 1,97.
Wir können also eine Einheit an Distanz sparen.
Wir streichen hier also einmal die 97 und da setzen sie
durch die
Neue Vorgängerknoten von Knoten 9 ist jetzt die Knoten 7.
Müssen wir Knoten 9 nochmal in die FIFA-Liste aufnehmen.
Klar müssen wir die nochmal aufnehmen. Der ist ja
nicht mehr aktiv in der FIFA-Liste drin. Heißt also,
wir gucken hier jetzt mal in die allerletzte Zeile hier und
tragen dann in der achten Spalte dort die 9 Stadt der 2 ein.
Er hat dann auf Knoten 8 in der FIFA-Liste folgt jetzt hier die 9.
Damit haben wir beide Kanten hier abgearbeitet und wir gehen weiter zum aktiven Knoten 8. Ja,
Knoten 7 streichen wir ja aus der Liste,
weil die Kanten beide durch sind.
Und Knoten 8 hat eine ausgehende Kante. Das ist die
Kante zu Knoten 9. Und dann gucken wir mal von 8
zu 9 müssen wir eine Distanz mit dem 13. wieder zurücklegen.
Der aktuell schnellste Weg zu Knoten 8 trägt 82 Distanzeinheiten und
82 plus 13 ist ja nichts anderes als
1995 ist kleiner, 96. Also streichen wir hier
die 96 und machen eine 95 draus.
Wir können also eine Einheit an Distanz jetzt einsparen,
indem wir statt über Knoten 7 lieber über Knoten 8 fahren.
Das heißt natürlich auch, dass wir jetzt hier nachschauen müssen,
ob wir den Knoten 9 wieder in unsere FIFO-Liste aufnehmen müssen.
Und wenn wir unsere FIFA-Liste nachschauen, dann sehen wir ja,
nee, das ist nicht der Fall,
denn der Knoten 9 ist ja dann auch noch aktiv drin.
Wenn also die Kante hier, streichen müssen sie nicht mehr betrachten,
müssen den Knoten 8 auch nicht mehr betrachten und können ihn streichen,
weil der ja nur eine Kante hatte.
Damit können wir dann auch schon zu Knoten 9.
Und bei Knoten 9 müssen wir dann wieder gucken,
was sind da die ausgehenden Kanten? Ja, Überraschung,
es gibt keine ausgehenden Kanten bei Knoten 9,
weil das ja die Senke ist.
Also können wir hier Knoten 9 auch noch streichen.
Und sie sehen es schon. Wir sind am Ende vom FIFO-Algorithmus
angelangt. Wir haben hier jetzt eine optimale Lösung gefunden.
Und diese optimale Lösung können sie ganz einfach
nur in dieser Tabelle
hier ablesen
Machen wir das mal gemeinsam. Eine Zeile mit DJ sehen wir jetzt,
was denn der schnellste Weg von unserem Ausgangsknoten 1
zu allen anderen Knoten im Graphen ist.
Wir brauchen zum Beispiel von Knoten 1 zu Knoten 9 95 Distanzeinheiten.
Und ich habe jetzt hier die ganze Zeit von Distanzeinheiten gesprochen.
Wir hätten hier aber auch sagen können,
dass das Ganze zum Beispiel Transportkosten sind, die wir minimieren.
Oder aber es könnte auch der CO2-Ausstoß gewesen sein,
den wir hier minimieren.
Wobei man da natürlich auch gestehen muss,
dass Distanz- und CO2-Ausstoß
vermutlich überlagernd sind
Und es ist jetzt natürlich schön,
dass wir hier die schnellsten Distanzen wissen,
aber was ist denn der genaue Weg ist,
ist es ja vielleicht schwierig, oder?
Ja, das ist eigentlich ganz einfach,
denn den können wir mit Hilfe der zweiten Zeile hier rekonstruieren.
Der zweiten Zeile sehen wir ja jeweils die Vorgängerknoten, von jedem Knoten.
Und wenn wir die hier Schritt für Schritt einfach einzeichnen,
bekommen wir am Ende einen minimal spannenden Baum,
der uns den kürzesten Weg zu allen anderen Knoten von unserem Ausgangsknoten zeigt.
Machen wir das mal und zeichnen die allererste Kante ein,
die wir
hier fahren müssen
Das ist ja die Kante von Knoten 8 zu Knoten 9,
weil der Vorgängerknoten von Knoten 9 ist der Knoten 8. Schauen wir weiter,
vom Knoten 8, der Vorgängerknoten,
das ist der Knoten 7,
also müssen wir die Kante hier verwenden.
Knoten von Knoten 7 ist der Knoten 5, also verwenden wir die folgende Kante.
Der Vorgängerknoten vom Knoten 6 ist der Knoten 4,
also müssen wir die Kante hier verwenden,
TVGH-Knoten von Knoten 5 ist die 2,
dementsprechend müssen wir
die Kante hier verwenden
Urgängerknoten, von Knoten 4, ist die 3,
eins müssen wir die Kante hier verwenden,
der Vorgängerknoten von Knoten 3, ist die Knoten 1,
also muss die Kante hier verwendet werden und der Vorgängerknoten von Knoten 2 ist
die 4. Also müssen wir die Kante hier noch mal aufnehmen.
Was wir hier nun bestimmt haben, ist ein minimal spannender Baum,
der uns den schnellsten Weg von Knoten 1 zu allen anderen Knoten im Grafen anzeigt.
Und damit haben wir die Aufgabe hier auch schon abgeschlossen.
Wir haben mit dem FIFA-Algorithmus den schnellsten Weg bestimmt und haben
da gleichzeitig dann auch einen minimal spannenden Baum herausbekommen,
an dem wir ganz gut sehen,
welchen Weg wir wählen müssten,
um zu den verschiedenen Knoten
möglichst schnell hinzukommen
Und damit sind wir auch schon fast am Ende von Übung
6 angelangt. Die einzige Freiheit,
die man sich hier jetzt natürlich noch stellen könnte,
wäre, ob es nicht vielleicht noch einen anderen Algorithmus gibt,
mit dem man in weniger Iteration auf die gleiche optimale Lösung kommt.
Und eine dieser Optionen, die haben sie ja bereits mit
Professor Hase in der Vorlesung angeschaut.
Das ist der FIFO-Lifo-Algorithmus. Und da könnten sie jetzt zu Hause ausprobieren,
ob sie mit dem FIFO-Lifo-Algorithmus weniger Iterationen brauchen als mit dem FIFO-Algorithmus.
Und das müssen sie natürlich nicht machen,
aber kann gegebenenfalls Sinn machen, falls irgendeine Aufgabe in Zukunft
nochmal auf sie zukommt.
Leicht passiert es aber natürlich auch nicht
Und ich werde sie jetzt auch nicht weiter mit Games belästigen,
denn in dieser Übungsaufgabe gibt es keine Games-Aufgaben. Das heißt,
wenn sie sich jetzt die kommentierte Musterlösung zu Übung 6 in Open
Order da runterladen würden, dann würden sie dann einfach sehen,
dass da drin steht, es gibt keinen Übung,
zieht diese Aufgabe.
Und sie sind damit dann auch schon fertig.
Und damit sind wir hier dann auch final am Ende dieser
Übung angelangt und wir sehen uns vermutlich wieder in der
nächsten Übung.
Bis dahin