Praktikum Routenplanung Vorbesprechung, Wintersemester 2016/2017 Moritz Baum, Valentin Buchhold, Ben Strasser, Tobias Zündorf 19.

Ähnliche Dokumente
Praktikum Routenplanung Vorbesprechung, Wintersemester 2013/2014 Moritz Baum, Julian Dibbelt, Ben Strasser 21. Oktober 2013

Praktikum Routenplanung Vorbesprechung, Wintersemester 2014/2015 Moritz Baum, Julian Dibbelt, Ben Strasser 22. Oktober 2014

Praktikum Routenplanung Themenvorstellung & Gruppeneinteilung, Wintersemester 2015/2016 Moritz Baum, Ben Strasser, Tobias Zündorf 19.

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

Algorithmen für Routenplanung 8. Sitzung, Sommersemester 2012 Thomas Pajor 21. Mai 2012

Algorithmen für Routenplanung 7. Sitzung, Sommersemester 2010 Thomas Pajor 28. Mai 2010

Praktikum Routenplanung

Algorithmen für Routenplanung 1. Sitzung, Sommersemester 2012 Thomas Pajor 18. April 2012

Algorithmen für Routenplanung Vorlesung 6

Praktikum Routenplanung

Algorithmen für Routenplanung

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

Algorithmen für Routenplanung 13. Sitzung, Sommersemester 2013 Julian Dibbelt 19. Juni 2013

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2011 Reinhard Bauer, Thomas Pajor 6. Juni 2011

Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2016 Tobias Zündorf 25. April 2016

Algorithmen für Routenplanung 7. Vorlesung, Sommersemester 2012 Daniel Delling 16. Mai 2012

Algorithmen für Routenplanung 1. Sitzung, Sommersemester 2010 Thomas Pajor 12. April 2010

Algorithmen für Routenplanung Vorlesung 4

Algorithmen für Routenplanung

Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2018 Tim Zeitz 23. April 2018

Algorithmen für Routenplanung

Informatik II, SS 2014

Viertes Übungsblatt - Musterlösung

Kürzeste und Schnellste Wege

Algorithmen für Routenplanung Vorlesung 11

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2010 Thomas Pajor 28. Juni 2010

Algorithmen für Routenplanung 18. Sitzung, Sommersemester 2015 Moritz Baum 13. Juli 2015

10. Übungsblatt zu Algorithmen I im SS 2010

Schnelle und genaue Routenplanung

Algorithmen für Routenplanung

Algorithmen für Routenplanung 4. Vorlesung, Sommersemester 2017 Moritz Baum 15. Mai 2017

Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2014 Andreas Gemsa 20. April 2014

Algorithmen für Routenplanung 4. Vorlesung, Sommersemester 2018 Tim Zeitz 30. April 2018

Algorithmen für Routenplanung Vorlesung 10

Algorithmen & Komplexität

Algorithmen I - Tutorium 28 Nr. 9

Algorithmen für Routenplanung Vorlesung 5

Effizienter Planaritätstest Vorlesung am

Algorithmen II Vorlesung am

10. Übung Algorithmen I

Algorithmen für Planare Graphen

Algorithmen für Routenplanung 13. Sitzung, Sommersemester 2011 Reinhard Bauer, Thomas Pajor 9. Juni 2011

Algorithmen für Routenplanung Vorlesung 3

Schnelle und genaue Routenplanung

Algorithmen für Routenplanung 15. Vorlesung, Sommersemester 2012 Daniel Delling 20. Juni 2012

Algorithmen für Routenplanung 11. Sitzung, Sommersemester 2013 Julian Dibbelt 10. Juni 2013

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2014 Prof. Christos Zaroliagis 26. Mai 2014

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Lernmodul 7 Algorithmus von Dijkstra

Praktikum Routenplanung Vorbesprechung, Wintersemester 2011/2012 Julian Dibbelt und Thomas Pajor 2. November 2011

Algorithmen für Routenplanung Vorlesung 1

