Is Algorithm Design Manual a good book for a beginner in algorithms?

I bought Algorithm Design Manual recently and have only gone though first few chapters. It is a great book but in my opinion (from what I have read so far):

(1) it is no less dense than Cormen's.

(2) it is more about practical implementations of algorithms than learning algorithms.


I would recommend against "Algorithm Design Manual" for your purposes and for skimming Cormen or Wikipedia instead.

After a short introduction to basic algorithmic topics, pages 171-437 don't really teach you neither about how algorithms work nor how to design them, but more about what algorithms exist and where to find their implementations (sometimes it refers you to implementations you will need to buy, like in the section on Linear Programming)

For example there are 3 pages on matrix multiplication, which give a few examples of what it is useful for, present the naive O(N3) algorithm, and mention there are better algorithms like Strassen's O(N2.81) (without describing the algorithm), and recommend that you to use the LAPACK library for it.

So if you want to learn how algorithms work, rather than what algorithms exist and where to find their implementations, I again, recommend against "Algorithm Design Manual".


I would certainly recommend the Skiena book. You've started to learn about algorithms, you should start to learn algorithms too.

To whoever edited this answer and replaced the last occurrence of the word algorithms with the word mathematics: I meant algorithms when I wrote this answer, I still mean algorithms, replacing the word with mathematics materially changes the answer. If you think that mathematics is what OP should learn, post your own answer to that effect. If you had troubled to read the commentary below you would understand why I chose the word algorithms and not mathematics.


If you can afford it (or your employer pays for it), and you program in Java, I'd suggest: Data Structures and Algorithms in Java. It covers the same topics you find in other books, but it makes it easy to apply an understand if your used to programming in Java. For example, C++ data structure books don't usually spend a great deal of time on hashes, as structures based on hashes aren't as common in C++ programming. In Java, however, hashes are very common, and every object has a hashCode method. The book combines a good mix of theory and practice.

alt text http://ecx.images-amazon.com/images/I/51w6USIIpxL._SL160_.jpg

Tags:

Algorithm