algorithm engineering bridging the gap between algorithm theory and practice muller hannemann schirra 2010 10 08 Cấu trúc dữ liệu và giải thuật

526 104 0
algorithm engineering  bridging the gap between algorithm theory and practice muller hannemann   schirra 2010 10 08  Cấu trúc dữ liệu và giải thuật

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lecture Notes in Computer Science Commenced Publication in 1973 Founding and Former Series Editors: Gerhard Goos, Juris Hartmanis, and Jan van Leeuwen Editorial Board David Hutchison Lancaster University, UK Takeo Kanade Carnegie Mellon University, Pittsburgh, PA, USA Josef Kittler University of Surrey, Guildford, UK Jon M Kleinberg Cornell University, Ithaca, NY, USA Alfred Kobsa University of California, Irvine, CA, USA Friedemann Mattern ETH Zurich, Switzerland John C Mitchell Stanford University, CA, USA Moni Naor Weizmann Institute of Science, Rehovot, Israel Oscar Nierstrasz University of Bern, Switzerland C Pandu Rangan Indian Institute of Technology, Madras, India Bernhard Steffen TU Dortmund University, Germany Madhu Sudan Microsoft Research, Cambridge, MA, USA Demetri Terzopoulos University of California, Los Angeles, CA, USA Doug Tygar University of California, Berkeley, CA, USA Gerhard Weikum Max Planck Institute for Informatics, Saarbruecken, Germany CuuDuongThanCong.com 5971 Matthias Müller-Hannemann Stefan Schirra (Eds.) Algorithm Engineering Bridging the Gap between Algorithm Theory and Practice 13 CuuDuongThanCong.com Volume Editors Matthias Müller-Hannemann Martin-Luther-Universität Halle-Wittenberg, Institut für Informatik Von-Seckendorff-Platz 1, 06120 Halle, Germany E-mail: muellerh@informatik.uni-halle.de Stefan Schirra Otto-von-Guericke Universität Magdeburg, Fakultät für Informatik Universitätsplatz 2, 39106 Magdeburg, Germany E-mail: stschirr@ovgu.de Library of Congress Control Number: 2010931447 CR Subject Classification (1998): F.2, D.2, G.1-2, G.4, E.1, I.3.5, I.6 LNCS Sublibrary: SL – Theoretical Computer Science and General Issues ISSN ISBN-10 ISBN-13 0302-9743 3-642-14865-4 Springer Berlin Heidelberg New York 978-3-642-14865-1 Springer Berlin Heidelberg New York This work is subject to copyright All rights are reserved, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, re-use of illustrations, recitation, broadcasting, reproduction on microfilms or in any other way, and storage in data banks Duplication of this publication or parts thereof is permitted only under the provisions of the German Copyright Law of September 9, 1965, in its current version, and permission for use must always be obtained from Springer Violations are liable to prosecution under the German Copyright Law springer.com © Springer-Verlag Berlin Heidelberg 2010 Printed in Germany Typesetting: Camera-ready by author, data conversion by Scientific Publishing Services, Chennai, India Printed on acid-free paper 06/3180 CuuDuongThanCong.com Preface The systematic development of efficient algorithms has become a key technology for all kinds of ambitious and innovative computer applications With major parts of algorithmic theory and algorithmic practice developing in different directions since the 1970s a group of leading researchers in the field started about 15 years ago to coin the new paradigm “Algorithm Engineering” Its major goal is to bridge the gap between theory and practice This book is a collection of survey articles on different aspects of Algorithm Engineering, written by participants of a GI-Dagstuhl seminar held during September 3-8, 2006 Dorothea Wagner and Peter Sanders came up with the idea for the seminar, and approached us to organize it In general, the concept of the GI-Dagstuhl seminars is to provide young researchers (mostly PhD students) with the opportunity to be introduced into a new emerging field of computer science Based on a list of topics collected by the organizers, the participants prepared overview lectures they presented and discussed with other participants at the research seminar in Dagstuhl Each contribution was elaborated afterwards and carefully cross-reviewed by all participants Chapter gives an introduction into the emerging field of Algorithm Engineering and describes its main ingredients It also serves as an overview for the remaining chapters of the book The editing process took much longer than expected, partially due to the fact that several aspects of Algorithm Engineering have never been written up before, which gave rise to lengthy internal discussions But for the major part of the delay, the editors take their responsibility Since the field of Algorithm Engineering has developed rapidly since the seminar took place, we made an effort to keep the contents up to date Ideally, our book will be used as an introduction to the field Although it has not been written as a textbook, it may well serve as accompanying material and as a reference in class As this book project now comes to an end, we are indebted to many people and institutions First of all, we would like to thank the Gesellschaft für Informatik e.V (GI) for their generous support of the GI-Dagstuhl seminar, funding the stay of all participants at Schloss Dagstuhl We thank the Schloss Dagstuhl LeibnizZentrum für Informatik GmbH for their excellent workshop facilities and its hospitality, which provided the basis for a successful seminar Alfred Hofmann and his team made it possible to smoothly publish this volume in the LNCS series of Springer Special thanks go to Annabell Berger, Holger Blaar, and Kathleen Kletsch for their help in the editing process March 2010 CuuDuongThanCong.com Matthias Müller-Hannemann Stefan Schirra List of Contributors Editors Matthias Müller-Hannemann Martin-Luther-Universität Halle-Wittenberg Institut für Informatik Von-Seckendorff-Platz 06120 Halle, Germany muellerh@informatik.uni-halle.de Stefan Schirra Otto-von-Guericke Universität Magdeburg Fakultät für Informatik Universitätsplatz 39106 Magdeburg, Germany stschirr@ovgu.de Authors Heiner Ackermann Fraunhofer Institute for Industrial Mathematics Fraunhofer-Platz 67663 Kaiserslautern, Germany Daniel Delling Microsoft Research Silicon Valley 1065 La Avenida Montain View, CA 94043, USA dadellin@microsoft.com heiner.ackermann@itwm.fraunhofer.de Deepak Ajwani Aarhus University MADALGO - Center for Massive Data Algorithmics IT-parken, Aabogade 34 8200 Aarhus N, Denmark ajwani@cs.au.dk Eric Berberich Max-Planck-Institut für Informatik Algorithms and Complexity Campus E1 66123 Saarbrücken, Germany eric@mpi-inf.mpg.de CuuDuongThanCong.com Roman Dementiev Universität Karlsruhe (TH) Department of Computer Science, Algorithmics II Am Fasanengarten 76131 Karlsruhe, Germany dementiev@ira.uka.de Markus Geyer Universität Tübingen Wilhelm-Schickard-Institut für Informatik, Paralleles Rechnen Sand 14 72076 Tübingen, Germany geyer@informatik.uni-tuebingen.de VIII List of Contributors Matthias Hagen Bauhaus Universität Weimar Faculty of Media, Web Technology and Information Systems Group Bauhausstr 11 99423 Weimar, Germany matthias.hagen@uni-weimar.de Maria Kandyba Technische Universität Dortmund Fakultät für Informatik Lehrstuhl für Algorithm Engineering Otto-Hahn-Str 14 44227 Dortmund, Germany maria.kandyba@cs.uni-dortmund.de Sabine Helwig Universität Erlangen-Nürnberg Department of Computer Science Hardware-Software-Co-Design Am Weichselgarten 91058 Erlangen, Germany helwig@cs.fau.de Sascha Meinert Karlsruhe Institute of Technology (KIT) Institute of Theoretical Informatics, Algorithmics I Am Fasanengarten 76131 Karlsruhe, Germany meinert@kit.edu Benjamin Hiller Konrad-Zuse-Zentrum für Informationstechnik Berlin (ZIB) Department Optimization Takustr 14195 Berlin-Dahlem, Germany hiller@zib.de Henning Meyerhenke Universität Paderborn Department of Computer Science Fürstenallee 11 33102 Paderborn, Germany henningm@upb.de Roberto Hoffmann Martin-Luther-Universität Halle-Wittenberg Institut für Informatik Von-Seckendorff-Platz 06120 Halle, Germany hoffmaro@informatik.uni-halle.de Marc Mörig Otto-von-Guericke Universität Magdeburg Fakultät für Informatik Universitätsplatz 39106 Magdeburg, Germany marc@moerig.com Falk Hüffner Humboldt-Universität zu Berlin Institut für Informatik Rudower Chaussee 25 12489 Berlin, Germany hueffner@informatik.hu-berlin.de Hannes Moser Friedrich-Schiller-Universität Jena Institut für Informatik Ernst-Abbe-Platz 07743 Jena, Germany hannes.moser@uni-jena.de CuuDuongThanCong.com List of Contributors IX Matthias Müller-Hannemann Martin-Luther-Universität Halle-Wittenberg Institut für Informatik Von-Seckendorff-Platz 06120 Halle, Germany muellerh@informatik.uni-halle.de Anna Schulze Universität zu Köln Zentrum für Angewandte Informatik (ZAIK) Gyrhofstr 8c 50931 Köln, Germany schulze@zpr.uni-koeln.de Heiko Röglin Maastricht University Department of Quantitative Economics 6200 MD Maastricht, The Netherlands heiko@roeglin.org Nils Schweer Technische Universität Braunschweig Institute of Operating Systems and Computer Networks Mühlenpfordtstr 23 38106 Braunschweig, Germany n.schweer@tu-bs.de Ivo Rössling Otto-von-Guericke Universität Magdeburg Fakultät für Informatik Universitätsplatz 39106 Magdeburg, Germany ivo.roessling@ovgu.de Ulf Schellbach Technische Universität Ilmenau Institut für Theoretische Informatik Helmholtzplatz 98684 Ilmenau, Germany ulf.schellbach@tu-ilmenau.de Stefan Schirra Otto-von-Guericke Universität Magdeburg Fakultät für Informatik Universitätsplatz 39106 Magdeburg, Germany stschirr@ovgu.de Johannes Singler Universität Karlsruhe (TH) Department of Computer Science, Algorithmics II Am Fasanengarten 76131 Karlsruhe, Germany singler@ira.uka.de Tobias Tscheuschner Universität Paderborn Department of Computer Science Fürstenallee 11 33102 Paderborn, Germany chessy@upb.de Maik Weinard Johann Wolfgang Goethe-Universität Frankfurt am Main Theoretische Informatik Robert-Mayer-Str 11-15 60325 Frankfurt am Main, Germany weinard@thi.informatik.uni-frankfurt.de Sven Scholz Freie Universität Berlin Institut für Informatik Takustr 14195 Berlin, Germany scholz@inf.fu-berlin.de CuuDuongThanCong.com Contents Chapter Foundations of Algorithm Engineering M Müller-Hannemann, S Schirra 1.1 Introduction 1.1.1 Classical Algorithmics 1.1.2 The New Paradigm: Algorithm Engineering 1.1.3 Towards a Definition of Algorithm Engineering 1.1.4 Methodology 1.1.5 Visibility of Algorithm Engineering 1.2 Building Blocks of Algorithm Engineering 1.2.1 Modeling of Problems 1.2.2 Algorithm Design 1.2.3 Analysis 1.2.4 Realistic Computer Models 1.2.5 Implementation 1.2.6 Libraries 1.2.7 Experiments 1.2.8 Success Stories of Algorithm Engineering 1.2.9 Challenges 1.2.10 Further Topics — Not Covered in This Book 1 9 10 11 12 12 13 15 15 Chapter Modeling M Geyer, B Hiller, S Meinert 2.1 Introduction 2.2 Modeling Fundamentals 2.2.1 Fundamentals 2.2.2 Problem Analysis 2.2.3 Problem Specification: Examples 2.2.4 Modeling a Solution Approach 2.2.5 Model Assessment 2.2.6 Inherent Difficulties within the Modeling Process 2.3 Modeling Frameworks 2.3.1 Graph-Based Models 2.3.2 Mixed Integer Programming 2.3.3 Constraint Programming 2.3.4 Algebraic Modeling Languages 2.3.5 Summary on Modeling Frameworks 2.4 Further Issues 2.4.1 Specific Input Characteristics 2.4.2 Problem Decomposition for Complex Applications 2.5 Conclusion 16 16 19 19 21 23 26 28 28 30 31 35 43 49 53 53 55 55 56 CuuDuongThanCong.com XII Contents Chapter Selected Design Issues S Helwig, F Hüffner, I Rössling, M Weinard 58 3.1 Introduction 58 3.2 Simplicity 60 3.2.1 Advantages for Implementation 61 3.2.2 How to Achieve Simplicity? 61 3.2.3 Effects on Analysis 65 3.3 Scalability 67 3.3.1 Towards a Definition of Scalability 68 3.3.2 Scalability in Parallel Computing 70 3.3.3 Basic Techniques for Designing Scalable Algorithms 73 3.3.4 Scalability in Grid Computing and Peer-to-Peer Networks 76 3.4 Time-Space Trade-Offs 80 3.4.1 Formal Methods 82 3.4.2 Reuse and Lookup Tables 84 3.4.3 Time-Space Trade-Offs in Storing Data 89 3.4.4 Preprocessing 92 3.4.5 Brute Force Support 93 3.5 Robustness 95 3.5.1 Software Engineering Aspects 96 3.5.2 Numerical Robustness Issues 108 3.5.3 Robustness in Computational Geometry 113 Chapter Analysis of Algorithms H Ackermann, H Röglin, U Schellbach, N Schweer 4.1 Introduction and Motivation 4.2 Worst-Case and Average-Case Analysis 4.2.1 Worst-Case Analysis 4.2.2 Average-Case Analysis 4.3 Amortized Analysis 4.3.1 Aggregate Analysis 4.3.2 The Accounting Method 4.3.3 The Potential Method 4.3.4 Online Algorithms and Data Structures 4.4 Smoothed Analysis 4.4.1 Smoothed Analysis of Binary Optimization Problems 4.4.2 Smoothed Analysis of the Simplex Algorithm 4.4.3 Conclusions and Open Questions 4.5 Realistic Input Models 4.5.1 Computational Geometry 4.5.2 Definitions and Notations 4.5.3 Geometric Input Models 4.5.4 Relationships between the Models 4.5.5 Applications 4.6 Computational Testing 4.7 Representative Operation Counts CuuDuongThanCong.com 127 127 130 131 132 134 136 136 136 138 140 141 151 158 159 160 162 162 163 164 168 169 Contents 4.7.1 Identifying Representative Operations 4.7.2 Applications of Representative Operation Counts 4.8 Experimental Study of Asymptotic Performance 4.8.1 Performance Analysis Inspired by the Scientific Method 4.8.2 Empirical Curve Bounding Rules 4.8.3 Conclusions on the Experimental Study of Asymptotic Performance 4.9 Conclusions Chapter Realistic Computer Models D Ajwani, H Meyerhenke 5.1 Introduction 5.1.1 Large Data Sets 5.1.2 RAM Model 5.1.3 Real Architecture 5.1.4 Disadvantages of the RAM Model 5.1.5 Future Trends 5.1.6 Realistic Computer Models 5.2 Exploiting the Memory Hierarchy 5.2.1 Memory Hierarchy Models 5.2.2 Fundamental Techniques 5.2.3 External Memory Data Structures 5.2.4 Cache-Aware Optimization 5.2.5 Cache-Oblivious Algorithms 5.2.6 Cache-Oblivious Data Structures 5.3 Parallel Computing Models 5.3.1 PRAM 5.3.2 Network Models 5.3.3 Bridging Models 5.3.4 Recent Work 5.3.5 Application and Comparison 5.4 Simulating Parallel Algorithms for I/O-Efficiency 5.4.1 PRAM Simulation 5.4.2 Coarse-Grained Parallel Simulation Results 5.5 Success Stories of Algorithms for Memory Hierarchies 5.5.1 Cache-Oblivious Sorting 5.5.2 External Memory BFS 5.5.3 External Suffix Array Construction 5.5.4 External A*-Search 5.6 Parallel Bridging Model Libraries 5.7 Conclusion CuuDuongThanCong.com XIII 170 171 173 175 178 191 192 194 194 194 196 196 198 199 199 200 200 203 206 209 214 217 218 219 220 220 223 225 229 229 230 233 233 233 234 234 235 235 492 References 769 Sweedyk, Z.: A 12 -approximation algorithm for shortest superstring SIAM Journal on Computing 29(3), 954–986 (1999) 770 Tamassia, R., Vismara, L.: A case study in algorithm engineering for geometric computing International Journal of Computational Geometry Applications 11(1), 15–70 (2001) 771 Tarjan, R.E.: Efficiency of a good but not linear set union algorithm J ACM 22(2), 215–225 (1975) 772 Tarjan, R.E.: Updating a balanced search tree in O(1) rotations Information Processing Letters 16(5), 253–257 (1983) 773 Tarjan, R.E.: Amortized computational complexity SIAM Journal on Algebraic and Discrete Methods 6(2), 306–318 (1985) 774 Taub, A.H (ed.): John von Neumann collected works Design of Computers, Theory of Automata and Numerical Analysis, vol V Pergamon, Oxford (1963) 775 Tazari, S., Müller-Hannemann, M., Weihe, K.: Workload balancing in multistage production processes In: Àlvarez, C., Serna, M (eds.) WEA 2006 LNCS, vol 4007, pp 49–60 Springer, Heidelberg (2006) 776 Tazari, S., Müller-Hannemann, M.: Dealing with large hidden constants: Engineering a planar Steiner tree PTAS In: ALENEX 2009, pp 120–131 SIAM, Philadelphia (2009) 777 Tennent, R.D.: Specifying software Cambridge University Press, Cambridge (2002) 778 The BlueGene/L Team, An overview of the BlueGene/L supercomputer In: Proc ACM/IEEE Conf on Supercomputing, pp 1–22 (2002) 779 Thiel, S.: The LEDA memory manager, Tech report, Algorithmic Solutions GmbH (August 1998), http://www.algorithmic-solutions.info/leda_docs/leda_memmgr.ps.gz 780 Thorup, M.: Integer priority queues with decrease key in constant time and the single source shortest paths problem Journal of Computer and System Sciences 69(3), 330–353 (2004) 781 Toledo, S.: A survey of out-of-core algorithms in numerical linear algebra In: External memory algorithms, pp 161–179 American Mathematical Society, Providence (1999) 782 TPIE: A transparent parallel I/O environment (2005), http://www.cs.duke.edu/TPIE/ (version from September 19, 2005) 783 Trefethen, L.N., Bau III, D (eds.): Numerical linear algebra Society for Industrial and Applied Mathematics, Philadelphia (1997); MR1444820 (98k:65002) 784 Tufte, E.R.: The visual display of quantitative information Graphics Press (1983) 785 Tukey, J.W.: Exploratory data analysis Addison-Wesley, Reading (1977) 786 Turing, A.M.: Rounding-off errors in matrix processes Quarterly Journal of Mechanics and Applied Mathematics 1, 287–308 (1948); Reprinted in [787] with summary and notes (including corrections) 787 Turing, A.M.: Pure mathematics Collected Works of A M Turing NorthHolland, Amsterdam (1992); Edited and with an introduction and postscript by J L Britton and Irvine John Good With a preface by P N Furbank 788 The universal protein resource, UniProt (2007), http://www.uniprot.org/ 789 Valiant, L.G.: A bridging model for parallel computation Commun ACM 33(8), 103–111 (1990) 790 Valiant, L.G.: General purpose parallel architectures In: Handbook of Theoretical Computer Science Algorithms and Complexity (A), vol A, pp 943–972 Elsevier, Amsterdam (1990) CuuDuongThanCong.com References 493 791 Valiant, L.G.: A bridging model for multi-core computing In: Halperin, D., Mehlhorn, K (eds.) ESA 2008 LNCS, vol 5193, pp 13–28 Springer, Heidelberg (2008) 792 Valiente, G.: Algorithms on trees and graphs Springer, Heidelberg (2002) 793 Frank van der Stappen, A.: Motion planning amidst fat obstacles, Ph.D thesis, Department of Computer Science, Utrecht University (March 1994) 794 van Emde Boas, P.: Preserving order in a forest in less than logarithmic time and linear space Information Processing Letters 6, 80–82 (1977) 795 van Emde Boas, P., Kaas, R., Zijlstra, E.: Design and implementation of an efficient priority queue Mathematical Systems Theory 10, 99–127 (1977) 796 van Heesch, D.: The Doxygen website (2009), http://www.stack.nl/~dimitri/doxygen/ 797 van Hulzen, J.A., Hulshof, B.J.A., Gates, B.L., van Heerwaarden, M.C.: A code optimization package for REDUCE In: Proceedings of the ACM-SIGSAM 1989 International Symposium on Symbolic and Algebraic Computation, pp 163–170 (1989) 798 van Leeuwen, J (ed.): Handbook of theoretical computer science Algorithms and complexity, vol A Elsevier/MIT Press (1990) 799 van Leeuwen, M.A.: Literate programming in C: CWEBx manual, Report AMR9510, Centrum voor Wiskunde en Informatica, Department of Analysis, Algebra and Geometry, Stichting Mathematisch Centrum, Amsterdam, The Netherlands (1995) 800 Vandervoorde, D., Josuttis, N.M.: C++ templates: the complete guide AddisonWesley, Reading (2003) 801 Veldhuizen, T.L.: Expression templates C++ Report 7(5), 26–31 (1995) 802 Veldhuizen, T.L.: Arrays in Blitz++ In: Caromel, D., Oldehoeft, R.R., Tholburn, M (eds.) ISCOPE 1998 LNCS, vol 1505, pp 223–230 Springer, Heidelberg (1998) 803 Venners, B.: Joshua Bloch: A conversation about design (An interview with effective Java author, Josh Bloch by Bill Venners) (January 2002), First Published in JavaWorld, http://www.javaworld.com/javaworld/jw-01-2002/jw-0104-bloch.html 804 Vershynin, R.: Beyond Hirsch conjecture: walks on random polytopes and smoothed complexity of the simplex method In: Proceedings of the 47th Annual IEEE Symposium on Foundations of Computer Science (FOCS), pp 133–142 (2006) 805 Vigna, S.: Broadword implementation of rank/select queries In: McGeoch, C.C (ed.) WEA 2008 LNCS, vol 5038, pp 154–168 Springer, Heidelberg (2008) 806 Vishkin, U., Caragea, G.C., Lee, B.C.: Models for Advancing PRAM and Other Algorithms into Parallel Programs for a PRAM-On-Chip Platform In: Handbook of parallel computing: Models, algorithms and applications CRC Press, Boca Raton (2007) 807 Visone: Analysis and visualization of social networks, version 2.3.5 (2008), http://visone.info/ 808 Vitter, J.S.: External memory algorithms and data structures: Dealing with massive data ACM Computing Surveys 33(2), 209–271 (2001) 809 Vitter, J.S.: Algorithms and data structures for external memory Foundations and Trends in Theoretical Computer Science NOW Publishers (2008) 810 Vitter, J.S., Shriver, E.A.M.: Algorithms for parallel memory I: Two level memories Algorithmica 12(2-3), 110–147 (1994) CuuDuongThanCong.com 494 References 811 Vitter, J.S., Shriver, E.A.M.: Algorithms for parallel memory, I/II Algorithmica 12(2/3), 110–169 (1994) 812 Vleugels, J.: On fatness and fitness – realistic input models for geometric algorithms, Ph.D thesis, Department of Computer Science, Utrecht University (March 1997) 813 von Neumann, J., Goldstine, H.H.: Numerical inverting of matrices of high order Bull Amer Math Soc 53, 1021–1099 (1947); Reprinted in (774, pp 479–557) 814 von zur Gathen, J., Gerhard, J.: Modern computer algebra, 2nd edn Cambridge University Press, Cambridge (2003) 815 Voronoi, G.: Nouvelle applications des paramètres continus la theorie des formes quadratiques J Reine Angew Math 134, 198–287 (1908) 816 Wagner, D., Willhalm, T.: Geometric speed-up techniques for finding shortest paths in large sparse graphs In: Di Battista, G., Zwick, U (eds.) ESA 2003 LNCS, vol 2832, pp 776–787 Springer, Heidelberg (2003) 817 Wagner, D., Willhalm, T., Zaroliagis, C.: Dynamic shortest path containers In: Proceedings of ATMOS Workshop 2003, pp 65–84 (2004) 818 Wagner, D., Willhalm, T., Zaroliagis, C.: Geometric containers for efficient shortest-path computation ACM Journal of Experimental Algorithmics 10, 1.3 (2005) 819 Wallis, P.J.L (ed.): Improving floating-point programming Wiley, London (1990) 820 Wang, J.: Average-case computational complexity theory In: Selman, A.L (ed.) Complexity Theory Retrospective, in Honor of Juris Hartmanis on the Occasion of His Sixtieth Birthday, July 5, 1988, vol Springer, Heidelberg (1997) 821 Warme, D.M.: A new exact algorithm for rectilinear Steiner minimal trees, Tech report, System Simulation Solutions, Inc., Alexandria, VA 22314, USA (1997) 822 Warme, D.M.: Spanning trees in hypergraphs with applications to Steiner trees, Ph.D thesis, Computer Science Dept., The University of Virginia (1998) 823 Warme, D.M., Winter, P., Zachariasen, M.: Exact algorithms for plane Steiner tree problems: A computational study, Tech Report TR-98/11, DIKU, Department of Computer Science, Copenhagen, Denmark (1998) 824 Warme, D.M., Winter, P., Zachariasen, M.: GeoSteiner 3.1, DIKU, Department of Computer Science, Copenhagen, Denmark (2003), http://www.diku.dk/geosteiner/ 825 Weidendorfer, J.: Performance analysis of GUI applications on Linux In: KDE Contributor Conference (2003) 826 Weihe, K.: A software engineering perspective on algorithmics ACM Computing Surveys 33(1), 89–134 (2001) 827 Weihe, K., Brandes, U., Liebers, A., Müller-Hannemann, M., Wagner, D., Willhalm, T.: Empirical design of geometric algorithms In: Proceedings of the 15th Annual ACM Symposium on Computational Geometry, pp 86–94 (1999) 828 Weinard, M., Schnitger, G.: On the greedy superstring conjecture SIAM Journal on Discrete Mathematics 20(2), 502–522 (2006) 829 Whaley, R.C., Petitet, A., Dongarra, J.J.: Automated empirical optimization of software and the ATLAS project Parallel Computing 27(1-2), 3–35 (2001) 830 Wikipedia (2010), http://en.wikipedia.org/wiki/Wikipedia:Modelling_Wikipedia’s_growth 831 Wilkinson, J.H.: Rounding errors in algebraic processes In: IFIP Congress, pp 44–53 (1959) 832 Wilkinson, J.H.: Error analysis of floating-point computation Numer Math 2, 319–340 (1960) CuuDuongThanCong.com References 495 833 Wilkinson, J.H.: Rounding errors in algebraic processes, Notes on Applied Science, No 32, Her Majesty’s Stationery Office, London (1963); Also published by Prentice-Hall, Englewood Cliffs, NJ, USA (1964); Translated into Polish as Bledy Zaokragleń w Procesach Algebraicznych by PWW, Warsaw, Poland (1967); And translated into German as Rundungsfehler by Springer-Verlag, Berlin, Germany (1969); Reprinted by Dover Publications, New York (1994) 834 Wilkinson, J.H., Reinsch, C.H (eds.): Handbook for automatic computation Linear Algebra, vol Springer, Heidelberg (1971) 835 Williams, R.: FunnelWeb user’s manual University of Adelaide, Adelaide, South Australia, Australia (1992) ftp.adelaide.edu.au/pub/compression/pub/funnelweb 836 Williams, T.L., Parsons, R.J.: The heterogeneous bulk synchronous parallel model In: Proc 15th Intl Parallel and Distributed Processing Symp (IPDPS 2000), Workshops on Parallel and Distr Processing, pp 102–108 Springer, Heidelberg (2000) 837 Wilson, P.R., Johnstone, M.S., Neely, M., Boles, D.: Dynamic storage allocation: A survey and critical review In: Baker, H.G (ed.) IWMM-GIAE 1995 LNCS, vol 986, pp 1–116 Springer, Heidelberg (1995) 838 Winter, P.: An algorithm for the Steiner problem in the Euclidean plane Networks 15, 323–345 (1985) 839 Winter, P., Zachariasen, M.: Euclidean Steiner minimum trees: An improved exact algorithm Networks 30, 149–166 (1997) 840 Wolsey, L.A.: Integer programming John Wiley & Sons, Chichester (1998) 841 Wong, R.T.: A dual ascent approach for Steiner tree problems on a directed graph Mathematical Programming 28, 271–287 (1984) 842 Woodcock, J.C.P., Davies, J.: Using Z: Specification, proof and refinement Prentice Hall International Series in Computer Science (1996) 843 Li, X., Zhang, X., Kubricht, S.A.: Improving memory performance of sorting algorithms ACM Journal of Experimental Algorithmics 5(3) (2000) 844 Yap, C.-K.: A geometric consistency theorem for a symbolic perturbation scheme J Comput Syst Sci 40(1), 2–18 (1990) 845 Yap, C.-K.: Symbolic treatment of geometric degeneracies J Symb Comput 10(3-4), 349–370 (1990) 846 Yap, C.-K.: Towards exact geometric computation Comput Geom Theory Appl 7(1-2), 3–23 (1997) 847 Yap, C.-K.: Fundamental problems of algorithmic algebra Oxford University Press, Oxford (2000) 848 Yap, C.-K.: Robust geometric computation In: Goodman, J.E., O’Rourke, J (eds.) Handbook of Discrete and Computational Geometry, 2nd edn., pp 927– 952 Chapmen & Hall/CRC, Boca Raton (2004) 849 Yap, C.-K., Mehlhorn, K.: Towards robust geometric computation In: Fundamentals of Computer Science Study Conference, Washington DC, July 25-27 (2001) 850 Yeh, T.-H., Kuo, C.-M., Lei, C.-L., Yen, H.-C.: Competitive analysis of on-line disk scheduling Theory of Computing Systems 31, 491–506 (1998) 851 Yellen, J., Gross, J.L.: Graph theory and its applications CRC Press, Boca Raton (1998) 852 Yildiz, M.C., Madden, P.H.: Preferred direction Steiner trees In: GLSVLSI 2001: Proceedings of the 11th Great Lakes symposium on VLSI, pp 56–61 ACM Press, New York (2001) 853 Yoon, S.-E., Lindstrom, P.: Mesh layouts for block-based caches IEEE Trans Visualization and Computer Graphics 12(5), 1213–1220 (2006) CuuDuongThanCong.com 496 References 854 Yourdon, E.: Flashes on maintenance from techniques of program structure and design Techniques of Program Structure and System Maintenance, QED Information Science (1988) 855 Zachariasen, M.: Rectilinear full Steiner tree generation Tech Report TR-97/29, DIKU, Department of Computer Science, Copenhagen, Denmark (1997) 856 Zachariasen, M., Rohe, A.: Rectilinear group Steiner trees and applications in VLSI design Mathematical Programming 94, 407–433 (2003) 857 Zelikovsky, A.Z.: An 11/6-approximation algorithm for the network Steiner problem Algorithmica 9, 463–470 (1993) 858 Zeller, A.: Why programs fail – a guide to systematic debugging, 2nd edn., Dpunkt (2009) 859 ZIB optimization suite (2009), http://zibopt.zib.de/ 860 Ziegler, J.: The LEDA tutorial (2006), http://www.leda-tutorial.org/ 861 Zokaities, D.: Writing understandable code, Software Development, 48–49 (2001) 862 Zumbusch, G.: Parallel multilevel methods Adaptive mesh refinement and loadbalancing Teubner (2003) CuuDuongThanCong.com Subject Index absolute error, 109 abstract factory, 263 model, 159 problems, abstraction, 17 level, 17, 20 accounting method, 135, 136 accuracy, 26, 347, 350 ad hoc network, 195 adaptability, 12, 238 adaptive rounding, 147, 150 Advanced Encryption Standard (AES), 61 adversary, 10, 141 aggregate analysis, 135, 136 Akamai Technologies, Inc., 13 ALENEX, 7, 328 algebraic identity, 258 modeling language, 9, 17, 30, 49–53 number, 309, 436, 438 real, 279 algorithm approximation, certifying, 243–245 design, 6, 9, 19 external memory, 11 geometric, 14 greedy, 65 library, 291 linear time, offline, 139, 179 online, 15, 138–141 pencil-and-paper, randomized, 15 sublinear, 3, 15 sweep-line, 323 Algorithm Engineering, V, IX, XIV, 2, 4–7, 9, 11–19, 21, 26–28, 49, 50, 53, 55, 57–59, 63, CuuDuongThanCong.com 73, 89, 159, 200, 219, 235, 237–239, 250, 262, 263, 267, 273, 284, 325–327, 353–355, 360, 389, 390, 393, 399, 410, 411, 426–428, 445–453 cycle, 6, 15, 325, 326 process, 27 Algorithmics, 1, classical, all-pairs shortest paths (APSP), 390 alldifferent constraint, 45 Amdahl’s law, 210, 249 amortized analysis, 9, 130, 134–140 cost, 135, 137 AMPL, 49 analysis, 2, 4, 6, 23, 325 amortized, 9, 130, 134–140 average-case, 9, 128, 130, 132–134, 140, 192 experimental, 5, 174, 325 graphical, 368–375, 381 of requirements, probabilistic, 152, 155, 159 sensitivity, 22 smoothed, 10, 128, 130, 140–159, 449 statistical, 337, 368, 375–381 theoretical, 4, 326, 328 worst-case, 9, 128, 130–132, 168, 172 antithetic variate, 338 application, 3, 6, 430 development, domain, real-world, 6, 22 approximation, 26, 160, 364, 409 algorithm, 2, 6, 333, 422 ratio, 370 scheme, APX-hard, 164 arbitrary position, 498 Subject Index arc, 31 arc-flags, 395, 400, 404 argument passing, 258 array padding, 211 assertions, 103, 248 assumption, 4, 5, 191 hidden, 97 simplifying, 97 unrealistic, 18, 19 A∗ -search, 93, 393, 394 asymptotic analysis, 173 bottleneck operation, 171, 334 growth, 174 performance, 168, 173 performance analysis, 174 positive function, 130 upper bound, 183 asymptotical running time, automated theorem proving, 101 availability, 347, 350 average-case, 175 analysis, 9, 128, 130, 132–134, 140, 192 complexity, 134, 140, 143 running time, 133 axiomatic approach, 118 B-tree, 74, 89, 208, 209, 217 backtrack search, 44, 415 backup algorithm, 444 bandwidth, 448 bar chart, 369, 371 basic step, 129 batching, 203, 204 benchmark, 313, 383, 390 library, 14 test, 451 BGL, 294, 296, 314–319 bidirectional search, 393, 397 big-M -constraint, 46 big-M -formulation, 39, 40 binary integer program, 37 optimization problem, 141 search, 156 CuuDuongThanCong.com search tree, 74 space partition, 160, 161, 165 tree, 165 variable, 37 bioinformatics, 1, 3, 30 BIP, see binary integer program bisector, 428 black box, 240 black-box testing, 101 BLAS, 212 Blitz++, 296 board assembly, 16, 23, 24 Boost, 12, 294, 296, 298, 300, 302–304, 309, 311 Graph Library (BGL), 314–319 bottleneck, 131, 249, 364, 412 operation, 10, 132, 169, 333 count, 334 Steiner distance, 413, 421 bounding box, 162 Box Cox rule, 179, 185 box plot, 370, 372 branch prediction, branch-and-bound, 369, 371, 417 branch-and-cut, 416, 417 breadth first search, 131 bridging model, 200, 220, 223, 227, 235 broadword computing, 259 brute force, 93 BSP, 160, 165–168, 221, 235 BSP-like algorithm, 231 budget, 27 buffer tree, 209 bug, 59, 61, 356 building block, bulk-synchronous parallel model, 221, 296 processing, 219 c-competitive, 87 cache, 11, 196, 209–219 behavior, direct-mapped, 196 effect, 72, 362 full-associative, 196 Subject Index line, 196 miss, 210 set-associative, 196 sharing, 224 cache-aware algorithm, 201 cache-oblivious, 200, 202, 214–218, 447 caching, 2, 173 calibration, 358 callback, 305, 317 car manufacturing, 19, 23, 25, 33, 36, 37, 52 CATS, 351 Celera Genomics Group, 13 certainty, 26 certification, 104 certifying algorithm, 243–245 optimality, 147 CGAL, 12, 14, 265, 295, 301, 308, 319–324, 427, 440 kernel, 320 challenge, 15, 403, 446–453 DIMACS implementation, for implementation, checking, 11, 242–245 checklist, 18, 26 Chomsky normal form, 85 Christofides heuristic, 127 chromatic number, 140 class library, 291 clock cycle, 196 clustering, 205 clutteredness, 163 coarse-grained multicomputer, 222 code generation, 259 reuse, 11 coding, 356 coding convention, 271 collections of input data, collision, 89 collision-free motion, 164 column generation, 41 CuuDuongThanCong.com 499 combinatorial optimization, 14, 32, 159 communication cost, 198 networks, overhead, 70 comparability, 339, 343, 346, 347, 382, 383, 451 competitive analysis, 139 ratio, 139–141 compilation, 355 compiler, 61, 275, 358, 359, 383, 384 completeness, 347, 349 complex problem, 21 complexity average-case, 143 of implementation, 27 status, component library, 291 computational environment, 169 geometry, 3, 4, 9, 14, 113, 160, 295, 319–324, 430 testing, 130, 169 computer architecture, 10 assisted surgery, model, realistic, 10, 11 computing distributed, 2, 15 high performance, 15 model, parallel, 11 parallel, 2, 15 concavity oracle, 180, 186 concept, condition, 109 number, 109 conditional branch, 256 expectation, 338 configuration, 137 connectivity, 31, 140 consistency, 44, 123 approach, 119 500 Subject Index constant factor, 2, 3, 171 improvements, constrained shortest path, 150, 160 constraint, 20–22, 26, 43, 62 alldifferent, 45 global, 45 hard, 21 linear, 35 programming, 9, 17, 28, 30, 43–49 real-world, 27 redundant, 28, 47 soft, 21, 24, 28 time, 27 construction problem, 20 container, 306 type, 293 context free grammar, 84 contraction hierarchies, 400, 403, 404 control flow graph, 240 variate, 338 controlled perturbation, 120, 123 convex hull, 8, 324 programming, core, 199 correctness, 11, 96, 237, 239–248, 290, 297 correlation, 21 counting problem, 20 coverage, 348 edge, 241 path, 241 statement, 240 CP, see constraint programming CPLEX, 13, 37, 49 CPU time, 168, 169, 171, 172 credit, 136 crew management, 56 cryptographic system, 95 cryptography, CSPLib, 352 CUDA, 225 curve CuuDuongThanCong.com bounding, 173, 179 rule, 176, 181, 188, 190, 191, 193 fitting, 179, 185 cutting plane, 41 cvs, 359, 360 cycle Algorithm Engineering, 6, 12, 325, 326 DAG, 286 data compression, 91 quality, 330 sets spatial, structure, 2, 3, 138, 309, 314, 326 advanced, external memory, 11 I/O-efficient, 209 warehouse, 194 data-dependent program, 82 debugging, 11, 246–248 decentralization, 68, 77 decision problem, 20 decomposition, 26, 71 tree, 86 defensive copying, 105 design, 101, 105, 443 degeneracy, 12, 122, 439, 443, 445 degenerate, 115 case, 15 Delaunay diagram, 429 triangulation, 8, 120, 262, 323, 427, 429 delay, 404 density function, 133, 134 dependency graph, 82 design, 2, 6, 9, 17 by contract, 105 defensive, 101, 105, 443 diversity, 98 goal of algorithm, Subject Index of experiments (DOE), 375 pattern, 263, 273 phase, 8, 21, 26 VLSI, 3, 389 desperate mode, 444 detail, level of, 28 development environment, 275 diagram, 368, 385–388 diameter, 158, 162 dictionary, 74 difference rule, 179, 186 difficulty, 348, 349 Dijkstra’s algorithm, 93, 391, 392, 405 DIMACS implementation challenge, 4, 349, 352, 383, 398, 407 dimension, 153 Dirichlet tessellation, 428 discrete logarithm, 95 optimization problem, 141 discretization error, 108 distance network, 423 distributed computing, 15 computing model, hash table, 68, 77, 78 system, 129 distribution sweeping, 206 diversity, 348, 349 divide-and-conquer, 71, 251, 431, 432 divided differences, 187 documentation, 11, 238, 268–271, 356 DOE (design of experiments), 337 domain, 43 reduction, 44 dominating set, 67 down-up property, 182 Doxygen, 269 dual ascent algorithm, 419 dynamic backward slice, 247 graph, 404 programming, 84, 143, 411, 414 scenario, 404 CuuDuongThanCong.com 501 ease of implementation, 335 ease of use, 3, 11, 238, 267, 297, 348, 350 edge, 31, 153 cracking, 120 edit distance, 30 efficiency, 1, 3, 11, 26, 218, 237, 248– 262, 290, 339 elementary operation, 129 ellipsoid method, 152 enumeration, 310 implicit, 44 epsilon geometry, 118 -cutting, error absolute, 109 backward, 111 correcting code, 100 forward, 111 relative, 109 error-free transformation, 284 ESA, 7, 328 estimate, 178 Euclidean norm, 154 space, 160, 162 TSP with neighborhoods, 164 evaluation, 1, 364 experimental, exact geometric computation, 11, 12, 116, 278, 436 number type, 278, 319 EXACUS, 295, 319–324 expected running time, 157 experience, 4, 17 experiment, 1, 2, 5, 12, 178, 325–388 experimental analysis, 5, 174 design, 376 environment, 330 measure, 168 setup, 4, 367, 384 study, 173 502 Subject Index experimentally falsifiable hypothesis, 191 experimentation, 4, 5, 174 process, 329 exponential bound, 190 expression template, 311 expressiveness, 43 extensibility, 238, 290, 319, 350 external memory, 236 algorithm, 11 BFS, 233 data structure, 11 model, 200, 297 model, 176 face, 153 facet, 168 facility location, 40 factor, 13, 329, 335, 361, 378, 383 constant, 2, fail-safe-return, 99 failure, 246 falsifiable hypothesis, 5, 193 fat geometric objects, 55 neighborhood, 164 scene, 161 fatness, 161–163 fault acceptance, 98 avoidance, 101 compensation, 99 containment, 98, 100 design, 97 interaction, 97 masking, 98, 100 prevention, 102 propagation, 99 removal, 101 feasibility gap, 150 problem, 38 feedback, 18 Fibonacci heap, 61 filter CuuDuongThanCong.com dynamic, 280 floating-point, 280 module, 106 static, 280 finger table, 79 finite element mesh, flash memory, 406, 447 flash-oblivious, 447 flexibility, 3, 11, 12, 238, 262–267, 290, 297 floating-point arithmetic, 11, 15, 277, 434 filter, 280, 289, 436, 440 filtering, 320 number, 308 operation, 277 standard IEEE 754, 282, 307 flow, 31 formal verification, 101 formalism, 26, 32 formalization, formulation, 40 four-coloring planar graphs, 61 framework, frequency polygon, 370–372 full component, 410 Steiner tree, 414 full-text index, 206 function library, 291 pointer, 263 functional plot, 368 functor, 305 funnelsort, 205, 233 fuzzy set, 22 theory, 22 GAMS, 49 gap, 1, 17, 18 between theory and practice, 2, 326 Gaussian elimination, 113 random variable, 142, 157 Subject Index general position, 55, 295 general-purpose tool, 27 generality, generator, 384 generic pointer, 304 programming, 265, 292, 304 geographic information system, 1, 194 geometric algorithm, 14, 276–289 computing, 434 container, 395, 397 filtering, 442 kernel, 319 predicate, 438 primitives, 114 rounding, 124 Steiner tree problem, 408 GeoSteiner, 411, 412, 416, 422, 426 global constraint, 45 routing, 409 GMP, 296, 308 gnuplot, 375 goal Algorithm Engineering, goal-directed search, 395 Google Inc., 13 gprof, 210, 249, 363 GPU, 216, 225 graceful degradation, 99 granularity, 219 graph, 17, 31 algorithm, 192 bipartization, 63 decomposition, 205 drawing, 295 random, real-world, weighted, 31 graph-based model, 30–35 graphical analysis, 368–375, 381 greatest common divisor (gcd), 243 greedy algorithm, 65 CuuDuongThanCong.com 503 heuristic, 250, 425 local search, 423 grid computing, 68, 71, 76 group Steiner tree problem, 408 guess difference rule, 179, 182 function, 181, 190 ratio, 179 rule, 181 guidance, 18 guideline, 8, 19 halfspace, 165 Hamiltonian cycle, 32, 143, 149 hard constraint, 21 disk, 197 instance, 451 hardware, 22 hash table, 74 hashing, 89 heapsort, 76 heuristic, 14, 143, 159, 174, 333, 361, 364, 369–372, 377, 384, 409, 414, 422 hidden assumption, 97 constant, 325 variable method, 119 hierarchical approach, 396, 398 arc-flags, 401 hierarchy memory, see memory hierarchy processor, high performance computing, 15 high-end power rule, 184 high-level presentation, highway dimension, 403 Highway Hierarchies, 398, 402, 403 highway-node routing, 400, 404 Hirsch conjecture, 152, 157 histogram, 369 Hoare calculus, 245 homogeneous coordinates, 282 hypercube, 161 504 Subject Index hypergraph, 415 hyperplane, 153, 165, 168 hypothesis, 175, 364, 367 falsifiable, test, 330, 450 testing, 376 I/O-bottleneck, 199 I/O-efficiency, 11 I/O-efficient data structure, 209 IDE, 275 idle time, 70 IEEE floating-point standard, 307 image processing, impact, implementation, 1–4, 6, 11, 14, 32, 237–289, 326, 354, 355, 365, 366, 383, 434, 440 phase, 26 implicit enumeration, 44 imprecision, 22 in-circle test, 116, 436 inaccurate data, 122 incremental algorithm, 442 approach, 431 independence, 349 infection, 246 inflow, 33 information hiding, 105 retrieval, 1, inlining, 257, 266 input, 21 data, 22 real-world, model, 161 realistic, 10 size, 336 inspection, 101 installation manual, 269 instance, 384 artificial, 343 generator, perturbed, 345 real-world, 342, 345 CuuDuongThanCong.com test, 13 instruction parallelism, pipeline, 197 integer arithmetic, 437 linear program, 62 linear programming, 9, 411 numbers, 307 program, 37 programming formulation, 416, 418 interactive tool, 179 interface, 267 design, 11 interpolation, 88, 186 polynomial, 187 interpreter, 275 interval arithmetic, 308 geometry, 55, 118 inversion, 139 isoefficiency function, 73 isolating lemma, 144 iterated 1-Steiner, 425 iterator, 263, 266, 303, 304, 317, 323 Javadoc, 269 JEA, 7, 328, 384, 451 research code repository, 452 JIT (just-in-time-compiler), 292 journal graph algorithms and applications, Mathematical Programming Computation, kd-split, 166, 167 kd-tree, 75 kernel, 319 key technology, knapsack problem, 140, 142, 143, 159, 160 Kruskal’s algorithm, 131, 132 Subject Index label constrained shortest path problem, 406 labeling, 43 algorithm, 391 laboratory, 330, 354, 360, 366 Lagrangian relaxation, 385, 420 lambda expression, 311 landmark, 395 LAPACK, 212, 296 Las Vegas algorithm, 64 lazy evaluation, 253 LEDA, 12, 14, 294–324, 427, 436, 440 extension package, 300 graph, 314, 315 kernel, 319 level, 336, 378 of detail, 28 library, 27, 249, 267, 290–324, 358, 363, 384, 426 algorithm, benchmark, 14 creation, 349–350 graph algorithms, 32 maintenance, 350–351 parallel, 236 software, 6, 12, 14 test data, 13 update, 350–351 line planning, 56 linear constraint, 35 program, 30, 37, 49, 62, 132, 141, 416 programming, 13, 151, 326, 385, 417, 426 formulation, 409 regression, 172, 179, 183, 185, 379 time, linked list, 207 literate programming, 271 local search, 423 locality, 235 spatial, 203 CuuDuongThanCong.com 505 temporal, 203, 204 logarithmic factor, 190, 191 model, 129 logistics, LogP model, 200, 228 lookup table, 9, 59, 84 loop fusion, 211 interchange, 211 tiling, 212 low density, 162, 163 LP, see linear program formulation, 31 relaxation, 37, 40 lune property, 413 machine epsilon, 112 independent, 176 load, 336 model, 133 abstract, von-Neumann, machine-independent comparison, main memory, 197, 336 maintainability, 3, 238 maintenance, 11, 13 man month, 27 manpower, manual, 269 Markov’s inequality, 148 massive data, 448 matching, 5, 31, 145 Mathematical Programming, 7, 8, 13, 44, 49, 56, 325, 452 matrix multiplication, 214, 226 maximum flow, 318 measurability, 340 measure, 334 performance, 330, 333 structural, 334 measurement, 364 506 Subject Index memory flash, 406 hierarchy, 2, 10, 129, 194, 195, 198, 200, 233, 257, 357–359, 447 management, 302, 322 requirement, mergesort, 131 mesh layout, 216 message complexity, 129 meta-heuristics, 15, 449 methodology, 4, Algorithm Engineering, 13 of comparison, 398 milestone, 13 Miller–Rabin test, 65 min-cut problem, 64 minimum cost flow, 33, 35 spanning tree, 15, 131, 142, 326, 414, 416, 421, 423 heuristic, 422 MIP, see mixed integer program formulation, 31 solver, 40 mixed integer program, 30, 49 integer programming, 17, 35–44 model assessment, 28 bridging, 200 cache-oblivious, 200, 202 checking, 101 formal, 16 generic, 23 graph-based, 30–35 parallel computing, probabilistic, problem, 19 realistic, semi-random, 10 solution approach, 18, 26 modeling, 3, 6, 9, 17 decision, 18 framework, 17, 18, 30–53 of complex problems, of problems, CuuDuongThanCong.com phase, 26, 31 process, 8, 18, 19, 28 modular arithmetic, 283 protection, 106 modularity, 62, 238, 268 Monte Carlo algorithm, 64 Moore’s law, 199 motion planning, 164 move-to-front, 138 MPI, 228, 235 MPS file format, 49 multi-criteria optimization, 404, 405 multi-level graph, 396 multi-modal, 406 multi-threading, multicore, 236, 447, 450 computing, 224 multigraph, 31 multithreading, 448 mutable, 258 network analysis, 403 flow, 5, 35 problem, 33, 344 model, 36, 220 simplex algorithm, 169 Newton polynomial, 187 non-linear program, 49 non-parametric statistics, 382 normal distribution, 189 normalization, 120, 123, 358, 363, 365, 373 NP-hard, 8, 28, 37, 86, 128, 143, 150, 160, 163, 364, 389, 410 null hypothesis, 376 numerical instability, 40 problem, 21 robustness, 9, 108 stability, 14, 112 numerically stable, 111 object-oriented programming, 264, 292 ... Theoretical Computer Science and General Issues ISSN ISBN-10 ISBN-13 030 2-9 743 3-6 4 2-1 486 5-4 Springer Berlin Heidelberg New York 97 8-3 -6 4 2-1 486 5-1 Springer Berlin Heidelberg New York This work is... Roberto Hoffmann Martin-Luther-Universität Halle-Wittenberg Institut für Informatik Von-Seckendorff-Platz 06120 Halle, Germany hoffmaro@informatik.uni-halle.de Marc Mörig Otto-von-Guericke Universität... Matthias Müller-Hannemann Stefan Schirra List of Contributors Editors Matthias Müller-Hannemann Martin-Luther-Universität Halle-Wittenberg Institut für Informatik Von-Seckendorff-Platz 06120 Halle,

Ngày đăng: 31/08/2020, 20:56

Mục lục

    Chapter 1. Foundations of Algorithm Engineering

    The New Paradigm: Algorithm Engineering

    Towards a Definition of Algorithm Engineering

    Visibility of Algorithm Engineering

    Building Blocks of Algorithm Engineering

    Success Stories of Algorithm Engineering

    Further Topics — Not Covered in This Book

    Modeling a Solution Approach

    Inherent Difficulties within the Modeling Process

    Summary on Modeling Frameworks

Tài liệu cùng người dùng

  • Đang cập nhật ...