Algorithmen für Routenplanung 13. Vorlesung, Sommersemester 2017 Tobias Zündorf 26. Juni 2017

Algorithmen für Routenplanung 13. Vorlesung, Sommersemester 2012 Daniel Delling 13. Juni 2012

Algorithmen für Routenplanung 1. Vorlesung, Sommersemester 2018 Tim Zeitz 17. April 2018

Algorithmen für Routenplanung 6. Vorlesung, Sommersemester 2010 Daniel Delling 17. Mai 2010

Übungsblatt. Praktikum Algorithm Engineering Routenplanung (WS 18/19)

Übungsblatt. Praktikum Algorithm Engineering Routenplanung (WS 16/17)

15. Elementare Graphalgorithmen

Informatik II Prüfungsvorbereitungskurs

Übungsblatt. Praktikum Algorithm Engineering Routenplanung (WS 17/18)

Erinnerung VL

Algorithmen für Routenplanung Vorlesung 2

Algorithmen für Routenplanung 1. Vorlesung, Sommersemester 2017 Tobias Zündorf 26. April 2017

Maximale s t-flüsse in Planaren Graphen

Kombinatorische Optimierung

Algorithmen für Routenplanung 14. Sitzung, Sommersemester 2011 Thomas Pajor 16. Juni 2011

Algorithmen und Datenstrukturen 2

Praktikum Routenplanung Vorbesprechung, Wintersemester 2012/2013 Moritz Baum, Julian Dibbelt, Thomas Pajor, Ben Strasser 17.

Algorithmen für Routenplanung Vorlesung 7

Seminar Algorithmen für planare Graphen

Algorithmen für Routenplanung 11. Vorlesung, Sommersemester 2016 Ben Strasser 30. Mai 2016

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

Algorithmen II Vorlesung am

Fortgeschrittene Routenplanung. Transportnetzen. Advanced Route Planning in Transportation Networks

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege

Algorithmische Methoden zur Netzwerkanalyse

Algorithmen für Routenplanung 8. Sitzung, Sommersemester 2013 Julian Dibbelt 22. Mai 2013

Algorithmen für Routenplanung 11. Sitzung, Sommersemester 2015 Julian Dibbelt 01. Juni 2015

Datenstrukturen und Algorithmen (SS 2013)

Informatik II, SS 2016

Algorithmische Methoden zur Netzwerkanalyse

Informatik II, SS 2016

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. C5.1 Einführung. C5.2 Grundlagen

Algorithmen für Routenplanung 10. Sitzung, Sommersemester 2014 Ben Strasser 21. Mai 2014

Very simple methods for all pairs network flow analysis

Algorithmen für Routenplanung 9. Sitzung, Sommersemester 2010 Thomas Pajor 7. Juni 2010

Algorithmen und Datenstrukturen

Algorithmen für Routenplanung 4. Sitzung, Sommersemester 2010 Thomas Pajor 3. Mai 2010

Aufgaben zur Klausurvorbereitung

Vorlesung Datenstrukturen

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Algorithmen für Routenplanung 7. Vorlesung, Sommersemester 2015 Ben Strasser 18. Mai 2014

Algorithmen für Routenplanung 3. Sitzung, Sommersemester 2010 Thomas Pajor 30. April 2010

Informatik II, SS 2016

Transkript:

Praktikum Routenplanung Vorbesprechung, Wintersemester 06/07 Moritz Baum, Valentin Buchhold, Ben Strasser, Tobias Zündorf 9. Oktober 06 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Organisatorisches Praktikum Erste Phase: Übungsblatt mit 4 Aufgaben lösen Zweite Phase: Große Aufgabe in Gruppen à Studenten Betreuer: Moritz Baum, Ben Strasser, Tobias Zündorf Email: {moritz.baum, strasser, tobias.zuendorf}@kit.edu 6 LP/ECTS Bei Fragen kommt einfach vorbei Homepage: http://iwww.iti.kit.edu/teaching/ winter06/algorithmengineeringpraktikum/ Folie 9. Oktober 06

