Friday, October 22, 2010

Introduction to Algorithms, Third Edition Decide Now


I used this book as a text when I taught algorithms to computer science majors and the only regret I ever had was that there was not enough time to cover all of it. With over 1,100 pages of material, trying to squeeze it all into one semester was unreasonable. Furthermore, I never had a student complain about the content, although being students, they did complain about the (physical) weight. My students found it readable; the expressions of the algorithms are in mathematical notation and a standard pseudocode. Generally speaking, a background in discrete mathematics, specifically summation notation, is needed throughout. Other necessary material to help in understanding specific sections is graph theory, linear algebra, set theory, combinatorics, probability and number theory.
Choosing an algorithm in theory versus choosing one in practice is often contradictory and that is an occasional point of emphasis in this book. Some algorithms are extremely fast nearly all the time yet incredibly slow in some pathological conditions. Many of my students programmed for an avionics company and their background led to some very informative conversations. In their work, predictability of the speed of execution is often more critical than being fast and some generally fast algorithms are banned.
The breadth of coverage of algorithms is extensive, the chapter headings are:

*) The role of algorithms in computing
*) Getting started
*) Growth of functions
*) Divide-and-conquer
*) Probabilistic analysis and randomized algorithms
*) Heapsort
*) Quicksort
*) Sorting in linear time
*) Medians and order statistics
*) Elementary data structures
*) Hash tables
*) Binary search trees
*) Red-black trees
*) Augmenting data structures
*) Dynamic programming
*) Greedy algorithms
*) Amortized analysis
*) B-trees
*) Fibonacci heaps
*) van Emde Boas trees
*) Data structures for disjoint sets
*) Elementary graph algorithms
*) Minimum spanning trees
*) Single-source shortest paths
*) All-pairs shortest paths
*) Maximum flow
*) Multithreaded algorithms
*) Matrix operations
*) Linear programming
*) Polynomials and the FFT
*) Number-theoretic algorithms
*) String matching
*) Computational geometry
*) NP-completeness
*) Approximation algorithms

The depth of the explanations is great enough that this book can be used as a reference and resource for programmers that need to learn the performance details of an algorithm. Coded implementations of most algorithms are available online but when you need to thoroughly understand an algorithm, if it is found in this book then with effort, it can be understood.
Get more detail about Introduction to Algorithms, Third Edition.

No comments:

Post a Comment