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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Algorithmen für Routenplanung 7. Vorlesung, Sommersemester 01 Ben Strasser 18. Mai 014 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

2 Kürzeste Wege in Straßennetzwerken Beschleunigungstechniken (Fortsetzung) HLDB (G)PHAST Folie 18. Mai 014

3 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) u Folie 18. Mai 014

4 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) u Folie 18. Mai 014

5 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) u Folie 18. Mai 014

6 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) u Folie 18. Mai 014

7 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s t Folie 18. Mai 014

8 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s t Folie 18. Mai 014

9 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s t Folie 18. Mai 014

10 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s t Folie 18. Mai 014

11 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s s t Anfrage: finde Knoten v L f (s) L b (t)... t Folie 18. Mai 014

12 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s s t Anfrage: finde Knoten v L f (s) L b (t) der dist(s, v)+ dist(v, t) minimiert t Folie 18. Mai 014

13 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s s t Anfrage: finde Knoten v L f (s) L b (t) der dist(s, v)+ dist(v, t) minimiert t Folie 18. Mai 014

14 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s s t Anfrage: finde Knoten v L f (s) L b (t) der dist(s, v)+ dist(v, t) minimiert t Folie 18. Mai 014

15 Wiederholung: HL Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s s t Anfrage: finde Knoten v L f (s) L b (t) der dist(s, v)+ dist(v, t) minimiert t Folie 18. Mai 014

16 Wiederholung: Inner Join a b 1 4 INNER JOIN b c š USING(b) Folie Mai 014

17 Wiederholung: Inner Join a b 1 4 INNER JOIN ergibt b a b c 1 4 c š USING(b) Folie Mai 014

18 HLDB HL kann man mit einer SQL-Datenbank umsetzen. Lege zwei Tabellen an: CREATE TABLE forward ( v e r t e x _ i d integer, hub_ id integer, distance integer ) ; CREATE TABLE backward ( v e r t e x _ i d integer, hub_ id integer, distance integer ) ; Folie 18. Mai 014

19 HLDB - Anfrage Die Distanz-Anfrage ist ein Join. SELECT min ( forward. distance+backward. distance ) FROM forward INNER JOIN backward USING( hub_id ) WHERE forward. v e r t e x _ i d = source, backward. v e r t e x _ i d = t a r g e t ; Folie Mai 014

20 HLDB - Pfadextraktion Zwei zusätzliche Spalten: CREATE TABLE forward ( v e r t e x _ i d integer, hub_ id integer, distance integer, previous_ hub integer, s h o r t c u t _ i d integer ) ; shortcut_id ist die ID der letzten Kante auf einem kürzesten up-down Weg (im CH Sinn). previous_hub ist Ausgangsknoten von shortcut_id. Folie Mai 014

21 HLDB - Pfadextraktion Und eine zusätzliche Tabelle: CREATE TABLE s h o r t c u t ( s h o r t c u t _ i d integer, shortcut_pos integer, a r c _id integer ) ; Idee: Speichere vorentpackte Shortcuts arc_id gibt die original Kante an shortcut_pos ist Position von arc_id im entpackten Pfad der shortcut_id entspricht Braucht nochmal etwa soviel Speicher wie die Hubs selber. Folie Mai 014

22 HLDB - Pfadextraktion Schritt 1: Bestimme meeting_hub wie für Distanzanfrage. Schritt : Baue temporäre Tabelle path: CREATE TABLE path ( s h o r t c u t _ i d integer, up_down_path_pos integer ) ; Folie Mai 014

23 HLDB - Pfadextraktion Schritt : Befülle Tabelle SET sequence = 0; SET now = meeting_hub ; WHILE now <> source do SELECT s h o r t c u t _ i d, previous_hub FROM forward WHERE forward. node = source AND forward. hub = now ; SET now = previous_hub ; INSERT INTO path VALUES( s h o r t c u t _ i d, sequence ) ; SET sequence = sequence 1; END WHILE ; Achtung: Nicht alle Datenbanken unterstüzen WHILE und nicht alle gleich. Folie Mai 014

24 HLDB - Pfadextraktion Schritt 4: Join mit shortcut-tabelle SELECT a r c _id FROM s h o r t c u t INNER JOIN path USING( s h o r t c u t _ i d ) ORDERED BY up_down_path_pos, shortcut_pos ; Folie Mai 014

25 Was bisher geschah bisheriger Stoff: Punkt-zu-Punkt Abfragen Folie Mai 014

26 Was bisher geschah bisheriger Stoff: Punkt-zu-Punkt Abfragen Erweiterte Anfragen one-to-many many-to-many one-to-all? Folie Mai 014

27 Kürzeste-Wege Bäume Anfrage: gegeben ein nicht negativ gewichteter gerichteter Graph und Knoten s berechne Distanzen von s zu allen anderen Knoten Folie Mai 014

28 Kürzeste-Wege Bäume Anfrage: gegeben ein nicht negativ gewichteter gerichteter Graph und Knoten s berechne Distanzen von s zu allen anderen Knoten Lösung: Dijkstra [Dij9] Folie Mai 014

29 Kürzeste-Wege Bäume Anfrage: gegeben ein nicht negativ gewichteter gerichteter Graph und Knoten s berechne Distanzen von s zu allen anderen Knoten Lösung: Dijkstra [Dij9] Fakten: O(m + n log n) mit Fibonacci Heaps [FT87] linear (mit kleiner Konstanten) in Praxis [Gol01] Ausnutzung von moderner Hardware schwierig Folie Mai 014

30 Moderne CPU Architektur Einige Fakten: viele Kerne mehr Kerne als Speicherkontroller Hyperthreading Multi-Sockel System steile Speicherhierarchie Cache coherency Folie Mai 014

31 Moderne CPU Architektur Einige Fakten: viele Kerne mehr Kerne als Speicherkontroller Hyperthreading Multi-Sockel System steile Speicherhierarchie Cache coherency Hauptherausforderungen: Parallelisierung Speicherzugriff Folie Mai 014

32 Ausnutzen von Moderner Hardware Daten Lokalität Eingabe: West Europa 18M Knoten, M Strassen Dijkstra:.0 s nicht real-time Core-i7 workstation (.66 GHz) Folie Mai 014

33 Ausnutzen von Moderner Hardware Daten Lokalität Eingabe: West Europa 18M Knoten, M Strassen Dijkstra:.0 s nicht real-time n + m clock cycles: 1 ms viel schneller Core-i7 workstation (.66 GHz) Folie Mai 014