Organisatorisches Voraussetzungen Ihr seid im Master Informatik, alle anderen bitte melden Ihr habt Interesse an algorithmischen Fragestellungen Ihr mögt Algorithmen implementieren Ihr könnt C++ Übersicht Übungsaufgabe Anfangsvortrag Gruppenaufgabe Abschlussvortrag Ausarbeitung Folie 9. Oktober 06

Organisatorisches Voraussetzungen Ihr seid im Master Informatik, alle anderen bitte melden Ihr habt Interesse an algorithmischen Fragestellungen Ihr mögt Algorithmen implementieren Ihr könnt C++ Übersicht Übungsaufgabe Anfangsvortrag Gruppenaufgabe Abschlussvortrag Ausarbeitung Folie 9. Oktober 06

Organisatorisches Voraussetzungen Ihr seid im Master Informatik, alle anderen bitte melden Ihr habt Interesse an algorithmischen Fragestellungen Ihr mögt Algorithmen implementieren Ihr könnt C++ Übersicht Übungsaufgabe Anfangsvortrag Gruppenaufgabe Abschlussvortrag Ausarbeitung Folie 9. Oktober 06

Organisatorisches Übungsblatt Es werden Punkte vergeben Punkte gehen nicht in die Endnote ein Gruppen nach Punktzahl gebildet Gruppe mit den meisten Punkten darf sich Gruppenarbeitsthema zuerst aussuchen Nach Übungsblatt: formale Prüfungsanmeldung d.h. ab da: nichts gemacht durchgefallen Gruppenarbeit ist schwerer als Übungsblatt Folie 4 9. Oktober 06

Organisatorisches Gruppenarbeit Bearbeitung in er Gruppe Aufgabe: Reimplementieren eines Forschungspapers Nicht jede Gruppe hat das selbe Paper Visualisierung der Ergebnisse Einige Experimente aus dem Paper wiederholen Einige neue Experimente entwerfen und durchführen Einteilung und Themen Gruppeneinteilung nach Übungsblatt Themenvorstellung bei Gruppeneinteilung Folie 9. Oktober 06

Organisatorisches Anfangsvortrag 0 min Problemstellung und den Kernansatz erklären Ausarbeitung Alles was ihr implementiert habt, in eigenen Worten beschreiben Experimente und Ergebnisse dokumentieren Abschlussvortrag 0min-0min Inhalte der Ausarbeitung vorstellen Folie 6 9. Oktober 06

Aufwand Aufwand 6 ETCS/LP 6*0h = 80h Bei 0 Wochen: 9h pro Woche, also leicht mehr als Tag Vollzeit pro Woche Grobe Verteilung h Übungsblatt 9h Gruppenaufgabe inklusive Einarbeitung ins Thema Implementierung h Kurzvortrag 0h Abschlussvortrag 0h Ausarbeitung h Anwesenheit Folie 7 9. Oktober 06

Problemstellung Gesucht: Idee: finde die beste Verbindung in einem Transportnetzwerk Netzwerk als Graphen G = (V, E) Pfad durch Graph entspricht Route klassisches Problem (Dijkstra) Probleme: Transportnetzwerke sind groß Dijkstra zu langsam (> Sekunde) Folie 8 9. Oktober 06

Problemstellung Gesucht: Idee: finde die beste Verbindung in einem Transportnetzwerk Netzwerk als Graphen G = (V, E) Pfad durch Graph entspricht Route klassisches Problem (Dijkstra) Probleme: Transportnetzwerke sind groß Dijkstra zu langsam (> Sekunde) Folie 8 9. Oktober 06

Beschleunigungstechniken Beobachtungen: viele Anfragen in (statischem) Netzwerk manche Berechnungen scheinen unnötig Idee: Zwei-Phasen Algorithmus: offline: berechne Zusatzinformation während Vorberechnung online: beschleunige Berechnung mit diesen Zusatzinformationen drei Kriterien: wenig Zusatzinformation kurze Vorberechnung (im Bereich Stunden/Minuten) hohe Beschleunigung Folie 9 9. Oktober 06

Beschleunigungstechniken Beobachtungen: viele Anfragen in (statischem) Netzwerk manche Berechnungen scheinen unnötig Idee: Zwei-Phasen Algorithmus: offline: berechne Zusatzinformation während Vorberechnung online: beschleunige Berechnung mit diesen Zusatzinformationen drei Kriterien: wenig Zusatzinformation kurze Vorberechnung (im Bereich Stunden/Minuten) hohe Beschleunigung Folie 9 9. Oktober 06

Modellierung (Straßengraphen) Folie 0 9. Oktober 06

Modellierung (Straßengraphen) Folie 0 9. Oktober 06

Modellierung (Straßengraphen) Knoten sind Kreuzungen Kanten sind Straßen Einbahnstraßen Metrik ist Reisezeit Folie 0 9. Oktober 06

Modellierung (Straßengraphen) Knoten sind Kreuzungen Kanten sind Straßen Einbahnstraßen Metrik ist Reisezeit Folie 0 9. Oktober 06

Modellierung (Straßengraphen) Knoten sind Kreuzungen Kanten sind Straßen Einbahnstraßen Metrik ist Reisezeit 8 8 Folie 0 9. Oktober 06

Benotung Übungsblätter Pro Aufgabe: Liste an Start- und Zielknotenpaaren Ihr soll die Pfadlänge berechnen Punkte einer Aufgabe = #Korrekt berechnete Pfadlängen Folie 9. Oktober 06

Hilfestellung Übungsblätter Bei Fragen oder Problemen könnt ihr euch gerne an uns wenden Falls danach gefragt wird, dann können wir auch gerne Feedback zu eurem Code geben Allerdings: Eigeninitiative erwünscht Es ist eure Aufgabe bei Problemen auf einen der Betreuer zuzugehen Wer nicht fragt, der kriegt keine Hilfe Folie 9. Oktober 06

Hilfestellung Übungsblätter Bei Fragen oder Problemen könnt ihr euch gerne an uns wenden Falls danach gefragt wird, dann können wir auch gerne Feedback zu eurem Code geben Allerdings: Eigeninitiative erwünscht Es ist eure Aufgabe bei Problemen auf einen der Betreuer zuzugehen Wer nicht fragt, der kriegt keine Hilfe Folie 9. Oktober 06

Zeitplan Wann? Wo? Was? Heute 9.0. um 4:00 SR 0 Vorbesprechung 7.., 8:00 morgens Abgabe Ubungsblatt 7..-8.. Punktevergabe per E-Mail.. um 4:00 SR 0 Themen & Gruppeneinteilung 4.. um 4:00 SR 0 Anfangsvorträge 7.. Draft-Version von Ausarbeitung.. um 4:00 SR 0 Abschlussvorträge.. Abgabe Ausarbeitung Es gilt Anwesenheitspflicht. Wer nicht kommen kann muss sich mit Begründung abmelden. Deutsche Zeit Folie 9. Oktober 06

Graph-Repräsentationen Drei klassische Ansätze: Adjazenzmatrix (statisches) Adjazenzarray Kantenarray 0 Folie 4 9. Oktober 06

Graph-Repräsentationen Drei klassische Ansätze: Adjazenzmatrix (statisches) Adjazenzarray Kantenarray 0 0 0 Folie 4 9. Oktober 06

Graph-Repräsentationen Drei klassische Ansätze: Adjazenzmatrix (statisches) Adjazenzarray Kantenarray first out 0 0 4 6 head weight 0 Folie 4 9. Oktober 06

Graph-Repräsentationen Drei klassische Ansätze: Adjazenzmatrix (statisches) Adjazenzarray Kantenarray 0 tail head weight 0 0 0 Folie 4 9. Oktober 06

Was benutzen wir? Adjazenzmatrix: Braucht O(n ) Speicher n = 8 0 6 Speicher /4 Terrabyte Impraktikabel Kantenarray: Perfekt für einfache Transformationen (z.b. Graph umdrehen) Traversieren (i.e. Pfadsuche) geht nicht Adjazenzarray: Gut wenn man Pfade suchen will Folie 9. Oktober 06

Was benutzen wir? Adjazenzmatrix: Braucht O(n ) Speicher n = 8 0 6 Speicher /4 Terrabyte Impraktikabel Kantenarray: Perfekt für einfache Transformationen (z.b. Graph umdrehen) Traversieren (i.e. Pfadsuche) geht nicht Adjazenzarray: Gut wenn man Pfade suchen will Folie 9. Oktober 06

Was benutzen wir? Adjazenzmatrix: Braucht O(n ) Speicher n = 8 0 6 Speicher /4 Terrabyte Impraktikabel Kantenarray: Perfekt für einfache Transformationen (z.b. Graph umdrehen) Traversieren (i.e. Pfadsuche) geht nicht Adjazenzarray: Gut wenn man Pfade suchen will Folie 9. Oktober 06

Konvertierung Kantenarray Adjazenzarray Nach tail sortieren Ausgangsgrad jedes Knoten berechnen first out = Präfixsumme über Array der Ausgangsgrade Folie 6 9. Oktober 06

Dijkstras Algorithmus forall the nodes v V do d[v] = ; d[s] = 0; 4 q.clear(); q.insert(s, 0); 6 while!q.empty() do 7 x q.pop(); 8 forall the edges (x, y) E do 9 if d[x] + len(x, y) < d[y] then 0 d[y] d[y] + len(x, y); if y q then q.decreasekey(y, d[y]) else 4 q.insert(y, d[y]) Folie 7 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b c d e f g h queue q: ID Key s 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b c d e 0 f g h 0 queue q: ID Key c e 0 h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b c d e f 8 g h 0 queue q: ID Key e f 8 h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b c d e f 7 g h 0 queue q: ID Key f 7 h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b c d 9 e f 7 g h 0 queue q: ID Key d 9 h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b 0 c d 9 e f 7 g 9 h 0 queue q: ID Key b 0 g 9 h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b 0 c d 9 e f 7 g h 0 queue q: ID Key a g h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b 0 c d 9 e f 7 g h 0 queue q: ID Key g h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b 0 c d 9 e f 7 g h 0 queue q: ID Key h 0 Folie 8 9. Oktober 06

Dijkstras Algorithmus g a b 0 h 0 s d 0 c 7 f e 4 tentative distance d: ID Dist. s 0 a b 0 c d 9 e f 7 g h 0 queue q: ID Key Folie 8 9. Oktober 06

Dijkstras Algorithmus Resultat Nach der Ausführung gilt: v : d[v] = dist G (s, v) Stopkriterium Geht es schneller, wenn wir dist G (s, t) nur für ein t bestimmen müssen? Ja: Breche Schleife ab, sobald t aus der Queue genommen wird Folie 9 9. Oktober 06

Schematischer Suchraum s t Ein Graph Folie 0 9. Oktober 06

Schematischer Suchraum s t Suchraum ohne Stopkriterium Folie 0 9. Oktober 06

Schematischer Suchraum s t Suchraum mit Stopkriterium Folie 0 9. Oktober 06

Schematischer Suchraum s t Bidirektionale Variante von Dijkstras Algorithmus Folie 0 9. Oktober 06

Bidirektionale Variante von Dijkstras Algorithmus Bidirektionale Variante von Dijkstras Algorithmus Mit zwei Queues und zwei tentative Distanzarrays Arbeite die Seite mit den wenigsten Elementen in der Queue als nächstes ab Abbruch wenn die Summe der min-keys beider Queues größer ist als der kürzeste bisher gefundene Pfad Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Dijkstra s Algorithmus schaut sich alle Zwischenknoten an. Das dauert. Folie 9. Oktober 06

