Design Implement Analyze Experiment
Total Page:16
File Type:pdf, Size:1020Kb
Felix Putze and Peter Sanders design experiment Algorithmics analyze implement Course Notes Algorithm Engineering TU Karlsruhe October 19, 2009 Preface These course notes cover a lecture on algorithm engineering for the basic toolbox that Peter Sanders is reading at Universitat¨ Karlsruhe since 2004. The text is compiled from slides, scientific papers and other manuscripts. Most of this material is in English so that this language was adopted as the main language. However, some parts are in German. The primal sources of our material are given at the beginning of each chapter. Please refer to the original publications for further references. This document is still work in progress. Please report bugs of any type (content, language, layout, . ) to [email protected]. Thank you! 1 Contents 1 Was ist Algorithm Engineering? 6 1.1 Einfuhrung¨ . .6 1.2 Stand der Forschung und offene Probleme . .8 2 Data Structures 16 2.1 Arrays & Lists . 16 2.2 External Lists . 18 2.3 Stacks, Queues & Variants . 20 3 Sorting 24 3.1 Quicksort Basics . 24 3.2 Refined Quicksort . 25 3.3 Lessons from experiments . 27 3.4 Super Scalar Sample Sort . 30 3.5 Multiway Merge Sort . 34 3.6 Sorting with parallel disks . 35 3.7 Internal work of Multiway Mergesort . 38 3.8 Experiments . 41 4 Priority Queues 44 4.1 Introduction . 44 4.2 Binary Heaps . 45 4.3 External Priority Queues . 47 4.4 Adressable Priority Queues . 54 5 External Memory Algorithms 57 5.1 Introduction . 57 5.2 The external memory model and things we already saw . 59 5.3 The Stxxl library . 60 5.4 Time-Forward Processing . 62 5.5 Cache-oblivious Algorithms . 64 2 5.5.1 Matrix Transposition . 67 5.5.2 Searching Using Van Emde Boas Layout . 69 5.5.3 Funnel sorting . 71 5.5.4 Is the Model an Oversimplification? . 74 5.6 External BFS . 76 5.6.1 Introduction . 76 5.6.2 Algorithm of Munagala and Ranade . 77 5.6.3 An Improved BFS Algorithm with sublinear I/O . 78 5.6.4 Improvements in the previous implementat- ions of MR BFS and MM BFS R................. 81 5.6.5 A Heuristic for maintaining the pool . 82 5.7 Maximal Independent Set . 84 5.8 Euler Tours . 85 5.9 List Ranking . 86 6 van Emde Boas Trees 90 6.1 From theory to practice . 90 6.2 Implementation . 91 6.3 Experiments . 95 7 Shortest Path Search 98 7.1 Introduction . 98 7.2 “Classical” and other Results . 99 7.3 Highway Hierarchy . 102 7.3.1 Introduction . 102 7.3.2 Hierarchies and Contraction . 103 7.3.3 Query . 107 7.3.4 Experiments . 111 7.4 Transit Node Routing . 116 7.4.1 Computing Transit Nodes . 117 7.4.2 Experiments . 119 7.4.3 Complete Description of the Shortest Path . 122 7.5 Dynamic Shortest Path Computation . 123 7.5.1 Covering Nodes . 124 7.5.2 Static Highway-Node Routing . 126 7.5.3 Construction . 127 7.5.4 Query . 127 7.5.5 Analogies To and Differences From Related Techniques . 128 7.5.6 Dynamic Multi-Level Highway Node Routing . 129 7.5.7 Experiments . 131 3 8 Minimum Spanning Trees 137 8.1 Definition & Basic Remarks . 137 8.1.1 Two important properties . 137 8.2 Classic Algorithms . 138 8.2.1 Excursus: The Union-Find Data Structure . 141 8.3 QuickKruskal . 143 8.4 The I-Max-Filter algorithm . 144 8.5 External MST . 149 8.5.1 Semiexternal Algorithm . 150 8.5.2 External Sweeping Algorithm . 151 8.5.3 Implementation & Experiments . 153 8.6 Connected Components . 156 9 String Sorting 158 9.1 Introduction . 158 9.2 Multikey Quicksort . 159 9.3 Radix Sort . 160 10 Suffix Array Construction 162 10.1 Introduction . 162 10.2 The DC3 Algorithm . 162 10.3 External Suffix Array Construction . 165 11 Presenting Data from Experiments 170 11.1 Introduction . 170 11.2 The Process . 171 11.3 Tables . 172 11.4 Two-dimensional Figures . 172 11.5 Grids and Ticks . 181 11.6 Three-dimensional Figures . 182 11.7 The Caption . 183 11.8 A Check List . 184 12 Appendix 186 12.1 Used machine models . 186 12.2 Amortized Analysis for Unbounded Arrays . 187 12.3 Analysis of Randomized Quicksort . 188 12.4 Insertion Sort . 189 12.5 Lemma on Interval Maxima . 190 12.6 Random Permutations without additional I/Os . 191 12.7 Proof of Discarding Theorem for Suffix Array Construction . 192 4 12.8 Pseudocode for the Discarding Algorithm . 192 5 Chapter 1 Was ist Algorithm Engineering? 1.1 Einfuhrung¨ Algorithmen (einschließlich Datenstrukturen) sind das Herz jeder Computeranwendung und damit von entscheidender Bedeutung fur¨ große Bereiche von Technik, Wirtschaft, Wissenschaft und taglichem¨ Leben. Die Algorithmik befasst sich mit der systematischen Entwicklung effizienter Algorithmen und hat damit entscheidenden Anteil an der effek- tiven Entwicklung verlaßlicher¨ und ressourcenschonender Technik. Wir nennen hier nur einige besonders spektakulare¨ Beispiele: Das schnelle Durchsuchen der gewaltigen Datenmengen des Internet (z.B. mit Google) hat die Art verandert,¨ wie wir mit Wissen und Information umgehen. Moglich¨ wurde dies durch Algorithmen zur Volltextsuche, die in Sekundenbruchteilen alle Tr- effer aus Terabytes von Daten herausfischen konnen¨ und durch Ranking-Algorithmen, die Graphen mit Milliarden von Knoten verarbeiten, um aus der Flut von Treffern relevante Antworten zu filtern. Weniger sichtbar aber ahnlich¨ wichtig sind Algorith- men fur¨ die effiziente Verteilung von sehr haufig¨ zugegriffenen Daten unter massiven Lastschwankungen oder gar Uberlastungsangriffen¨ (distributed denial of service attacks). Der Marktfuhrer¨ auf diesem Gebiet, Akamai, wurde von Algorithmikern gegrundet.¨ Eines der wichtigsten wissenschaftlichen Ereignisse der letzten Jahre war die Veroffentlichung¨ des menschlichen Genoms. Mitentscheidend fur¨ die fruhe¨ Veroffentlichung¨ war die von der Firma Celera verwendete und durch algorithmische Uberlegungen¨ begrundete¨ Aus- gestaltung des Sequenzierprozesses (whole genome shotgun sequencing). Die Algorith- mik hat sich hier nicht auf die Verarbeitung der von Naturwissenschaftlern produzierten Daten beschrankt,¨ sondern gestaltenden Einfluss auf den gesamten Prozess ausgeubt.¨ Die Liste der Bereiche, in denen ausgefeilte Algorithmen eine Schlusselrolle¨ spielen, ließe sich fast beliebig fortsetzen: Computergrafik, Bildverarbeitung, geografische Infor- mationssysteme, Kryptografie, Produktions-, Logistik- und Verkehrsplanung . Wie funktioniert nun der Transfer algorithmischer Innovation in Anwendungsbere- 6 abstrakte Algorithm realistische Modelle Modelle 1 reale Engineering 7 8 Eingaben Anwendungen Entwurf Entwurf 2 falsifizierbare Analyse Analyse3 Hypothesen 5 Experimente Algorithmentheorie Induktion Deduktion Leistungsgarantien 4 Implementierung Leistungs− garantien Implementierung Algorithmen− 6 bibliotheken Anwendungen Figure 1.1: Zwei Sichtweisen der Algorithmik: Links: traditionell. Rechts: AE = Algo- rithmik als von falsifizierbaren Hypothesen getriebener Kreislauf aus Entwurf, Analyse, Implementierung, und experimenteller Bewertung von Algorithmen. iche? Traditionell hat sich die Algorithmik der Methodik der Algorithmentheorie bedi- ent, die aus der Mathematik stammt: Algorithmen werden fur¨ einfache und abstrakte Problem- und Maschinenmodelle entworfen. Hauptergebnis sind dann beweisbare Leis- tungsgarantien fur¨ alle moglichen¨ Eingaben. Dieser Ansatz fuhrt¨ in vielen Fallen¨ zu ele- ganten, zeitlosen Losungen,¨ die sich an viele Anwendungen anpassen lassen. Die harten Leistungsgarantien ergeben zuverlassig¨ hohe Effizienz auch fur¨ zur Implementierungszeit unbekannte Typen von Eingaben. Aufgreifen und Implementieren eines Algorithmus ist aus Sicht der Algorithmentheorie Teil der Anwendungsentwicklung. Nach allgemeiner Beobachtung ist diese Art des Ergebnistransfers aber ein sehr langsamer Prozess. Bei wachsenden Anforderungen an innovative Algorithmen ergeben sich daraus wachsende Lucken¨ zwischen Theorie und Praxis: Reale Hardware entwickelt sich durch Parallelis- mus, Pipelining, Speicherhierarchien u.s.w. immer weiter weg von einfachen Maschi- nenmodellen. Anwendungen werden immer komplexer. Gleichzeitig entwickelt die Al- gorithmentheorie immer ausgeklugeltere¨ Algorithmen, die zwar wichtige Ideen enthalten aber manchmal kaum implementierbar sind. Außerdem haben reale Eingaben oft wenig mit den worst-case Szenarien der theoretischen Analyse zu tun. Im Extremfall werden viel versprechende algorithmische Ansatze¨ vernachlassigt,¨ weil eine vollstandige¨ Anal- yse mathematisch zu schwierig ware.¨ Seit Beginn der 1990er Jahre wird deshalb eine breitere Sichtweise der Algorithmik immer wichtiger, die als algorithm engineering (AE) bezeichnet wird und bei der En- twurf, Analyse, Implementierung und experimentelle Bewertung von Algorithmen gleich- berechtigt nebeneinander stehen. Der gegenuber¨ der Algorithmentheorie großere¨ Meth- 7 odenapparat, die Einbeziehung realer Software und der engere Bezug zu Anwendun- gen verspricht realistischere Algorithmen, die Uberbr¨ uckung¨ entstandener Lucken¨ zwis- chen Theorie und Praxis, und einen schnelleren Transfer von algorithmischem Know- how in Anwendungen. Abbildung 1.1 zeigt die Sichtweise der Algorithmik als AE und eine Aufteilung in acht eng interagierende Aktivitaten.¨ Ziele und Arbeitsprogramm des Schwerpunktprogramms ergeben sich daraus in naturlicher¨ Weise: Einsatz der vollen Schlagkraft der AE Methodologie mit dem Ziel, Lucken¨ zwischen Theorie und Praxis zu uberbr¨ ucken.¨ 1. Studium realistischer Modelle fur¨ Maschinen und algorithmische Probleme. 2. Entwurf von einfachen und auch in der Realitat¨ effizienten Algorithmen. 3. Analyse praktikabler Algorithmen zwecks Etablierung von Leistungsgarantien, die Theorie und Praxis einander naher¨ bringen. 4. Sorgfaltige¨ Implementierungen, die die Lucken¨ zwischen dem besten theoretischen Algorithmus und dem besten implementierten Algorithmus verkleinern. 5. Systematische, reproduzierbare Experimente, die der Widerlegung oder Starkung¨ aussagekraftiger,¨ falsifizierbarer Hypothesen dienen,.