34 Ausnutzen von Moderner Hardware Daten Lokalität Eingabe: West Europa 18M Knoten, M Strassen Dijkstra:.0 s nicht real-time n + m clock cycles: 1 ms viel schneller BFS:.0 s Verlangsamung kommt nicht durch Priorityqueue allein Core-i7 workstation (.66 GHz) Folie Mai 014

35 Ausnutzen von Moderner Hardware Daten Lokalität Eingabe: West Europa 18M Knoten, M Strassen Dijkstra:.0 s nicht real-time n + m clock cycles: 1 ms viel schneller BFS:.0 s Verlangsamung kommt nicht durch Priorityqueue allein Core-i7 workstation (.66 GHz) Parallelisierung: Spekulation -stepping [MS0] mehr Operationen als Dijkstra keine grosse Beschleunigung auf dünnen Graphen Folie Mai 014

36 Ausnutzen von Moderner Hardware Daten Lokalität Eingabe: West Europa 18M Knoten, M Strassen Dijkstra:.0 s nicht real-time n + m clock cycles: 1 ms viel schneller BFS:.0 s Verlangsamung kommt nicht durch Priorityqueue allein Core-i7 workstation (.66 GHz) Parallelisierung: Spekulation -stepping [MS0] mehr Operationen als Dijkstra keine grosse Beschleunigung auf dünnen Graphen Berechnen von mehreren Bäumen ist einfach Folie Mai 014

37 Ansatz 1 Idee: Umordnen der Knoten im Graphen Folie Mai 014

38 Ansatz 1 Idee: Umordnen der Knoten im Graphen time per tree [ms] algorithm details random input DFS Dijkstra binary heap Dial smart queue BFS (Achtung: One-to-All & Älterer Rechner) Folie Mai 014

39 Ansatz 1 Idee: Umordnen der Knoten im Graphen time per tree [ms] algorithm details random input DFS Dijkstra binary heap Dial smart queue BFS (Achtung: One-to-All & Älterer Rechner) keine grosse Beschleunigung Folie Mai 014

40 Ansatz Dijkstra s Algorithmus: moderne Hardware nicht voll zu nutzen Hauptprobleme: Daten Lokalität Parallelisierung Folie Mai 014

41 Ansatz Dijkstra s Algorithmus: moderne Hardware nicht voll zu nutzen Hauptprobleme: Daten Lokalität Parallelisierung Fragen: hilft Vorberechnung? wie? Ansatzpunkt? Folie Mai 014

42 Ansatz Dijkstra s Algorithmus: moderne Hardware nicht voll zu nutzen Hauptprobleme: Daten Lokalität Parallelisierung Fragen: hilft Vorberechnung? wie? Ansatzpunkt? PHAST: Hardware-Accelerated Shortest path Trees Folie Mai 014

43 Contraction Hierarchies preprocessing: Folie Mai 014

44 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit Folie Mai 014

45 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Folie Mai 014

46 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Folie Mai 014

47 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Folie Mai 014

48 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Folie Mai 014

49 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Folie Mai 014

50 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Folie Mai 014

51 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Folie Mai 014

52 Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Levelzuordnung (ca. 10 in Strassennetzwerken) level Folie Mai 014

53 Contraction Hierarchies Punkt-zu-Punkt Anfragen modifizierter bidirektionaler Dijkstra folge nur Kanten zu wichtigeren Knoten besucht nur 00 Knoten level Folie Mai 014

54 Contraction Hierarchies Punkt-zu-Punkt Anfragen modifizierter bidirektionaler Dijkstra folge nur Kanten zu wichtigeren Knoten besucht nur 00 Knoten level s t 1 6 Folie Mai 014

55 Contraction Hierarchies Punkt-zu-Punkt Anfragen modifizierter bidirektionaler Dijkstra folge nur Kanten zu wichtigeren Knoten besucht nur 00 Knoten level s t 1 6 Folie Mai 014

56 Contraction Hierarchies Punkt-zu-Punkt Anfragen modifizierter bidirektionaler Dijkstra folge nur Kanten zu wichtigeren Knoten besucht nur 00 Knoten level s t 1 6 Folie Mai 014

57 Contraction Hierarchies Punkt-zu-Punkt Anfragen modifizierter bidirektionaler Dijkstra folge nur Kanten zu wichtigeren Knoten besucht nur 00 Knoten level s t 1 6 Folie Mai 014

58 Contraction Hierarchies Punkt-zu-Punkt Anfragen modifizierter bidirektionaler Dijkstra folge nur Kanten zu wichtigeren Knoten besucht nur 00 Knoten Korrektheit: es gibt einen wichtigsten Knoten auf dem Pfad dieser wird von Vorwärts- und Rückwärtssuche gescannt level s t 1 6 Folie Mai 014

59 Neuer Anfragealgorithmus one-to-all Suche von s: level 1 s Folie Mai 014

60 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) level 1 s Folie Mai 014

61 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten level 1 s Folie Mai 014

62 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} level 1 s Folie Mai 014

63 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} level 1 s Folie Mai 014

64 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} level 1 s Folie Mai 014

65 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} level 1 s Folie Mai 014

66 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} level 1 s Folie Mai 014

67 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} level 1 Folie Mai 014 s

68 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} level 1 1 Folie Mai 014 s

69 Neuer Anfragealgorithmus one-to-all Suche von s: vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} top-down Bearbeitung ohne Priority Queue (ca..0 s) level 1 1 Folie Mai 014 s

70 Neuer Anfragealgorithmus one-to-all Suche von s: level vorwärts CH Suche von s ( 0.0 ms) setze Distanzen d für alle erreichten Knoten bearbeite alle Knoten u in inverser Levelordnung: checke eingehende Kanten (v, u) mit lev(v) > lev(u) setze d(u) = min{d(u), d(v) + w(v, u)} top-down Bearbeitung ohne Priority Queue (ca..0 s) genauso schnell wie BFS. Warum das ganze? 1 1 Folie Mai 014 s

71 Analyse Beobachtung: top-down Prozess ist der Flaschenhals level Folie Mai 014

72 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient level dist(u): Folie Mai 014

73 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient level r w dist(u): Folie Mai 014

74 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient level w r dist(u): Folie Mai 014

75 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient level w r dist(u): Folie Mai 014

76 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient level r w dist(u): Folie Mai 014

77 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient level w r dist(u): Folie Mai 014

