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

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

Grundlagen: Algorithmen und Datenstrukturen

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

23. Kürzeste Wege. Flussüberquerung (Missionare und Kannibalen) Das ganze Problem als Graph. Formulierung als Graph

Dijkstras Algorithmus: Pseudocode

2. Übungsblatt zu Algorithmen II im WS 2011/2012

ADS: Algorithmen und Datenstrukturen 2

Technische Universität München Fakultät für Mathematik Algorithmische Diskrete Mathematik WS 2014/2015 Prof. Dr. Peter Gritzmann 07.

ADS: Algorithmen und Datenstrukturen 2

Erinnerung VL

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Vorlesung Datenstrukturen

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

Themen der Übung. Rekursion. Dateien einlesen Sudokus. Assertions

Algorithmen & Komplexität

2.6.1 Definition und Darstellung Ausspähen von Graphen Minimal spannende Bäume Kürzeste Pfade 2.6.

Randomisiert inkrementelle Konstruktion der Trapezzerlegung. Strecken in der Ebene

1 Kürzeste Pfade in Graphen

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen 2

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

Karlsruher Institut für Technologie. Klausur Algorithmen I

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

10. Übung Algorithmen I

10. Übungsblatt zu Algorithmen I im SS 2010

Zentralabitur 2014 Physik Schülermaterial Aufgabe II ga Nachschreibtermin Bearbeitungszeit: 220 min

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

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

1. Übungsblatt zu Algorithmen II im WS 2011/2012

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

Zentrale schriftliche Abiturprüfungen im Fach Mathematik

Wintersemester 2004/ Januar 2005

Datenstrukturen und Algorithmen (SS 2013)

Landeswettbewerb Mathematik Baden-Württemberg. Runde 2

2. Klausur Datenstrukturen und Algorithmen SS 2014

Übungsblatt 2 - Lösung

Erinnerung VL

Lernmodul 7 Algorithmus von Dijkstra

3.2 Generischer minimaler Spannbaum-Algorithmus

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

3. Musterlösung. Problem 1: Boruvka MST

Grundlagen der Algorithmen und Datenstrukturen Kapitel 10

Informatik B Sommersemester Musterlösung zur Klausur vom

NAME, VORNAME: Studiennummer: Matrikel:

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

Aufgabe 1 Bestimmen Sie die Laplace-Transformierte der Rampenfunktion

Beispiel-Schulaufgabe 2

2. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2006/ April 2007

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Vorbereitung Mathematik Cusanus-Gymnasium Wittlich Fachlehrer : W. Zimmer

Aufgaben zur Klausurvorbereitung

Fortgeschrittene Netzwerk- und Graph-Algorithmen

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

Algorithmen II Vorlesung am

10 Kürzeste Pfade SSSP-Problem

Regelungstechnik (A)

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

1. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2005/2006

K l a u s u r N r. 1 Gk Ph 11

Matrikelnummer: Klausur Algorithmen I, Blatt 1 von 16

( ) = ( ) ( ) ( ) ( )

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

Übungsblatt - Stabilität des Standardregelkreises

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Kap. 6.6: Kürzeste Wege

Effiziente Algorithmen I

Aufgabe 2.4: Temposünder?

Abgabe: (vor der Vorlesung)

Kap. 6.6: Kürzeste Wege

3. Musterlösung. Problem 1: Heapsort

Mustererkennung: Graphentheorie

Klausur Algorithmen und Datenstrukturen

Algorithmen & Datenstrukturen 2 Praktikum 3

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2010 Thomas Pajor 26. April 2010

Sanders/van Stee: Algorithmentechnik 1. Shortest Paths

Vorlesung Datenstrukturen

Einfacher loop-shaping Entwurf

Elektrisches Feld P = IU= RI 2 = U2 R C = Q U

8.6.5 Diffusion von Bromdampf ******

Jan Auffenberg. Die Lösung der Bewegungsgleichung eines einzelnen Pendels liefert wie in Versuch M1 betrachtet die Eigenfrequenz der Pendel zu:

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Fachhochschule Wedel. Seminararbeit. Flussprobleme in Graphen und ihre Anwendung auf 0/1-Netzwerken

