8. Kürzeste Wege in Graphen

Größe: px
Ab Seite anzeigen:

Download "8. Kürzeste Wege in Graphen"

Transkript

1 . Kürzeste Wege in Graphen Problemstellung Ungewichtete Graphen und erweiterte Breitensuche Distanzgraphen und Dijkstra-Algorithmus Gewichtete Digraphen und Moore-Ford-Algorithmus Netzpläne und erweiterte topologische Sortierung Alle kürzeste Wege in gewichteten Digraphen mit Floyd-Algorithmus Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

2 Problemstellung kürzeste Wege () Im allgemeinen gibt es zwischen zwei Knoten u und v mehrere Wege. Ein Weg von u nach v heißt kürzester Weg, falls der Weg minimale Länge hat. Weglänge bei gewichtetem Graph ist Summe der Kantengewichte. Weglänge bei ungewichtetem Graph ist Anzahl der Kanten. Die Distanz d(u,v) zwischen u und v wird als die Länge eines kürzesten Weges definiert. Falls es keinen Weg von u nach v gibt, ist d(u,v) =. 6 6 Weg von nach mit Länge. Kürzester Weg von nach mit Länge. 0 Damit ist Distanz d(,) =. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

3 Problemstellung kürzeste Wege () Länge eines Weges muss nicht die wörtliche Bedeutung haben. Die Gewichte (Kosten) der Kanten und damit die Weglängen können in Abhängigkeit von der Anwendung ganz unterschiedliche Bedeutungen haben. Beispiele: - Streckenlänge - Zeitspannen - Kosten - Profit: Gewinn/Verlust (Gewichte können positiv und negativ sein) - Wahrscheinlichkeiten Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

4 Verschiedene Problemvarianten () Single pair shortest path: Kürzeste Wege zwischen zwei Knoten: () Single-source shortest-path problem: Kürzeste Wege zwischen einem Knoten und allen anderen Knoten () All pairs shortest path: Kürzeste Wege zwischen allen Knotenpaaren. Für Problem () kennt man keine bessere Lösung, als einen Algorithmus für Lösung () zu nehmen, der abgebrochen wird, sobald der Zielknoten erreicht wird. Problem () kann auf Problem () zurückgeführt werden. Bei dicht besetzten Graphen (d.h. viele Kanten) gibt es jedoch eine effizientere Lösung, die zudem auch negative Kantengewichte zulässt. Problemstellungen lassen sich für verschiedene Graphtypen (gerichtet oder ungerichtet, gewichtet oder ungewichtet) algorithmisch unterschiedlich lösen. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

5 Verschiedene Algorithmen A B C D E Problemvariante Single-source shortest-path für ungewichtete Graphen Single-source shortest-path für Distanz-Graphen (nur positive Gewichte) Single-source shortest-path für gewichtete Digraphen (auch negative Gewichten) Single-source shortest-path für gewichtete, azyklische Digraphen mit einem Start- und einem Endknoten (Netzpläne) All pairs shortest path für gewichtete Digraphen (auch negative Gewichte) Algorithmus Erweiterte Breitensuche Algorithmus von Dijkstra; A*-Verfahren Algorithmus von Moore und Ford Erweiterte topologische Sortierung Algorithmus von Floyd A ist ein Spezialfall von B. Wendet man den Dijkstra-Algorithmus auf Graphen mit Kantengewichten an, ergibt sich eine Breitensuche. D ist ein Spezialfall von C. Der auf Variante D zugeschnittene Algorithmus ist jedoch wesentlich effizienter als der Algorithmus für Variante C. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

6 . Kürzeste Wege in Graphen Problemstellung Ungewichtete Graphen und erweiterte Breitensuche Distanzgraphen und Dijkstra-Algorithmus Gewichtete Digraphen und Moore-Ford-Algorithmus Netzpläne und erweiterte topologische Sortierung Alle kürzeste Wege in gewichteten Digraphen mit Floyd-Algorithmus Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-6

7 Erweiterte Breitensuche Single-source shortest-path: Gesucht sind alle kürzesten Wege von einem Startknoten s zu allen anderen Knoten. Beginne bei s und durchlaufe Graph mit Breitensuche. Speichere für jeden besuchten Knoten v die Distanz d[v] zu Startknoten s. Speichere Vorgängerknoten p[v] im kürzesten Weg nach v. p stellt ein Baum mit Wurzel s dar. Der kürzeste Weg von s nach v ergibt sich in umgekehrter Reihenfolge: v, p[v], p[p[v]],, p[ p[p[v]] ] = s Beispiel: Startknoten s = v 0 6 d[v] p[v] () () () 0 v 0 6 d[v] 0 p[v] v 0 6 d[v] 0 p[v] - () () () Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