78 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient level w r dist(u): Folie Mai 014

79 Analyse Beobachtung: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s level r w dist(u): Folie Mai 014

80 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep level dist(u): Folie Mai 014

81 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep level dist(u): rw Folie Mai 014

82 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep level dist(u): rw Folie Mai 014

83 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep level dist(u): r w Folie Mai 014

84 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep level dist(u): r w Folie Mai 014

85 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep level dist(u): r w Folie Mai 014

86 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep level dist(u): r w Folie Mai 014

87 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep 17 ms pro Baum level dist(u): r w Folie Mai 014

88 Analyse Beobachtung: Idee: top-down Prozess ist der Flaschenhals Zugriff auf die Daten ist immer noch ineffizient Zugriffsmuster sind unabhängig von s speicher G und G separat Umordnung der Knoten, Kanten, und Distanzlabel nach Level lesen der Kanten und schreiben der Distanzen wird zu einem sequenziellen Sweep 17 ms pro Baum dist(u): level aber lesen der Distanzen immer noch ineffizient r w Folie Mai 014

89 Szenario: Multiple Startknoten level 1 s Folie 18. Mai 014

90 Szenario: Multiple Startknoten Idee: level 1 s s Folie 18. Mai 014

91 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen level 1 s s Folie 18. Mai 014

92 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen level 1 s s Folie 18. Mai 014

93 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen level 1 47 s s Folie 18. Mai 014

94 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten level 1 47 s s Folie 18. Mai 014

95 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten level s s Folie 18. Mai 014

96 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten level s s Folie 18. Mai 014

97 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten level s s Folie 18. Mai 014

98 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten level 10 1 Folie 18. Mai s s

99 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten level 10 1 Folie 18. Mai s s

100 Szenario: Multiple Startknoten Idee: k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten level Folie 18. Mai s s

101 Szenario: Multiple Startknoten Idee: level k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten 96.8 ms pro Baum (k = 16) Folie 18. Mai s s

102 Szenario: Multiple Startknoten Idee: level k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten 96.8 ms pro Baum (k = 16) Folie 18. Mai 014 SSE: 18-bit Register Basisoperationen (min, add) für vier -bit Integer parallel scanne 4 Distanzlabel auf einmal 47 s s

103 Szenario: Multiple Startknoten Idee: level k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten 96.8 ms pro Baum (k = 16) Folie 18. Mai 014 SSE: 18-bit Register Basisoperationen (min, add) für vier -bit Integer parallel scanne 4 Distanzlabel auf einmal 7.1 ms pro Baum (k = 16) 47 s s

104 Szenario: Multiple Startknoten Idee: level k Vorwärtssuchen ein sweep (update aller k Werte) speicher Distanzlabel pro Knoten 96.8 ms pro Baum (k = 16) Folie 18. Mai 014 SSE: 18-bit Register Basisoperationen (min, add) für vier -bit Integer parallel scanne 4 Distanzlabel auf einmal 7.1 ms pro Baum (k = 16) Neuere Rechner: 6-bit Register 47 s s

105 Parallelisierung nach Startknoten dist(s 1,u): dist(s,u): dist(s,u): dist(s 4,u): r w r r r w w w Folie 18. Mai 014

106 Parallelisierung nach Startknoten r w dist(s 1,u): r w dist(s,u): r w dist(s,u): r w Ergebnisse: dist(s 4,u): 16 Startenknoten pro Sweep (updates via SSE) multi-core nach Startknoten 64 Startknoten parallel (4 cores) 18.8 ms per Baum Folie 18. Mai 014

107 Parallelisierung nach Startknoten r w dist(s 1,u): r w dist(s,u): r w dist(s,u): r w Ergebnisse: dist(s 4,u): 16 Startenknoten pro Sweep (updates via SSE) multi-core nach Startknoten 64 Startknoten parallel (4 cores) 18.8 ms per Baum Warum kein perfekter Speedup? Folie 18. Mai 014

108 Parallelisierung nach Startknoten r w dist(s 1,u): r w dist(s,u): r w dist(s,u): r w Ergebnisse: dist(s 4,u): 16 Startenknoten pro Sweep (updates via SSE) multi-core nach Startknoten 64 Startknoten parallel (4 cores) 18.8 ms per Baum Warum kein perfekter Speedup? lower bound tests zeigen: nah an Speicherbandbreite Folie 18. Mai 014

109 Parallelisierung nach Startknoten r w dist(s 1,u): r w dist(s,u): r w dist(s,u): r w Ergebnisse: dist(s 4,u): 16 Startenknoten pro Sweep (updates via SSE) multi-core nach Startknoten 64 Startknoten parallel (4 cores) 18.8 ms per Baum Warum kein perfekter Speedup? lower bound tests zeigen: nah an Speicherbandbreite kann eine GPU helfen? Folie 18. Mai 014

110 GPU Architektur Intel Xeon X680:. GHz, oft 10 GB RAM GB/s Speicherbandbreite 6 Kerne SIMD/SSE mit 4 floats/ints per Vektor NVIDIA GTX 80: 77 MHz, 1. GB RAM 19 GB/s Speicherbandbreite 16 Kerne, parallele Threads pro Kern 1 parallele Threads eingeschränkte Berechnungen Folie Mai 014

111 1 Threads? Gemeinsamer Codezeiger: GPU Threads innerhalb eines Kerns haben einen gemeinsamen Codezeiger. If-Bedinung wahr für ein Thread Alle Threads durchlaufen den Wahr-Block. Aber für die falsch-threads werden die Anweisungen ausmaskiert. Schleifen dauern immer so lange wie der längste Thread braucht. Stichwort: Single Instruction Multiple Threads Verwandt mit SIMD: Jede Vektorkomponent ist ein "Thread". Beim komponentenweisen if-else wird auch eine Seite ausmaskiert. Folie 18. Mai 014

112 1 Threads? Gemeinsamer Codezeiger: GPU Threads innerhalb eines Kerns haben einen gemeinsamen Codezeiger. If-Bedinung wahr für ein Thread Alle Threads durchlaufen den Wahr-Block. Aber für die falsch-threads werden die Anweisungen ausmaskiert. Schleifen dauern immer so lange wie der längste Thread braucht. Stichwort: Single Instruction Multiple Threads Verwandt mit SIMD: Jede Vektorkomponent ist ein "Thread". Beim komponentenweisen if-else wird auch eine Seite ausmaskiert. Fairerer Vergleich: 77 MHz 16 Kerne "Threads"= 964. GHz 6 Kerne 4 SIMD-Vektor = 7999 In optimalen Bedinungen bis zu -mal mehr Berechnungen Folie 18. Mai 014