Algorithmen und Datenstrukturen (Informatik II) SS Klausur

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

Datenstrukturen (SoSe 12) Klausur (Modulabschlussprüfung)

Algorithmen und Datenstrukturen 2-1. Seminar -

Wie wird ein Graph dargestellt?

Informatik II, SS 2014

Physikpraktikum. Versuch 2) Stoß. F α F * cos α

Informatik II, SS 2016

ÜBUNGSKLAUSUR Studienhalbjahr: 2. Semester. Datum: 20. Juli 2016 Bearbeitungszeit: 90 Minuten. Modul: T2INF Dozent: Stephan Schulz

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

Übung zu Algorithmen I 31. Mai 2017

Vorlesung 2 KÜRZESTE WEGE

Grundlagen: Algorithmen und Datenstrukturen

9. Übungsblatt zu Algorithmen I im SoSe 2016

7. Lineare Gleichungssysteme

Grundbegriffe der Informatik Musterlösung zu Aufgabenblatt 9

Transkript:

Karlruher Intitut für Technologie Intitut für Theoretiche Informatik Prof. Dr. Peter Sander Dr. Chritian Schulz, Dr. Simon Gog Michael Axtmann. Übungblatt zu Algorithmen II im WS 06/07 http://algo.iti.kit.edu/algorithmenii WS6.php {chritian.chulz,michael.axtmann,ander,imon.gog}@kit.edu Aufgabe (Kleinaufgaben: A Suche) Muterlöungen a) Sei pot( ) eine gültige Potentialfunktion für die A Suche nach Knoten t in Graph G(V, E). Überprüfen Sie, ob pot c = pot + c, c = cont. ebenfall eine gültige Potentialfunktion dartellt. b) Kann e vorkommen, da eine A Suche mehr Knoten abucht al eine Suche mit Dijktra Algorithmu für die gleiche Anfrage? Begründen Sie warum nicht oder geben Sie ein Beipiel an. Muterlöung: a) E it zu überprüfen, ob gilt. c(u, v) + pot c (v) pot c (u) 0 () pot c (u) µ(u, t) () Bedingung () it immer erfüllt. Nach Einetzen ergibt ich c(u, v) + pot(v) pot(u) 0. Da nach Vorauetzung pot( ) eine gültige Potentialfunktion it, it die erfüllt. Bedingung () it hingegen nur erfüllt, wenn c µ(u, t) pot(u) f.a. u V. Damit it pot c ( ) nur für geeignete Wahl von c eine gültige Potentialfunktion. (Bemerkung: Fall pot(t) = 0 f.a. Potentiale gefordert it (antatt nur pot(t) 0), gilt c = 0!) b) Im bidirektionalen Fall kann die durchau einfach vorkommen. Im unidirektionalen Fall hängt e von der Reihenfolge der betrachteten Knoten gleicher Ditanz ab. Nehmen wir eine FIFO Ordnung der Knoten gleichen Gewichte an (z.b. in einer Bucket Queue), o it folgender Graph ein Beipiel. Die Dijktra Suche cannt die Knoten in der Reihenfolge:, a, b, t, während A die Knoten in der Reihenfolge, b, a, c, t cannt. (0) a () [] [] [0] b () c [0] (0) () t [0] Legende: Werte in eckigen Klammern geben Knotenpotentiale an, Werte in runden Klammern reduzierte Kantengewichte.

Aufgabe (Rechnen: Monotone ganzzahlige Priority Queue ) Bei einer Auführung von Dijktra Algorithmu wird folgender Auchnitt an Priority Queue Operationen protokolliert: inert(a, 06 [000] ) ( Parameter: Knotenbezeichnung, Ditanz [Ditanz binär] ) inert(b, 0 [000] ) inert(c, 07 [00] ) deletemin() deletemin() inert(d, [000] ) deletemin() inert(e, 6 [0000] ) Zuätzlich wien Sie, da da maximale Kantengewicht im Graphen C = 6 beträgt und da vor der erten protokollierten Operation da letzte enthaltene Element au der Priority Queue entfernt wurde. Diee hatte den Wert min =. a) Führen Sie die Operationen auf einer Bucket Queue au. Geben Sie den Zutand der Datentruktur nach jeder Operation an. b) Wieviele Bucket werden für eine Auführung auf einem Radix Heap benötigt? Führen Sie die Operationen auf einem Radix Heap au. Geben Sie den Zutand der Datentruktur und den Wertebereich der Bucket nach jeder Operation an.

Muterlöung: a) Bucket Queue: inert(a, 06 [000] ): 0 4 6 min = (a, 6) inert(b, 0 [000] ): 0 4 6 min = (b, 0) (a, 6) inert(c, 07 [0000] ): (für monotone Priority Queue nur wichtig, da Elemente au [min, min + C] tammen!) 0 4 6 (c, 7) (b, 0) (a, 6) min = deletemin(): 0 4 6 (c, 7) (b, 0) min = 6 deletemin(): 0 4 6 min = 7 (b, 0) inert(d, [000] ): 0 4 6 min = 7 (b, 0) (d, ) deletemin(): 0 4 6 min = 0 (d, ) inert(e, 6 [0000] ): 0 4 6 min = 0 (e, 6) (d, )

Muterlöung: b) Radix Heap: (E werden K + Bucket benötigt: B[ ], B[0],..., B[K]; mit K = + log C = ergeben ich Bucket.) inert(a, 06 [000] ): - 0 (a, 06 [000]) 6 7 8 min = [000] inert(b, 0 [000] ): - 0 (a, 06 [000]) (b, 0 [000]) 6 7 8 min = [000] inert(c, 07 [00] ): - 0 (a, 06 [000]) (b, 0, [000]) (c, 07 [00]) 6 7 8 min = [000] deletemin(): (B[] it der erte gefüllte Bucket; min wird auf da kleinte enthaltene Element (6) geetzt; die Elemente in B[] werden neu verteilt und anchließend da Element in B[ ] entfernt) - 0 (c, 07 [00]) (b, 0 [000]) 6 7 8 min = 6 [000] deletemin(): - 0 (b, 0 [000]) 7 8 min = 7 [00] inert(d, [000] ): - 0 (b, 0 [000]) (d, [000]) 7 8 min = 7 [00] deletemin(): - 0 (d, [000]) 0 6 min = 0 [000] inert(e, 6 [0000] ): - 0 (d, [000]) (e, 6 [0000]) 0 6 min = 0 [000] 4

Aufgabe (Analye: Laufzeit von Dijktra Algorithmu) Gegeben ei ein gerichteter Graph G = (V, E) mit V = n und E = m, owie eine Kantengewichtungfunktion c : E R + 0. a) Beweien Sie die Behauptung au der Vorleung, da für m = Ω(n log n log log n) Dijktra Algorithmu mit einem binary heap eine durchchnittliche Laufzeit von O(m) beitzt. b) Eine pezielle Priority Queue habe folgende Laufzeiteigenchaften: inert: O(log n) decreaekey: O() deletemin: O( m) (ob eine Datentruktur mit dieen Eigenchaften exitiert und Dijktra Algorithmu mit ihr korrekt arbeitet, it eine andere Frage, aber wir nehmen für diee Aufgabe an e ginge :-) ) Geben Sie eine kleinte obere Schranke für die Laufzeit von Dijktra Algorithmu unter Verwendung dieer Priority Queue an. Unter welcher Bedingung an da Verhältni der Anzahl Knoten n zu Kanten m wird die Laufzeit linear in der Eingabegröße? Die Eingabe erfolgt in Form einer Adjazenzlite. c) Geben Sie eine Klae von Graphen an, für welche die Anzahl an deletemin Operationen in Dijktra Algorithmu von einem beliebigen Knoten zu einem beliebigen erreichbaren Knoten t linear von der minimalen Pfadlänge µ(, t) abhängt. Für die Klae von Graphen mu weiter m = Θ(n log n) gelten.

Muterlöung: a) Für die durchchnittliche Laufzeit von Dijktra Algorithmu mit einem binary heap gilt: O(m + n log m n log n) Zu zeigen it, ob diee Laufzeit in O(m) liegt für die gegebene Wahl von m = Ω(n log n log log n). Wähle den kleintmöglichen Wert für m. Fall die Auage dieen Wert gilt, gilt Sie icher auch für alle größeren m. Eingeetzt und umgeformt ergibt ich: n log n log log n O(n log n log log n + n log log n) n kürzen = O(n log n log log n + n log(log n log log n) log n) log ab=log a+log b = O(n log n log log n + n log log n + n log log log n log n) log log log n=o(log log n) = O(n log n log log n) = O(m) Damit liegt die Laufzeit in O(m). Für eine geringere Abhängigkeit, z.b. m = O(n) würde der zweite Term den erten im O-Kalkül dominieren und die Umformung würde nicht zu O(m) führen. b) Allgemein gilt für die Laufzeit von Dijktra Algorithmu: O(m + m T decreaekey (n) + n (T deletemin (n) + T inert (n))) Mit den angegebenen Laufzeiten eingeetzt ergibt ich: O(m + n m + n log n) Unter den Forderungen n m = O(m) und n log n = O(m) it die Laufzeit linear in m. Die lät ich umformen zu Ω(n) = m und Ω(n log n) = m. Damit ergibt ich m = Ω(n ). c) Eine Klae von Graphen, die diee Anforderungen erfüllt, lät ich wie folgt kontruieren: Man bilde eine gerichtete Kette von n Knoten, verbunden durch Kanten mit Gewicht. Außerdem füge man von jedem Knoten i zu jeweil max(i, log n ) Nachfolgern eine Kante mit Gewicht größer der Ditanz zwichen i und dem jeweiligen Nachfolger j auf der Kette ein. 4 4 0 4 Beipiel mit Knoten Für die Anzahl an Kanten gilt nun: n m := log n i= log n i= n i = log n i= log n ( log n + ) Θ ( n log n log n ) Θ (n log n) 6

Aufgabe 4 (Entwurf: All Pair Shortet Path ) Sie ind von der Finanzaufichtbehörde beauftragt worden, einen Algorithmu zu entwickeln, der Unregelmäßigkeiten im Devienhandel möglicht zeitnah aufdecken kann. Zu dieem Zweck erhalten Sie die aktuellen direkten Wechelkure w i,j von Währung i nach Währung j für alle gehandelten Währungen. Dabei bedeutet z.b. w i,j = 4, da man für Einheit au Währung i genau 4 Einheiten au Währung j erhält. Eine Unregelmäßigkeit tritt dann auf, wenn eine Möglichkeit exitiert, eine Währung i in eine Währung j über mehrere Zwichenwechel zu tauchen, o da der Ertrag der Wechel weniger al die Hälfte de direkten Wechel von Währung i nach j erzielt. Auf Rückfrage verichert Ihnen Ihr Auftraggeber außerdem, da eine geldgenerierende Schleife (leider) nicht auftreten kann. a) Formulieren Sie da Problem al graphentheoretiche Problem. D.h. bilden Sie die gegebenen Informationen auf Knoten und Kanten eine Graphen ab und interpretieren Sie die getellte Aufgabe al Problem auf dem von Ihnen definierten Graphen. b) Bechreiben Sie einen Algorithmu, der da Problem löt. c) Erweitern Sie Ihren Algorithmu, o da er auch die Folge an Wecheln augeben kann, die eine Unregelmäßigkeit veruracht. d) Ihr Algorithmu mu k Währungen überwachen. Geben Sie eine Laufzeit für Ihren Algorithmu an, die nur von k abhängt. Hinwei: log ab = log a + log b. Muterlöung: a) Modellierung de Problem al Graph: Knoten entprechen Währungen, Kanten erlaubten Geldwecheln. Kantengewichte geben den Logarithmu de Wechelkure an. E ergibt ich ein volltändiger Graph mit k Knoten. Der Graph kann negative Kantengewichte aber laut Vorgabe keine negativen Zyklen enthalten. Geucht ind kürzete Verbindungen von jedem Knoten zu jedem anderen. b) Führe eine All-To-All Suche durch und prüfe für je zwei Währungen i, j, ob der berechnete kürzete Abtand kleiner al log 0.w i,j it. Trifft die zu, melde eine Unregelmäßigkeit. c) E müen zuätzlich parent Zeiger gepeichert werden. Über diee kann man rückwärt von der Zielwährung die Folge an Wecheln rekontruieren. d) Der Graph hat n = k Knoten und m = k(k )/ Kanten (volltändiger Graph). Der verwendete Algorithmu braucht allgemein O(nm + n log n) Laufzeit. Eingeetzt ergibt ich eine Laufzeit von O(k ). 7

