Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
Skip header Section
A Guide to Experimental AlgorithmicsJanuary 2012
Publisher:
  • Cambridge University Press
  • 40 W. 20 St. New York, NY
  • United States
ISBN:978-0-521-17301-8
Published:30 January 2012
Pages:
272
Skip Bibliometrics Section
Reflects downloads up to 09 Nov 2024Bibliometrics
Skip Abstract Section
Abstract

Computational experiments on algorithms can supplement theoretical analysis by showing what algorithms, implementations, and speed-up methods work best for specific machines or problems. This book guides the reader through the nuts and bolts of the major experimental questions: What should I measure? What inputs should I test? How do I analyze the data? To answer these questions the book draws on ideas from algorithm design and analysis, computer systems, and statistics and data analysis. The wide-ranging discussion includes a tutorial on system clocks and CPU timers, a survey of strategies for tuning algorithms and data structures, a cookbook of methods for generating random combinatorial inputs, and a demonstration of variance reduction techniques. Numerous case studies and examples show how to apply these concepts. All the necessary concepts in computer architecture and data analysis are covered so that the book can be used by anyone who has taken a course or two in data structures and algorithms. A companion website, AlgLab (www.cs.amherst.edu/alglab) contains downloadable files, programs, and tools for use in experimental projects.

Cited By

  1. ACM
    Balcan M, Deblasio D, Dick T, Kingsford C, Sandholm T and Vitercik E (2024). How Much Data Is Sufficient to Learn High-Performing Algorithms?, Journal of the ACM, 71:5, (1-58), Online publication date: 31-Oct-2024.
  2. ACM
    McGeoch C and Farré P (2023). Milestones on the Quantum Utility Highway: Quantum Annealing Case Study, ACM Transactions on Quantum Computing, 5:1, (1-30), Online publication date: 31-Mar-2024.
  3. ACM
    Smith-Miles K and Muñoz M (2022). Instance Space Analysis for Algorithm Testing: Methodology and Software Tools, ACM Computing Surveys, 55:12, (1-31), Online publication date: 31-Dec-2024.
  4. Yan F, Venegas-Andraca S and Hirota K (2023). Toward implementing efficient image processing algorithms on quantum computers, Soft Computing - A Fusion of Foundations, Methodologies and Applications, 27:18, (13115-13127), Online publication date: 1-Sep-2023.
  5. Díaz Álvarez Y, Hidalgo Reyes M, Lagunes Barradas V, Pichardo Lagunas O and Martínez Seis B A Hybrid Methodology Based on CRISP-DM and TDSP for the Execution of Preprocessing Tasks in Mexican Environmental Laws Advances in Computational Intelligence, (68-82)
  6. Shindler M, Goodrich M, Gila O and Dillencourt M (2022). Beyond big O, Journal of Computing Sciences in Colleges, 37:10, (23-36), Online publication date: 1-Apr-2022.
  7. ACM
    Axtmann M, Witt S, Ferizovic D and Sanders P (2022). Engineering In-place (Shared-memory) Sorting Algorithms, ACM Transactions on Parallel Computing, 9:1, (1-62), Online publication date: 31-Mar-2022.
  8. ACM
    López-ibáñez M, Branke J and Paquete L (2021). Reproducibility in Evolutionary Computation, ACM Transactions on Evolutionary Learning and Optimization, 1:4, (1-21), Online publication date: 31-Dec-2022.
  9. Banijamali A, Kuvaja P, Oivo M and Jamshidi P Kuksa: Self-adaptive Microservices in Automotive Systems Product-Focused Software Process Improvement, (367-384)
  10. Jordan S, Chandak Y, Cohen D, Zhang M and Thomas P Evaluating the performance of reinforcement learning algorithms Proceedings of the 37th International Conference on Machine Learning, (4962-4973)
  11. ACM
    Nehéz M and Bartalos P Complexity Aspects of Unstructured Sparse Graph Representation Proceedings of the 9th Balkan Conference on Informatics, (1-3)
  12. Eggensperger K, Lindauer M and Hutter F (2019). Pitfalls and best practices in algorithm configuration, Journal of Artificial Intelligence Research, 64:1, (861-893), Online publication date: 1-Jan-2019.
  13. Eberhardinger B, Ponsar H, Klumpp D and Reif W Measuring and Evaluating the Performance of Self-Organization Mechanisms Within Collective Adaptive Systems Leveraging Applications of Formal Methods, Verification and Validation. Distributed Systems, (202-220)
  14. Cohen J, Rodrigues L and Duarte E (2017). Parallel cut tree algorithms, Journal of Parallel and Distributed Computing, 109:C, (1-14), Online publication date: 1-Nov-2017.
  15. ACM
    Nehéz M, Bernát D and Lelovský M Estimation of the domination number in sparse random graphs and applications Proceedings of the Fifth European Conference on the Engineering of Computer-Based Systems, (1-9)
  16. Bartz-Beielstein T and Zaefferer M (2017). Model-based methods for continuous and discrete global optimization, Applied Soft Computing, 55:C, (154-167), Online publication date: 1-Jun-2017.
  17. Fischer A and de Meer H (2016). Generating Virtual Network Embedding Problems With Guaranteed Solutions, IEEE Transactions on Network and Service Management, 13:3, (504-517), Online publication date: 1-Sep-2016.
  18. ACM
    Brooks A, Krebs L and Paulsen B (2016). A Comparison of Sorting Times between Java 8 and Parallel Colt, ACM SIGSOFT Software Engineering Notes, 41:4, (1-5), Online publication date: 19-Aug-2016.
  19. ACM
    Mniszewski S, Junghans C, Voter A, Perez D and Eidenbenz S (2015). TADSim, ACM Transactions on Modeling and Computer Simulation, 25:3, (1-26), Online publication date: 7-May-2015.
  20. Bentley J Selecting Data for Experiments Proceedings of the 13th International Symposium on Experimental Algorithms - Volume 8504, (1-9)
  21. ACM
    Andrade C, Miyazawa F and Resende M Evolutionary algorithm for the k-interconnected multi-depot multi-traveling salesmen problem Proceedings of the 15th annual conference on Genetic and evolutionary computation, (463-470)
Contributors
  • D-Wave Systems Inc.

Reviews

Jeffrey B. Putnam

Classic descriptions of algorithms usually involve mathematical analysis and give us big-O-style results, but this may or may not tell us much about how the algorithms perform in actual use. The data involved may be small enough that the limiting cases never kick in, or the algorithm may be applied to data that has properties that work unusually poorly or unusually well (sorting algorithms often have very different performance characteristics for data that is almost sorted versus data that is random). Thus, performing experiments to test the behavior of an algorithm is almost always a good idea. This is true whether or not an analysis is present (to verify the math, to explore behavior for specific kinds of data, or to determine the behavior for small values of N ). In the latter case, experiments might help guide such mathematical analysis. Experimental analysis can also help incrementally improve an algorithm. This book provides guidelines and suggestions for performing experimental algorithmic analysis. It contains many examples and includes links to a companion Web site with code for some specific experiments (http://www.cs.amherst.edu/alglab/). The book is divided into seven chapters: (1) "Introduction"-what the book is about and how to use it. (2) "A Plan of Attack"-what an experiment is, what it intends to find out, and how to design experiments. (3) "What to Measure"-Is the time performance the most important part, or is the goodness of the result the goal (especially in heuristic algorithms)__ __ (4) "Tuning Algorithms, Tuning Code"-some hints on reducing the amount of work done and managing the tuning process. (5) "The Toolbox"-pointers to some online toolboxes and algorithm-related Web repositories, and how to generate random input as needed (a notoriously tricky process). (6) "Creating Analysis-Friendly Data"-how to reduce variance in output and simulation shortcuts (which can make it possible to do more experiments in the time allotted). (7) "Data Analysis"-brief coverage of useful statistics and graphical data presentation. The book seems mostly intended for those doing experimental algorithmics in academic settings. While practitioners can certainly learn a good deal from it, the examples may not be ideal for such readers. As such, it might serve as supplemental material in a graduate-level class, but might not suit undergraduates so well. Furthermore, some of the suggestions in chapter 6 might change the behavior of the algorithms sufficiently (by changing the way data or instructions are cached, or other factors) so that the analysis is no longer analyzing the behavior being studied but rather the added code. A few more examples aimed at the practitioner might have been nice. For instance, since sorting is familiar to all and most know the results of the formal analyses, a detailed discussion of a few sorting algorithms on different kinds of data (including the influence of hardware factors such as caches and branch prediction) would have been a useful early chapter. Running references to these examples would also have helped clarify some of the later chapters. The book is a good read with generally good examples, and is short enough to be easily digested. It is probably not long enough to use as a primary text in a graduate-level class, but a class primarily focused on mathematical tools for algorithmic analysis might find it useful. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Recommendations