113 Weitere GPU Einschränkungen Der Transfer CPU-Speicher GPU-Speicher ist langsam. GPU-Threads zwischen Kernen syncronisieren ist sehr teuer. Die CPU muss warten bis der erste Job fertig ist und dann einen neuen starten. Dauert schon mal ein paar Mikrosekunden. Keine Cache-coherency zwischen Cores: 1 Core A schreibt einen neuen Wert and die Adresse 4. Core B ließt die Adresse 4 aus, aber erhält den alten Wert. Erklärung: Der neue Wert steckt noch im Cache von A fest. Langsam, wenn GPU-Threads durcheinander auf den Speicher zugreifen. Folie Mai 014

114 GPHAST - Ideen Beobachtungen: Aufwärtsuche ist schnell Flaschenhals ist der lineare Sweep Speicherbandbreite das Problem Folie Mai 014

115 GPHAST - Ideen Beobachtungen: Aufwärtsuche ist schnell Flaschenhals ist der lineare Sweep Speicherbandbreite das Problem Idee: speicher CH und Distanzarray auf der GPU Aufwärtssuche auf der CPU kopiere Suchraum zur GPU (weniger als kb) linearen Sweep auf der GPU Folie Mai 014

116 GPHAST - Ideen Beobachtungen: Aufwärtsuche ist schnell Flaschenhals ist der lineare Sweep Speicherbandbreite das Problem Idee: speicher CH und Distanzarray auf der GPU Aufwärtssuche auf der CPU kopiere Suchraum zur GPU (weniger als kb) linearen Sweep auf der GPU Problem: nicht genug Speicher auf GPU um tausende von Bäumen parallel zu bearbeiten wir müssen eine einzelne Baumberechnung parallelisieren Folie Mai 014

117 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten dist(u): w Folie Mai 014

118 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten r w dist(u): Folie Mai 014

119 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten r w dist(u): Folie Mai 014

120 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten r w dist(u): Folie Mai 014

121 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten Idee: scanne alle Knoten auf Level i parallel Synchronization nach jedem Level ein Thread pro Knoten dist(u): r 4 r 1 r r w 1 w w w 4 Folie Mai 014

122 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten Idee: scanne alle Knoten auf Level i parallel Synchronization nach jedem Level ein Thread pro Knoten dist(u): r r 1 r 4 r w w 1 w w 4 Folie Mai 014

123 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten Idee: scanne alle Knoten auf Level i parallel Synchronization nach jedem Level ein Thread pro Knoten results:. ms auf NVIDIA GTX 80 Beschleunigung von 11 gegenüber Dijkstra dist(u): r 1 r r 4 r w w 1 w w 4 Folie Mai 014

124 Paralleler Linearer Sweep Beobachtung: beim Scannen von Level i: nur eingehende Kanten von level > i wichtig schreiben von Distanzlabeln in Level i, lesen von Level > i Distanzlabel für Level > i sind korrekt scannen eines Level-i Knoten ist unabhängig von anderen Level-i Knoten Idee: scanne alle Knoten auf Level i parallel Synchronization nach jedem Level ein Thread pro Knoten results:. ms auf NVIDIA GTX 80 Beschleunigung von 11 gegenüber Dijkstra (mehrere Bäume:. ms) dist(u): r 1 r r 4 r w w 1 w w 4 Folie Mai 014

125 PHAST PHAST auf 4-Kern Workstation (Core-i7 90) sources/ time per tree [ms] sweep 1 core cores 4 cores (67.6) 61. (.). (4.4) (1.). (8.0) 8. (0.8) (7.1) 49.4 (.1).9 (18.8) Werte in Klammern mit SSE aktiviert Folie Mai 014

126 GPHAST PHAST auf Nvidia GTX 80 trees / memory time sweep [MB] [ms] Folie Mai 014

127 weitere Eingaben Europe USA algorithm device time distance time distance Dijkstra 4-core workstation core server core server PHAST 4-core workstation core server core server GPHAST GTX Beobachtung: Beschleunigung für Distanzmetrik geringer Folie Mai 014

128 All-Pairs Shortest Paths Eingabe: Europa mit Reisezeiten algorithm device time energy [MJ] Dijkstra 4-core workstation 197d 1-core server 60d 48-core server d PHAST 4-core workstation 94h 1-core server 6h 48-core server 0h GPHAST GTX 80 Folie 18. Mai 014

129 All-Pairs Shortest Paths Eingabe: Europa mit Reisezeiten algorithm device time energy [MJ] Dijkstra 4-core workstation 197d 1-core server 60d 48-core server d PHAST 4-core workstation 94h 1-core server 6h 48-core server 0h GPHAST GTX 80 11h Folie 18. Mai 014

130 All-Pairs Shortest Paths Eingabe: Europa mit Reisezeiten algorithm device time energy [MJ] Dijkstra 4-core workstation 197d 1-core server 60d 48-core server d PHAST 4-core workstation 94h 1-core server 6h 48-core server 0h GPHAST GTX 80 11h 4-core workstation without GPU: 16 watts 4-core workstation with GPU: 7 watts 1-core server: watts 48-core server: 747 watts Folie 18. Mai 014

131 All-Pairs Shortest Paths Eingabe: Europa mit Reisezeiten algorithm device time energy [MJ] Dijkstra 4-core workstation 197d core server 60d core server d 6. PHAST 4-core workstation 94h. 1-core server 6h core server 0h 4. GPHAST GTX 80 11h core workstation without GPU: 16 watts 4-core workstation with GPU: 7 watts 1-core server: watts 48-core server: 747 watts Folie 18. Mai 014

132 Baumrekonstruktion bis jetzt: nur Distanzen berechnet, nicht Bäume Folie 18. Mai 014

133 Baumrekonstruktion bis jetzt: nur Distanzen berechnet, nicht Bäume Idee: iteration über alle Kanten (1 Thread pro Kante) Wenn d(v) + len(v, u) = d(u) dann ist v der Vorgänger von u (sofern kürzeste Wege eindeutig sind) Folie 18. Mai 014

134 Arc-Flags Idee: benutze GPHAST zum Berechnen der Bäume von den Randknoten aus Folie Mai 014

