Grundlagen der Algorithmen und Datenstrukturen Kapitel 10

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Algorithmen und Datenstrukturen Kapitel 10"

Transkript

1 Grundlagen der Algorithmen und Datenstrukturen Kapitel 0 Christian Scheideler + Helmut Seidl SS Kapitel 0

2 Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach B? B A Kapitel 0

3 Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach B? Fälle: Kantenkosten DAG, beliebige Kantenkosten Beliebiger Graph, positive Kantenkosten Beliebiger Graph, beliebige Kosten Kapitel 0 3

4 Einführung Kürzeste-Wege-Problem: gerichteter Graph G=(V,E) Kantenkosten c:e!ir SSSP (single source shortest path): Kürzeste Wege von einer Quelle zu allen anderen Knoten APSP (all pairs shortest path): Kürzeste Wege zwischen allen Paaren Kapitel 0 4

5 Einführung s µ (s,v): Distanz zwischen s und v kein Weg von s nach v µ (s,v) = - Weg bel. kleiner Kosten von s nach v min{ c(p) p ist Weg von s nach v} Kapitel 0 5

6 Einführung s Wann sind die Kosten -? Wenn es einen negativen Kreis gibt: s C v c(c)< Kapitel 0 6

7 Einführung Negativer Kreis hinreichend und notwendig für Wegekosten -. Negativer Kreis hinreichend: Weg q Weg p s C v c(c)<0 Kosten für i-fachen Durchlauf von C: c(p) + i c(c) + c(q) Für i! geht Ausdruck gegen Kapitel 0 7

8 Einführung Negativer Kreis hinreichend und notwendig für Wegekosten -. Negativer Kreis notwendig: l: minimale Kosten eines einfachen Weges von s nach v es gibt nichteinfachen Weg r von s nach v mit Kosten c(r) < l r nicht einfach: Zerlegung in p 0 C p...p n- C n p n, wobei C i Kreise sind und p 0...p n ein einfacher Pfad da c(r) < l c(p 0...p n ) ist, gilt c(c i )<0 für ein i Kapitel 0 8

9 Kürzeste Wege Graph mit Kantenkosten : Führe Breitensuche durch s Kapitel 0 9

10 Kürzeste Wege in DAGs Reine Breitensuche funktioniert nicht. s Kapitel 0 0

11 Kürzeste Wege in DAGs Korrekte Distanzen: s Kapitel 0

12 Kürzeste Wege in DAGs Strategie: nutze aus, dass Knoten in DAGs topologisch sortiert werden können, d.h.: alle Kanten a b erfüllen a<b 3 3 s Kapitel 0

13 Kürzeste Wege in DAGs Strategie: betrachte dann Knoten in der Reihenfolge ihrer topologischen Sortierung und aktualisiere Distanzen zu s s Kapitel 0 3 8

14 Kürzeste Wege in DAGs Strategie:. Topologische Sortierung der Knoten. Aktualisierung der Distanzen gemäß der topologischen Sortierung Warum funktioniert das?? Kapitel 0 4

15 Kürzeste Wege in DAGs Betrachte kürzesten Weg von s nach v. Dieser hat topologische Sortierung (t i ) i mit t i <t i+ for alle i. t t t 3 t 4 t 5 s 0 d d d 3 d 4 c c c 3 c 4 v Besuch in topologischer Reihenfolge führt zu richtigen Distanzen (d i = j<=i c i ) Kapitel 0 5

16 Kürzeste Wege in DAGs Betrachte kürzesten Weg von s nach v. Dieser hat topologische Sortierung (t i ) i mit t i <t i+ für alle i. t t t 3 t 4 t 5 s 0 d d d 3 d 4 c c c 3 c 4 v Bemerkung: kein Knoten auf dem Weg zu v kann Distanz < d i zu s haben, da sonst kürzerer Weg zu v möglich wäre Kapitel 0 6

17 Kürzeste Wege in Graphen Allgemeine Strategie: Am Anfang, setze d(s) = 0; und d(v) = ; für alle anderen Knoten besuche Knoten in einer Reihenfolge, die sicherstellt, dass mindestens ein kürzester Weg von s zu jedem v in der Reihenfolge seiner Knoten besucht wird für jeden besuchten Knoten v, aktualisiere die Distanzen der Knoten w mit (v,w) E, d.h. setze d(w) = min{d(w), d(v)+c(v,w)}; Kapitel 0 7

18 Kürzeste Wege in DAGs Zurück zur Strategie:. Topologische Sortierung der Knoten. Aktualisierung der Distanzen gemäß der topologischen Sortierung Wie führe ich eine topologische Sortierung durch? Kapitel 0 8

19 Kürzeste Wege in DAGs Topologische Sortierung: Verwende eine FIFO Queue q Anfangs enthält q alle Knoten, die keine eingehende Kante haben (Quellen). Verwalte für jeden Knoten Zähler der noch nicht markierten eingehenden Kanten. Entnehme v aus q und markiere alle (v,w) E, d.h. dekrementiere den Zähler für w. Falls der Zähler von w null wird, füge w in q ein. Wiederhole das, bis q leer ist Kapitel 0 9

20 Kürzeste Wege in DAGs Beispiel: : Knoten momentan in Queue q Nummerierung nach Einfügereihenfolge Kapitel 0 0

21 Kürzeste Wege in DAGs Korrektheit der topologischen Nummerierung: Knoten wird erst dann nummeriert, wenn alle Vorgänger nummeriert sind Kapitel 0

22 Kürzeste Wege in DAGs Laufzeit: Zur Bestimmung der Anzahlen der eingehenden Kanten aller Knoten muss Graph einmal durchlaufen werden. Danach wird jeder Knoten und jede Kante genau einmal betrachtet, also Zeit O(n+m) Kapitel 0

23 Kürzeste Wege in DAGs Bemerkung: topologische Sortierung kann nicht alle Knoten nummerieren genau dann, wenn Graph gerichteten Kreis enthält (kein DAG ist) Test auf DAG-Eigenschaft Kapitel

24 Kürzeste Wege in DAGs DAG-Strategie:. Topologische Sortierung der Knoten Laufzeit O(n+m). Aktualisierung der Distanzen gemäß der topologischen Sortierung Laufzeit O(n+m) Insgesamt Laufzeit O(n+m) Kapitel 0 4

25 Dijkstras Algorithmus Nächster Schritt: Kürzeste Wege für beliebige Graphen mit positiven Kanten. Problem: besuche Knoten eines kürzesten Weges in richtiger Reihenfolge s 0 d d d 3 d 4 w v Lösung: besuche Knoten in der Reihenfolge der kürzesten Distanz zur Quelle s Kapitel 0 5

26 Dijkstras Algorithmus Am Anfang, setze d[s] = 0; und d[v] = ; für alle andern Knoten. Füge s in Priority Queue q ein, wobei die Prioritäten in q gemäß der aktuellen Distanzen d[v] definiert sind. Wiederhole, bis q leer ist: Entferne aus q (deletemin) den Knoten v mit niedrigstem d[v]. Für alle (v,w) E, setze d[w] = min{d[w], d[v]+c(v,w)}. Falls w noch nicht in q war, füge w in q ein Kapitel 0 6

27 Dijkstras Algorithmus Beispiel: ( : aktuell, : fertig) s Kapitel 0 7

