Elsevier

Computer Science Review

Volume 3, Issue 1, February 2009, Pages 47-51
Computer Science Review

Book review
Algorithms and Data Structures: The Basic Toolbox, Kurt Mehlhorn, Peter Sanders (Eds.), Springer, Berlin, Heidelberg (2008), p. 300 pages, ISBN: 978-3-540-77977-3

https://doi.org/10.1016/j.cosrev.2009.01.001Get rights and content

Introduction

The design and analysis of algorithms and data structures is a fundamental skill of any computer scientist. All Computer Science curricula include courses on algorithmics, which often include Introduction to Algorithms by Cormen, Leiserson, Rivest and Stein [1] and Algorithms in C++/Java by Sedgewick [2] as basic references. Other popular text books in the area also include Fundamentals of Algorithmics by Brassard and Bratley [3], Data Structures and Algorithm Analysis in C++/Java by Weiss [4], Data Structures and Algorithms by Aho, Hopcroft and Ullman [5], Fundamentals of Data Structures by Horowitz and Sahni [6], as well as the recently published Algorithm Design by Kleinberg and Tardos [7] and Algorithms by Dasgupta, Papadimitriou and Vazirani [8] (see [9] for a review on the two latter books).

This review considers a newcomer in this area, the book Algorithms and Data Structures: The Basic Toolbox by Kurt Mehlhorn and Peter Sanders published by Springer in 2008, and which will be cited here as [10]. Prof. Mehlhorn is director of the Max-Plank-Institut für Informatik at Saarbrücken and is well known for his work on shortest path algorithms, perfect hashing, parallel algorithms, and computational geometry, as well as being one of the developers of LEDA [11] and having written several monographs [12]. Prof. Sanders works at the Universität Karlsruhe and is well known for his research in algorithm theory and algorithm engineering, in particular in parallel processing and memory hierarchies.

The [10] book is advertised as a concise introduction addressed to students and professionals familiar with programming and basic mathematical language. It addresses sorting, selection, arrays, lists, hash tables, maps, priority queues, graphs, and optimization. As such, the topics covered in this book are similar, but not identical, to the ones in [1], [2], but it is noticeable that [10] is three/four times shorter than them. The book contents also overlap with the previously mentioned text books, but it is still much shorter than these ([8] is only slightly longer).

In light of the above, it is only natural to ask whether this substantial decrease in volume comes at an expense of rigor, or a reduction of width or depth. Or maybe is it the case that the prerequisites of this book are higher than claimed? And, last but not least, one may also wonder in which measure this new book could serve as a replacement for the previously mentioned titles.

In order to try to answer these questions, this review goes first through a description of the general structure and the overall approach of the book. Then, chapter by chapter, the reviewer presents the topics that according to him are the most significative and, at the same time analyzes the contents and approach of the book from his own point of view. From these, the conclusions are drawn.

Section snippets

General structure

The book is 300 pages long. It begins with an “appetizer” chapter designed to generate interest in the study of algorithms, and to lay out the main principles of the book. Then follows a “traditional” introductory chapter, where all the fundamental concepts needed in the remainder of the book are defined. Then, the main chapters of the book are organized according to abstract data types (sequences, associative arrays, priority queues, sorted sequences, and graphs) or to algorithmic tasks

Appetizer: Integer arithmetics

The first chapter of the book starts with several algorithms on integer arithmetic together with their analysis. As the authors call it, this is an appetizer, to stimulate the interest in algorithmics, as well as to lay out the general approach of the book. Addition, school multiplication, and Karatsuba multiplication algorithms are considered. For the latter, a recurrence is solved to get an upper bound on its required number of primitive operations. This chapter also introduces checkers,

Conclusions

The basic characteristic of this book is its concision. The topics and scope covered in this book are similar to the ones mentioned in the Introduction. However, unlike those, the book under review is written in a succinct and terse style that is closer to a research paper than to a text book.

On the contrary to what the toolbox term in the subtitle of the book could suggest, the book is not a naive collection of data structures and algorithms. Rather, the book develops the basic fundamental

References (12)

  • M. Dietzfelbinger

    Book review for algorithms and algorithm design

    Computer Science Review

    (2008)
  • T.H. Cormen et al.

    Introduction to Algorithms

    (2001)
  • R. Sedgewick

    Algorithms in C++

    (2002)
  • G. Brassard et al.

    Fundamentals of Algorithmics

    (1996)
  • M.A. Weiss

    Data Structures and Algorithm Analysis in C++

    (2007)
  • A.V. Aho et al.

    Data Structures and Algorithms

    (1983)
There are more references available in the full text version of this article.

Cited by (0)

View full text