2.2. Moore-Bellman-Ford-Algorithmus

Werbung
Routing-Algorithmen
Chris, Johannes, Hans
1/33
Routingalgorithmen
–
Handout
Inhaltsverzeichnis
1. Grundlagen........................................................................................................................1
1.1. Graph..........................................................................................................................1
1.2. Eigenschaften von Graphen.......................................................................................2
1.3. Baum...........................................................................................................................2
1.4. Greedy-Prinzip............................................................................................................3
1.5. Routingalgorithmen.....................................................................................................3
1.6. Unterscheidungskriterien von Routing-Algorithmen...................................................3
1.7. Eigenschaften von Routingalgorithmen......................................................................4
2. Funktionsweise der Algorithmen........................................................................................5
2.1. Dijkstra-Algorithmus....................................................................................................5
2.2. Moore-Bellman-Ford-Algorithmus............................................................................10
2.3. Prim-Algorithmus......................................................................................................14
2.4. A*-Algorithmus..........................................................................................................18
2.5. Kruskal-Algorithmus..................................................................................................22
2.6. Warshall und Floyd-Algorithmus...............................................................................25
3. Quellen.............................................................................................................................32
1. Grundlagen
1.1. Graph
Ein Graph ist eine Repräsentation von einer Menge von Elementen, wobei diese Elemente
durch Kanten paarweise verbunden sind.
1.2. Eigenschaften von Graphen
1.2.1. Zusammenhang
Zusammenhängend
Ein ungerichteter Graph ist zusammenhängend, falls man von jedem Knoten aus jeden
anderen Knoten über die vorhandenen Kanten erreichen kann.
Routing-Algorithmen
Chris, Johannes, Hans
2/33
Stark zusammenhängend
Ein gerichteter Graph ist stark zusammenhängend, falls man von jedem Knoten aus jeden
anderen Knoten über die vorhandenen Kanten erreichen kann.
Gerichtet / Ungerichtet
In gerichtete Graphen haben die Kanten eine Richtung, in ungerichteten Graphen haben
sie keine Richtung und sind bidirektional.
Wertebereich der Kantengewichte
Der Wertebereich der Kantengewichte kann sich unterscheiden. Manche Graphen haben
nur positive Kantengewichte, andere haben auch negative Kantengewichte.
1.3. Baum
Eine Baum ist ein Menge von verbundenen Knoten.
1.3.1. Kürzester Pfad (Shortest Path)
Der kürzeste Pfad ist der Weg zwischen zwei Knoten, dessen Summe der Kantengewichte
der enthaltenen Kanten minimal ist.
1.3.2. Spannbaum
Ein Spannbaum ist ein Teilbaum, der alle Knoten eines Graphen enthält. Spannbäume
dürfen keine Zyklen enthalten
1.3.3. Minimaler Spannbaum (Minimal-Spanning-Tree)
Ein minimaler Spannbaum ist ein Spannbaum der von allen Spannbäumen das minimale
Gesamtkantengewicht besitzt. Es kann mehrere minimale Spannbäume geben.
1.3.4. Kürzester-Weg-Baum (Shortest-Path-Tree)
Ein Kürzester-Weg-Baum ist eine Menge von Kanten die die kürzesten Wege von einem
Startpunkt zu allen Knoten im Graphen enthält.
1.4. Greedy-Prinzip
Annahme: „Lokales Optimum führt zu globalem Optimum“
Beispiel: TODO
1.5. Routingalgorithmen
1. Dijkstra
2. Kruskal
3. Prim
Routing-Algorithmen
Chris, Johannes, Hans
3/33
4. Moore-Bellman-Ford
5. Floyd und Warshall
6. A-Stern / A*
1.6. Unterscheidungskriterien von RoutingAlgorithmen
1.6.1. Zentralisation
Wo wird der Algorithmus durchgeführt? Verteilt auf die einzelnen Knoten oder zentral in
einem Zentrum?
Die Distanzdaten oder Verbindungszustandsdaten können entweder von einem Router
verarbeitet werden, oder aber vom Anfragesteller selbst.
1.6.2. Dynamik
Adaptiv / nicht adaptiv: Adaptiv bedeutet, dass Routing-Entscheidungen auf Basis des
momentanen Zustands des Graphen getroffen werden. Nicht adaptiv bedeutet, dass die
Routing-Entscheidungen aufgrund von einer Routing-Tabelle die über einen längeren
Zeitraum gespeichert ist getroffen werden.
1.6.3. Zielsetzung: Was wird berechnet?
•
Kürzester Weg von einem Knoten zu Knoten
•
•
•
Kürzester Weg von einem Knoten zu allen Knoten
Kürzester Weg von allen Knoten zu allen Knoten
Minimaler Spannbaum
1.6.4. Flach oder Hierarchisch
„Flach“ bedeutet, dass alle Knoten des Graphen die gleiche Verantwortung tragen und die
Information, die vom Startknoten aus gesendet wird weitersenden an andere Knoten, bis
das Ziel erreicht wurde. Sie agieren somit als Router.
Hierarchisch bedeutet, dass die Knoten des Graphen, gemäß ihrer Position im Graphen
oder ihrer Aufgabe in der realen Welt, in verschiedene Kategorien eingeteilt werden und
gemäß dieser Kategorien unterschiedliche Aufgaben übernehmen. Dadurch kann der
Ablauf der verschiedenen Aufgaben optimiert werden.
1.6.5. Art der Informationen die gesendet werden
Es gibt Routing-Algorithmen, bei denen Knoten anderen Knoten ihre Entfernungen zu
weiteren Knoten mitteilen und Routing-Algorithmen bei denen nur mitgeteilt wird, ob
Knoten mit anderen Knoten verbunden sind oder nicht (Verbindungszustand VS
Distanzvektor).
Routing-Algorithmen
Chris, Johannes, Hans
4/33
1.6.6. Domainen-übergreifend oder Domainen-intern
Manche Routing-Algorithmen werden domainen-intern verwendet, andere auch domainenübergreifend.
1.7. Eigenschaften von Routingalgorithmen
1.7.1. Stabilität
Ein Routing-Algorithmus muss gleichmäßige Ergebnisse liefern, d.h. er soll deterministisch
sein und für dieselbe Ausgangssituation immer dasselbe Ergebnis liefern.
1.7.2. Einfachheit
Der Routing-Algorithmus muss effizient sein, d.h. zeit- und platzsparend.
1.7.3. Korrektheit
Der Routing-Algorithmus findet für ein lösbares Problem stets eine vollständige Lösung.
1.7.4. Optimal
Der Routing-Algorithmus ermittelt immer den optimalen Pfad, also den kürzesten Weg von
A nach B, sofern benötigte Ressourcen (Zeit/Speicher) vorhanden sind.
Routing-Algorithmen
Chris, Johannes, Hans
5/33
2. Funktionsweise der Algorithmen
2.1. Dijkstra-Algorithmus
2.1.1. Beschreibung
Der Dijkstra-Algorithmus findet den kürzesten Weg zwischen 2 Punkten. (Shortest Path)
2.1.2. Anwendbarkeit
Anwendbar auf alle Graphen, die folgende Bedingungen erfüllen:
1. keine negativen Kantengewichte
2. ungerichtet und zusammenhängend oder gerichtet und stark zusammenhängend
2.1.3. Einsatzgebiet
1. Routenplaner
2. Routing im Internet und in drahtlosen Ad-hoc-Netzwerken
2.1.4. Algorithmus
Schritt 1: Gib allen Knoten die Weglänge ∞.
Schritt 2: Gib dem Startknoten die Weglänge 0.
Schritt 3: Fange beim Startknoten an.
Schritt 4: Markiere den aktuellen Knoten als besucht.
Schritt 5: Gib allen benachbarten Knoten das Minimum aus der Summe des aktuellen
Knoten und der zu ihnen führenden Kante und ihrer bisherigen Weglänge als
Weglänge.
Schritt 6: Nimm den Knoten mit der geringsten Weglänge als neuen aktuellen Knoten.
Schritt 7: Wiederhole ab Schritt 4, bis alle Knoten als besucht markiert sind oder der
Zielknoten eine geringere Weglänge hat als alle nicht besuchten Knoten.
Routing-Algorithmen
Chris, Johannes, Hans
2.1.5. Algorithmus-Beispiel
6/33
Routing-Algorithmen
Chris, Johannes, Hans
7/33
Routing-Algorithmen
Chris, Johannes, Hans
8/33
Routing-Algorithmen
Chris, Johannes, Hans
9/33
2.1.6. Laufzeiten / Komplexität
n = Anzahl der Knoten
m = Anzahl der Kanten
Worst Case:
O(n 2)
2.1.7. Vorteile und Nachteile
− Der Algorithmus kann nur mit positiven Kantengewichten umgehen.
+ Der Algorithmus ist optimal, es wird immer der kürzeste Weg zwischen zwei
Punkten gefunden.
Routing-Algorithmen
Chris, Johannes, Hans
10/33
2.2. Moore-Bellman-Ford-Algorithmus
2.2.1. Beschreibung
Der Moore-Bellman-Ford-Algorithmus berechnet einen Kürzester-Weg-Baum für einen
gegebenen Knoten im Graphen.
2.2.2. Anwendbarkeit
Der Algorithmus ist anwendbar, falls für den Graphen gilt:
•
Graph muss zusammenhängend sein.
2.2.3. Einsatzgebiet
•
Distanzvektoralgorithmus (wird vom Routing Information Protocol, RIP)
2.2.4. Algorithmus
Schritt 1: Gib allen Knoten die Weglänge ∞.
Schritt 2: Gib dem Startknoten die Weglänge 0.
Schritt 3: Fange beim Startknoten an.
Schritt 4: Markiere den aktuellen Knoten als besucht.
Schritt 5: Gib allen benachbarten Knoten das Minimum aus der Summe des aktuellen
Knoten und der zu ihnen führenden Kante und ihrer bisherigen Weglänge als
Weglänge.
Schritt 6: Wiederhole ab Schritt 4, bis alle Knoten als besucht markiert sind.
Schritt 7: Nimm den Knoten mit der geringsten Weglänge als neuen aktuellen Knoten.
2.2.5. Algorithmus-Beispiel
Routing-Algorithmen
Chris, Johannes, Hans
11/33
Routing-Algorithmen
Chris, Johannes, Hans
12/33
Routing-Algorithmen
Chris, Johannes, Hans
13/33
Routing-Algorithmen
Chris, Johannes, Hans
14/33
2.2.6. Laufzeiten / Komplexität
3
Worst Case: O(|V|⋅|E|)= O(|V | )
2.2.7. Vorteile und Nachteile
+ Kann mit negativ gewichteten Kanten umgehen
2.2.8. Unterschied zum Dijkstra-Algorithmus
Der Dijkstra-Algorithmus bricht ab, wenn der Zielknoten die niedrigste Weglänge von allen
noch nicht besuchten Knoten besitzt. Deshalb kann es vorkommen, dass bei
Vorhandensein von negativen Kanten eine negative Kante zum Zielknoten führt, die aber
nicht untersucht wird, da der Algorithmus zuvor einen anderen Pfad eingeschlagen hat
(„Greedy“). Deshalb kann es bei Vorhandensein von negativen Kantengewichtungen zu
Ergebnissen kommen, die nicht der Shortest-Path vom Start zum Zielknoten sind. Daraus
folgt, dass der Dijkstra-Algorithmus Graphen mit negativen Kantengewichtungen nicht
zuverlässig betrachten kann.
Da der Moore-Bellman-Ford-Algorithmus den Shortest-Path-Tree eines Startknotens
ermittelt, betrachtet er alle Knoten. Dadurch kann es nicht vorkommen, dass manche
Pfade wie beim Dijkstra-Algorithmus nicht beachtet werden. Dadurch können auch
negative Kantengewichtungen korrekt verarbeitet werden.
•
•
1930 vom tschechischen Mathematiker Vojtěch Jarník entwickelt
Erweiterung des Dikstra-Algorithmus
2.3. Prim-Algorithmus
2.3.1. Beschreibung
•
•
Auch ein Greedy-Algorithmus, der lokale Idealfälle zum Aufbau des Spannbaumes
nutzt
Vergleichbar mit Kruskal, der auch minimalen Spannbaum ermittelt
2.3.2. Anwendbarkeit
Der Graph muss folgende Kriterien erfüllen:
•
Positive Kantengewichte im Graphen
2.3.3. Einsatzgebiet
•
Abschätzen von Reihenfolgen (optimales Broadcasting, Gaming)
•
Einsatz zur Routenplanung denkbar
2.3.4. Algorithmus
Schritt 1: Markiere einen Startknoten.
Schritt 2: Betrachte alle Kanten die von den markierten Knoten ausgehen und zu
Routing-Algorithmen
Chris, Johannes, Hans
15/33
Knoten fuehren die noch nicht markiert sind und markiere diejenige Kante mit dem
geringsten Gewicht.
Schritt 3: Markiere die Knoten, die mit der markierten Kante verbunden sind.
Schritt 4: Wiederhole ab Schritt 2 solange noch Knoten nicht markiert sind (Anzahl der
Knoten – 1 Wiederholungen).
2.3.5. Algorithmus-Beispiel
Routing-Algorithmen
Chris, Johannes, Hans
16/33
Routing-Algorithmen
Chris, Johannes, Hans
2.3.6. Laufzeiten / Komplexität
O(|V|2) (einfaches Feld)
optimiert:
O(|E|log|V|) (Vorrangswarteschlange)
17/33
Routing-Algorithmen
Chris, Johannes, Hans
2.3.7. Vorteile und Nachteile
+ sehr einfach zu implementieren
− nicht immer der minimaler Spannbaum
− nicht eindeutiges Ergebnis (mehrere korrekte Lösungen je nach Startknoten)
18/33
Routing-Algorithmen
Chris, Johannes, Hans
19/33
2.4. A*-Algorithmus
2.4.1. Beschreibung
A* findet den kürzesten Weges zwischen zwei Knoten im Graphen.
2.4.2. Anwendbarkeit
Der Graph muss folgende Kriterien erfüllen:
1. Positive Kantengewichte
2.4.3. Einsatzgebiet
•
Hauptsächlich Navigation, Wegsuche in Routenplanern
•
Allgemeine Probleme die in Graphen darstellbar sind (anhand der Kostenfunktion)
◦ 15-Puzzle, Damenproblem
2.4.4. Algorithmus
Schritt 1: Lege Start- und Zielknoten fest
Schritt 2: Bestimme Heuristik wie folgt: 0 ≤h()≤ g() beginne am Zielknoten
g() = Gewichtung
h() = Heuristik
Schritt 3: Beginne beim Startknoten
Schritt 4: Suche die Kante mit dem geringsten Gewicht und addiere die Heuristik dazu
Schritt 5: Gehe zu dem Knoten mit dem geringstem „Gesamtgewicht“ (errechnet in
Schritt 4)
Schritt 6: Wiederhole Schritte 4 und 5 bis der Zielknoten erreicht ist
Routing-Algorithmen
Chris, Johannes, Hans
2.4.5. Algorithmus-Beispiel
20/33
Routing-Algorithmen
Chris, Johannes, Hans
21/33
Routing-Algorithmen
Chris, Johannes, Hans
22/33
2.4.6. Laufzeiten / Komplexität
Worst Case:
O(|V|2) abhängig von der verwendeten Heuristik
Average Case: O(|E|⋅log|V |)
2.4.7. Vorteile und Nachteile
− Alle Knoten müssen im Speicher gehalten werden → Hoher Speicherbedarf → Für
viele Probleme nicht geeignet, da zu viele Knoten → Algorithmus findet dann keine
Lösung
+ Der Algorithmus ist optimal, es wird immer der kürzeste Weg zwischen zwei
Punkten gefunden.
+ Kann sehr vielfältig eingesetzt werden.
− Laufzeit hängt von der verwendeten Heuristik ab
− Grobe Richtung muss für Heuristik bekannt sein
− Schnellster weg schnell bestimmbar
Routing-Algorithmen
Chris, Johannes, Hans
23/33
2.5. Kruskal-Algorithmus
2.5.1. Beschreibung
Der Kruskal-Algorithmus berechnet den minimalen Spannbaum eines Graphen. Der
minimale Spannbaum (Minimal-Spanning-Tree) ist nicht unbedingt gleich dem ShortestPath-Tree.
2.5.2. Anwendbarkeit
Der Kruskal-Algorithmus ist anwendbar auf Graphen die folgende Kriterien erfüllen:
1. zusammenhängend : Jeder Knoten muss von jedem Knoten aus über die Kanten
erreichbar sein
2. ungerichtete Kanten
3. kantengewichtete : Alle Kanten müssen gewichtet sein.
2.5.3. Einsatzgebiet
Der Kruskal-Algorithmus wird zum Beispiel verwendet den minimalen Spannbaum von
Computer- oder Telefonnetzwerken zu berechnen und somit eine günstige Möglichkeit zu
finden die Geräte miteinander in einem Netzwerk zu verbinden.
Er wird auch in Annäherungsalgorithmen für das Travelling-Salesman-Problem verwendet.
2.5.4. Algorithmus
Schritt 1: Die Menge der gemerkten Knoten ist leer.
Schritt 2: Die Menge der Kanten aus denen der Spannbaum aufgebaut wird ist leet.
Schritt 3: Suche die kleinste Kante, die zwei noch nicht gemerkte Knoten verbindet
Schritt 4: Füge die durch die Kante verbundenen Knoten den gemerkten Knoten hinzu
Schritt 5: Füge die Kante dem Spannbaum hinzu
Schritt 6: Wiederhole Schritt 3 bis 5, bis alle existierenden Knoten in der Menge der
gemerkten Knoten sind
Routing-Algorithmen
Chris, Johannes, Hans
2.5.5. Algorithmus-Beispiel
24/33
Routing-Algorithmen
Chris, Johannes, Hans
25/33
2.5.6. Laufzeiten / Komplexität
Worst Case: O(E log V )
2.5.7. Vorteile und Nachteile
− Nur bedingt für Wegsuche einsetzbar da der minimale Spannbaum nicht gleich dem
Kürzester-Weg-Baum sein muss.
− Der Kruskal-Algorithmus arbeitet nicht-deterministisch, das heißt für gleiche
Graphen kann ein unterschiedlicher minimaler Spannbaum als Ergebnis entstehen.
+ Geringe Komplexität
Routing-Algorithmen
Chris, Johannes, Hans
26/33
2.6. Warshall und Floyd-Algorithmus
2.6.1. Beschreibung
Findet von jedem zu jedem anderen Knoten den kürzesten Weg.
2.6.2. Anwendbarkeit
Der Warshall-Floyd-Algorithmus ist anwendbar auf Graphen die folgende Kriterien erfüllen:
1. zusammenhängend : Jeder Knoten muss von jedem Knoten aus über die Kanten
erreichbar sein
2. kantengewichtete : Alle Kanten müssen gewichtet sein.
3. Positive und negative Kantengewichte
4. Gerichtete und ungerichtete Graphen
2.6.3. Einsatzgebiet
Der Algorithmus könnte überall dort eingesetzt werden, wo man auf die Frage nach dem
kürzesten Weg in linearer Zeit antworten möchte, da der Algorithmus bei einem Durchlauf
die kürzesten Wege zwischen allen Punkten berechnet und diese in einer Sequenztabelle
abspeichert. Daraufhin ist ein Nachschauen in der Tabelle möglich um die kürzeste
Verbindung zwischen 2 Punkten zu finden und der kürzeste Weg muss nicht neu
berechnet werden.
Der Algorithmus eignet sich für die Wegfindung in unveränderlichen Graphen und wenn
man für die Berechnung der kürzesten Wege einmalig viel Zeit in Anspruch nehmen kann.
In solchem Fall ist das Nachschauen des kürzesten Weges in linearer Zeit möglich,
während zum Beispiel beim Dijkstra-Algorithmus ohne zusätzliches Abspeichern der
kürzesten Wege eine quadratische Zeit notwendig ist um einen kürzesten Weg
nachzuschauen.
2.6.4. Algorithmus
Schritt 1: Beginne mit Iteration 0.
Schritt 2: Erstelle eine Distanztabelle Dk wobei k für die Iteration des Algorithmus steht.
Schritt 3: Erstelle eine Sequenztabelle Sk wobei k für die Iteration des Algorithmus
steht.
Schritt 4: Fülle die Diagonale der Distanztabelle mit ∞.
Schritt 5: Fülle die Diagonale der Sequenztabelle mit - .
Schritt 6: Trage sichtbare einschrittige Distanzen in die Distanztabelle eine.
Schritt 7: Fülle die Sequenztabelle mit den Knotennamen der jeweiligen Spalte der
Routing-Algorithmen
Chris, Johannes, Hans
27/33
Sequenztabelle.
Schritt 8: Beginne mit der ersten Iteration (k+1).
Schritt 9: Markiere ein Kreuz in der Distanztabelle, sodass Reihe und Spalte der
momentanen Iteration das Kreuz bilden.
Schritt 10: Markiere alle Zellen zu denen sich waagerecht und senkrecht im Kreuz
Gewichte / Distanzen befinden die nicht ∞ sind.
Schritt 11: Berechne neue Distanzwerte für die Zellen der Distanztabelle wie folgt:
i = Reihe
j = Spalte
k = Iteration/Durchgang
Min : Berechnet das Minimum
Z : Zelle
Z(i, j)) = Min(Z(i, j), Z(i, k) + Z(k, I))
Schritt 12: Aktualisiere die Sequenztabelle wie folgt:
Falls neuer Wert in Distanztabelle trage bei gleicher Reihe und Spalte in der
Sequenztabelle k (Iteration / Durchgang) ein.
Falls kein neuer Wert, dann keine Veränderung nötig.
Schritt 13: Wiederhole ab Schritt 8 solange bis k = Anzahl der Knoten – 1.
2.6.5. Algorithmus-Beispiel:
Schritt 0:
Distanz und Sequenztabelle
Schritt 1:
Routing-Algorithmen
Chris, Johannes, Hans
28/33
Diagonale mit ∞ füllen
D0
1
2
3
4
S0
1
-
∞
∞
∞
1
2
∞
-
∞
∞
2
3
∞
∞
-
∞
3
4
∞
∞
∞
-
4
1
2
3
4
1
2
3
4
Schritt 2:
Einschrittig sichtbare Distanzen eintragen
D0
1
2
3
4
S0
1
-
2
4
∞
1
2
2
-
1
5
2
3
4
1
-
3
3
4
∞
5
3
-
4
Schritt 3:
Sequenztabelle auffüllen mit dem Knotennamen der Spalte
D1
1
2
3
4
S0
1
2
3
4
1
-
2
4
∞
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
4
1
-
3
3
1
2
-
4
4
∞
5
3
-
4
1
2
3
-
Schritt 4:
Markiere Kreuz sodass Reihe und Spalte der momentanen Iteration (am Anfang 1) das
Kreuz bilden
Routing-Algorithmen
Chris, Johannes, Hans
29/33
D1
1
2
3
4
S0
1
2
3
4
1
-
2
4
∞
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
4
1
-
3
3
1
2
-
4
4
∞
5
3
-
4
1
2
3
-
Schritt 5:
Markiere alle Zellen zu denen sich waagerecht und senkrecht im Kreuz Gewichte /
Distanzen befinden die nicht ∞ sind
D1
1
2
3
4
S1
1
2
3
4
1
-
2
4
∞
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
4
1
-
3
3
1
2
-
4
4
∞
5
3
-
4
1
2
3
-
Schritt 6:
Berechne Distanz in den markierten Zellen.
i =
j =
k =
Min
Z :
Reihe
Spalte
Iteration/Durchgang
: Berechnet das Minimum
Zelle
Z(i, j)) = Min(Z(i, j), Z(i, k) + Z(k, I))
D1
1
2
3
4
S1
1
2
3
4
1
-
2
4
∞
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
4
1
-
3
3
1
2
-
4
4
∞
5
3
-
4
1
2
3
-
Schritt 7:
Sequenztabelle aktualisieren:
Routing-Algorithmen
Chris, Johannes, Hans
30/33
Falls neuer Wert in Distanztabelle trage bei gleicher Reihe und Spalte in der
Sequenztabelle k (Iteration / Durchgang) ein.
Falls kein neuer Wert, dann keine Veränderung nötig.
D1
1
2
3
4
S1
1
2
3
4
1
-
2
4
∞
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
4
1
-
3
3
1
2
-
4
4
∞
5
3
-
4
1
2
3
-
D1
1
2
3
4
S1
1
2
3
4
1
-
2
4
∞
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
4
1
-
3
3
1
2
-
4
4
∞
5
3
-
4
1
2
3
-
Schritt 8:
Erhöhe k (Iteration / Durchgang) um 1.
Schritt 9:
Wiederhole solange bis Anzahl der Iterationen = Anzahl der Knoten – 1 ab Schritt 4
Vollständiges Beispiel:
Iteration 2:
D2
1
2
3
4
S2
1
2
3
4
1
-
2
4
∞
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
4
1
-
3
3
1
2
-
4
4
∞
5
3
-
4
1
2
3
-
Routing-Algorithmen
Chris, Johannes, Hans
31/33
D2
1
2
3
4
S2
1
2
3
4
1
-
2
3
7
1
-
2
3
4
2
2
-
1
5
2
1
-
3
4
3
3
1
-
3
3
1
2
-
4
4
7
5
3
-
4
1
2
3
-
D2
1
2
3
4
S2
1
2
3
4
1
-
2
3
7
1
-
2
2
2
2
2
-
1
5
2
1
-
3
4
3
3
1
-
3
3
2
2
-
4
4
7
5
3
-
4
2
2
3
-
D3
1
2
3
4
S3
1
2
3
4
1
-
2
3
7
1
-
2
2
2
2
2
-
1
5
2
1
-
3
4
3
3
1
-
3
3
2
2
-
4
4
7
5
3
-
4
2
2
3
-
D3
1
2
3
4
S3
1
2
3
4
1
-
2
3
6
1
-
2
2
2
2
2
-
1
4
2
1
-
3
4
3
3
1
-
3
3
2
2
-
4
4
6
4
3
-
4
2
2
3
-
Iteration 3:
Routing-Algorithmen
Chris, Johannes, Hans
32/33
D3
1
2
3
4
S3
1
2
3
4
1
-
2
3
6
1
-
2
2
3
2
2
-
1
4
2
1
-
3
3
3
3
1
-
3
3
2
2
-
4
4
6
4
3
-
4
3
3
3
-
Tabelle der kürzesten Wege:
Start
Ziel
Route
Länge
1
2
1→2
2
1
3
1→2→3
3
1
4
1→2→3→4
6
2
3
2→3
1
2
4
2→3→4
4
3
4
3→4
3
2.6.6. Laufzeiten / Komplexität
O(|V|3)
2.6.7. Vorteile und Nachteile
− Lange Laufzeit
+ Nach einmaliger Berechnung hat man alle kürzesten Wege von allen Knoten zu
allen anderen Knoten
Routing-Algorithmen
Chris, Johannes, Hans
33/33
3. Quellen
1. https://de.wikipedia.org/wiki/Routing#Routing-Algorithmen (24.09.2014)
2. https://en.wikipedia.org/wiki/Graph_%28mathematics%29 (24.09.2014)
3. https://de.wikipedia.org/wiki/Algorithmus_von_Kruskal (24.09.2014)
4. https://de.wikipedia.org/wiki/Spannbaum (24.09.2014)
5. https://en.wikipedia.org/wiki/Graph_theory (24.09.2014)
6. https://de.wikipedia.org/wiki/Link-State (24.09.2014)
7. https://de.wikipedia.org/wiki/Algorithmus_von_Kruskal#Formalisierter_Algorithmus
(24.09.2014)
8. https://www.tm.th-wildau.de/~sbruntha/wiki/index.php/Routingalgorithmen
(24.09.2014)
9. https://de.wikipedia.org/wiki/A*-Algorithmus (01.10.2014)
10. https://de.wikipedia.org/wiki/Dijkstra-Algorithmus (01.10.2014)
11. http://weierstrass.is.tokushima-u.ac.jp/ikeda/suuri/dijkstra/Dijkstra.shtml
(01.10.2014)
12. https://de.wikipedia.org/wiki/Bellman-Ford-Algorithmus (01.10.2014)
13. http://interactivepython.org/runestone/static/pythonds/Graphs/graphshortpath.html
(04.10.2014)
14. V. Turau, Algorithmische Graphentheorie, S. 80f
15. http://www.ukessays.com/essays/computer-science/in-flat-routing-algorithms.php
(04.10.2014)
Herunterladen