28 Dijkstras Algorithmus void Dijkstra(Node s) { d = new double[n]; Arrays.fill(d,); parent = new Node[n]; d[s] = 0; parent[s] = s; PriorityQueue<Node> q = <s>; while (q!= <>) { u = q.deletemin(); // u: min. Distanz zu s in q foreach (e=(u,v) E) if (d[v] > d[u]+c(e)) { // aktualisiere d[v] if (d[v]==) q.insert(v); // v schon in q? d[v] = d[u]+c(e); parent[v] = u; q.decreasekey(v); // nur PQ q reparieren } } } Kapitel 0 8

29 Dijkstras Algorithmus Korrektheit: Angenommen, Algo sei inkorrekt. Sei v der Knoten mit kleinstem µ (s,v) der aus q entfernt wird mit d[v]>µ (s,v) realisiert durch einen kanten-minimalen Pfad. Sei p=(s=v,v,,v k =v) ein solcher von s nach v. Weil alle c(e) 0 sind, steigt minimales d[w] in q monoton an. Da d[v k- ] d[v k ], muss v k- vor v k aus q entfernt worden sein oder gleiche Distanz haben. Entweder gilt auch d[v k- ] >µ (s,v k- ), dann haben wir einen Widerspruch für einen kürzeren Pfad, oder d[v k- ] =µ (s,v k- ) Bei Entfernung von v k- hat Algo überprüft, ob d[v k- ] + c(v k-,v k )<d[v k ]. Das muss bei Annahme oben der Fall gewesen sein, aber dann hätte Algo d[v] auf d[v k- ] + c(v k-,v) =µ (s,v) gesetzt, ein Widerspruch Kapitel 0 9

30 Dijkstras Algorithmus Laufzeit: T Dijkstra = O(n (T DeleteMin (n)+t Insert (n)) + m T decreasekey (n)) Binärer Heap: alle Operationen O(log n), also T Dijkstra = O((m+n) log n) Fibonacci Heap (nicht in Vorlesung behandelt): T DeleteMin (n)=t Insert (n)=o(log n) T decreasekey (n)=o() Damit T Dijkstra = O(n log n + m) Kapitel 0 30

31 Monotone Priority Queues Einsicht: Dijkstras Algorithmus braucht keine allgemeine Priority Queue, sondern nur eine monotone Priority Queue. Monotone Priority Queue: Folge der gelöschten Elemente hat monoton steigende Werte. Effiziente Implementierungen von monotonen Priority Queues möglich, falls Kantenkosten ganzzahlig Kapitel 0 3

32 Bucket Queue Annahme: alle Kantenkosten im Bereich [0,C]. Konsequenz: zu jedem Zeitpunkt enthält q Distanzen im Bereich [d,d+c] für ein d. d+3 d+ C=8 d+ d d+8 d+ d Kapitel 0 3

33 Bucket Queue Annahme: alle Kantenkosten im Bereich [0,C]. Konsequenz: zu jedem Zeitpunkt enthält q Distanzen im Bereich [d,d+c] für ein d. Bucket Queue: Array B aus C+ Listen und Variable d min für aktuell minimale Distanz (mod C+) 0 3. C Kapitel 0 33

34 Bucket Queue 0 3. C Jeder Knoten v mit momentaner Distanz d[v] wird in Liste B[d[v] mod (C+)] gespeichert Da momentane d[v] s im Bereich [d,d+c] für ein d sind, haben alle v in einem B[d] dasselbe d[v] Kapitel 0 34

35 Bucket Queue 0 3. C Insert(v): fügt v in B[d[v] mod (C+)] ein. Laufzeit O(). decreasekey(v): entfernt v aus momentaner Liste und fügt v in B[d[v] mod (C+)] ein. Falls in v Position in der Liste speichert, Laufzeit O(). deletemin(): solange B[d min ]=, setze d min :=(d min +) mod (C+). Nimm dann einen Knoten u aus B[d min ] heraus. Laufzeit O(C) Kapitel 0 35

36 Bucket Queue 0 3. C Insert(v), decreasekey(v): Laufzeit O(). deletemin(): Laufzeit O(C). Laufzeit von Dijkstras Algo mit Bucket Queue: O(m+n C) Kapitel 0 36

37 Radix Heap Radix Heaps sind eine verbesserte Form der Bucket Queues. Laufzeit von Dijkstras Algo mit Radix Heap: O(m + n log C) Kapitel 0 37

38 Radix Heap Array B mit Listen B[-] bis B[K], K=+blog Cc K Regel: Knoten v in B[min(msd(d min,d[v]),k)] msd(d min,d[v]): höchstes Bit, in dem sich Binärdarstellungen von d min und d[v] unterscheiden (-: kein Unterschied) Kapitel 0 38

39 Radix Heap Beispiel für msd(d min,d): sei d min =7 oder binär 000 d=7: msd(d min,d)=- d=8: binär 000, also msd(d min,d)= d=: binär 00, also msd(d min,d)= d=5: binär 000, also msd(d min,d)= Kapitel 0 39

40 Radix Heap Berechnung von msd für a=b: msd(a,b)=blog(a b)c Zeit O() (mit entspr. Maschinenbefehlen) - 0. K insert, decreasekey: wie vorher (mit neuer Regel), Laufzeit O() Kapitel 0 40

41 Radix Heap deletemin Operation: Falls B[-] besetzt, entnehme ein v aus B[-] (sonst kein Element mehr in Heap und fertig) finde minimales i, so dass B[i] ; (falls kein solches i, dann fertig) bestimme d min in B[i] (in O() Zeit möglich, falls z.b. d min -Werte in extra Feld min[-..k] gehalten) verteile Knoten in B[i] über B[-],,B[i-] gemäß neuem d min Entscheidend: für alle v in B[j], j>i, gilt nach wie vor msd(d min,d[v])==j, d.h. sie müssen nicht verschoben werden Kapitel 0 4

42 Radix Heap Wir betrachten Sequenz von deletemin Operationen Kapitel 0 4

43 Radix Heap Wir betrachten Sequenz von deletemin Operationen Kapitel 0 43

44 Radix Heap Lemma 0.6: Sei B[i] die minimale nichtleere Liste, i>0. Sei d min das kleinste Element in B[i]. Dann ist msd(d min,x)<i für alle x B[i]. Beweis: x d min : klar Alle Elemente in B[i] nach links x=d min : wir unterscheiden zwei Fälle: ) i<k, ) i=k Kapitel 0 44

45 Radix Heap Fall i<k: Bitposition: i 0 altes d min a 0 neues d min a x a Also muss msd(d min,x)<i sein Kapitel 0 45

46 Radix Heap Fall i=k: Bitposition: j K h 0 altes d min a 0 neues d min a b 0 x a b Für alle x: d min (alt) < d min (neu) < x < d min (alt)+c j = msd(d min (alt),d min (neu)), h = msd(d min (neu),x) Kapitel 0 46

47 Radix Heap Fall i=k: Bitposition: j K h 0 altes d min a 0 neues d min a b 0 x a Wegen j k hat Binärdarstellung von jedem übrigbleibenden x dasselbe Präfix ab bis runter zu Bitstelle j <K, d.h. h K b Kapitel 0 47

48 Radix Heap Fall i=k: Bitposition: j K h 0 altes d min a 0 neues d min a b 0 Konsequenz: jeder Knoten nur maximal K-mal verschoben in Radix Heap x a b Kapitel 0 48

49 Radix Heap - 0. K Insert(v), decreasekey(v): Laufzeit O(). deletemin(): amortisierte Laufzeit O(log C). Laufzeit von Dijkstras Algo mit Radix Heap: O(m + n log C) Kapitel 0 49

50 Bellman-Ford Algorithmus Nächster Schritt: Kürzeste Wege für beliebige Graphen mit beliebigen Kantenkosten. Problem: besuche Knoten eines kürzesten Weges in richtiger Reihenfolge s 0 d d d 3 d 4 w v Dijkstra Algo kann nicht mehr verwendet werden, da er im Allgemeinen nicht mehr Knoten in der Reihenfolge ihrer Distanz zu s besucht Kapitel 0 50

51 Bellman-Ford Algorithmus Beispiel für Problem mit Dijkstra Algo: 0 v - s Knoten v hat falschen Distanzwert! Kapitel 0 5

52 Bellman-Ford Algorithmus Lemma: Für jeden Knoten v mit µ (s,v)>- zu s gibt es einfachen Weg (ohne Kreis!) von s nach v der Länge µ (s,v). Beweis: Weg mit Kreis mit Kantenkosten 0: Kreisentfernung erhöht nicht die Kosten Weg mit Kreis mit Kantenkosten < 0: Distanz zu s ist -! Kapitel 0 5

53 Bellman-Ford Algorithmus Folgerung: (Graph mit n Knoten) Für jeden erreichbaren Knoten v mit µ (s,v)> - gibt es kürzesten Weg der Länge <n zu v. Strategie: Durchlaufe (n-)-mal sämtliche Kanten in Graph und aktualisiere Distanz. Dann alle kürzesten Wege berücksichtigt. s 0 d d d 3 d 4 v Durchlauf Kapitel 0 53

54 Bellman-Ford Algorithmus Problem: Erkennung negativer Kreise - 0 s Einsicht: in negativem Kreis erniedrigt sich Distanz in jeder Runde bei mindestens einem Knoten Kapitel 0 54

55 Bellman-Ford Algorithmus Problem: Erkennung negativer Kreise - 0 s Zeitpunkt: kontinuierliche Distanzerniedrigung startet spätestens in n-ter Runde (dann Kreis mindestens einmal durchlaufen) Kapitel 0 55

56 Bellman-Ford Algorithmus Keine Distanzerniedrigung möglich: Angenommen wir erreichen Zeitpunkt mit d[v]+c(v,w) d[w] für alle Knoten w. Dann gilt (über Induktion) für jeden Weg p, dass d[s]+c(p) d[w] für alle Knoten w. Falls sichergestellt ist, dass für den kürzesten Weg p nach w, d[w] c(p) zu jedem Zeitpunkt ist, dann gilt am Ende d[w]=µ (s,w) Kapitel 0 56

57 Bellman-Ford Algorithmus Zusammenfassung: Keine Distanzerniedrigung mehr möglich (d[v] +c(v,w) d[w] für alle w): Fertig, d[w] == µ (s,w) für alle w Distanzerniedrigung möglich selbst noch in n-ter Runde (d[v]+c(v,w) < d[w] für ein w): Dann gibt es negative Kreise, also Knoten w mit Distanz µ (s,w) == -. Ist das wahr für ein w, dann für alle von w erreichbaren Knoten Kapitel 0 57

58 Bellman-Ford Algorithmus void BellmanFord(Node s) { d = new double[n]; Arrays.fill(d,); parent = new Node [n]; d[s] = 0; parent[s] = s; for(int i=0;i< n-;i++) { // aktualisiere Kosten für n- Runden foreach (e=(v,w) E) if (d[w] > d[v]+c(e)) { // bessere Distanz möglich? d[w] =d[v]+c(e); parent[w] = v; }} foreach (e=(v,w) E) // in n-ter Runde noch besser? if (d[w] > d[v]+c(e)) infect(w); } void infect(node v) { // setze --Kosten von v aus if (d[v] > -) { d[v] = -; foreach ((v,w) E) infect(w); } } Kapitel 0 58

59 Bellman-Ford Algorithmus Laufzeit: O(n m) Verbesserungsmöglichkeiten: Überprüfe in jeder Aktualisierungsrunde, ob noch irgendwo d[v]+c[v,w]<d[w] ist. Nein: fertig! Besuche in jeder Runde nur die Knoten w, für die Test d[v]+c[v,w]<d[w] sinnvoll (d.h. d[v] hat sich in letzter Runde geändert) Kapitel 0 59

60 All Pairs Shortest Paths Annahme: Graph mit beliebigen Kantenkosten, aber keine negativen Kreise Naive Strategie für Graph mit n Knoten: lass n-mal Bellman-Ford Algorithmus (einmal für jeden Knoten) laufen Laufzeit: O(n m) Kapitel 0 60

61 All Pairs Shortest Paths Bessere Strategie: Reduziere n Bellman- Ford Anwendungen auf n Dijkstra Anwendungen Problem: wir brauchen dazu nichtnegative Kantenkosten Lösung: Umwandlungsstrategie in nichtnegative Kantenkosten, ohne kürzeste Wege zu verfälschen (nicht so einfach!) Kapitel 0 6

62 All Pairs Shortest Paths Gegenbeispiel zur Erhöhung um Wert c: Vorher Kosten + überall v 3 v s s - 0 : kürzester Weg Kapitel 0 6

63 All Pairs Shortest Paths Sei Φ:V! IR eine Funktion, die jedem Knoten ein Potenzial zuweist. Die reduzierten Kosten von e=(v,w) sind: r(e) := Φ(v) + c(e) - Φ(w) Lemma 0.8: Seien p und q Wege in G. Dann gilt für jedes Potenzial Φ: r(p)<r(q) genau dann wenn c(p)<c(q) Kapitel 0 63

64 All Pairs Shortest Paths Lemma 0.8: Seien p und q Wege in G. Dann gilt für jedes Potenzial Φ: r(p)<r(q) genau dann wenn c(p)<c(q). Beweis: Sei p=(v,,v k ) ein beliebiger Weg und e i =(v i,v i+ ) für alle i. Es gilt: r(p) = i r(e i ) = i (Φ(v i ) + c(e) - Φ(v i+ )) = Φ(v ) + c(p) - Φ(v k ) Kapitel 0 64

65 All Pairs Shortest Paths Lemma 0.9: Angenommen, G habe keine negativen Kreise und dass alle Knoten von s erreicht werden können. Sei Φ(v) = µ (s,v) für alle v V. Mit diesem Φ ist r(e) 0 für alle e. Beweis: nach Annahme ist µ (s,v) IR für alle v wir wissen: für jede Kante e=(v,w) ist µ (s,v)+c(e) µ (s,w) (Abbruchbedingung!) also ist r(e) = µ (s,v) + c(e) - µ (s,w) Kapitel 0 65

66 All Pairs Shortest Paths. Füge neuen Knoten s und Kanten (s,v) für alle v hinzu mit c(s,v) = 0 (alle erreichbar!) Berechne µ (s,v) nach Bellman-Ford und setze Φ(v) = µ (s,v); für alle v Berechne die reduzierten Kosten r(e). Berechne für alle Knoten v die Distanzen µ (v,w) mittels Dijkstra Algo mit reduzierten Kosten auf Graph ohne Knoten s Berechne korrekte Distanzen µ (v,w) durch µ (v,w) = µ (v,w)+φ(w)-φ(v) Kapitel 0 66

67 All Pairs Shortest Paths Beispiel: a b b a d - c c - d Kapitel 0 67

68 All Pairs Shortest Paths Schritt : künstliche Quelle a 0 0 b s 0 0 c - d Kapitel 0 68

69 All Pairs Shortest Paths Schritt : Bellman-Ford auf s a Φ(a)=0 0 0 b Φ(b)=0 s 0 0 c Φ(c)=- - d Φ(d)= Kapitel 0 69

70 All Pairs Shortest Paths Schritt 3: r(e)-werte berechnen a Φ(a)=0 Die reduzierten Kosten von e=(v,w) sind: r(e) := Φ(v) + c(e) - Φ(w) b 0 Φ(b)=0 c Φ(c)=- 0 d Φ(d)= Kapitel 0 70

71 All Pairs Shortest Paths Schritt 4: berechne alle Distanzen µ (v,w) via Dijkstra µ a b c d a b 0 c d a b c d Φ(a)=0 0 Φ(b)=0 Φ(c)=- 0 Φ(d)= Kapitel 0 7

72 All Pairs Shortest Paths Schritt 5: berechne korrekte Distanzen durch die Formel µ (v,w)=µ (v,w)+φ(w)-φ(v) a b Φ(a)=0 Φ(b)=0 µ a b c d a 0 3 b 0 0 c d 0-0 c d Φ(c)=- - Φ(d)= Kapitel 0 7

73 All Pairs Shortest Paths Laufzeit des APSP-Algorithmus: O(T Bellman-Ford (n,m) + n T Dijk stra (n,m)) = O(n m + n(n log n + m)) = O(n m + n log n) unter Verwendung von Fibonacci Heaps Kapitel 0 73

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

Effiziente Algorithmen und Datenstrukturen I Kapitel 8: Kürzeste Wege

Effiziente Algorithmen und Datenstrukturen I Kapitel 8: Kürzeste Wege Effiziente Algorithmen und Datenstrukturen I Kapitel 8: Kürzeste Wege Christian Scheideler WS 008.0.009 Kapitel 8 Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach B? B A.0.009 Kapitel

Mehr

Grundlegende Algorithmen Kapitel 4: Kürzeste Wege

Grundlegende Algorithmen Kapitel 4: Kürzeste Wege Grundlegende Algorithmen Kapitel 4: Kürzeste Wege Christian Scheideler WS 009 08.0.00 Kapitel 4 Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach B? B A 08.0.00 Kapitel 4 Kürzeste Wege

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

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

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datentrukturen Prof. Dr. Hanjo Täubig Lehrtuhl für Effiziente Algorithmen (Prof. Dr. Ernt W. Mayr) Intitut für Informatik Techniche Univerität München Sommeremeter H. Täubig

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

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php? Algorithmen I Prof. Jörn Müller-Quade 19.6.1 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=99 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik 1 Organisatorisches

Mehr

Erinnerung VL

Erinnerung VL Erinnerung VL.6.16 Graphtraversierung (DFS, topologische Sortierung und mehr) Kürzeste Wege: Problemstellung, Algorithmen Analoger Algorithmus Dijkstras Algorithmus: Idee, Korrektheit Heute: mehr zu Dijkstra,

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

Effiziente Algorithmen und Datenstrukturen I Kapitel 2: Priority Queues

Effiziente Algorithmen und Datenstrukturen I Kapitel 2: Priority Queues Effiziente Algorithmen und Datenstrukturen I Kapitel 2: Priority Queues Christian Scheideler WS 2008 28.10.2008 Kapitel 2 1 Priority Queue 5 8 15 12 7 3 28.10.2008 Kapitel 2 2 Priority Queue insert(10)

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

Sanders/van Stee: Algorithmentechnik 1. Shortest Paths

Sanders/van Stee: Algorithmentechnik 1. Shortest Paths Sanders/van Stee: Algorithmentechnik 1 Shortest Paths Eingabe: Graph G = (V, E) Kostenfunktion c : E R Anfangsknoten s Frage: was ist die Distanz von s zu v (für alle anderen Knoten v V ) Fundamentales

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

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

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

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

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

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

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

Übung zu Algorithmen I 31. Mai 2017

Übung zu Algorithmen I 31. Mai 2017 Übung zu Algorithmen I 31. Mai 2017 Sascha Witt sascha.witt@kit.edu (mit Folien von Lukas Barth und Lisa Kohl) 1 / 25 Organisatorisches Korrigierte Übungsblätter Tutoren behalten Übungsblätter ca. zwei

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

7. Übung zu Algorithmen I 1. Juni 2016

7. Übung zu Algorithmen I 1. Juni 2016 7. Übung zu Algorithmen I 1. Juni 2016 Lukas Barth lukas.barth@kit.edu (mit Folien von Lisa Kohl) Roadmap Ganzzahliges Sortieren mit reellen Zahlen Schnellere Priority Queues Bucket Queue Radix Heap Organisatorisches

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

Übersicht. Netzwerke und Graphen Graphrepräsentation Graphtraversierung Kürzeste Wege Minimale Spannbäume. 9 Graphen. Graphen

Übersicht. Netzwerke und Graphen Graphrepräsentation Graphtraversierung Kürzeste Wege Minimale Spannbäume. 9 Graphen. Graphen Übersicht 9 Graphen Netzwerke und Graphen Graphrepräsentation Graphtraversierung Minimale Spannbäume H. Täubig (TUM) GAD SS 96 Netzwerke und Graphen Übersicht 9 Graphen Netzwerke und Graphen Graphrepräsentation

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

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2012 Thomas Pajor 23. April 2012

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2012 Thomas Pajor 23. April 2012 Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2012 Thomas Pajor INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und nationales

Mehr

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1 Allgemeines. Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition.. (a) Ein Graph G =(V, E) heißt kreisfrei, wenn er keinen Kreis besitzt. Beispiel: Ein kreisfreier Graph: FG KTuEA, TU Ilmenau

Mehr

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder:

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder: 4.2 Fibonacci-Heaps 4.2.1 Aufbau Knoten v hat folgende Felder: Vaterzeiger p(v) Zeiger auf linkes Geschwister: prev(v) Zeiger auf rechtes Geschwister: next(v) Kindzeiger: child(v) Schlüssel: key: aus U

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

Dijkstra: Laufzeit. Insgesamt: T Dijkstra = O m T decreasekey (n)+n (T deletemin (n)+t insert (n))

Dijkstra: Laufzeit. Insgesamt: T Dijkstra = O m T decreasekey (n)+n (T deletemin (n)+t insert (n)) Dijkstra: Laufzeit Function Dijkstra(s : NodeId) : NodeArray NodeArray d = {,..., }; parent[s]:= s; d[s] := 0; Q.insert(s) // O(n) while Q 6= /0 do u := Q.deleteMin // apple n foreach edge e =(u,v) 2 E

Mehr

Dijkstras Algorithmus: Pseudocode

Dijkstras Algorithmus: Pseudocode Dijktra Algorithmu: Peudocode initialize d, parent all node are non-canned while 9 non-canned node u with d[u] < u := non-canned node v with minimal d[v] relax all edge (u,v) out of u u i canned now Behauptung:

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 Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:

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

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

2. Übungsblatt zu Algorithmen II im WS 2016/2017

2. Übungsblatt zu Algorithmen II im WS 2016/2017 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Dr. Christian Schulz, Dr. Simon Gog Michael Axtmann. Übungsblatt zu Algorithmen II im WS 016/017 Aufgabe

Mehr

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007 Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 25. Oktober 2007 1 / 20 2 / 20 Wir werden Optimierungsprobleme vom folgenden Typ betrachten: gegeben eine Menge X und eine Funktion

Mehr

markiert, 0: unmarkiert.)

markiert, 0: unmarkiert.) 4.2 Fibonacci-Heaps Fibonacci-Heaps (F-Heaps) implementieren adressierbare Priority Queues (siehe Anfang von Kap. 4). Wie bei Binomialheaps besteht der Heap aus heapgeordneten Bäumen, jedoch mit gelockerten

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kapitel 4: Datenstrukturen Kapitel 4.2: Union-Find-Strukturen Union-Find-Strukturen Gegeben: Datensätze

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

