Skip to main content

Algorithm Engineering: Concepts and Practice

  • Chapter
  • First Online:

Abstract

Over the last years the term algorithm engineering has become wide spread synonym for experimental evaluation in the context of algorithm development. Yet it implies even more. We discuss the major weaknesses of traditional “pen and paper” algorithmics and the ever-growing gap between theory and practice in the context of modern computer hardware and real-world problem instances. We present the key ideas and concepts of the central algorithm engineering cycle that is based on a full feedback loop: It starts with the design of the algorithm, followed by the analysis, implementation, and experimental evaluation. The results of the latter can then be reused for modifications to the algorithmic design, stronger or input-specific theoretic performance guarantees, etc. We describe the individual steps of the cycle, explaining the rationale behind them and giving examples of how to conduct these steps thoughtfully. Thereby we give an introduction to current algorithmic key issues like I/O-efficient or parallel algorithms, succinct data structures, hardware-aware implementations, and others. We conclude with two especially insightful success stories—shortest path problems and text search—where the application of algorithm engineering techniques led to tremendous performance improvements compared with previous state-of-the-art approaches.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD   159.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  • Abouelhoda MI, Kurtz S, Ohlebusch E (2002) The enhanced suffix array and its applications to genome analysis. In: Proceedings of the Second InternationalWorkshop on Algorithms in Bioinformatics (WABI 02), Springer, pp 449–463

    Google Scholar 

  • Abouelhoda MI, Kurtz S, Ohlebusch E (2004) Replacing suffix trees with enhanced suffix arrays. Journal of Discrete Algorithms 2(1):53–86

    Article  MATH  MathSciNet  Google Scholar 

  • Aggarwal A, Vitter JS (1988) The input/output complexity of sorting and related problems. Communications of the ACM 31(9):1116–1127

    Article  MathSciNet  Google Scholar 

  • Aho A, Johnson D, Karp RM, Kosaraju R, McGeoch C, Papadimitriou C (1997) Emerging opportunities for theoretical computer science. SIGACT News 28(3)

    Google Scholar 

  • Arge L, Ferragina P, Grossi R, Vitter JS (1997) On sorting strings in external memory (extended abstract). In: Proceedings of the 29th Annual ACM Symposium on Theory of Computing (STOC 97), ACM, pp 540–548

    Google Scholar 

  • Auslander L, Parter SV (1961) On imbedding graphs in the plane. Journal of Mathematics and Mechanics 10(3):517–523

    MATH  MathSciNet  Google Scholar 

  • Birge JR, Louveaux F (2000) Introduction to Stochastic Programming. Springer

    Google Scholar 

  • Boyer JM, Myrvold WJ (2004) On the cutting edge: Simplified O(n) planarity by edge addition. Journal of Graph Algorithms and Applications 8(3):241–273

    MATH  MathSciNet  Google Scholar 

  • Boyer JM, Cortese PF, Patrignani M, Battista GD (2004) Stop minding your P’s and Q’s: Implementing a fast and simple DFS-based planarity testing and embedding algorithm. In: Proceedings of the 11th International Symposium on Graph Drawing (GD 03), Springer, LNCS, vol 2912, pp 25–36

    Google Scholar 

  • Chimani M, Kandyba M, Ljubić I, Mutzel P (2009) Obtaining optimal k-cardinality trees fast. Journal of Experimental Algorithmics (Accepted). A preliminary version appeared in: Proceedings of the 9th Workshop on Algorithm Engineering and Algorithms (ALENEX 08), pages 27–36, SIAM, 2008.

    Google Scholar 

  • Crauser A, Ferragina P (2002) A theoretical and experimental study on the construction of suffix arrays in external memory. Algorithmica 32(1):1–35

    Article  MATH  MathSciNet  Google Scholar 

  • de Fraysseix H, Ossona de Mendez P (2003) On cotree-critical and DFS cotreecritical graphs. Journal of Graph Algorithms and Applications 7(4):411–427

    MATH  MathSciNet  Google Scholar 

  • Dementiev R (2006) Algorithm engineering for large data sets. PhD thesis, Universität des Saarlandes

    Google Scholar 

  • Dementiev R, Kärkkäinen J, Mehnert J, Sanders P (2008a) Better external memory suffix array construction. Journal of Experimental Algorithmics 12:1–24

    Article  Google Scholar 

  • Dementiev R, Kettner L, Sanders P (2008b) Stxxl: standard template library for xxl data sets. Software: Practice & Experience 38(6):589–637

    Article  Google Scholar 

  • Demeter J, Beauheim C, Gollub J, Hernandez-Boussard T, Jin H, Maier D, Matese JC, Nitzberg M, Wymore F, Zachariah ZK, Brown PO, Sherlock G, Ball CA (2007) The Stanford microarray database: implementation of new analysis tools and open source release of software. Nucleic Acids Res 35(Database issue)

    Google Scholar 

  • Dijkstra EW (1959) A note on two problems in connexion with graphs. Numerische Mathematik 1:269–271

    Article  MATH  MathSciNet  Google Scholar 

  • Farach-Colton M, Ferragina P, Muthukrishnan S (2000) On the sorting-complexity of suffix tree construction. Journal of the ACM 47(6):987–1011

    Article  MATH  MathSciNet  Google Scholar 

  • Ferragina P, Manzini G (2002) On compressing and indexing data. Tech. Rep. TR-02-01, University of Pisa

    Google Scholar 

  • Ferragina P, Manzini G, Mäkinen V, Navarro G (2007) Compressed representations of sequences and full-text indexes. ACM Trans Algorithms 3(2):20

    Article  MathSciNet  Google Scholar 

  • Finocchi I, Italiano GF (2004) Sorting and searching in the presence of memory faults (without redundancy). In: Proceedings of the 36th ACM Symposium on Theory of Computing (STOC 04), pp 101–110

    Google Scholar 

  • Frigo M, Leiserson CE, Prokop H, Ramachandran S (1999) Cache-oblivious algorithms. In: Proceedings of the 40th Annual Symposium on Foundations of Computer Science (FOCS 99), IEEE Computer Society, p 285

    Google Scholar 

  • Futamura N, Aluru S, Kurtz S (2001) Parallel suffix sorting. In: Proceedings of the 9th International Conference on Advanced Computing and Communications, Tata McGraw-Hill, pp 76–81

    Google Scholar 

  • Gagarin A, Myrvold W, Chambers J (2005) Forbidden minors and subdivisions for toroidal graphs with no K3;3’s. Electronic Notes in Discrete Mathematics 22:151–156

    Article  Google Scholar 

  • Geary RF, Raman R, Raman V (2004) Succinct ordinal trees with level-ancestor queries. In: Proceedings of the 15th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA 04), SIAM, pp 1–10

    Google Scholar 

  • Goldberg A, Harrelson C (2005) Computing the shortest path: A* search meets graph theory. In: Proceedings of the 16th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA 05), SIAM

    Google Scholar 

  • Goldberg AV, Kaplan H, Werneck R (2005) Reach for A*: Efficient point-to-point shortest path algorithms. Tech. Rep. MSR-TR-2005-132, Microsoft Research (MSR)

    Google Scholar 

  • Goldstein AJ (1963) An efficient and constructive algorithm for testing whether a graph can be embedded in a plane. In: Proceedings of the Graph and Combinatorics Conference ’63

    Google Scholar 

  • Golynski A, Grossi R, Gupta A, Raman R, Rao SS (2007) On the size of succinct indices. In: Proceedings of the 15th Annual European Symposium on Algorithms (ESA 07), Springer, LNCS, vol 4698, pp 371–382

    Google Scholar 

  • Grossi R, Vitter JS (2005) Compressed suffix arrays and suffix trees with applications to text indexing and string matching. SIAM Journal on Computing 35(2):378–407

    Article  MATH  MathSciNet  Google Scholar 

  • Gupta A (2007) Succinct data structures. PhD thesis, Duke University, Durham, NC, USA

    Google Scholar 

  • Gutman R (2004) Reach-based routing: A new approach to shortest path algorithms optimized for road networks. In: Proceedings of the 6th Workshop on Algorithm Engineering and Experiments (ALENEX 04), SIAM, pp 100–111

    Google Scholar 

  • Gutwenger C, Mutzel P (2001) A linear time implementation of SPQR-trees. In: Proceedings of the 8th International Symposium on Graph Drawing (GD 00), Springer, LNCS, vol 1984, pp 77–90

    Google Scholar 

  • Henzinger M (2004) The past, present and future of web search engines (invited talk). In: 31st International Colloquium Automata, Languages and Programming, (ICALP 04), LNCS, vol 3142, p 3

    Google Scholar 

  • Hopcroft JE, Tarjan RE (1973) Dividing a graph into triconnected components. SIAM Journal on Computing 2(3):135–158

    Article  MathSciNet  Google Scholar 

  • Hopcroft JE, Tarjan RE (1974) Efficient planarity testing. Journal of the ACM 21(4):549–568

    Article  MATH  MathSciNet  Google Scholar 

  • Iliopoulos CS, Rytter W (2004) On parallel transformations of suffix arrays into suffix trees. In: Proceedings of the 15th AustralasianWorkshop on Combinatorial Algorithms (AWOCA’04)

    Google Scholar 

  • Jacobson G (1989) Space-efficient static trees and graphs. Symposium on Foundations of Computer Science 0:549–554

    Article  Google Scholar 

  • Jansson J, Sadakane K, Sung WK (2007) Ultra-succinct representation of ordered trees. In: Proceedings of the 18th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA 07), SIAM, pp 575–584

    Google Scholar 

  • Johnson DS (2002) A theoretician’s guide to the experimental analysis of algorithms. In: Data Structures, Near Neighbor Searches, and Methodology: Fifth and Sixth DIMACS Implementation Challenges, AMS, pp 215–250

    Google Scholar 

  • Kärkkäinen J, Sanders P, Burkhardt S (2006) Linear work suffix array construction. Journal of the ACM 53(6):918–936

    Article  MathSciNet  Google Scholar 

  • Khachiyan LG (1979) A polynomial algorithm in linear programming. Dokl Akad Nauk SSSR 244:1093–1096, English translation in Soviet Math. Dokl. 20, 191–194, 1979

    Google Scholar 

  • Kim DK, Sim JS, Park H, Park K (2005) Constructing suffix arrays in linear time. Journal of Discrete Algorithms 3(2–4):126–142

    Article  MATH  MathSciNet  Google Scholar 

  • Klee V, Minty GJ (1972) How good is the simplex algorithm? In: Shisha O (ed) Inequalities III, Academic Press, pp 159–175

    Google Scholar 

  • Knuth DE (1997) Art of Computer Programming, Volumes 1–3. Addison-Wesley Professional

    Google Scholar 

  • Ko P, Aluru S (2005) Space efficient linear time construction of suffix arrays. Journal of Discrete Algorithms 3(2–4):143–156

    Article  MATH  MathSciNet  Google Scholar 

  • Köhler E, Möhring RH, Schilling H (2004) Acceleration of shortest path computation. Article 42, Technische Universität Berlin, Fakultät II Mathematik und Naturwissenschaften

    Google Scholar 

  • Korf I, Yandell M, Bedell J (2003) BLAST. O’Reilly

    Google Scholar 

  • Kulla F, Sanders P (2007) Scalable parallel suffix array construction. Parallel Computing 33(9):605–612

    Article  Google Scholar 

  • Kurtz S (1999) Reducing the space requirement of suffix trees. Software–Practice and Experience 29:1149–1171

    Article  Google Scholar 

  • Lipman D, Pearson W (1985) Rapid and sensitive protein similarity searches. Science 227:1435–1441

    Article  Google Scholar 

  • Mäkinen V (2002) Compact suffix array: a space-efficient full-text index. Fundamenta Informaticae 56(1,2):191–210

    Google Scholar 

  • Mäkinen V, Navarro G (2004) Compressed compact suffix arrays. In: Proceedings of the 15th Annual Symposium on Combinatorial Pattern Matching (CPM 04), Springer, LNCS, vol 3109, pp 420–433

    Google Scholar 

  • Manber U, Myers G (1993) Suffix arrays: A new method for on-line string searches. SIAM Journal on Computing 22(5):935–948

    Article  MATH  MathSciNet  Google Scholar 

  • Manzini G, Ferragina P (2004) Engineering a lightweight suffix array construction algorithm. Algorithmica 40(1):33–50

    Article  MATH  MathSciNet  Google Scholar 

  • McCreight EM (1976) A space-economical suffix tree construction algorithm. Journal of the ACM 23(2):262–272

    Article  MATH  MathSciNet  Google Scholar 

  • Mehlhorn K (1984) Graph algorithms and NP-completeness. Springer

    MATH  Google Scholar 

  • Mehlhorn K, Mutzel P (1996) On the embedding phase of the Hopcroft and Tarjan planarity testing algorithm. Algorithmica 16(2):233–242

    Article  MATH  MathSciNet  Google Scholar 

  • Mehlhorn K, Sanders P (2008) Algorithms and Data Structures: The Basic Toolbox. Springer

    MATH  Google Scholar 

  • Meyer U, Sanders P, Sibeyn JF (eds) (2003) Algorithms for Memory Hierarchies, LNCS, vol 2625. Springer

    MATH  Google Scholar 

  • Navarro G, Mäkinen V (2007) Compressed full-text indexes. ACM Computing Surveys 39(1):2

    Article  Google Scholar 

  • von Neumann J (1993) First draft of a report on the EDVAC. IEEE Annals of the History of Computing 15(4):27–75

    Article  MATH  MathSciNet  Google Scholar 

  • Pearson W, Lipman D (1988) Improved tools for biological sequence comparison. In: Proceedings of the National Academy of Sciences USA, vol 85, pp 2444–2448

    Google Scholar 

  • Polzin T, Daneshmand SV (2001) Improved algorithms for the Steiner problem in networks. Discrete Applied Mathematics 112(1–3):263–300

    Article  MATH  MathSciNet  Google Scholar 

  • Puglisi SJ, Smyth WF, Turpin AH (2007) A taxonomy of suffix array construction algorithms. ACM Computing Surveys 39(2):4

    Article  Google Scholar 

  • Sadakane K (2003) New text indexing functionalities of the compressed suffix arrays. Journal of Algorithms 48(2):294–313

    Article  MATH  MathSciNet  Google Scholar 

  • Sadakane K (2007) Compressed suffix trees with full functionality. Theor Comp Sys 41(4):589–607

    Article  MATH  MathSciNet  Google Scholar 

  • Sanders P, Schultes D (2005) Highway hierarchies hasten exact shortest path queries. In: Proceedings 17th European Symposium on Algorithms (ESA 05), Springer, LNCS, vol 3669, pp 568–579

    Google Scholar 

  • Sanders P, Mehlhorn K, Möhring R, Monien B, Mutzel P, Wagner D (2005) Description of the DFG algorithm engineering priority programme. Tech. rep., DFG, http://www.algorithm-engineering.de/beschreibung. pdf (in German)

  • Ukkonen E (1995) On-line construction of suffix trees. Algorithmica 14(3):249–260

    Article  MATH  MathSciNet  Google Scholar 

  • Vitter JS (2001) External memory algorithms and data structures: Dealing with massive data. ACM Computing Surveys 33(2):209–271

    Article  Google Scholar 

  • Vitter JS, Shriver EAM (1994a) Algorithms for parallel memory I: Two-level memories. Algorithmica 12(2/3):110–147

    Article  MATH  MathSciNet  Google Scholar 

  • Vitter JS, Shriver EAM (1994b) Algorithms for parallel memory II: Hierarchical multilevel memories. Algorithmica 12(2/3):148–169

    Article  MATH  MathSciNet  Google Scholar 

  • Wagner D, Willhalm T (2003) Geometric speed-up techniques for finding shortest paths in large sparse graphs. In: Proceedings of the 11th Annual European Symposium on Algorithms (ESA 03), Springer, LNCS, vol 2832, pp 776–787

    Google Scholar 

  • Weiner P (1973) Linear pattern matching algorithms. In: Proceedings of the 14th Annual Symposium on Switching and Automata Theory (SWAT 73), IEEE Computer Society, pp 1–11

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding authors

Correspondence to Markus Chimani or Karsten Klein .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Chimani, M., Klein, K. (2010). Algorithm Engineering: Concepts and Practice. In: Bartz-Beielstein, T., Chiarandini, M., Paquete, L., Preuss, M. (eds) Experimental Methods for the Analysis of Optimization Algorithms. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02538-9_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-02538-9_6

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-02537-2

  • Online ISBN: 978-3-642-02538-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics