Next: OnLine Resources
Up: Algorithmic Resources
Previous: Data Sources
There have emerged a number of excellent textbooks in the design and analysis
of combinatorial algorithms.
Below we point out several of our favorites.
In this book, we have shied away from giving a detailed exposition or analysis
of many algorithms, for our primary mission is to help the reader identify
their problem and point them to solutions.
The reader is encouraged to turn to these sources for more detail once
they have found the name of what they are looking for.
Only general algorithm books are discussed here.
Books on specific subareas of algorithms are reviewed at the head of the
relevant catalog chapter.

Cormen, Leiserson, and Rivest [CLR90] 
This is the one (other) book on algorithms you must own, with
its comprehensive treatment
of most of the problems we discuss here, including data structures, graph
algorithms, and seminumerical algorithms.

Baase [Baa88] 
This book is more accessible than [CLR90] for those without
a strong mathematical background.
It covers standard sorting, string, and graph algorithms, NPcompleteness,
and more exotically, an introduction to parallel algorithms.

Manber [Man89] 
Built around the unconventional notion that induction is the fundamental
paradigm of algorithm design, this book is especially good at teaching
techniques for designing algorithms and has an outstanding collection of
problems.
Highly recommended.

van Leeuwen [vL90b] 
Not a textbook, but a collection of indepth surveys on the state of the
art in algorithms and computational complexity.
Although the emphasis is on theoretical results, this book is perhaps the
best single reference to point you to what is known about any given problem.

Syslo, Deo, and Kowalik [SDK83] 
This book includes printed Pascal implementations of 28 algorithms for
discrete optimization problems, including
mathematical programming, network optimization, and traditional operations
research problems
such as knapsack and TSP.
Each algorithm is described in the book, and experimental timings (on a
1980s vintage machine) are provided.
These codes are now available by ftp, as discussed in Section .
Despite its age, this remains
a useful reference, particularly with the programs
now available online.

Moret and Shapiro [MS91]  This algorithms text distinguishes
itself by including Pascal implementations of all algorithms and
by its careful
experimental comparisons of different algorithms for such problems as
sorting and minimum spanning tree.
It provides a useful model for how to properly do empirical algorithm
analysis.
These programs are available by ftp 
see Section for details.

Knuth [Knu94] 
This book presents the implementation of the Stanford GraphBase, a
collection of programs for constructing different graphs and working with
them.
See Section for details.
It is very intriguing to browse.

Aho, Hopcroft, and Ullman [AHU74] 
This was the first modern algorithms book, and it has had an enormous influence
on how algorithms should be taught.
Although it is now dated, it remains a useful guide to certain topics
in vogue in the early 1970s, such as matrix multiplication, the fast
Fourier transform, and arithmetic algorithms.
A more elementary edition, focusing on data structures, is [AHU83].

Rawlins [Raw92] 
This may well be the best selfstudy book available on algorithms.
It is fun and inspiring, with builtin pauses so the reader can
make sure they understand what is going on.
The only drawback is a somewhat idiosyncratic set of topics, so
you will miss certain important topics.
But you can get that from here.
Rawlins's book can teach you the proper mindset to think about algorithms.

Papadimitriou and Steiglitz [PS82] 
This book has more of an operations research emphasis than most algorithms
texts, with a good coverage of mathematical programming, network flow,
and combinatorial search.

Lawler [Law76] 
Particularly useful for its coverage of matroid theory, this book also
provides a thorough treatment of the network flow, matching, and shortest path
algorithms known by the mid1970s.

Binstock and Rex [BR95] 
Although not a textbook, it includes
C language implementations of an
idiosyncratic variety of algorithms for programmers.
Disks containing the code are available for a modest fee.
The most interesting implementations are string and pattern matching
algorithms, time and date routines, an
arbitraryprecision calculator, and a nice section on checksums and
cyclicredundancy checks.
Next: OnLine Resources
Up: Algorithmic Resources
Previous: Data Sources
Algorithms
Mon Jun 2 23:33:50 EDT 1997