Abgabe: (vor der Vorlesung)

Abgabe: (vor der Vorlesung) TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 0 Prof. Dr. Helmut Seidl, S. Pott,

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

9. Übungsblatt zu Algorithmen I im SoSe 2016

9. Übungsblatt zu Algorithmen I im SoSe 2016 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Dennis Hofheinz Lukas Barth, Lisa Kohl 9. Übungsblatt zu Algorithmen I im SoSe 06 https//crypto.iti.kit.edu/index.php?id=algo-sose6

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

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

Von Aachen nach Halle...

Von Aachen nach Halle... Von Aachen nach Halle... Koeln? Aachen Halle 14. 6. 15. 6. 16. 6. Saarbruecken? Effiziente Algorithmen fr Graphtraversierungen Ulrich Meyer p. 3 Von Aachen nach Halle... Koeln? Aachen Halle 14. 6. 15.

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

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

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

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

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig Janosch Maier 3. August 2011 Inhaltsverzeichnis 1 Sortieren 3 1.1 Externes Sortieren..........................

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Danksagung Die nachfolgenden Präsentationen wurden

Mehr

Algorithmen I - Tutorium 28 Nr. 11

Algorithmen I - Tutorium 28 Nr. 11 Algorithmen I - Tutorium 28 Nr. 11 13.07.2017: Spaß mit Schnitten, Kreisen und minimalen Spannbäumen Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR.

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 7. Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Algorithmen II. Peter Sanders. Übungen: Moritz Kobitzsch und Dennis Schieferdecker. Institut für Theoretische Informatik, Algorithmik II.

Algorithmen II. Peter Sanders. Übungen: Moritz Kobitzsch und Dennis Schieferdecker. Institut für Theoretische Informatik, Algorithmik II. Sanders: Algorithmen II - 27. Februar 2012 Algorithmen II Peter Sanders Übungen: Moritz Kobitzsch und Dennis Schieferdecker Institut für Theoretische Informatik, Algorithmik II Web: http://algo2.iti.kit.edu/algorithmenii_ws11.php

Mehr

Algorithmen II. Peter Sanders, Thomas Worsch, Simon Gog. Übungen: Demian Hespe, Yaroslav Akhremtsev

Algorithmen II. Peter Sanders, Thomas Worsch, Simon Gog. Übungen: Demian Hespe, Yaroslav Akhremtsev Sanders, Worsch, Gog: Algorithmen II - 15. Januar 2018 Algorithmen II Peter Sanders, Thomas Worsch, Simon Gog Übungen: Demian Hespe, Yaroslav Akhremtsev Institut für Theoretische Informatik, Algorithmik

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Prioritätswarteschlangen Maike Buchin 18. und 23.5.2017 Prioritätswarteschlange Häufiges Szenario: dynamische Menge von Objekten mit Prioritäten, z.b. Aufgaben, Prozesse, in der

Mehr

Kap. 6.5: Minimale Spannbäume ff

Kap. 6.5: Minimale Spannbäume ff Kap. 6.: Minimale Spannbäume ff Professor Dr. Karsten Klein Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 20. VO 2. TEIL DAP2 SS 2009 2. Juli 2009 SS08 1 Überblick 6.:

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

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen. Linken von Bäumen: Zwei Bäume desselben Wurzel-Rangs werden unter Einhaltung der Heap-Bedingung verbunden. Sind k 1 und k 2 die Wurzeln der zwei zu linkenden Bäume, so wird ein neuer Baum aufgebaut, dessen

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 208 (Algorithmen & Datenstrukturen) Vorlesung 4 (..208) Graphenalgorithmen III Algorithmen und Komplexität Bäume Gegeben: Zusammenhängender, ungerichteter Graph G = V, E Baum: Zusammenhängender,

Mehr

Karlsruher Institut für Technologie. Klausur Algorithmen I

Karlsruher Institut für Technologie. Klausur Algorithmen I Klausur-ID: Vorname: Matrikelnummer: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 11. April 2018 Klausur Algorithmen I Aufgabe 1. Kleinaufgaben 15 Punkte

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

9. Übung Algorithmen I

9. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der

Mehr

Vorrangswarteschlangen:Operationen

Vorrangswarteschlangen:Operationen Fibonacci Heaps Vorrangswarteschlangen:Operationen (Vorrangs)warteschlange Q Operationen: Q.initialize(): erstellt die leere Schlange Q Q.isEmpty(): liefert true gdw. Q ist leer Q.insert(e): fügt Eintrag

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

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

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege Kapitel 8 Graphenalgorithmen Minimaler Spannbaum Union-find-Problem Kürzeste Wege Rückblick Graphen Modelle für Objekte und Beziehungen untereinander Personen - Bekanntschaften Ereignisse - Abhängigkeiten

Mehr

Exkurs: Graphtraversierung

Exkurs: Graphtraversierung Sanders: Informatik III November 28, 2006 1 Exkurs: Graphtraversierung Begriffe Graphrepräsentation Erreichbarkeit mittels Tiefensuche Kreise Suchen Sanders: Informatik III November 28, 2006 2 Gerichtete

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 11 Prof. Dr. Helmut Seidl, S. Pott,

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

6. Übungsblatt zu Algorithmen II im WS 2017/2018

6. Übungsblatt zu Algorithmen II im WS 2017/2018 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Dr. Thomas Worsch, Dr. Simon Gog Demian Hespe, Yaroslav Akhremstev 6. Übungsblatt zu Algorithmen II im WS

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

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 309 Allgemeines Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 310

Mehr

Vorrangswarteschlangen: Operationen

Vorrangswarteschlangen: Operationen Binomial Heaps Vorrangswarteschlangen: Operationen (Vorrangswarte)schlange (queue) Q Struktur zur Speicherung von Elementen, für die eine Prioritätsordnung definiert ist, und für die folgende Operationen

Mehr

5. Vorrangwarteschlangen (priority queues)

5. Vorrangwarteschlangen (priority queues) 5. Vorrangwarteschlangen (priority queues) Definition 200 Eine Vorrangwarteschlange (priority queue) ist eine Datenstruktur, die die folgenden Operationen effizient unterstützt: 1 Insert 2 ExtractMin Extrahieren

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 7 Prof. Dr. Helmut Seidl, S. Pott,

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

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

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 07..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

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

Erinnerung VL

Erinnerung VL Erinnerung VL 7.06.016 Bellman-Ford-Algorithmus (Brute-Force-Suche) Varianten des Kürzeste-Wege-Problems (azyklische Graphen) Ausblick: Routenplanung in Straÿennetzwerken Motivation Minimale Spannbäume

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

5. Bäume und Minimalgerüste

5. Bäume und Minimalgerüste 5. Bäume und Minimalgerüste Charakterisierung von Minimalgerüsten 5. Bäume und Minimalgerüste Definition 5.1. Es ein G = (V, E) ein zusammenhängender Graph. H = (V,E ) heißt Gerüst von G gdw. wenn H ein

Mehr

5. Vorrangwarteschlangen - Priority Queues

5. Vorrangwarteschlangen - Priority Queues 5. Vorrangwarteschlangen - Priority Queues Priority Queues unterstützen die Operationen Insert(), Delete(), ExtractMin(), FindMin(), DecreaseKey(), Merge(). Priority Queues per se sind nicht für IsElement()-Anfragen,

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 Fibonacci-Heaps) Prof. Dr. Susanne Albers Vorrangswarteschlangen Bekannte Datenstrukturen zum Einfügen und Entfernen von Elementen Stapel (Stack):

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

Kapitel 6: Dynamic Shortest Path

Kapitel 6: Dynamic Shortest Path Kapitel 6: Dynamic Shortest Path 6. Einführung 6. SSSP von Ramalingam & Reps VO Algorithm Engineering Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS Organisatorisches zur Übung wichtig:

Mehr

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

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr