Introduction to Algorithms

Author: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Publisher: MIT Press
Pages: 1312
ISBN: 978-0262033848
Aimed at: Computer science students
Rating: 5
Pros: Easy to read while remaining rigorous
Cons: Too big to read comfortably!
Reviewed by: Mike James

This is a classic and a must read if you are interested in programming.  It is an academic text in the sense that it would, and does, make a good basis for a course on algorithms but it is still very readable.

The second chapter presents various sorting algorithms as a model for the following chapters. Pseudo code is used throughout and algorithms are presented with plenty of discussion as well as a formal analysis.

Banner

Chapter Three is an introduction to asymptotic notation - big O and all that. There is a certain amount of mathematical sophistication assumed but only up to the level that the reader isn't frightened of transitivity, reflexivity and monotonicity - all defined within the book. Chapter Four deals with the core of advanced algorithm design - divide and conquer - or recursive techniques. Then randomized algorithms raise the mathematical level with the need to understand probability and integrals.

Part Two is all about sorting and order statistics but it goes well beyond the Heap and Quick sort to deal with medians and other order statistics. Part Three takes a small detour to look at data structures covering basic data structures including hash tables and then moving on to  binary trees and red-black trees. Part Four is about a collection of algorithms that could be called advanced but probably "specialised" is more accurate. Dynamic programming is the main topic including its simplification to "greedy" algorithms. Part Five is about advanced data structures including B Trees, Fibonacci Heaps and  van Emde Boas Trees. Part Six deals with classical graph algorithms - searching, minimum spanning tree, and so on finishing with a look at flow networks.

 

 

The final part is a collection of topics that don't really fit anywhere special - multithreading, matrix algorithms, linear programming, polynomial evaluation and the FFT, number theory, string matching, computational geometry, NP completeness and approximation. There is also an appendix that deals with the basics of the mathematics used in the book.

When you survey the list of topics you can't help but think that the study of algorithms is a multidisciplinary one and not everything is going to be relevant to any particular programmer. The relegation of NP completeness to Chapter 34 also indicates that the treatment isn't particularly oriented towards computer science topics. It does attempt to focus on practical algorithms in their natural context while retaining rigorous approach to their analysis.

As well as forming a good foundation for a first course on algorithms and on data structures it is also very suitable for individual study. It is a big to large a tome to be a comfortable read but if you have missed out on a formal introduction to algorithms and data structures this is a good place to start and the investment will be repaid as you use the book as a reference work.

Related Reviews

Algorithms Unlocked

Banner


Android in Action

 

Author: Frank Ableson & Robi Sen
Publisher: Manning, 2nd Ed 2011
Pages: 592
ISBN: 978-1935182726
Aimed at: Experienced Java programmers
Rating: 5
Pros: An advanced treatment of Android
Cons: Not suitable for the beginner
Reviewed by: Harry Fairhead

This is a book that will be appreciated by the ri [ ... ]



Android Recipes (2e)

Author: Dave Smith & Jeff Friesen
Publisher: Addison-Wesley, 2010
Pages: 933
ISBN: 978-1430246145
Audience: Intermediate level
Rating: 4
Reviewer: Harry Fairhead

Android is a complex and generally poorly explained platform - can a book of recipes help?


More Reviews

<ASIN:0262518805>

Last Updated ( Saturday, 19 October 2013 )
 
 

   
RSS feed of book reviews only
I Programmer Book Reviews
RSS feed of all content
I Programmer Book Reviews
Copyright © 2014 i-programmer.info. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.