Algorithmen für Routenplanung 5. Sitzung, Sommersemester 2013 Julian Dibbelt 6. Mai 2013

Ähnliche Dokumente
Algorithmen für Routenplanung

Algorithmen für Routenplanung Vorlesung 3

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

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 12. Sitzung, Sommersemester 2011 Reinhard Bauer, Thomas Pajor 6. Juni 2011

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

Algorithmen für Routenplanung Vorlesung 7

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

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

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

Algorithmen für Routenplanung Vorlesung 11

Algorithmen für Routenplanung Vorlesung 6

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

Viertes Übungsblatt - Musterlösung

Algorithmen für Routenplanung

Algorithmen für Routenplanung Vorlesung 4

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

Algorithmen für Routenplanung Vorlesung 10

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

Algorithmen für Routenplanung Vorlesung 5

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

Algorithmen für Routenplanung Vorlesung 2

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

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

Untersuchung von Beschleunigungsverfahren für den Dijkstra-Algorithmus im Zusammenhang mit multimodalem Routing

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

Zweites Theorie-Übungsblatt - Musterlösung

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

Algorithmen für Routenplanung 5. Sitzung, Sommersemester 2010 Thomas Pajor 10. Mai 2010

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

Theorie-Übungsblatt 3 Lösungsvorschläge

Algorithmen für Routenplanung 9. Sitzung, Sommersemester 2013 Julian Dibbelt 27. Mai 2013

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

Schnelle und genaue Routenplanung

Schnelle und genaue Routenplanung

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

Algorithmen für Routenplanung 10. Sitzung, Sommersemester 2012 Daniel Delling 4. Juni 2012

Effizienter Planaritätstest Vorlesung am

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

Algorithmen für Routenplanung Vorlesung 12

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

10. Übung Algorithmen I

Lernmodul 7 Algorithmus von Dijkstra

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

Algorithmen für Planare Graphen

Algorithmen für Routenplanung

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

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2013 Julian Dibbelt 17. Juni 2013

Algorithmische Methoden zur Netzwerkanalyse Vorlesung 11, Henning Meyerhenke

Programmierkurs Python II

Algorithmen für Routenplanung 19. und letzte Sitzung, Sommersemester 2012 Thomas Pajor 16. Juli 2012

Route Planning in Road Networks

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

Das Problem des minimalen Steiner-Baumes

Von Aachen nach Halle...

Algorithmen II Vorlesung am

Datenstrukturen und Algorithmen

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

Informatik II, SS 2014

Algorithmen I - Tutorium 28 Nr. 9

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

Christian Schulz und Johannes Singler

15. Elementare Graphalgorithmen

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

Algorithmen für Routenplanung

Vorlesung Datenstrukturen

Algorithmen II Vorlesung am

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

Vorlesung Datenstrukturen

Informatik II, SS 2018

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

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

Theoretische Informatik 1

Informatik II, SS 2016

Kürzeste und Schnellste Wege

9 Minimum Spanning Trees

Theoretische Informatik 1

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

Übung 2 Algorithmen II

Algorithmen für Routenplanung 15. Vorlesung, Sommersemester 2017 Tobias Zündorf 5. Juli 2017

Algorithmen und Datenstrukturen 2

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Informatik II, SS 2016

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

Algorithmen für Routenplanung 9. Sitzung, Sommersemester 2015 Moritz Kobitzsch 20. Mai 2015

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

23. November Betweenness Centrality Closeness Centrality. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 12, Donnerstag, 23.

Praktikum Routenplanung

Informatik II, SS 2014

Vorlesung Datenstrukturen

Transkript:

Algorithmen für Routenplanung 5. Sitzung, Sommersemester 2013 Julian Dibbelt 6. Mai 2013 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

Letztes Mal: ALT und Arc-Flags Wie Suche zielgerichtet machen? Nichtbeachten von Kanten oder Knoten die in die falsche Richtung führen Reihenfolge in der Knoten besucht werden ändern Jetzt: ersteres Folie 2 6. Mai 2013

Arc-Flags Idee: partitioniere Graphen in k Zellen hänge Label mit k Bits an jede Kante gibt an, ob e für Ziele in Zielzelle T benötigt wird Folie 3 6. Mai 2013

Randknotenbäume Beobachtung: Man muss durch Randknoten in die Zelle setze Intra-Zellen Kanten auf true einen Rückwärts Dijkstra-Baum pro Randknoten b setze Flagge AF region(b) (e) = true wenn e Baumkante des Baums von b ist 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 Folie 4 6. Mai 2013

Zentralisierte Bäume verallgemeinere Dijkstra: für jede Region r (mit Randknotenmenge B r ) hänge Label l(u) der Größe B r an jeden Knoten u speichert den Abstand d(u, b) für alle b B r triviale Intialisierung der Randknoten, füge alle in Queue ein nehme Knoten u aus der Queue (key: min{l(u}) relaxiere Kanten (u, v): erzeuge Label l durch l(u) + len(u, v) checke ob l das Label l(v) verbessert breche ab, wenn keine Verbesserungen mehr möglich sind setze Flagge auf true wenn d(u, b) + len(u, v) = d(v, b) gilt Folie 5 6. Mai 2013

Zentralisierte Bäume Bemerkungen: Knoten können mehrfach besucht werden (label-correcting) Prioritäten der Knoten beliebig wählbar z.b. Minimum über alle Einträge von u hoher Speicherverbrauch durch n Label der Größe B r 18 Mio. Knoten und 1000 Randknoten 72 GB teile Arbeit in mehrere Schritte mit maximal 100 Randknoten meist Beschleunigung um Faktor 4 gegenüber Randknotenansatz Folie 6 6. Mai 2013

Automatisches Setzen von Flaggen Beobachtung: Für manche Kanten kann man die Flaggen automatisch setzen Angehangene Bäume: 0001 1111 Kanten zur Wurzel hin haben alle Flaggen gesetzt Kanten von Wurzel weg haben nur eine Flagge gesetzt 0001 1111 Also: Entferne Bäume vor Arcs-Flag-Berechnung aus Graph Knotenzahl verringert sich um 1 Drittel 1111 0001 Anmerkung: Alle Knoten eines angehangenen Baumes müssen zur gleichen Zelle wie dessen Wurzel gehören. Folie 7 6. Mai 2013

Partitionierung Anforderungen: balanciert mögliche Partitionen: Gitter Quad-Baum iterativ in 4 Zellen unterteilen kd-baum Verallgemeinerung von Quad-Baum weitere Anforderungen? Folie 8 6. Mai 2013

Partitionierung Anforderungen: ausbalanciert wenige Randknoten zusammenhängend Black-Box Partitionierer (METIS,...): benutzen keine Einbettung oft: teilen rekursiv Graphen in k Teile mit kleinem Schnitt bringen gute Lösungen für Arc-Flags Folie 9 6. Mai 2013

Suchraum Folie 10 6. Mai 2013

Suchraum Folie 10 6. Mai 2013

Diskussion Vorteile: einfacher Anfrage Algorithmus leicht on-top auf bestehende Systeme zu setzen ausreichende Beschleunigung Nachteile: hohe Vorberechnungsdauer weitere? Folie 11 6. Mai 2013

Coning-Effekt Beobachtung: lange Zeit nur eine Kante wichtig daher immer nur ein Knoten in der Queue aber: je näher an der Zelle, desto mehr Kanten werden wichtig Suche fächert sich auf in Zelle werden dann alle Kanten relaxiert Zwei Ansätze: bidirektionale Flags multi-level Flags Folie 12 6. Mai 2013

Bidirektionale Arc-Flags Vorberechung: Vorwärts- und Rückwärtsflaggen Rückwärtsflaggen können analog für eingehende Kanten berechnet werden Vorberechungszeit in gerichteten Graphen erhöht sich um Faktor 2 Anfrage: bidirektional: Vorwärtssuche relaxiert nur Kanten mit Flagge für T Rückwärtssuche nur Kanten mit Flaggen für S normales Stopp-Kriterium von bidirektionalem Dijkstra Folie 13 6. Mai 2013

Bidirektionale Arc-Flags Problem: Eindeutigkeit der Wege eventuell nicht korrekt Lösung: kommt in Straßengraphen kaum vor daher öffne Flaggen für alle möglichen Wege Folie 14 6. Mai 2013

Bidirektionale Arc-Flags Problem: Eindeutigkeit der Wege eventuell nicht korrekt Lösung: kommt in Straßengraphen kaum vor daher öffne Flaggen für alle möglichen Wege Folie 14 6. Mai 2013

Bidirektionale Arc-Flags Problem: Eindeutigkeit der Wege eventuell nicht korrekt Lösung: kommt in Straßengraphen kaum vor daher öffne Flaggen für alle möglichen Wege Folie 14 6. Mai 2013

Bidirektionale Arc-Flags Problem: Eindeutigkeit der Wege eventuell nicht korrekt Lösung: kommt in Straßengraphen kaum vor daher öffne Flaggen für alle möglichen Wege Folie 14 6. Mai 2013

Suchraum Folie 15 6. Mai 2013

Suchraum Folie 15 6. Mai 2013

Suchraum Nachteile? Folie 15 6. Mai 2013

Multi-Level Arc-Flags Problem: Anfragen in einer Zelle ohne Beschleunigung viele Real-Welt Anfragen sind lokal Multi-Level Arc-Flags: Multi-Level Partition berechne partielle Flaggen Folie 16 6. Mai 2013

Multi-Level Arc-Flags Problem: Anfragen in einer Zelle ohne Beschleunigung viele Real-Welt Anfragen sind lokal Multi-Level Arc-Flags: Multi-Level Partition berechne partielle Flaggen Folie 16 6. Mai 2013

Multi-Level Arc-Flags Problem: Anfragen in einer Zelle ohne Beschleunigung viele Real-Welt Anfragen sind lokal Multi-Level Arc-Flags: Multi-Level Partition berechne partielle Flaggen Folie 16 6. Mai 2013

Multi-Level Arc-Flags Problem: Anfragen in einer Zelle ohne Beschleunigung viele Real-Welt Anfragen sind lokal Multi-Level Arc-Flags: Multi-Level Partition berechne partielle Flaggen Folie 16 6. Mai 2013

Multi-Level Arc-Flags Vorberechnung: oberster Level wie gehabt auf unteren Leveln: von jedem Randknoten führe Dijkstra aus, bis alle Knoten der Superzelle abgearbeitet worden sind setze Flaggen für alle Kanten (u, v) für die u in Superzelle Hinweis: es reicht nicht, nur den Subgraphen der Superzelle zu betrachten (Übungsaufgabe) Anfragen: bestimme gemeinsamen Level l von u und t werte Flaggen auf dem Level l aus Folie 17 6. Mai 2013

Suchraum Folie 18 6. Mai 2013

Suchraum Folie 18 6. Mai 2013

Datenstruktur Effizient Flaggen speichern? pro Kante eine Flagge Beobachtung: Anzahl Kombinationen begrenzt 1 0 0 0 0 1 1 1 0 0 1 1 1 1 1 Idee: speichere Flaggen in Matrix Zeiger von Kanten auf die Matrix verringert Speicherverbrauch um einen Faktor 5 Folie 19 6. Mai 2013

Flaggenkompression Beobachtung: kippen eines Bits von 1 auf 0 verboten kippen eines Bits von 0 auf 1 erlaubt (weiterhin korrekt, eventuell langsamer) 1 0 0 0 0 1 1 1 0 0 1 1 1 1 1 Idee: verringere Anzahl eindeutiger Arc-Flags durch kippen dadurch Kompression der Matrix finde gutes Mapping Folie 20 6. Mai 2013

Flaggenkompression Beobachtung: kippen eines Bits von 1 auf 0 verboten kippen eines Bits von 0 auf 1 erlaubt (weiterhin korrekt, eventuell langsamer) 1 1 0 0 1 1 1 1 1 Idee: verringere Anzahl eindeutiger Arc-Flags durch kippen dadurch Kompression der Matrix finde gutes Mapping Folie 20 6. Mai 2013

Flaggenkompression (Multi-Level, unidirektional) Europagraph, Kostenfkt., Häufigkeitsfakt. 0,5 Laufzeit 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 1_2_4_8_16_32 1_2_4_8_32_64 1_2_4_8_64_128 0.518118 3.90 0e+00 2e+05 4e+05 6e+05 8e+05 #Entfernte Flags Folie 21 6. Mai 2013

Beobachtungen kaum Verlust bis zu 60% entfernte Flaggen geringer Verlust bis zu 80% entfernte Flaggen kippen von niedrig-leveligen Flaggen billiger Folie 22 6. Mai 2013

Zufallsanfragen: Anzahl Regionen Prepro Query time space # settled time spd regions [min] [B/n] nodes [ms] up 0 0 0 9 114 385 5 591.6 1.0 200 1 028 19 2 369 1.6 3 494.8 400 1 366 20 1 868 1.2 4 659.7 600 1 723 21 1 700 1.1 5 083.3 800 1 892 23 1 642 1.4 3 994.0 1000 2 156 25 1 593 1.1 5 083.3 Beobachtungen: lange Vorberechnung hohe Beschleunigung geringer Speicherverbrauch mehr als 200 Regionen lohnt sich nicht Folie 23 6. Mai 2013

Lokale Anfragen Arc-Flags I Dijkstra Rank Query Time [ms] 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 24 0.01 0.1 1 3 10 100 1000 10000 Dijkstra Arc Flags (128 regions) bidirectional Arc Flags (128 regions) Folie 24 6. Mai 2013

Lokale Anfragen Arc-Flags I Dijkstra Rank Query Time [ms] 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 24 0.01 0.1 1 3 10 100 1000 10000 bidirectional Dijkstra bidirectional Arc Flags (16 regions) bidirectional Arc Flags (128 regions) Folie 25 6. Mai 2013

Beobachtungen birektionale Arc-Flags deutlich schneller als unidirektionale gegenüber Dijkstra nur Beschleunigung für weite Anfragen 128 Regionen deutlich besser 16 (bei 2 24 nahezu gleich auf) Folie 26 6. Mai 2013

Übersicht: bisherige Techniken Vorberechnung Anfrage Zeit Platz Such Zeit [h:m] [byte/n] raum [ms] Beschl. Dijkstra 0:00 0 9 114 385 5 591.6 1.0 Bi-Dijkstra 0:00 0 4 764 110 2 713.2 2.1 Uni-ALT-16 1:25 128 815 639 327.6 17.1 Uni-ALT-64 1:08 512 604 968 288.5 19.4 Bi-ALT-16 1:25 128 74 669 53.6 104.3 Bi-ALT-64 1:08 512 25 324 19.6 285.3 Uni Arc-Flags (128) 8:34 10 92 545 31.9 175.3 Bi Arc-Flags (128) 17:08 20 2 764 0.8 6 988.1 Beobachtung: ALT: deutlich unterlegen bei Anfragen und Platzverbrauch Arc-Flags: deutlich längere Vorberechnungszeiten Folie 27 6. Mai 2013

Lokale Anfragen Vergleich Dijkstra Rank Query Time [ms] 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 24 0.01 0.1 1 3 10 100 1000 10000 bidirectional Dijkstra bidirectional ALT bidirectional Arc Flags (128 regions) Folie 28 6. Mai 2013

Zusammenfassung Arc-Flags Teile Graphen in k Regionen Flaggen zeigen an, ob Kante wichtig für Zielregion ist Einfacher Anfrage-Algorithmus Vorberechnung Kürzeste-Wege-Baum von jedem Randknoten Manche Flaggen können automatisch gesetzt werden Bidirektional und multi-level Erweiterungen Beschleunigung von bis zu 7000 Nahe Anfragen nicht schneller als Dijkstra Vorberechnung dauert allerdings (immer noch) ca. 1 Tag Folie 29 6. Mai 2013

Literatur Literatur (Arc-Flags): Moritz Hilger and Ekkehard Köhler and Rolf H. Möhring and Heiko Schilling: Fast Point-to-Point Shortest Path Computations with Arc-Flags In: Shortest Paths: Ninth DIMACS Implementation Challenge, 2009 Folie 30 6. Mai 2013

Partitionierung Anforderungen: ausbalanciert wenige Randknoten zusammenhängend Black-Box Partitionierer: benutzen keine Einbettung oft: teilen rekursiv Graphen in k Teile mit kleinem Schnitt lassen sich auf eine Vielzahl Graphklassen anwenden heute (Exkurs): spezielle Strassengraph-Partitionierer Folie 31 6. Mai 2013

Graph Partitionierung Informell: teile Graphen in lose verbundene Regionen (Zellen). Folie 32 6. Mai 2013

Graph Partitionierung Formale definition: Eingabe: ungerichteter graph G = (V, E) Ausgabe: Partition von V in Zellen V 1, V 2,..., V k Ziel: minimale Anzahl Kanten zwischen Zellen Standard Variante: V i U für festes U: Anzahl Zellen kann variieren ( n/u ). Balancierte Variante: k Zellen und Unausgeglichenheit ɛ: genau k Zellen (können unzusammenhängend sein) Zellen, Grösse (1 + ɛ) n/u. Folie 33 6. Mai 2013

Graph Partitionierung Formale definition: Eingabe: ungerichteter graph G = (V, E) Ausgabe: Partition von V in Zellen V 1, V 2,..., V k Ziel: minimale Anzahl Kanten zwischen Zellen Standard Variante: V i U für festes U: Anzahl Zellen kann variieren ( n/u ). Balancierte Variante: k Zellen und Unausgeglichenheit ɛ: genau k Zellen (können unzusammenhängend sein) Zellen, Grösse (1 + ɛ) n/u. beides NP schwer benutze Heuristiken Folie 33 6. Mai 2013

Generelle Verfahren METIS [KK99] SCOTCH [PR96] DiBaP [MMS09] Kappa [HSS10], KaSPar [OS10], Kaffpa [SS11], KaffpaE [SS12] Folie 34 6. Mai 2013

Natural Cuts Strassengraphen: dichte Regionen (Gitter) abwechselnd mit natürlichen Schnitten Flüsse, Berge, Wüsten, Wälder, Parks, Grenzen, Autobahnen,... PUNCH: Partitioner Using Natural-Cut Heuristics Folie 35 6. Mai 2013

Übersicht 1 Ausdünnung: entspricht match + contract auf Folie 34 finde natürliche Schnitte (auf richtiger Skala) behalte Schnittkanten, kontrahiere alle anderen 2 Zusammensetzen: partitioniere (kleineren) kontrahierten graph initial partitioning greedy + lokale Suche [+ Kombinationen] uncontract + local improvements Folie 36 6. Mai 2013

Übersicht 1 Ausdünnung: entspricht match + contract auf Folie 34 finde natürliche Schnitte (auf richtiger Skala) behalte Schnittkanten, kontrahiere alle anderen 2 Zusammensetzen: partitioniere (kleineren) kontrahierten graph initial partitioning greedy + lokale Suche [+ Kombinationen] uncontract + local improvements Folie 36 6. Mai 2013

Schnitte: Definitionen Schnitt Partition des Graphen in 2 Teile (V 1, V 2 ) Grösse: Anzahl Schnittkanten ( S ) Minimaler s-t Schnitt entferne minimale Anzahl Kanten, so dass s und t im Graphen nicht mehr verbunden sind kann in maximalen Fluss überführt werden in Polynomialzeit zu berechnen Dünnster Schnitt Schnitt mit S / min{ V 1, V 2 } minimal NP schwer Exact Graph Bisection Schnitt mit S minimal und V 1, V 2 < V /2 NP schwer Folie 37 6. Mai 2013

Finde Natürliche Schnitte Wir brauchen dünne Schnitte zwischen dichten Regionen: Dünnster Schnitt? Zu aufwendig. Berechne minimalen s-t Schnitt (für zufälliges s, t)? Meist trivial: Knotengrade sind klein. Wir brauchen was anderes: s-t Schnitte zwischen Regionen Folie 38 6. Mai 2013

Finde Natürliche Schnitte 1 Wähle ein Zentrum v. 2 Breitensuche der Grösse U um v: Erste U/10 Knoten: Kern Verbliebene Knoten in der Queue: Ring 3 Finde minimum Kern/Ring Schnitt: standard s t minimaler Schnitt. 4 Wiederhole für verschiedene zufällige v: bis jeder Knoten in 2 Kernen war v Berechene kleine Schnitte extra: identifiziere 1- and 2-Schnitte reduziert Strassengraph um Faktor 2 beschleunigt Schnittfindung Folie 39 6. Mai 2013

Finde Natürliche Schnitte 1 Wähle ein Zentrum v. 2 Breitensuche der Grösse U um v: Erste U/10 Knoten: Kern Verbliebene Knoten in der Queue: Ring 3 Finde minimum Kern/Ring Schnitt: standard s t minimaler Schnitt. 4 Wiederhole für verschiedene zufällige v: bis jeder Knoten in 2 Kernen war v U/10 nodes Berechene kleine Schnitte extra: identifiziere 1- and 2-Schnitte reduziert Strassengraph um Faktor 2 beschleunigt Schnittfindung Folie 39 6. Mai 2013

Finde Natürliche Schnitte 1 Wähle ein Zentrum v. 2 Breitensuche der Grösse U um v: Erste U/10 Knoten: Kern Verbliebene Knoten in der Queue: Ring 3 Finde minimum Kern/Ring Schnitt: standard s t minimaler Schnitt. 4 Wiederhole für verschiedene zufällige v: bis jeder Knoten in 2 Kernen war v U/10 nodes U nodes Berechene kleine Schnitte extra: identifiziere 1- and 2-Schnitte reduziert Strassengraph um Faktor 2 beschleunigt Schnittfindung Folie 39 6. Mai 2013

Finde Natürliche Schnitte 1 Wähle ein Zentrum v. 2 Breitensuche der Grösse U um v: Erste U/10 Knoten: Kern Verbliebene Knoten in der Queue: Ring 3 Finde minimum Kern/Ring Schnitt: standard s t minimaler Schnitt. 4 Wiederhole für verschiedene zufällige v: bis jeder Knoten in 2 Kernen war v U/10 nodes U nodes Berechene kleine Schnitte extra: identifiziere 1- and 2-Schnitte reduziert Strassengraph um Faktor 2 beschleunigt Schnittfindung Folie 39 6. Mai 2013

Eigenschaften der Ausdünung 1 viele Kanten werden nie geschnitten 2 Schnittkanten partitionieren den Graphen in Fragmente 3 Fragmentgrösse U (meist viel kleiner) Generiere Fragmentgraphen: Fragment gewichteter Knoten benachbarte Fragmente gewichtete Kante U fragments frag size 4 096 605 864 30 65 536 104 410 173 1 048 576 10 045 1 793 (Europe: 18M nodes) Folie 40 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; stoppe wenn maximal. Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; stoppe wenn maximal. Zufällig greedy: füge Fragmente zusammen, die stärker verbunden......im Verhältnis zu ihrer Grösse (= # Knoten, die sie repräsentieren). Folie 41 6. Mai 2013

Konstruktionsphase Fragmentgröße deutlich unterhalb von U, Schnitt unnötig groß Finde bessere Partition durch Zusammenfassen von Fragmenten Algorithmus: starte mit isolierten Fragmenten; kombiniere adjazente Zellen; stoppe wenn maximal. Zufällig greedy: füge Fragmente zusammen, die stärker verbunden......im Verhältnis zu ihrer Grösse (= # Knoten, die sie repräsentieren). Ergebnis okay, aber es geht besser. Folie 41 6. Mai 2013

Lokale Suche (Lokale Reoptimierung auf teilweise entpacktem Graphen) Folie 42 6. Mai 2013

Lokale Suche (Lokale Reoptimierung auf teilweise entpacktem Graphen) Für paarweise benachbarte Zellen: Zerteilung in Fragments; lass konstruktiven, randomisierten Algorithmus auf Subproblem laufen; behalte Lösung wenn besser. Folie 42 6. Mai 2013

Lokale Suche (Lokale Reoptimierung auf teilweise entpacktem Graphen) Für paarweise benachbarte Zellen: Zerteilung in Fragments; lass konstruktiven, randomisierten Algorithmus auf Subproblem laufen; behalte Lösung wenn besser. Variante benutzt auch Nachbarzellen: mehr Flexibilität; beste Ergebnisse (standard). Folie 42 6. Mai 2013

Lokale Suche (Lokale Reoptimierung auf teilweise entpacktem Graphen) Für paarweise benachbarte Zellen: Zerteilung in Fragments; lass konstruktiven, randomisierten Algorithmus auf Subproblem laufen; behalte Lösung wenn besser. Variante benutzt auch Nachbarzellen: mehr Flexibilität; beste Ergebnisse (standard). Nachbarzellen können auch in Fragmente zerteilt werden: Subprobleme zu gross; schlechtere Ergebnisse. Folie 42 6. Mai 2013

Lokale Suche (Lokale Reoptimierung auf teilweise entpacktem Graphen) Für paarweise benachbarte Zellen: Zerteilung in Fragments; lass konstruktiven, randomisierten Algorithmus auf Subproblem laufen; behalte Lösung wenn besser. Variante benutzt auch Nachbarzellen: mehr Flexibilität; beste Ergebnisse (standard). Nachbarzellen können auch in Fragmente zerteilt werden: Subprobleme zu gross; schlechtere Ergebnisse. Evaluiere jedes Subproblem mehrmals (mit Zufall). Folie 42 6. Mai 2013

Weitere Verbesserungen Mehrfacher Test für jedes Paar lokale Suche hat Zufallskomponenten Multistart: konstruktiv+lokale Suche; behalte beste Lösung. Kombination: kombiniere manche Lösungen; merge + lokale Suche. CUT SIZE 10000 11000 12000 13000 14000 15000 Local search retries Multistart Combination 0.1 1 10 100 1000 10000 ASSEMBLY TIME (s) (Europe, U = 2 16 ) längere Laufzeit bessere Lösungen Folie 43 6. Mai 2013

Laufzeit Time (s) 0 20 40 60 80 100 120 140 160 180 200 Tiny cuts Natural cuts Greedy + Local search Total 2 10 2 12 2 14 2 16 2 18 2 20 2 22 Maximum cell size (U) Europe (18M vertices), 12 cores Flaschenhalse: Aufbau für kleine U, Ausdünnung für grosse U Folie 44 6. Mai 2013

Qualität U A B B/ U B/ 3 U 1 024 895 16.8 0.52 1.66 4 096 3 602 27.6 0.43 1.73 16 384 14 437 45.6 0.36 1.80 65 536 57 376 72.7 0.28 1.80 262 144 222 626 103.7 0.20 1.62 1 048 576 826 166 134.3 0.13 1.32 4 194 304 3 105 245 127.9 0.06 0.79 (Europe, 16 retries, no multistart/combination) U: maximal erlaubte Zellengrösse A: durchschn. Zellengrösse der Lösungen B: durchschn. Randknoten pro Zelle Strassengraphen haben sehr kleine Separatoren Folie 45 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen Andere Verfahren lösen balancierte Variante: finde k Zellen mit Grösse (1 + ɛ) n/u. Erweiterung von PUNCH: 1 benutze standard PUNCH mit U = (1 + ɛ) n/u ; 2 wähle k Basis Zellen, verteile den Rest (Multistart) Folie 46 6. Mai 2013

Balancierte Partitionen PUNCH: bessere Lösungen... Solution Quality...in vernünftiger Zeit. Running Times Relative cut size (PUNCH=1) 0.0 0.5 1.0 1.5 2.0 2.5 3.0 PUNCH KAFFPA KASPAR KAPPA SCOTCH METIS Running Time [s] 0 500 1000 1500 2000 2500 3000 PUNCH KAFFPA KASPAR KAPPA SCOTCH METIS K=4 K=16 K=64 (Europe, ɛ = 0.03) K=4 K=16 K=64 (Europe, ɛ = 0.03) Folie 47 6. Mai 2013

Vancouver mit METIS Folie 48 6. Mai 2013

Vancouver mit PUNCH Folie 49 6. Mai 2013

Portland mit METIS Folie 50 6. Mai 2013

Portland mit PUNCH Folie 51 6. Mai 2013

Bemerkungen reduziert Randknoten gegenüber METIS um mehr als Faktor 2 Beschleunigung von Arc-Flags Vorberechnung um Faktor 2 auch multi-level Partitionen berechnenbar top-down liefert beste Ergebnisse dabei Vorteile gegenüber METIS sogar grösser Wie weit vom Optimum entfernt? Wird für die Bing Routing Engine benutzt. Folie 52 6. Mai 2013

Literatur Literatur (Partitionierung): George Karypis, Vipin Kumar: A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs In: SIAM Journal on Scientific Computing, 1998 Peter Sanders, Christian Schulz: Distributed Evolutionary Graph Partitioning In: ALENEX, 2012 Daniel Delling, Andrew Goldberg, Ilya Razenshteyn, Renato Werneck: Graph Partitioning with Natural Cuts In: IPDPS, 2011 Folie 53 6. Mai 2013

Hierarchische Techniken Bisher: zielgerichtete Suche Nächste Idee: Nutze Hierarchie im Graphen in etwa: Seiten-, Haupt-, Land-, Bundesstraßen, Autobahnen Ideensammlung: identifiziere wichtige Knoten mit Zentralitätsmaß überspringe unwichtige Teile des Graphen Jetzt: letzteres Folie 54 6. Mai 2013

Overlay Graph Gegeben Eingabegraph G = (V, E, len) Knotenmenge V V L Berechne Berechne G L = (V L, E L, len L ), so dass Distanzen in G L wie in G Wie V L wählen? Folie 55 6. Mai 2013

Overlay Graph Gegeben Eingabegraph G = (V, E, len) Knotenmenge V V L Berechne Berechne G L = (V L, E L, len L ), so dass Distanzen in G L wie in G Wie V L wählen? Heute: Randknoten Folie 55 6. Mai 2013

Partitionierung Letztes Mal: Strassengraphen haben natürliche Schnitte Jeder Pfad durch eine Zelle betritt/verlässt die Zelle durch einen Randknoten Minimiiere # Schnittkanten mit Zellgrösse U (Eingabeparameter) Folie 56 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten s t Suchgraph: Start- und Zielzelle......plus Overlaygraph. (bidirektionaler) Dijkstra Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten s t Suchgraph: Start- und Zielzelle......plus Overlaygraph. (bidirektionaler) Dijkstra Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten s t Suchgraph: Start- und Zielzelle......plus Overlaygraph. (bidirektionaler) Dijkstra Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten s t Suchgraph: Start- und Zielzelle......plus Overlaygraph. (bidirektionaler) Dijkstra Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten s t Suchgraph: Start- und Zielzelle......plus Overlaygraph. (bidirektionaler) Dijkstra Folie 57 6. Mai 2013

Ausnutzung der Partition Idee: Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten s t Suchgraph: Start- und Zielzelle......plus Overlaygraph. (bidirektionaler) Dijkstra Example 2 15 Knoten pro Zelle, 626 Zellen 34 k Knoten im Overlaygraphen Folie 57 6. Mai 2013

Ergebnisse Worst-Case: Kanten scans: O( cliques + 2 cell size). Grösse des Overlaygraphen is metrikunabhängig Folie 58 6. Mai 2013

Ergebnisse Worst-Case: Kanten scans: O( cliques + 2 cell size). Grösse des Overlaygraphen is metrikunabhängig Beispiel: Metric Customization Queries metric time [s] space [MB] scans time [ms] Travel time 20 10 45134 10 Distance 20 10 47127 11 (partition: 2 14 nodes/cell) Folie 58 6. Mai 2013

Ergebnisse Worst-Case: Kanten scans: O( cliques + 2 cell size). Grösse des Overlaygraphen is metrikunabhängig Beispiel: Metric Customization Queries metric time [s] space [MB] scans time [ms] Travel time 20 10 45134 10 Distance 20 10 47127 11 (partition: 2 14 nodes/cell) West Europa (18 M nodes, 42 M edges) Intel Core-i7 920 (four cores at 2.67 GHz) Folie 58 6. Mai 2013

Nächste Termine Mittwoch, 8.5.2013 Montag, 13.5.2013 Folie 59 6. Mai 2013