{'fraction_non_alphanumeric': 0.016149068322981366, 'fraction_numerical': 0.0, 'mean_word_length': 5.586912065439673, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Review of: A Guide to Experimental Algorithmics by Catherine C. McGeoch

The foundational work in the field of algorithm design and analysis has been with a theoretical approach, designing in pseudo code and analyzing the algorithm’s asymptotic bounds. Conducting experiments can help researchers gain insight into the practical efficiency of an algorithm. Insights from laboratory experiments can be more precise and realistic than pure theoretical analysis provides, and also more general than field experiments can produce. Experimental algorithmics combines the coding and measurement tools of the empiricist with the abstraction-based approach of the theoretician. The experimental approach to analyzing an algorithm complements the other approaches to understanding algorithmic performance. Yet, it does not replace them. The field of experimental algorithmics is intended to bridge the gap between theory and practice in the design of algorithms. Often, theoretical advances in computer science are not as useful as purported to be. Similarly, it is often the case that an algorithm does not seem optimally efficient from a theoretical standpoint, yet it is useful in practice. The burgeoning field of experimental algorithmics provides a common ground for theoreticians and practitioners to exchange insights and discoveries about algorithm and program performance. Computational experiments on algorithms can supplement theoretical analysis by showing which algorithms, implementations, and speed-up methods are best suited for specific problems, not just in theory but also in practice. This book guides the reader through the process of designing experiments to analyze algorithms, from deciding what properties to measure and what inputs to test to understanding how to analyze the data gathered. This book draws on ideas from the fields of algorithm design and analysis, computer systems, and statistics and data analysis. This book’s 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. The book is sprinkled with extensive case studies and examples that show how to properly apply these concepts. Its audience is intended to include anyone who is already equipped with some understanding of data structures and algorithms. Thus, any prerequisite understanding of computer architecture and data analysis are covered in the text. Experimental algorithmics is intended to stimulate research in algorithms based upon implementation and experimentation. It seeks to encourage the testing, evaluation and reuse of complex theoretical algorithms and data structures. It aims to distribute programs that implement state-of-the-art algorithms, along with testbeds, throughout the research community and to provide a repository of useful programs and packages to both researchers and practitioners. Until focus was placed on experimental algorithmics, repositories were not readily available, and most researchers were faced with programming their own versions of wellknown algorithms and data structures.