Aufgabe (Rechnen: A Suche) Gegeben ei der unten abgebildete Graph. An den Kanten ind Koten für die Nutzung der Verbindung eingetragen und die Knoten tragen Ortkoordinaten. a) Ergänzen Sie den gegebenen Graphen um Knotenpotentiale für eine A Suche von nach t. Verwenden Sie Knoten t al Landmarke und die Manhatten-Ditanz ( ˆ= Einnorm ) al Abchätzung für die Entfernung zum Ziel. Hinwei: : (x, y ), (x, y ) = y y + x x. b) Tragen Sie die reduzierten Kantengewichte in den Graphen ein. c) Wieviele deletemin Operationen führt die A Suche auf dem Graphen au? Wieviele eine normale Suche mit Dijktra Algorithmu? [4, 4] [, ] [, ] 0 [4, 0] [, 0] [, 0] [, 0] [0, 0] t 8

Muterlöung: a) Knotenpotentiale pot( ) in Knoten eingetragen; Kantengewichte c( ) durch reduzierte Gewichte c( ) : c(u, v) = c(u, v) + pot(v) pot(u) eretzt: [4, 4] [8] 0 [6] [, ] 0 6 [4] [, ] 6 [4] [] [] [] [0] [4, 0] 0 4 0 0 [, 0] [, 0] [, 0] [0, 0] t b) Siehe vorherige Teilaufgabe. c) Die A Suche benötigt deletemin Operationen, die normale Suche hingegen 8. Die entprechenden Suchräume ind in den folgenden Abbildungen eingezeichnet. Die Knotennummerierung gibt die Reihenfolge der deletemin Operationen an. A : Dijktra: [4, 4] 0 [4, 4] [, ] 0 4 [, ] 6 [, ] 6 6 [, ] 0 4 0 4 0 0 [4, 0] [, 0] [, 0] [, 0] [0, 0] t 7 8 [4, 0] [, 0] [, 0] [, 0] [0, 0] t 9

Aufgabe 6 (Einführung+Analye: Bidirektionaler Dijktra) In Vorleung und Saalübung wurde eine bidirektionale Variante von Dijktra Algorithmu angeprochen, die in dieer Aufgabe näher unterucht werden oll. Zur Wiederholung: Gegeben ei wie üblich ein gerichteter Graph G = (V, E) mit V = n und E = m, owie eine Kantengewichtungfunktion c : E R + 0. Geucht it der kürzete Pfad p =,..., t zwichen zwei Punkten, t V. Eine bidirektionale Suche löt diee Problem wie folgt: E werden zwei unidirektionale Suchen mit Dijktra Algorithmu getartet. Die Vorwärtuche beginnt bei Knoten und operiert auf dem normalen Graphen G, auch Vorwärtgraph genannt. Die Rückwärtuche beginnt bei Knoten t und operiert auf dem Rückwärtgraph G r = (V, E r ) mit Kantengewichtungfunktion c r. Dieer Graph entteht au G durch Umkehrung aller Kanten. Der Algorithmu cannt abwechelnd einen Knoten in der Vorwärtuche und in der Rückwärtuche, beginnend mit der Vorwärtuche. Wird während de Scan von Knoten u Kante (u, v) relaxiert, o wird überprüft, ob die Ditanz d forward [v] + d backward [v] kleiner it al die momentan minimale gefundene Ditanz von nach t und diee gegebenenfall angepat (d forward [v] gibt die biher kürzete gefundene Ditanz von nach v in der Vorwärtuche und d backward [v] die biher kürzete gefundene Ditanz von v nach t in der Rückwärtuche an). Sobald ein Knoten in einer Richtung gecannt werden oll, der bereit in der anderen Richtung gecannt worden it, kann die Suche beendet werden (Abbruchbedingung). Die aktuelle minimale gefundene Ditanz it dann die tatächliche minimale Ditanz zwichen und t. a) Zeichnen Sie den Rückwärtgraph G r zum angegebenen Graphen. Geben Sie die Kantengewichte c(a, d), c r (a, d) owie c(b, e), c r (b, e) an. a b e c (Kante (b, e) it eine bidirektionale [bzw. ungerichtete] Kante) b) Geben Sie an, in welcher Reihenfolge der unten angegebene Graph durchlaufen wird. d t c) Zeigen Sie, da die Abbruchbedingung korrekt it. d) Wann kann e paieren, da die Suche nach dem Scan von Knoten u beendet wird, dieer aber nicht Teil de kürzeten Wege it. Geben Sie ein Beipiel an. 0