8 Algorithmus für erweiterte Breitensuche Eingabe: Startknoten s und ungewichteter Graph G void shortestpath (Vertex s, Graph G, int[ ] d, Vertex[ ] p) { for ( jeden Knoten v ) { d[v] = ; p[v] = undef; d[s] = 0; // Distanz für Startknoten Queue<Vertex> q; q.add(s); Ausgabe: Distanzfeld d und Vorgängerfeld p while (! q.empty() ) { v = q.remove(); for ( jeden adjazenten Knoten w von v ) { if (d[w] == ) { // w noch nicht registriert d[w] = d[v] + ; p[w] = v; q.add(w); v 0 6 d[v] 0 p[v] v 0 6 d[v] 0 p[v] v 0 6 d[v] 0 p[v] - Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

9 Analyse der Breitensuche Für jeden Knoten w kann d[w] höchstens einmal von auf einen endlichen Wert gesetzt werden. Damit kommen in die Queue q höchstens V Knoten. Die while-schleife läuft damit höchstens V -mal. Jede Kantenrichtung wird höchstens einmal in einer der for-schleifen betraachtet. Verwendet man die Adjazenzlistendarstellung, ist der Aufwand für den Durchlauf aller for-schleifen gleich O( E ). Damit ergibt sich mit Adjazenzlistendarstellung insgesamt: T = O( V + E ) Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-9

10 . Kürzeste Wege in Graphen Problemstellung Ungewichtete Graphen und erweiterte Breitensuche Distanzgraphen und Dijkstra-Algorithmus Gewichtete Digraphen und Moore-Ford-Algorithmus Netzpläne und erweiterte topologische Sortierung Alle kürzeste Wege in gewichteten Digraphen mit Floyd-Algorithmus Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-0

11 Algorithmus von Dijkstra Idee () Single-source shortest-path: Gesucht sind alle kürzesten Wege von einem Startknoten s zu allen anderen Knoten im einem Distanz-Graphen (Gewichte müssen 0 sein). Ähnlich wie bei der Breitensuche werden alle Knoten, die als nächstes besucht werden können, in einer Liste K (Kandidatenliste) gehalten. Aus der Kandidatenliste wird immer der Knoten mit der kleinsten Distanz als nächster besucht v 0 6 d[v] 0 6 p[v] Kandidatenliste Bereits besucht Als nächstes wird Knoten mit Distanzwert besucht. d[v] Distanz zwischen v und Startknoten s = 0 p[v] Vorgängerknoten im kürzesten Weg nach v Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

12 Algorithmus von Dijkstra Idee () Wird ein neuer Knoten v besucht, dann kommen eventuell neue Nachbarknoten zur Kandidatenliste. Bei allen Nachbarknoten wird geprüft, ob ein Weg über v einen kürzeren Weg ergibt Knoten wird besucht 0 Knoten wird besucht v 0 6 d[v] 0 6 p[v] v 0 6 d[v] 0 6 p[v] Knoten ist zur Kandidatenliste neu dazu gekommen. Der Distanzwert von Knoten hat sich von 6 auf verbessert, da der Weg über Knoten kürzer ist als der bisherige. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

13 Algorithmus von Dijkstra void shortestpath (Vertex s, DistanzGraph G, double[ ] d, Vertex[ ] p ) { kl = Æ; // leere Kandidatenliste for (jeden Knoten v) { d[v] = ; p[v] = undef; d[s] = 0; // Startknoten () kl.insert(s); while (! kl.empty() ) { () lösche Knoten v aus kl mit d[v] minimal; for ( jeden adjazenten Knoten w von v ) { if (d[w] == ) // w noch nicht besucht und nicht in Kandidatenliste () kl.insert(w); if (d[v] + c(v,w) < d[w]) { p[w] = v; () d[w] = d[v] + c(v,w); Eingabe: Startknoten s und Distanzgraph G Ausgabe: Distanzfeld d und Vorgängerfeld p In der Kandidatenliste sind alle Knoten abgespeichert, die als nächstes besucht werden können. Die Zugriffsoperationen auf die Kandidatenliste sind rot gekennzeichnet. Mögliche Implementierungen werden auf der nächsten Folie diskutiert. Distanzwert für w verbessert sich. Kürzester Weg nach w geht nun über v. Falls in Zeile () w neu in kl eingefügt wurde, wird d[w] von zu einem endlichen Wert verbessert. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

14 Eigenschaften Die d-werte der besuchten Knoten in Zeile () sind monoton steigend. Begründung: die d-werte der anderen Kandidaten sind und bleiben d[v]. In Zeile () wird zwar für einen adjazenten Knoten w von v der d-wert verringert. Dennoch gilt d[w] d[v], da die Gewichte der Kanten c(v,w) 0 sind. while (! kl.empty() ) { () lösche Knoten v aus kl mit d[v] minimal; Knoten v wird besucht. for ( jeden adjazenten Knoten w von v ) { if (d[w] == ) // w noch nicht besucht und nicht in Kandidatenliste () kl.insert(w); if (d[v] + c(v,w) < d[w]) { p[w] = v; () d[w] = d[v] + c(v,w); Sobald ein Knoten v besucht wird (Zeile ()), ist sein kürzester Weg bekannt. Wird ein kürzester Weg von einem Startknoten s zu einem bestimmten Zielknoten z gesucht, dann kann das Verfahren abgebrochen werden, sobald v = z besucht wird. Ein Knoten wird höchstens einmal in die Prioritätsliste eingefügt. Daher kl.size() V. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

15 Kandidatenliste als Index-Heap Analyse () Speichere Kandidaten in einem Index-Heap (siehe Kap., Prioritätslisten), wobei als Priorität der Distanzwert aus Feld d genommen wird. Ein Index-Heap bietet eine effiziente Realisierung folgender Operationen an: - insert(v, d) in O(log V ): fügt Element v mit Priorität d ein. Aufruf in () und (). - v = delmin() in O(log V ): löscht Element mit kleinster Priorität. Aufruf in (). - change(v, dneu) in O(log V ): ändert den Vorrangwert des Elements v in dneu. Aufruf in (). Analyse des Dijkstra-Algorithmus mit Kandidatenliste als Index-Heap Jede Kantenrichtung wird genau einmal in einer der for-schleifen betrachtet. Da () und () in O(log V ) geht, ist für alle for-schleifen insgesamt O( E log V ) notwendig. Hinzu kommt höchstens V -mal die Ausführung von (), was O( V log V ) bedeutet. Insgesamt: T = O( E log V ) Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

16 Analyse () Kandidatenliste als unsortiertes Feld Speichere Kandidaten in einem unsortierten Feld. Damit benötigt die Operation in Zeile () (Minimum bestimmen) O( V ) und die Operationen in (), () und () benötigen O(). Analyse des Dijkstra-Algorithmus mit Kandidatenliste als unsortiertes Feld Die while-schleife wird höchstens V -mal durchgeführt. Für () ist O( V ) notwendig. Jede Kantenrichtung wird genau einmal in einer der for-schleifen betrachtet. Da () und () in O() geht, ist für alle for-schleifen insgesamt O( E ) notwendig. Insgesamt: T = O( V ) Fazit: Ist der Graph dicht besetzt, d.h. E = O( V ), dann ist die Variante mit Kandidatenliste als unsortiertes Feld besser. Ist der Graph dünn besetzt, d.h. E = O( V ), dann ist die Variante mit Kandidatenliste als Prioritätsliste besser. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-6

17 Beispiel zu Dijkstra-Algorithmus () Knoten 0 wird besucht 0 v 0 6 d[v] 0 p[v] v 0 6 d[v] 0 6 p[v] Knoten wird besucht 6 0 Knoten wird besucht v 0 6 d[v] 0 6 p[v] Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

18 Beispiel zu Dijkstra-Algorithmus () Knoten wird besucht 6 0 v 0 6 d[v] 0 6 p[v] v 0 6 d[v] 0 6 p[v] Knoten 6 wird besucht 6 Knoten wird besucht 0 v 0 6 d[v] 0 6 p[v] Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

19 Beispiel zu Dijkstra-Algorithmus () Kürzeste Wege für Startknoten s = 0 sind nun bekannt für die Zielknoten:,,, 6,. Kürzester Weg von 0 nach ist 0,, 6, mit Distanz d =. v 0 6 d[v] 0 6 p[v] Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-9

20 A*-Algorithmus: Verbesserung des Dijkstra-Algorithmus Ist der kürzeste Weg zu genau einem Zielknoten z gesucht und lässt sich die Distanz von einem Knoten v zum Zielknoten z durch eine Schätzfunktion h(v,z) abschätzen, dann lässt sich der Algorithmus von Dijkstra optimieren. Statt den Knoten v mit d[v] minimal als nächstes zu besuchen zu besuchen, wird der Knoten v besucht mit d[v] + h(v,z) minimal. Damit werden Knoten v bevorzugt, die näher zum Zielknoten liegen. Sind die Knoten des Graphen Punkte in der Euklidischen Ebene und die Gewichte gleich den Euklidischen Abständen (Luftlinienabstand), dann lässt sich als Schätzfunktion h(v,z) der Euklidische Abstand zwischen v und z wählen. z s h(,z) h(,z) Wird der kürzeste Weg von s nach z gesucht, wird zuerst Knoten besucht, weil dieser näher zu z liegt. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-0

21 A*- Algorithmus boolean shortestpath (Vertex s, Vertex z, DistanzGraph G, double[ ] d, Vertex[ ] p ) { kl = Æ; // leere Kandidatenliste for (jeden Knoten v) { d[v] = ; p[v] = undef; d[s] = 0; // Startknoten kl.insert(s); Ausgabe: Distanzfeld d und Vorgängerfeld p Eingabe: Startknoten s, Zielknoten z und Distanzgraph G while (! kl.empty() ) { lösche Knoten v aus kl mit d[v] + h(v,z) minimal; Änderungen gegenüber if (v == z) // Zielknoten z erreicht dem Diskstra-Algorithmus return true; sind blau gekennzeichnet. for ( jeden adjazenten Knoten w von v ) { if (d[w] == ) // w noch nicht besucht und nicht in Kandidatenliste kl.insert(w); if (d[v] + c(v,w) < d[w]) { p[w] = v; d[w] = d[v] + c(v,w); return false; Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

22 Korrektheit des A*- Algorithmus Das A*-Verfahren liefert immer einen kürzesten Weg, falls der Zielknoten z erreichbar ist und die Schätzfunktion h folgende Eigenschaften erfüllt: () h ist zulässig: 0 h(u,v) d(u,v) für alle Knoten u, v (h ist positiv und unterschätzt die Distanz d) () h ist monoton: h(u,v) c(u,w) + h(w,v) für alle Knoten u, v, w v h(u,v) h(w,v) u c(u,w) w Die Euklidische Abstandsfunktion erfüllt die beiden oberen Bedingungen. Die Schätzfunktion h(u,v) = 0 erfüllt trivialerweise beide Bedingungen. Man erhält dann genau den Algorithmus von Dijkstra. In der Literatur wird die Schätzfunktion auch Heuristik genannt (Heuristik = Strategie zur Lösungssuche) Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

23 Vergleich A*- und Dijkstra-Algorithmus Dijkstra-Algorithmus A*-Algorithmus 6 s z s z 6 Schätzfunktion h und Kantengewicht c sind als Euklidischer Abstand definiert. Im Beispiel wird kürzester Weg von Startknoten s nach Zielknoten z berechnet. Reihenfoge der besuchten Knoten in rot. Berechnete kürzeste Wege sind blau markiert. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

24 Schlechtes Verhalten von A* bei Sackgassen A* geht direkt auf das Ziel z zu, läuft aber in eine Sackgasse. s z A* besucht nun einen Knoten, der sich anfangs vom Ziel entfernt und daher nicht früher betrachtet wurde. s z Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

25 . Kürzeste Wege in Graphen Problemstellung Ungewichtete Graphen und erweiterte Breitensuche Distanzgraphen und Dijkstra-Algorithmus Gewichtete Digraphen und Moore-Ford-Algorithmus Netzpläne und erweiterte topologische Sortierung Alle kürzeste Wege in gewichteten Digraphen mit Floyd-Algorithmus Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

26 Graphen mit negativen Gewichten () Hat ein Graph auch negative Gewichte, dann ist die Existenz eines kürzesten Weges nicht gesichert, da Zyklen mit negativer Länge existieren können. Durch mehrfaches Ablaufen solcher Zyklen kann die Weglänge beliebig klein (negativ) werden. u - v Zyklus mit Länge = + + = - Damit kann die Weglänge von u nach v beliebig klein werden. Die Eindeutigkeit kürzester, einfacher Wege ist jedoch garantiert (d.h. Knoten dürfen nicht mehrfach auftreten). Jedoch sind bis heute hierfür keine effizienten Algorithmen bekannt. Daher: Einschränkung auf beliebig gewichtete Digraphen ohne Zyklen negativer Länge. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-6

27 Graphen mit negativen Gewichten () Der Algorithmus von Dijkstra arbeitet bei Graphen mit negativ gewichteten Kanten im allgemeinen nicht korrekt: Mit Algorithmus von Dijkstra berechneter Weg mit Länge =.. s= z=9-0 6 Kürzester Weg von s nach z mit Länge = -6. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

28 Algorithmus von Moore und Ford - Idee Single-source shortest-path: Gegeben ist ein gewichteter Digraph (Gewichte können negativ sein). Gesucht sind alle kürzesten Wege zwischen einem Startknoten s und allen anderen Knoten, sofern der Graph keine negativen Zyklen enthält. Ausgangspunkt ist der Algorithmus von Dijkstra. Beim Algorithmus von Dijkstra wird jeder Knoten v höchstens einmal besucht und zwar dann, wenn der kürzeste Weg zu v bekannt ist. Kommen aber negative gewichtete Kanten vor, dann muss jeder Knoten im allgemeinen mehrere Male besucht werden und zwar immer dann, wenn sich ein noch kürzerer Weg ergibt. Die Reihenfolge, in der die Knoten besucht werden, spielt nun keine Rolle mehr. Es wird daher eine Schlange statt einer Vorrangswarteschlange gewählt. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

29 Algorithmus von Moore und Ford void shortestpath (Vertex s, WeightedDiGraph G, double[ ] d, Vertex[ ] p) { Queue<Vertex> kl = Æ; for (jeden Knoten v) { d[v] = ; p[v] = undef; d[s] = 0; // Startknoten kl.add(s); while (! kl.empty()) { v = kl.remove(); for ( jeden adjazenten Knoten w von v ) { () if (d[v] + c(v,w) < d[w]) { () p[w] = v; () d[w] = d[v] + c(v,w); () if (! kl.contains(w) ) () kl.add(w); Ausgabe: Distanzfeld d und Vorgängerfeld p Eingabe: Startknoten s und gewichteter und gerichteter Graph g In der Kandidatenliste sind alle Knoten abgespeichert, die als nächstes besucht werden können. Die Zugriffsoperationen auf die Kandidatenliste sind rot gekennzeichnet. Distanzwert für w verbessert sich. Kürzester Weg nach w geht nun über v. w muss evtl. nochmals besucht werden. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-9

30 Beispiel zu Moore-Ford-Algorithmus s= Nächster besuchter Knoten ist rot gekennzeichnet. v 6 9 d[v] v 6 9 p[v] Kandiatenliste kl,,,,,,,, 6, 6, 9 6, 9, 9,,,,, 9, 9, 9,, 9 Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-0

31 Analyse des Moore-Ford-Algorithmus Enthält der Graph keine Zyklen mit negativer Länge, dann wird jeder Knoten maximal ( V -)-mal in die Schlange kl eingefügt (Zeile () im Algorithmus). (Begründung siehe [Turau]). Wird ein Knoten V -mal eingefügt, dann muss es ein Zyklus mit negativer Länge geben und es könnte im Algorithmus eine entsprechende Ausgabe erfolgen. Würde jeder Knoten genau einmal in die Schlange kl eingefügt werden, wäre der Aufwand für alle for-schleifen gerade O( E ). Denn jede Kante im Graph wird genau einmal in einer der for-schleifen betrachtetet. (Zeile () kl.contains(w) kann mit Hilfe eines Booleschen Felds in O() realisiert weden). Da nun aber jeder Knoten bis zu ( V -)-mal in die Schlange kl eingefügt werden kann, erhält man insgesamt: T = O( E * V ). Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

32 . Kürzeste Wege in Graphen Problemstellung Ungewichtete Graphen und erweiterte Breitensuche Distanzgraphen und Dijkstra-Algorithmus Gewichtete Digraphen und Moore-Ford-Algorithmus Netzpläne und erweiterte topologische Sortierung Alle kürzeste Wege in gewichteten Digraphen mit Floyd-Algorithmus Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

33 Netzpläne Netzpläne sind azyklische Digraphen mit genau einem Start und einem Endknoten. Die Knoten (außer Start- und Endknoten) stellen oft gewisse Aktivitäten dar und sind mit einem Gewicht (Aufwand wie z.b. Zeitangaben) versehen. Start Ende Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

34 Kritischer Pfad Kritischer Pfad ist ein Weg vom Start- zum Ziel-Knoten mit maximalen Aufwand. Beispiel Projektplan: - Die Knoten sind Tätigkeiten, die in einem Projekt durchgeführt werden müssen. - Die Gewichte geben die Zeitdauer der Aktivitäten an. - Die gerichteten Kanten legen Reihenfolgenbeziehungen fest. - Die Länge eines kritischen Pfades gibt die frühestmögliche Projektfertigstellung an. Start Ende Netzplan und kritischer Pfad mit Zeitaufwand Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

35 Bestimmung eines kritischen Pfades Werden die an den Knoten notierten Gewichte an die einmündenden Kanten mit umgekehrtem Vorzeichen verschoben, erhält man einen gewichteten, azyklischen Digraphen. Die Bestimmung des kritischen Pfades lässt sich dann zurückführen auf die Berechnung eines kürzesten Weges vom Start- zum Zielknoten. Start Ende Gewichteter, azyklischer Digraph mit kürzestem Weg der Länge -. Prinzipiell ließe sich der kritische Pfad mit dem Algorithmus von Moore und Ford bestimmen. Für den Spezialfall der Netzpläne ist jedoch ein auf toplogischer Sortierung basierender Algorithmus wesentlich effizienter. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

36 Erweiterte topologische Sortierung () Single-source shortest-path für Netzpläne: Gewichteter, azyklischer Digraph (Gewichte können negativ sein) mit genau einem Startknoten s. Gesucht sind alle kürzeste Wege zwischen s und allen anderen Knoten. Besuche die Knoten wie bei der topologischen Sortierung. Dazu werden in der Schlange alle noch nicht besuchten Knoten gehalten, deren Vorgänger bereits besucht worden sind. Bei jedem Knotenbesuch werden dann wie beim Algorithmus von Moore und Ford für alle Nachfolgerknoten die Distanzen und der gefundene kürzeste Weg gegebenenfalls aktualisiert. Analyse (wie bei der topologischen Sortierung): T = O( E + V ). Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-6

37 Erweiterte topologische Sortierung () void allshortestpath (WeightedDiGraph g, double[ ] d, Vertex[ ] p) { int[ ] indegree; // Anz. noch nicht besuchten Vorgänger Queue<Vertex> q; for (jeden Knoten v) { d[v] = ; p[v] = undef; indegree[v] = Anzahl der Vorgänger; if (indegree[v] == 0) { q.add(v); d[v] = 0; if (q.size() > ) { println( Fehler; mehr als ein Startknoten ); return; Ausgabe: Distanzfeld d und Vorgängerfeld p Eingabe: Gewichteter Digraph G mit genau einem Startknoten. int k = 0; while (! q.empty() ) { v = q.remove(); k++; for ( jeden Nachfolger w von v ) { if (d[v] + c(v,w) < d[w]) { p[w] = v; d[w] = d[v] + c(v,w); if (--indegree[w] == 0) q.add(w); Programmteile, um die die topologische Sortierung erweitert wurde, sind blau gekennzeichnet. if (k!= n) println( Fehler; Graph ist zyklisch ); Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

38 Beispiel zu erweiterten topologischen Sortierung Start Ende Kürzester Weg Kand.Liste q 0 0,,, 6 6,,, 9, 0 0 v d[v] v p[v] Nächster besuchter Knoten ist rot gekennzeichnet. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

39 . Kürzeste Wege in Graphen Problemstellung Ungewichtete Graphen und erweiterte Breitensuche Distanzgraphen und Dijkstra-Algorithmus Gewichtete Digraphen und Moore-Ford-Algorithmus Netzpläne und erweiterte topologische Sortierung Alle kürzeste Wege in gewichteten Digraphen mit Floyd-Algorithmus Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-9

40 Idee des Floyd-Algorithmus All pairs shortest-path: Gegegeben ist ein gewichteter Digraph (Gewichte können negativ sein). Gesucht sind kürzeste Wege zwischen allen Knotenpaaren, sofern der Graph keine negativen Zyklen enthält. Der Algorithmus basiert im wesentlichen auf dem Optimalitätsprinzip von Bellman, das für Graphen ohne Zyklen negativer Länge gilt. Für jeden Knoten u auf einem kürzesten Weg von v nach w gilt: d(v,w) = d(v,u) + d(u,w). D.h. Teilwege von kürzesten Wegen müssen ebenfalls kürzeste Wege sein. v u w Der Floyd-Algorithmus arbeitet nach dem Prinzip des dynamischen Programmierens. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-0

41 Einschub - dynamisches Programmieren () Problem: Bei rekursiven Funktionen kann es zu mehrfacher Berechnung des gleichen Funktionswerts kommen. Beispiel: Fibonacci-Funktion Aufrufstruktur für fib(): int fib(int n) { if (n == 0) return 0; else if (n == ) return ; else return fib(n-) + fib(n-); fib() fib() fib() fib() fib() fib() fib() fib(0) fib(0) Bei Aufruf von fib() wird -mal fib(), -mal fib() und -mal fib(0) berechnet. Bei Aufruf von fib() wird -mal fib(), -mal fib(), -mal fib(0), -mal fib(9), -mal fib() etc. berechnet. Es lässt sich zeigen, dass bei Aufruf von fib(n) insgesamt etwa (/Ö)*f n+ Aufrufe stattfinden, wobei f = (+Ö)/».6 (f wird auch Goldener Schnitt genannt.) Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

42 Einschub - dynamisches Programmieren () Dynamisches Programmieren: Ausgangspunkt: Rekursiv definierte Funktion. Berechne rekursive Funktion mit Iteration und Tabelle statt Rekursion: Beginne mit den Basisfällen und wende dann Rekursionsschritte aufwärts an, wobei Zwischenergebnisse in einer Tabelle zur späteren Verwendung abgespeichert werden. Dynamisches Programmieren geht auf ein Verfahren zur Optimierung technischer Prozesse von Bellman 9 zurück. Beispiel: Fibonacci-Funktion int[ ] fib = new int[n+]; Tabelle fib[0] = 0; fib[] = ; Basisfälle for (int n = ; n <= N; n++) fib[n] = fib[n-] + fib[n-]; Rekursionsschritt aufwärts angewendet Analyse der Fibonacci-Funktion: dynamisch programmiertes fib: O(n) rekursives fib: O(.6 n ) Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

43 Einschub - dynamisches Programmieren () Weiteres Beispiel aus der Kombinatorik: Eine Auswahl (Teilmenge) von k verschiedenen Elementen aus einer Menge von n Elementen heißt Kombination. Die Anzahl der Kombinationen schreibt man in der Mathematik auch als:! " Dieser Ausdruck ist nur für n k 0 definiert. 9 Beispiel: die Anzahl der möglichen Lottokombinationen ist gleich 6. Rekursive Formulierung! " =! " +! " = falls " = 0! " =, falls " =!! " Rekursionsfall: Um eine k-elementige Teilmenge aus einer Menge mit n Elementen auszuwählen, kann entweder das n-te Element weggelassen oder dazu genommen werden. Basisfälle: Bei k = 0 gibt es nur eine Teilmenge, nämlich die leere Teilmenge. Bei k = n ist die Menge selbst die einzige Teilmenge. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

44 Einschub - dynamisches Programmieren () Iterative Berechnung mit Tabelle int[ ][ ] komb= new int[n+][n+]; for (int n = 0; n <= N; n++) { komb[n][0] = ; // Basisfall () komb[n][n] = ; // Basisfall () Tabelle zum Speichern der Zwischenergebnisse:! komb[n][k] = " // Rekursionsschritt: for (int n = ; n <= N; n++) for (int k = ; k < n; k++) komb[n][k] = komb[n-][k] + komb[n-][k-]; Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

45 Einschub - dynamisches Programmieren () Beispiel: für N = ergibt sich die Tabelle komb wie folgt: n \ k 0 0 Basisfälle + 6 Rekursionsfall komb[n][k] = komb[n-][k] + komb[n-][k-]; Pascalsches Dreieck! Bemerkung: Für die Berechnung von komb[n][k] würde es genügen nur die jeweils letzte Zeile der Matrix zu speichern. Daher eindimensionales Feld statt Matrix. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

46 Kürzeste Wege mit dynamischer Programmierung () Nochmals die Problemstellung - Berechne kürzeste Wege zwischen allen Knotenpaaren in einem gewichteten, gerichteten Graphen. Graph darf keine Zyklen negativer Länge enthalten. - Knoten sind durchnummeriert: v 0, v,, v n-. Formulierung des Problems als Funktion - D k (i, j) = Distanz (Länge eines kürzesten Weges) von v i nach v j, wobei nur Wege von v i nach v j betrachtet werden, die über Knoten aus {v 0, v,, v k gehen. - D n- löst unser Problem! Rekursive Formulierung - Basisfall k = - (nur die direkte Verbindung von v i nach v j ist erlaubt): D - (i, j) = c(v i, v j ) (Gewicht der Kante (v i, v j )) - Rekursionfall (k ³ 0): D k (i, j) = min { D k- (i, j), D k- (i, k) + D k- (k, j) Länge eines kürzesten Wegs von v i nach v j, ohne über v k zu gehen. Länge eines kürzesten Wegs von v i nach v j über v k setzt sich zusammen aus kürzestem Weg von v i nach v k und kürzestem Weg von v k nach v j. (Optimalitätsprinzip von Bellman) Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-6

47 Kürzeste Wege mit dynamischer Programmierung () Iterative Berechnung von D k mit Tabelle: - D k (i, j) lässt sich für jedes k durch eine -dimensionale Matrix D[i][j] darstellen. D - wird gemäß Basisfall initialisiert; D 0 ergibt sich aus D - nach dem Rekursionsfall, D aus D 0, usw. D n- ist die Lösung unseres Problems. - Es genügt, D k nur für den jeweils aktuellen Wert von k abzuspeichern. D k (i, j) = min { D k- (i, j), D k- (i, k) + D k- (k, j) = min { D k- (i, j), D k (i, k) + D k (k, j) (denn D k (i, k) = D k- (i, k) und D k (k, j) = D k- (k, j)) // Tabelle int[ ][ ] D = new int[n][n]; // Starte mit D - : for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) if (i == j) D[i][j] = 0; else D[i][j] = c(v i, v j ); for (int k = 0; k < n; k++) // Berechne D k : for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (D[i][j] > D[i][k] + D[k][j]) D[i][j] = min {D[i][j], D[i][k] + D[k][j] ; D[i][j] = D[i][k] + D[k][j]); Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

48 Speicherung der kürzesten Wege Zur Speicherung der gefundenen Wege wird eine Vorgängermatrix P eingesetzt: P[i][j] = Vorgängerknoten von v j im kürzesten Weg von v i nach v j. Damit kann der kürzeste Weg von Start s nach Ziel z mit z beginnend in eine Liste von hinten nach vorne eingetragen werden: List<Integer> getshortestpath (int s, int z, Vertex[ ][ ] P) LinkedList<Integer> shortestpath; Vertex v = z; // Ziel while ( v!= s ) { shortestpath.addfirst(v); v = P[s][v]; shortestpath.addfirst(s); kürzester Weg von s nach z. return shortestpath; Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

49 Algorithmus von Floyd void computeallshortestpath (WightedDiGraph G, double[ ][ ] D, Vertex[ ][ ] P) { // Initialisiere D und P: for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { P[i][j] = undef; if (i == j) D[i][j] = 0 else { D[i][j] = c(v i, v j ); //, falls keine Kante (v i,v j ) existiert if (D[i][j]!= ) P[i][j] = i; Ausgabe: Distanzmatrix D und Vorgängermatrix P Eingabe: Gewichteter Digraph G mit n Knoten. for (int k = 0; k < n; k++) // Berechne D k : for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (D[i][j] > D[i][k] + D[k][j]) { D[i][j] = D[i][k] + D[k][j]; P[i][j] = P[k][j]; Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-9

50 Analyse des Floyd-Algorithmus Enthält der Graph Zyklen mit negativer Länge, dann wird ein Diagonalelement von D negativ. Der Algorithmus kann leicht um eine passende Abprüfung mit entsprechender Ausgabe erweitert werden. Analyse: die dreifach geschachtelten for-schleifen ergeben: T = O( V ). Vergleich zu Dijkstra-Algorithmus: Ist der Graph dünn-besetzt (d.h. E = O( V ) und alle Gewichte positiv, dann kann der Dijkstra-Algorithmus mit einem Index-Heap auch für jeden Knoten aus V als Startknoten durchgeführt werden. Damit: T = O( V E log( V ) = O( V log( V ). Also: Dijkstra-Algorithmus besser als Floyd-Algorithmus. Ist der Graph dicht besetzt und alle Gewichte positiv, dann würde das V -malige Durchführen des Dijkstra-Algorithmus (mit unsortierter Prioritätsliste) ebenfalls zu T = O( V ) führen. Dann ist aber aufgrund der einfacheren Datenstruktur der Floyd-Algorithmus besser als der Dijkstra-Algorithmus. Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09-0

51 Beispiel zu Floyd-Algorithmus v 0 v - - v - v - v D - D 0 D D D D P - P 0 P P P P Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Kürzeste Wege in Graphen SS 09 -

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Problemstellung Ungewichtete Graphen Distanzgraphen Gewichtete

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Flüsse in Netzwerken Zusammenhangskomponenten

Mehr

Teil III: Graphenalgorithmen

Teil III: Graphenalgorithmen Teil III: Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Flüsse in Netzwerken Zusammenhangskomponenten

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Problemstellung Algorithmus von Prim

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege Kap. 6.6: Kürzeste Wege Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1./. VO DAP SS 009./9. Juli 009 1 Nachtest für Ausnahmefälle Di 1. Juli 009, 16:00 Uhr,

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege 0.0.00 Nachtest für Ausnahmefälle Kap..: Kürzeste Wege Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund./. VO DAP SS 00./. Juli 00 Di. Juli 00, :00 Uhr, OH, R.

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

Mehr

2. Das single-source-shortest-path-problem

2. Das single-source-shortest-path-problem . Das single-source-shortest-path-problem Zunächst nehmen wir an, dass d 0 ist. Alle kürzesten Pfade von a nach b sind o.b.d.a. einfache Pfade.. Dijkstra s Algorithmus Gegeben: G = (V, A), (A = V V ),

Mehr

1 Kürzeste Pfade in Graphen

1 Kürzeste Pfade in Graphen Praktikum Algorithmen-Entwurf (Teil 3) 03.11.2011 1 1 Kürzeste Pfade in Graphen Es sei ein gerichteter Graph G = (V, E) mit V = n Knoten, E = m Kanten und Kantengewichten c : E R gegeben. Ein Pfad in G

Mehr

10 Kürzeste Pfade SSSP-Problem

10 Kürzeste Pfade SSSP-Problem In diesem Kapitel setzen wir uns mit der Berechnung von kürzesten Pfaden in einem Graphen auseinander. Definition 10.1 (Pfadgewichte). i) Das Gewicht eines Pfades p = (v 0, v 1,..., v k ) ist die Summe

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester H.

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

Graphenalgorithmen I

Graphenalgorithmen I Graphenalgorithmen I Vortrag im Seminar Hallo Welt! für Fortgeschrittene 7. Juni 211 Graphenalgorithmen I 1/33 Motivation Problem Wie komme ich am schnellsten ins Kanapee? Problem Wie kommt ein Datenpaket

Mehr

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Stefan Thater & Michaela Regneri Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Übersicht Topologische Sortierung (einfach) Kürzeste Wege finden

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

Mehr

9 Minimum Spanning Trees

9 Minimum Spanning Trees Im Folgenden wollen wir uns genauer mit dem Minimum Spanning Tree -Problem auseinandersetzen. 9.1 MST-Problem Gegeben ein ungerichteter Graph G = (V,E) und eine Gewichtsfunktion w w : E R Man berechne

Mehr

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. 8.4 Digraphen mit negativen Kantengewichten 8.4.1 Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. k 4 5 1 s 1 3 2 C k 0 k 3 1 1 1 k 1 k 2 v Sollte ein Pfad von s nach C und

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455 Wiederholung Traversierung eines Graphen via Tiefendurchlaufs

Mehr

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure . Der Algorithmus von Dijkstra Informatik II für Verkehrsingenieure Problemstellung Gegeben: Graph G =(V, E, len) mit positiver Kantenfunktion len : E! R 0, Knoten s, t V Mögliche Aufgaben Berechne Distanz

Mehr

Kürzeste (billigste) Wege

Kürzeste (billigste) Wege Kürzeste (billigste) Wege 1. Kürzeste (billigste) Wege Gerichteter Graph G = (V, E) Kostenfunktion c : E R 1 2 1 3 3 2 4 4 2 6 6 5 3 2 Entfernung zwischen zwei Knoten Kosten eines Wegs P = v 0, v 1,...,

Mehr

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Vorlesung 2 KÜRZESTE WEGE

Vorlesung 2 KÜRZESTE WEGE Vorlesung 2 KÜRZESTE WEGE 34 Kürzeste Wege im Graphen Motivation! Heute:! Kürzeste Wege von einem Knoten (SSSP)! Kürzeste Wege zwischen allen Knotenpaaren (APSP)! Viele Anwendungen:! Navigationssysteme!

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil 2: Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Flüsse in Netzwerken Zusammenhangskomponenten

Mehr

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47 Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford

Mehr

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra Datenstrukturen und Algorithmen Vorlesung 17: (K) Joost-Pieter Katoen Lehrstuhl für Informat Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 1. Juni 15 1 Joost-Pieter

Mehr

p = (v 0, v 1,..., v k )

p = (v 0, v 1,..., v k ) 1 Routenlaner Hamburg 300 km 200 km Berlin 450 km Köln 200 km 400 km Frankfurt 50 km 200 km 150 km Mannheim Saarbrücken 100 km 250 km Stuttgart 200 km Dresden 300 km Nürnberg 200 km München Berechne den

Mehr

Berechnung von Abständen

Berechnung von Abständen 3. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 3.4. Es sei G = (V, E) ein Graph. Der Abstand d(v, w) zweier Knoten v, w V ist die minimale Länge eines Weges von v nach w.

Mehr

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens Praktikum Algorithmen-Entwurf (Teil 5)..5 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen Endpunkt

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine

Mehr

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 2. November 2011 Gradfolgen Zusammenhang Kürzeste Wege H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 Satz von Erdős und Gallai Eine Partition einer natürlichen Zahl ist genau dann die Gradfolge

Mehr

Aufgaben zur Klausurvorbereitung

Aufgaben zur Klausurvorbereitung Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 19. Vorlesung Kürzeste Wege & Dijkstras Algorithmus Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Wozu kürzeste Wege? 2 3-8 Modellierung

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Organisatorisches VL-17: Kürzeste Pfade (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann,

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 00

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

Kürzeste-Wege-Algorithmen und Datenstrukturen

Kürzeste-Wege-Algorithmen und Datenstrukturen Kürzeste-Wege-Algorithmen und Datenstrukturen Institut für Informatik Universität zu Köln SS 2009 Teil 1 Inhaltsverzeichnis 1 Kürzeste Wege 2 1.1 Voraussetzungen................................ 2 1.2

Mehr

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44 Graphalgorithmen II Sebastian Ehrenfels 4.6.2013 Sebastian Ehrenfels Graphalgorithmen II 4.6.2013 1 / 44 Inhalt 1 Datenstrukturen Union-Find Fibonacci-Heap 2 Kürzeste wege Dijkstra Erweiterungen Bellman-Ford

Mehr

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Graphen AG Softech FB Informatik TU Kaiserslautern Literaturhinweis: Kapitel 4.5 aus R. Sedgewick, K. Wayne: Einführung in die Programmierung

Mehr

Algorithmen und Datenstrukturen Kapitel 9. und

Algorithmen und Datenstrukturen Kapitel 9. und Algorithmen und Datenstrukturen Kapitel 9 Minimale Spannbäume und Kürzeste Pfade Frank Heitmann heitmann@informatik.uni-hamburg.de 9. Dezember 01 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/13

Mehr

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

Gliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III

Gliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III Gliederung Algorithmen und Datenstrukturen II : Kürzeste Pfade III D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Problem Transitiver

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 11. Mai

Mehr

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches Organisatorisches Programmierpraktikum Das Canadian Traveller Problem Rainer Schrader Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln. April 006 Prof. Dr. Rainer Schrader Tel.: 470-600

Mehr

3.2 Generischer minimaler Spannbaum-Algorithmus

3.2 Generischer minimaler Spannbaum-Algorithmus 3.2 Generischer minimaler Spannbaum-Algorithmus Initialisiere Wald F von Bäumen, jeder Baum ist ein singulärer Knoten (jedes v V bildet einen Baum) while Wald F mehr als einen Baum enthält do wähle einen

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Graphen Literaturhinweis: Kapitel 4.5 aus R. Sedgewick, K. Wayne: Einführung in die Programmierung

Mehr

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung Martin Dietzfelbinger Juni/Juli 2011 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 Kapitel 5: Dynamische Programmierung Typische

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen und Algorithmen 2. Klausur SS 2001 UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................

Mehr

1 Kürzeste Pfade. mit Wurzel s heißt Kürzester-Pfade-Baum für G. 1 Notfalls fügen wir Hilfskanten mit unendlichen Kantenkosten ein.

1 Kürzeste Pfade. mit Wurzel s heißt Kürzester-Pfade-Baum für G. 1 Notfalls fügen wir Hilfskanten mit unendlichen Kantenkosten ein. 1 Kürzeste Pfade Das Problem, einen kürzesten Pfad zwischen zwei Knoten eines Digraphen zu finden, hat vielfältige Anwendungen, zum Beispiel in Informations- und Verkehrsnetzwerken. In den folgenden Abschnitten

Mehr

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap.

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap. 254 12. Graphen Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap. 9.1-9.4,Cormen et al, Kap. 22 Königsberg 1736 255 Königsberg 1736 255 Königsberg 1736 255

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 19. Vorlesung Kürzeste Wege & Dijkstras Algorithmus Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Ergebnisse des 1. Kurztests 14 12 10

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22 Graphalgorithmen II Werner Sembach 14.04.2014 Werner Sembach Graphalgorithmen II 14.04.2014 1 / 22 Übersicht Datenstrukturen Union-Find Fibonacci-Heap Werner Sembach Graphalgorithmen II 14.04.2014 2 /

Mehr

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5) Praktikum Diskrete Optimierung (Teil 5) 6.05.009 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 13 (6.6.2018) Graphenalgorithmen II Yannic Maus Algorithmen und Komplexität Repräsentation von Graphen Zwei klassische Arten, einen Graphen

Mehr

Vorlesung 2 KÜRZESTE WEGE

Vorlesung 2 KÜRZESTE WEGE Vorlesung 2 KÜRZESTE WEGE 45 Kürzeste Wege im Graphen Motivation! Heute:! Kürzeste Wege von einem Knoten (SSSP)! Distanzen zwischen allen Knotenpaaren (APD)! Viele Anwendungen:! Navis! Netzwerkrouting!...

Mehr

10. Übung Algorithmen I

10. Übung Algorithmen I INSTITUT FÜR THEORETISCHE INFORMATIK 1 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische www.kit.edu Informatik Bäume

Mehr

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Kontrollfragen Graphen Graphenalgorithmen 2

Mehr

Algorithmen und Datenstrukturen 13

Algorithmen und Datenstrukturen 13 19. Juli 2012 1 Besprechung Blatt 12 Fragen 2 Bäume AVL-Bäume 3 Graphen Allgemein Matrixdarstellung 4 Graphalgorithmen Dijkstra Prim Kruskal Fragen Fragen zu Blatt 12? AVL-Bäume AVL-Bäume ein AVL-Baum

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

4. Kreis- und Wegeprobleme Abstände in Graphen

4. Kreis- und Wegeprobleme Abstände in Graphen 4. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 4.4. Es sei G = (V,E) ein Graph. Der Abstand d(v,w) zweier Knoten v,w V ist die minimale Länge eines Weges von v nach w. Falls

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Graphen 9/1 Begriffsdefinitionen Ein Graph besteht aus Knoten und Kanten. Ein Knoten(Ecke) ist ein benanntes Objekt. Eine Kante verbindet zwei Knoten. Kanten haben ein Gewicht

Mehr

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach B? B A Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS Oktober 2014

Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS Oktober 2014 Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.813 Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS 2014 22. Oktober

Mehr

16. November 2011 Zentralitätsmaße. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 87

16. November 2011 Zentralitätsmaße. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 87 16. November 2011 Zentralitätsmaße H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 87 Darstellung in spektraler Form Zentralität genügt Ax = κ 1 x (Herleitung s. Tafel), daher ist x der Eigenvektor

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität Minimaler Spannbaum Gegeben: Zus. hängender,

Mehr

Kürzeste Wege in Graphen

Kürzeste Wege in Graphen Kürzeste Wege in Graphen Algorithmische Paradigmen In diesem Abschnitt wollen wir nicht nur neue Algorithmen vorstellen, sondern auch den Blick auf Gemeinsamkeiten und prinzipielle Unterschiede zwischen

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Routing Algorithmen. Begriffe, Definitionen

Routing Algorithmen. Begriffe, Definitionen Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Informatik II: Algorithmen & Datenstrukturen Montag, 29. August, 2014, 14:00 17:00 Name:...........................................................

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger Graphenalgorithmen I Geschickt Programmieren für den ICPC- Wettbewerb Felix Weissenberger Inhalt Grundlagen zu Graphen Begriffe Darstellung von Graphen Graphenalgorithmen Breitensuche Tiefensuche Topologisches

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen C. Kürzeste Pfade: Grundlagen Gabriele Röger Universität Basel 9. Mai 09 Graphen: Übersicht Repräsentation Exploration Graphen Exploration: Anwendungen Minimale Spannbäume

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 24. April 2019 [Letzte Aktualisierung: 24/04/2019,

Mehr

4. Tries und kd-bäume

4. Tries und kd-bäume 4. Tries und kd-bäume Digitale Suchbäume (Tries) kd-bäume Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Tries und kd-bäume SS 2019 4-1 Tries (1) Problem mit den bisherigen Suchbäumen

Mehr

Kürzeste Wege. Ein Startknoten, nichtnegative Gewichte

Kürzeste Wege. Ein Startknoten, nichtnegative Gewichte Kürzeste Wege Gegeben ein Digraph D = (V, A) mit Bogengewichten c(a). Aufgabe: Finde einen Weg W von einem Knoten zu allen anderen oder zu einem bestimmten mit c(w) minimal. Problem: negative Gewichte

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 13. Übung minimale Spannbäume, topologische Sortierung, AVL-Bäume Clemens Lang Übungen zu AuD 4. Februar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen

Mehr

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012 Algorithmen und Datenstrukturen Tafelübung 14 Jens Wetzl 8. Februar 2012 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Folien aus der Vorlesung Optimierung I SS2013

Folien aus der Vorlesung Optimierung I SS2013 Folien aus der Vorlesung Optimierung I SS2013 Dr. Jens Maßberg Institut für Optimierung und Operations Research, Universität Ulm July 10, 2013 Datenstrukturen für Graphen und Digraphen Graph Scanning Algorithmus

Mehr

Algorithmen und Datenstrukturen Kapitel 9. und

Algorithmen und Datenstrukturen Kapitel 9. und Algorithmen und Datenstrukturen Kapitel 9 und Kürzeste Pfade Frank Heitmann heitmann@informatik.uni-hamburg.de 9. Dezember 0 Frank Heitmann heitmann@informatik.uni-hamburg.de / Problemstellung Definition

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Christian Scheideler + Helmut Seidl SS 2009 25.05.09 Kapitel 6 1 Priority Queue M: Menge von Elementen Jedes Element e identifiziert über key(e).

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Das Heiratsproblem. Definition Matching

Das Heiratsproblem. Definition Matching Das Heiratsproblem Szenario: Gegeben: n Frauen und m > n Männer. Bekanntschaftsbeziehungen zwischen allen Männern und Frauen. Fragestellung: Wann gibt es für jede der Frauen einen Heiratspartner? Modellierung

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 02. Mai 2017 [Letzte Aktualisierung: 10/07/2018,

Mehr