Shortcut Idee: Füge Shortcut-Kante ein. Grauer Teilgraph muss nur angeschaut werden, wenn s oder t drin liegt. Folie 9. Oktober 06

Shortcut Idee: Füge Shortcut-Kante ein. Grauer Teilgraph muss nur angeschaut werden, wenn s oder t drin liegt. Folie 9. Oktober 06

Shortcut Idee: Füge Shortcut-Kante ein. Grauer Teilgraph muss nur angeschaut werden, wenn s oder t drin liegt. Folie 9. Oktober 06

Shortcut Idee: Füge Shortcut-Kante ein. Grauer Teilgraph muss nur angeschaut werden, wenn s oder t drin liegt. Folie 9. Oktober 06

Shortcut Idee: Füge Shortcut-Kante ein. Grauer Teilgraph muss nur angeschaut werden, wenn s oder t drin liegt. Folie 9. Oktober 06

Shortcut Idee: Füge Shortcut-Kante ein. Grauer Teilgraph muss nur angeschaut werden, wenn s oder t drin liegt. Folie 9. Oktober 06

Knotenkontraktion von x 6 4 x 4 7 Kontraktion von x: Lösche x und füge Shortcuts zwischen Nachbarn ein, um die Distanzen zwischen allen Knoten zu erhalten Folie 9. Oktober 06

Knotenkontraktion von x 6 6 4 x 4 6 7 8 Kontraktion von x: Lösche x und füge Shortcuts zwischen Nachbarn ein, um die Distanzen zwischen allen Knoten zu erhalten Folie 9. Oktober 06

Knotenkontraktion von x 6 6 4 x 4 6 7 8 Bei Mehrfachkanten: Längere Kanten verwerfen Folie 9. Oktober 06

Knotenkontraktion von x 6 7 6 Folie 9. Oktober 06

Knotenkontraktion von x 6 7 6 Falls es einen kürzeren Pfad durch den Restgraphen gibt, dann kann man einen Shortcut auch verwerfen. Suche nach solchem Pfad heißt Zeugensuche/Witness Search Folie 9. Oktober 06

Knotenkontraktion von x 6 7 6 Falls es einen kürzeren Pfad durch den Restgraphen gibt, dann kann man einen Shortcut auch verwerfen. Suche nach solchem Pfad heißt Zeugensuche/Witness Search Folie 9. Oktober 06

Zeugensuche Es seien y und z zwei Nachbarn des kontrahierten Knoten x Wir fügen ein Shortcut (y, z) mit Gewicht len(y, x) + len(x, z) ein wenn y x z ein eindeutiger kürzester Weg ist Zum Überprüfen ob es ein kürzer Weg gibt startet man einen Dijkstra von y aus nach z. Diese Suche kann teuer sein. Mögliche Optimierungen: Suche darf nicht über den Knoten x gehen Bidirektionale Variante von Dijkstras Algorithmus Wenn die Suchen sich treffen kann man abbrechen Wenn die Suchfront größer wird als len(y, x) + len(x, z) kann man abbrechen Wenn das immer noch zu langsam ist: Suche nach k Schritten abbrechen. Eventuell gibt es einen Pfad den wir nicht finden. Das führt zu zusätzlichen Shortcuts, aber das ist kein Problem mit der Korrektheit. Folie 4 9. Oktober 06

Contraction Hierarchy Grundidee Eingabe Graph G Ordne Knoten von G nach Wichtigkeit : v... v n Kontrahiere Knoten iterative aus G raus zuerst den unwichtigsten Knoten v den wichtigsten Knoten v n als letztes Folie 9. Oktober 06

Contraction Hierarchy 6 4 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 6 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 6 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 6 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 6 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 6 Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 4 6 s t Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 search space of s search space of t 6 4 s t Knoten nummeriert nach Wichtigkeit Folie 6 9. Oktober 06

Contraction Hierarchy 6 shortest st-path 4 6 s t Für jeden ursprünglichen kürzesten Weg gibt es einen hoch-runter-pfad Folie 6 9. Oktober 06

Anfrage Bidirektionale Variante von Dijkstras Algorithmus Verfolge nur Kanten zu wichtigeren Knoten Vorwärtssuche findet den hoch -Teil des Pfads Rückwärtssuche findet den runter -Teil des Pfads Abbruch wenn der min-key beider Queues größer ist als der bisher kürzeste gefundene Pfad Folie 7 9. Oktober 06

Nach Wichtigkeit Ordnen Grund-Idee: Wir wollen wenig Shortcuts Ein Knoten ist unwichtig wenn er wenig Shortcuts erzeugt simuliere Knotenkontraktion um Knoten zu gewichten Algorithmus: Baue eine große Warteschlange mit allen Knoten gewichtet nach ihrer Wichtigkeit Kontrahiere iterative unwichtigsten Knoten Kontraktion eines Knoten kann Wichtigkeit der Nachbarn beeinflussen Wichtigkeit der Nachbarn neu berechnen Folie 8 9. Oktober 06

Problemfall: Pfad Linker Knoten kontrahieren erzeugt keine Shortcuts Folie 9 9. Oktober 06

Problemfall: Pfad Linker Knoten kontrahieren erzeugt keine Shortcuts Folie 9 9. Oktober 06

Problemfall: Pfad Linker Knoten kontrahieren erzeugt keine Shortcuts Folie 9 9. Oktober 06

Problemfall: Pfad Linker Knoten kontrahieren erzeugt keine Shortcuts Folie 9 9. Oktober 06

Problemfall: Pfad Linker Knoten kontrahieren erzeugt keine Shortcuts Folie 9 9. Oktober 06

Problemfall: Pfad Linker Knoten kontrahieren erzeugt keine Shortcuts Folie 9 9. Oktober 06

Problemfall: Pfad Linker Knoten kontrahieren erzeugt keine Shortcuts Folie 9 9. Oktober 06

Problemfall: Pfad search space of s s Suchraum von s ist der ganze Graph keine Beschleunigung Folie 9 9. Oktober 06

Problemfall: Pfad 0 0 0 0 0 0 -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Problemfall: Pfad 0 0 0 0 0 -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Problemfall: Pfad 0 0 0 0 -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Problemfall: Pfad 6 0 0 0 -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Problemfall: Pfad 6 0 0 0 -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Problemfall: Pfad 6 0 0 0 -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Problemfall: Pfad 6 0 0 0 -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Problemfall: Pfad search space of s 6 0 0 0 s -tes Kriterium: Das geschätzte Level l(x) eines Knoten x kontrahiert für alle Nachbarn y: l(y) max{l(y), l(x) + } Folie 9 9. Oktober 06

Kombination mehrerer Kriterien Speichere für jede Kante e die Anzahl h(e) der original Kanten aus der sie besteht Es sei A(x) die Menge der eingefügten Shortcuts wenn x kontrahiert werden würde Analog: D(x) die Menge der gelöschten Kanten Es sei I(x) die Wichtigkeit von x Eine funktionierende Definition von I(x) ist I(x) := l(x) + A(x) D(x) + e A(x) h(e) e D(x) h(e) Hinweis: Es gibt sehr viele unterschiedliche Definitionen für I. Das ist nur ein Kochrezept, das sich bewährt hat und jeder würzt leicht anders Folie 0 9. Oktober 06

Begriffe Graph mit Shortcuts heißt augmentierter Graph Eine Ordnung π ist eine Permutation der Knoten, so dass die Knoten in der Reihe π(0), π()... π(n ) kontrahiert werden. Die inverse Permutation π heißt Rank. Der Rank entspricht der Höhe eines Knoten in der CH. Folie 9. Oktober 06