Muterlöung: a) Rückwärtgraph G r : a b e Kantengewichte: c(a, d) =, c r (a, d) = c(b, e) =, c r (b, e) = Allgemein gilt c(u, v) = c r (v, u). c E ind einfach alle Pfeile umgedreht worden. b) Vorwärtuche: Rückwärtuche: d 4 Die Zahlen in den Knoten geben die Reihenfolge an, in der Sie gecannt worden ind. Sobald die Vorwärtuche den Knoten mit Nummer cannt, it die Suche beendet, da er chon in Rückwärtrichtung gecannt wurde. c) Nehmen wir an, e exitiere ein Knoten u, der in beiden Queue gelöcht wurde, aber d(, t) < d(, u)+d(u, t) ei noch nicht bekannt. Da die Knoten in treng monotoner Reihenfolge gecannt werden, ind in der Vorwärtuche bereit alle Knoten v mit d(, v) < d(, u) gecannt worden. Gleiche gilt für Knoten v mit d(v, t) < d(u, t) in der Rückwärtuche. Betrachten wir den kürzeten Pfad p = { = n,..., n k = t}. Weiterhin betrachten wir den Knoten mit maximalem i, o da d(, n i ) < d(, u) owie den Knoten mit minimalem j, o da d(n j, t) < d(u, t). Da d(, t) noch nicht bekannt it, mu gelten: i < j (ont wäre die Ditanz bekannt). Folglich exitiert aber ein Knoten n x in p mit d(, n x ) d(, u) owie d(n x, t) d(u, t). Damit wäre aber auch d(, t) d(, u) + d(u, t) > d(, t), wa ein Widerpruch it. d) Der abgebildete Graph it ein mögliche Beipiel. C E A D 4 4 B Die Vorwärtuche bearbeitet die Knoten in der Reihenfolge A,C,B,E,D. Die Rückwärtuche bearbeitet die Knoten in der Reihenfolge D,E,B,C,A. Nach drei abwechelnden Schritten wurde B folglich in beiden Suchräumen gecannt. Der kürzete Weg folgt aber der Route A,C,E,D.

Aufgabe 7 (Analye: Bidirektionaler Dijktra) a) Gegeben ei ein Gittergraph G mit allen Kantengewichten gleich. Wieviele Knoten wird eine bidirektionale Suche beuchen in Abhängigkeit von Abtand d zwichen Start und Ziel? Wieviele die unidirektionale Suche? Beipiel eine Gittergraphen b) Geben Sie ein Beipiel an, in dem die bidirektionale Suche von nach t exponentiell weniger Knoten beucht al die unidirektionale Suche. c) Geben Sie ein Beipiel, in dem die bidirektionale Suche von nach t mehr Knoten beucht al die unidirektionale Suche. d) Zeigen Sie, da die bidirektionale Suche nie mehr al doppelt o viele Knoten beucht al die unidirektionale Suche.

Muterlöung: a) Dijktra Algorithmu cannt Knoten kreiförmig um den Startknoten. Für den Kreiumfang gemeen in Knoten gilt im Gridgraph: u(r) = (r + ) + (r ) = 4r (Einnorm). Im Falle der unidirektionalen Suche werden Kreie mit Radiu bi d volltändig und der Krei mit Radiu d teilweie abgeucht. Damit werden d r=0 u(r) + = + 4d(d )/ + bi d r=0 u(r) = + 4d(d )/ + 4d Knoten gecannt. Die zuätzliche + entpricht dem Scannen de Startknoten. Im Falle der bidirektionalen Suche werden für jede Richtung Kreie mit Radiu bi d/ volltändig und der Krei mit Radiu d/ + teilweie abgeucht. Damit werden zwichen d r=0 u(r) + = + 4( d/ )( d/ )/ + und d r=0 u(r) = + 4( d/ )( d/ )/ + 4( d/ + ) Knoten in jeder Richtung gecannt. Vergleicht man beide Ergebnie, o tellt man fet, da die bidirektionale Suche nur ungefähr halb o viele Knoten cannt wie die unidirektionale Suche. b) Von wird ein Baum mit allen Kantengewichten gleich aufgepannt, deen Blätter über jeweil eine Kante mit Gewicht n mit t verbunden ind bi auf ein Blatt, da über eine Kante mit Gewicht mit t verbunden it. Die unidirektionale Suche beucht alle n Knoten. Die bidirektionale Suche beucht nur O(log n) Knoten. n- n- n- n- t c) Der abgebildete Graph it ein mögliche Beipiel. Unidirektionale Suche cannt Knoten, bidirektionale Suche 9. t d) Sei k die Anzahl Knoten, die von der unidirektionalen Suche beucht werden. Die bidirektionale Suche führt zwei unabhängige unidirektionale Suchen au. Dabei entpricht die Vorwärtuche der unidirektionalen Suche. Beide Suchrichtungen wecheln ich ab und e wird mit der Vorwärtrichtung begonnen. Hat die bidirektionale Suche k Schritte durchgeführt, entfallen davon k auf die Vorwärtrichtung. Die Vorwärtuche hat damit die gleichen k Knoten abgeucht wie die unidirektionale Suche, einchließlich de Zielknoten. Da er in der Gegenrichtung auch chon abgeucht wurde (al erter Knoten), kann die Suche beendet werden.

Aufgabe 8 (Implementierung: A Algorithmu) Implementieren Sie die A Suche in C++ mit einer adreierbaren Prioritätlite Ihrer Wahl (http://github.com/) und der Graph-Datentruktur au dem KaHIP Framework. Laden Sie da Archiv von unerer Webite mit 6 Straßennetzwerken herunter. Da Archiv beinhaltet da komplette Straßennetzwerk der USA, aber auch kleinere gewichtete Teilnetzwerke wie da Straßennetzwerk von Colorado und Florida. Die Netzwerke ind im Meti Format gepeichert. Nutzen Sie die Methoden au dem KaHIP Framework um die Netzwerke einzuleen. Unteruchen Sie die Vorberechnung von Landmarken auf verchiedenen Netzwerken. Wie lange benötigt die Vorberechnung einer Landmarke für da Colorado Netzwerk im Vergleich zu einer Landmarke für Californien? Begründen Sie die Laufzeiten. Unteruchen Sie die A Suche auf dem Straßennetzwerk von Colorado etwa genauer: Berechnen Sie dazu die Landmarke für den Knoten 46. Nutzen Sie dazu die Implementierung von Dijktra Algorithmu au Übungblatt. Nutzen Sie diee Landmarke und die A Suche um den kürzeten Weg von Knoten 0 zu Knoten 0 zu finden. Wie lange benötigt diee Suche im Vergleich zur Suche de kürzeten Weg von Knoten 0 zu Knoten 0? Geben Sie eine Begründung für den Laufzeitunterchied an. http://algo.iti.kit.edu/kahip http://algo.iti.kit.edu/chulz/graph.tar.gz 4