135 Arc-Flags Idee: benutze GPHAST zum Berechnen der Bäume von den Randknoten aus setze Flaggen durch zusätzlichen Sweep auf GPU Wichtig, weil alle Bäume auf CPU kopieren teuer ist Folie Mai 014

136 Arc-Flags Idee: benutze GPHAST zum Berechnen der Bäume von den Randknoten aus setze Flaggen durch zusätzlichen Sweep auf GPU Wichtig, weil alle Bäume auf CPU kopieren teuer ist Vorberechnung sinkt von 17 Stunden auf Minuten Folie Mai 014

137 Hybrid GPHAST Beobachtung: Idee: Synchronization des Level kostet Zeit auf der GPU ( µs pro Level) obere Level sind klein beginne linearen Sweep auf CPU (bis level k) kopiere Suchraum und alle Distanzlabel für Knoten oberhalb k zur GPU restlicher Scan auf der GPU Folie 18. Mai 014

138 Hybrid GPHAST: Ergebnisse Reisezeiten vs. Reisedistanzen query time [ms] query time [ms] levels done on CPU levels done on CPU Es lohnt sich, ein Paar Level auf der CPU zu berechnen. Folie Mai 014

139 Zusammenfassung neuer Algorithmus für kürzeste Wege Bäume skaliert auf Modern Architektur ein Baum auf GPU:. ms (ungefähr 0.1 ns pro Eintrag) real-time Berechnung von kompletten Bäumen 16 Bäume auf einer GPU auf einmal:. ms pro Baum (ungefähr 0.1 ns pro Eintrag) APSP in 11 Stunden (auf workstation mit einer GPU), anstellen von 6 Monaten (auf 4 Kernen) erlaubt APSP-basierte Berechnungen 10 mal Energie-effizienter als Dijkstras Algorithmus funktioniert nur, wenn CH funktioniert Folie Mai 014

140 Übungsfragen Wie kann man folgende Anwendungen mit PHAST beschleunigen? Welche sind auf der GPU schneller? Stau-Updates APSP-Matrix berechnen Diameter berechnen ALT Reach Folie Mai 014

141 Übungsfragen Wie kann man folgende Anwendungen mit PHAST beschleunigen? Welche sind auf der GPU schneller? Stau-Updates Geht nicht, da 11h Reaktionszeit zu langsam sind APSP-Matrix berechnen Geht nicht, da es nicht genug RAM gibt um die Ergebnisse im Speicher zu halten. Diameter berechnen Geht. CPU: Straight-Forward GPU: Geht, aber man darf nur eine parallele Maximumbildung über alle n Einträge machen. Sonst ist es langsamer als auf der CPU. ALT Geht auf der CPU, GPU -> CPU Transfer zu teuer Reach Geht. CPU: Straight-Forward GPU: Baumhöhenberechnung dominiert. Auf der CPU ist es oft schneller. Folie Mai 014

142 Literatur I Edsger W. Dijkstra. A note on two problems in connexion with graphs. Numerische Mathematik, 1:69 71, 199. Michael L. Fredman and Robert Tarjan. Fibonacci heaps and their uses in improved network optimization algorithms. Journal of the ACM, Andrew V. Goldberg. A simple shortest path algorithm with linear average time. In Proceedings of the 9th Annual European Symposium on Algorithms (ESA 01), volume 161 of Lecture Notes in Computer Science, pages 0 41, 001. Ulrich Meyer and Peter Sanders. δ-stepping: A parallelizable shortest path algorithm. Journal of Algorithms, 49(1):114 1, 00. Folie Mai 014

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

Algorithmen für Routenplanung 11. Vorlesung, Sommersemester 2012 Daniel Delling 6. Juni 2012 Algorithmen für Routenplanung 11. Vorlesung, Sommersemester 2012 Daniel Delling 6. Juni 2012 MICROSOFT RESEARCH SILICON VALLEY KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum

Mehr

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

Praktikum Routenplanung Themenvorstellung & Gruppeneinteilung, Wintersemester 2015/2016 Moritz Baum, Ben Strasser, Tobias Zündorf 19. Praktikum Routenplanung Themenvorstellung & Gruppeneinteilung, Wintersemester 2015/2016 Moritz Baum, Ben Strasser, Tobias Zündorf 19. Oktober 2015 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK PROF.

Mehr

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

Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2014 Andreas Gemsa 20. April 2014 Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2014 Andreas Gemsa 20. April 2014 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

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

Vorlesung 4 BETWEENNESS CENTRALITY

Vorlesung 4 BETWEENNESS CENTRALITY Vorlesung 4 BETWEENNESS CENTRALITY 101 Aufgabe! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/

Mehr

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

Algorithmen für Routenplanung 15. Vorlesung, Sommersemester 2012 Daniel Delling 20. Juni 2012 Algorithmen für Routenplanung 15. Vorlesung, Sommersemester 2012 Daniel Delling 20. Juni 2012 MICROSOFT RESEARCH SILICON VALLEY KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..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

Fortgeschrittene Routenplanung. Transportnetzen. Advanced Route Planning in Transportation Networks

Fortgeschrittene Routenplanung. Transportnetzen. Advanced Route Planning in Transportation Networks Fortgeschrittene Routenplanung in Transportnetzen Advanced Route Planning in Transportation Networks Dissertationsvortrag von Dipl.-Inform. Robert Geisberger 1 KIT Robert Universität Geisberger: des Landes

Mehr

DATENSTRUKTUREN UND ALGORITHMEN

DATENSTRUKTUREN UND ALGORITHMEN DATENSTRUKTUREN UND ALGORITHMEN 2 Ist die Datenstruktur so wichtig??? Wahl der Datenstruktur wichtiger Schritt beim Entwurf und der Implementierung von Algorithmen Dünn besetzte Graphen und Matrizen bilden

Mehr

Algorithmen für Routenplanung 10. Vorlesung, Sommersemester 2016 Ben Strasser 25. Mai 2016

Algorithmen für Routenplanung 10. Vorlesung, Sommersemester 2016 Ben Strasser 25. Mai 2016 Algorithmen für Routenplanung 10. Vorlesung, Sommersemester 2016 Ben Strasser 25. Mai 2016 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

Mehr

Schnelle und genaue Routenplanung

Schnelle und genaue Routenplanung Sanders/Schultes: Routenplanung 1 Schnelle und genaue Routenplanung Peter Sanders Dominik Schultes Institut für Theoretische Informatik Algorithmik II Universität Karlsruhe Uni für Einsteiger, 22. November

Mehr

Einleitung. Komplexe Anfragen. Suche ist teuer. VA-File Verfeinerungen. A0-Algo. GeVAS. Schluß. Folie 2. Einleitung. Suche ist teuer.

Einleitung. Komplexe Anfragen. Suche ist teuer. VA-File Verfeinerungen. A0-Algo. GeVAS. Schluß. Folie 2. Einleitung. Suche ist teuer. Anwendung Input: Query-Bild, Ergebnis: Menge ähnlicher Bilder. Kapitel 8: Ähnlichkeitsanfragen und ihre effiziente Evaluierung Wie zu finden? Corbis, NASA: EOS Bilddatenbank Folie Folie 2 Ähnlichkeitssuche

Mehr

Algorithmische Methoden zur Netzwerkanalyse

Algorithmische Methoden zur Netzwerkanalyse Algorithmische Methoden zur Netzwerkanalyse Juniorprof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Universität desmeyerhenke, Landes Baden-Württemberg Institutund für Theoretische

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

9. Übung Algorithmen I

9. Ü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 Musterlösung

Mehr

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

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

Mehr

Fully dynamic algorithms for the single source shortest path problem.

Fully dynamic algorithms for the single source shortest path problem. Fully dynamic algorithms for the single source shortest path problem. Michael Baur Wintersemester 2001/2002 Zusammenfassung Im folgenden Paper werde ich Algorithmen für das dynamische Kürzeste-Wege-Problem

Mehr

Wie profitiert SAP MaxDB von SSD Technologie?

Wie profitiert SAP MaxDB von SSD Technologie? Wie profitiert SAP MaxDB von SSD Technologie? Direktor Software und Services SAP MaxDB InfoTage 2014 15.-25. September 2014 Purpose Agenda MaxDB ENTERPRISE EDITION Including Mobile DB Monitor MaxDB & SSD

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 4 Programm des

Mehr

Wie groß ist die Page Table?

Wie groß ist die Page Table? Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten

Mehr

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time Universität Konstanz Mathematisch-naturwissenschaftliche Sektion Fachbereich Mathematik und Statistik Wintersemester 2001/02 Mikkel Thorup: Undirected Single-Source Shortest Paths with Positive Integer

Mehr

Algorithmen für Routenplanung

Algorithmen für Routenplanung Algorithmen für Routenplanung 16. Sitzung, Sommersemester 2011 Thomas Pajor 4. Juli 2011 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK I PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

Mehr

Customization (Zuschneiden)

Customization (Zuschneiden) Customization (Zuschneiden) Anpassen der (Graph)Datenstruktur an die Anwendung. I Ziel: schnell, kompakt. I benutze Entwurfsprinzip: make the common case fast I Listen vermeiden Mögliches Problem: Software-Engineering-Alptraum

Mehr

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

Praktikum Routenplanung Vorbesprechung, Wintersemester 2012/2013 Moritz Baum, Julian Dibbelt, Thomas Pajor, Ben Strasser 17. Praktikum Routenplanung Vorbesprechung, Wintersemester 01/013 Moritz Baum, Julian Dibbelt, Thomas Pajor, Ben Strasser 17. Oktober 01 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK I PROF. DR. DOROTHEA

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 3 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Grafikkarten-Architektur

Grafikkarten-Architektur > Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur

Mehr

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

23. November Betweenness Centrality Closeness Centrality. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108 23. November 2011 Betweenness Centrality Closeness Centrality H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108 Betweenness Centrality Grundlegende Idee: Ein Knoten ist wichtig, wenn er auf

Mehr

Highway Hierarchies. Kristian Dannowski, Matthias Hoeschel

Highway Hierarchies. Kristian Dannowski, Matthias Hoeschel Highway Hierarchies Kristian Dannowski, Matthias Hoeschel Gliederung Einleitung / Bidirektional Dijkstra Intuition / Naive Strategie Konstruktion der Highway Hierarchie Suche in der Highway Hierarchie

Mehr

PostgreSQL auf vielen CPUs. Hans-Jürgen Schönig Hans-Jürgen Schönig

PostgreSQL auf vielen CPUs. Hans-Jürgen Schönig  Hans-Jürgen Schönig PostgreSQL auf vielen CPUs Ansätze zur Skalierung PostgreSQL auf einer CPU Traditionell läuft eine Query auf nur einer CPU Historisch gesehen war das kein Problem Mittlerweile ist das ein großes Problem

Mehr

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1 CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

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

Dynamische Programmierung. Problemlösungsstrategie der Informatik

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

Mehr

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Kürzeste Wege in Graphen Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Gliederung Einleitung Definitionen Algorithmus von Dijkstra Bellmann-Ford Algorithmus Floyd-Warshall Algorithmus

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 5. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Wdhlg.: Dijkstra-Algorithmus I Bestimmung der

Mehr

Christian Schulz und Johannes Singler

Christian Schulz und Johannes Singler Christian Schulz und Johannes Singler, Prof. Sanders 1 KIT Christian Universität des Schulz Landes Baden-Württemberg und Johannes undsingler: nationales 3. Übung Forschungszentrum Algorithmen in der Helmholtz-Gemeinschaft

Mehr

Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap

Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap Prof. Stefan Keller (Fach-)Hochschule für Technik Rapperswil (bei Zürich) 11.11.2011 PGConf.DE - Stefan Keller 1 Was ist OpenStreetMap? Wikipedia

Mehr

Kapitel 12: Schnelles Bestimmen der Frequent Itemsets

Kapitel 12: Schnelles Bestimmen der Frequent Itemsets Einleitung In welchen Situationen ist Apriori teuer, und warum? Kapitel 12: Schnelles Bestimmen der Frequent Itemsets Data Warehousing und Mining 1 Data Warehousing und Mining 2 Schnelles Identifizieren

Mehr

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Die Idee Virtuelle Adressen Prozess 1 Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock

Mehr

Shangrila. One Instruction Set Computer

Shangrila. One Instruction Set Computer Shangrila One Instruction Set Computer Outline One Instruction Set Computer Die Idee Funktion Die Machine Shangrila VM Interfaces Tools Implementation Status & Zukunft OISC >> Die Idee CPU mit nur einer

Mehr

G : (V; E) mit E V V G : (V 1, V 2 ; E) mit E V 1 V 2 V 2 V 1 l(w) k i1 l(e i ) dist(u, v) 0 min(l(w) : W ist ein Weg von u nach v falls u v falls ein solcher Weg existiert sonst v 1 V v i V (i

Mehr

HANA Solution Manager als Einstieg

HANA Solution Manager als Einstieg Markus Stockhausen HANA Solution Manager als Einstieg Collogia Solution Day Hamburg 28.04.2016 Agenda HANA Solution Manager als Einstieg 1 Überblick 2 Techniken 3 Sizing Collogia Unternehmensberatung AG,

Mehr

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu Bin Hu Algorithmen und Datenstrukturen 2 Arbeitsbereich fr Algorithmen und Datenstrukturen Institut fr Computergraphik und Algorithmen Technische Universität Wien One of the few resources increasing faster

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

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

Routing Algorithmen. Begriffe, Definitionen

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

Mehr

Computergrundlagen Geschichte des Computers

Computergrundlagen Geschichte des Computers Computergrundlagen Geschichte des Computers Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 1641: Rechenmaschine von B. Pascal B. Pascal, 1632-1662 mechanische Rechenmaschine

Mehr

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013

Mehr

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Speicher Übersicht Speicherhierarchie Cache Grundlagen Verbessern der Cache Performance Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 2 Speicherhierarchie

Mehr

Vorlesung 5: DATENSTRUKTUREN UND ALGORITHMEN

Vorlesung 5: DATENSTRUKTUREN UND ALGORITHMEN Vorlesung 5: DATENSTRUKTUREN UND ALGORITHMEN 125 Motivation! Wahl der Datenstruktur wichtiger Schritt beim Entwurf und der Implementierung von Algorithmen! Dünn besetzte Graphen und Matrizen bilden keine

Mehr

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird. Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,

Mehr

IBM Informix Tuning und Monitoring

IBM Informix Tuning und Monitoring Seminarunterlage Version: 11.01 Copyright Version 11.01 vom 25. Juli 2012 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

PostgreSQL Hardware und RAM Tuning

PostgreSQL Hardware und RAM Tuning PostgreSQL Hardware und RAM Tuning Dipl. Inf. Susanne Ebrecht FrOSCon 2011 2011, 2ndQuadrant Ltd., Author: Susanne Ebrecht 1 Hinweis Zweck der Folien ist, den Vortrag zu untermalen. Die Folien allein sind

Mehr

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Multicore Herausforderungen an das Software-Engineering Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Inhalt _ Motivation _ Herausforderung 1: Hardware _ Herausforderung 2: Software-Partitionierung

Mehr

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

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

Mehr

Hauptspeicher- Datenbanksysteme. Hardware-Entwicklungen Column- versus Row-Store...

Hauptspeicher- Datenbanksysteme. Hardware-Entwicklungen Column- versus Row-Store... Hauptspeicher- Datenbanksysteme Hardware-Entwicklungen Column- versus Row-Store... Hauptspeicher-Datenbanksysteme Disk is Tape, Tape is dead Jim Gray Die Zeit ist reif für ein Re-engineering der Datenbanksysteme

Mehr

Die Sandy-Bridge Architektur

Die Sandy-Bridge Architektur Fakultät Informatik - Institut für Technische Informatik - Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Die Sandy-Bridge Architektur René Arnold Dresden, 12. Juli 2011 0. Gliederung 1.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Rechner Architektur. Martin Gülck

Rechner Architektur. Martin Gülck Rechner Architektur Martin Gülck Grundlage Jeder Rechner wird aus einzelnen Komponenten zusammengesetzt Sie werden auf dem Mainboard zusammengefügt (dt.: Hauptplatine) Mainboard wird auch als Motherboard

Mehr

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind. Unterschiede von DBMS und files Speichern von Daten! DBMS unterstützt viele Benutzer, die gleichzeitig auf dieselben Daten zugreifen concurrency control.! DBMS speichert mehr Daten als in den Hauptspeicher

Mehr

Algorithmen für Routenplanung

Algorithmen für Routenplanung Algorithmen für Routenplanung 15. Vorlesung, Sommersemester 016 Moritz Baum 15. Juni 016 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

Mehr

2 Lösungen "Peptide de novo Sequencing"

2 Lösungen Peptide de novo Sequencing Lösungen "Peptide de novo Sequencing". Algorithm : PeptideSequencingOnlySux Input: a spectrum M with array of masses M = {m, m,, m n }, Σ, µ : Σ R >0 Output: the peptide string of the spectrum begin peptide

Mehr

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen . Graphen viele praktische (Optimierungs-)Probleme sind als graphentheoretische Probleme formulierbar z.b. in Produktionsplanung, Personaleinsatzplanung,.... Grundlagen gerichteter, ungerichteter und gewichteter

Mehr

Well-Balanced. Performance Tuning

Well-Balanced. Performance Tuning Well-Balanced Real Application Cluster Performance Tuning Über mich virtual7 GmbH Jürgen Bouché Zeppelinstraße 2 76185 Karlsruhe Tel.: +49 (721) 6190170 Fax.: +49 (721) 61901729 Email: jbouche@heine.de

Mehr

Erinnerung VL

Erinnerung VL Erinnerung VL 30.05.2016 Radix-Sort, Abschluss Sortieren Prioritätslisten: Warteschlange mit Prioritäten deletemin: kleinstes Element rausnehmen insert: Element einfügen Binäre Heaps als Implementierung

Mehr

SQL und MySQL. Kristian Köhntopp

SQL und MySQL. Kristian Köhntopp SQL und MySQL Kristian Köhntopp Wieso SQL? Datenbanken seit den frühen 1950er Jahren: Hierarchische Datenbanken Netzwerkdatenbanken Relationale Datenbanken = SQL Relational? 10 9 8 7 6 f(y) := y = x r(y)

Mehr

Graphalgorithmen 2. Oleksiy Rybakov. 3. Juni Betreuer: Tobias Werth, Daniel Brinkers

Graphalgorithmen 2. Oleksiy Rybakov. 3. Juni Betreuer: Tobias Werth, Daniel Brinkers Graphalgorithmen 2 Oleksiy Rybakov 3. Juni 2015 Betreuer: Tobias Werth, Daniel Brinkers 1 / 40 Inhaltsverzeichnis 1 Minimale Spannbäume und Datenstrukturen 2 Kürzeste Wege 3 Spezielle Graphen 2 / 40 Minimale

Mehr

9. Heuristische Suche

9. Heuristische Suche 9. Heuristische Suche Prof. Dr. Rudolf Kruse University of Magdeburg Faculty of Computer Science Magdeburg, Germany rudolf.kruse@cs.uni-magdeburg.de S Heuristische Suche Idee: Wir nutzen eine (heuristische)

Mehr

5.8 Bibliotheken für PostgreSQL

5.8 Bibliotheken für PostgreSQL 5.8 Bibliotheken für PostgreSQL Haskell/WASH: Modul Dbconnect PHP: pqsql-funktionen Java/JSP: JDBC Perl: DBI database interface modul Vorläufige Version 80 c 2004 Peter Thiemann, Matthias Neubauer 5.9

Mehr

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1 Vorlesung Geometrische Algorithmen Sichtbarkeitsgraphen und kurzeste Wege Sven Schuierer Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale

Mehr

Technische Informatik II Wintersemester 2002/03 Sommersemester 2001. Heiko Holtkamp Heiko@rvs.uni-bielefeld.de

Technische Informatik II Wintersemester 2002/03 Sommersemester 2001. Heiko Holtkamp Heiko@rvs.uni-bielefeld.de Technische Informatik II Wintersemester 2002/03 Sommersemester 2001 Heiko Holtkamp Heiko@rvs.uni-bielefeld.de Speicher ist eine wichtige Ressource, die sorgfältig verwaltet werden muss. In der Vorlesung

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Big Data Management Thema 14: Cassandra

Big Data Management Thema 14: Cassandra Thema 14: Cassandra Jan Kristof Nidzwetzki Thema 14: Cassandra 1 / 25 Übersicht 1 Grundlagen Überblick Geschichte Datenmodel 2 Architektur Der logische Ring Persistenz der Daten Tunable Consistency Read

Mehr

Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht)

Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht) Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht) Christian Haag, DATA MART Consulting Consulting Manager Oracle DWH Team

Mehr

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

Algorithmen für Routenplanung 14. Vorlesung, Sommersemester 2012 Daniel Delling 18. Juni 2012 Algorithmen für Routenplanung 14. Vorlesung, Sommersemester 2012 Daniel Delling 18. Juni 2012 MICROSOFT RESEARCH SILICON VALLEY KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum

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

Identifizierung negativer Zyklen in gerichteten Graphen

Identifizierung negativer Zyklen in gerichteten Graphen Identifizierung negativer Zyklen in gerichteten Graphen Benjamin Schulz 4. August 2008 Inhaltsverzeichnis 1 Einführung 2 1.1 Gerichtete gewichtete Graphen.............................. 2 1.2 Finden von

Mehr

GPGPU mit NVIDIA CUDA

GPGPU mit NVIDIA CUDA 01.07.12 GPGPU mit NVIDIA CUDA General-Purpose on Formatvorlagecomputing des Graphics Processing durch Units Untertitelmasters mit KlickenCompute bearbeiten NVIDIA Unified Device Architecture Gliederung

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9

Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9 Inhalt Curriculum 1.4.2 Manfred Wilfling HTBLA Kaindorf 28. November 2011 M. Wilfling (HTBLA Kaindorf) CPUs 28. November 2011 1 / 9 Begriffe CPU Zentraleinheit (Central Processing Unit) bestehend aus Rechenwerk,

Mehr

Algorithmen und Datenstrukturen. Große Übung vom 29.10.09 Nils Schweer

Algorithmen und Datenstrukturen. Große Übung vom 29.10.09 Nils Schweer Algorithmen und Datenstrukturen Große Übung vom 29.10.09 Nils Schweer Diese Folien Braucht man nicht abzuschreiben Stehen im Netz unter www.ibr.cs.tu-bs.de/courses/ws0910/aud/index.html Kleine Übungen

Mehr

Anwendungen des Fréchet-Abstandes Das Constrained Free Space Diagram zur Analyse von Körperbewegungen

Anwendungen des Fréchet-Abstandes Das Constrained Free Space Diagram zur Analyse von Körperbewegungen Anwendungen des Fréchet-Abstandes Das Constrained Free Space Diagram zur Analyse von Körperbewegungen David Knötel Freie Universität Berlin, Institut für Informatik Seminar über Algorithmen Leitfaden Wiederholung

Mehr

Installation SQL- Server 2012 Single Node

Installation SQL- Server 2012 Single Node Installation SQL- Server 2012 Single Node Dies ist eine Installationsanleitung für den neuen SQL Server 2012. Es beschreibt eine Single Node Installation auf einem virtuellen Windows Server 2008 R2 mit

Mehr

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine.

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine. Kapitel 2 Datenverwaltung durch SQL Server Wir wollen das obige Skript zwei Mal laufen lassen, einmal mit und einmal ohne eingeschalteten Schreibcache der Festplatte. Für eine lokale Festplatte können

Mehr

Rechnerische Komplexität

Rechnerische Komplexität Proseminar Effiziente Algorithmen SS 2002 Rechnerische Komplexität Ulrike Krönert (34180) 0. Inhalt 1. Einführung 2. Algorithmen und Komplexität 2.1. Algorithmen 2.2. Laufzeitabschätzung 2.3. Polynomialzeit

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

Hauptspeicherindexstrukturen. Stefan Sprenger Semesterprojekt Verteilte Echtzeitrecherche in Genomdaten 10. November 2015

Hauptspeicherindexstrukturen. Stefan Sprenger Semesterprojekt Verteilte Echtzeitrecherche in Genomdaten 10. November 2015 Hauptspeicherindexstrukturen Stefan Sprenger Semesterprojekt Verteilte Echtzeitrecherche in Genomdaten 10. November 2015 Agenda Einführung in Hauptspeichertechnologien Indexstrukturen in relationalen Datenbanken

Mehr

Maximale s t-flüsse in Planaren Graphen

Maximale s t-flüsse in Planaren Graphen Maximale s t-flüsse in Planaren Graphen Vorlesung Algorithmen für planare Graphen June 1, 2015 Ignaz Rutter INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

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 Teilnehmerkreis und Voraussetzungen Studiengänge

Mehr

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung Konstantin Clemens Johanna Ploog Freie Universität Berlin Institut für Mathematik II Arbeitsgruppe für Mathematik in den Lebenswissenschaften Algorithmen und Datenstrukturen in der Bioinformatik Viertes

Mehr

MySQL Performance Tuning für Entwickler

MySQL Performance Tuning für Entwickler MySQL Performance Tuning für Entwickler Cebit 2015, Hannover Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 18 FromDual GmbH Support Beratung remote-dba Schulung

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 2010

Mehr