Rod Hilton's Reviews > Algorithm Design

Algorithm Design by Jon Kleinberg
Rate this book
Clear rating

's review
Apr 14, 2011

really liked it
bookshelves: compsci, textbooks
Read from December 20, 2011 to February 15, 2012

It's an Algorithms book. So I know what you're thinking "why would I read this book, when the standard text on Algorithms is CLRS, which is in fact so popular that nobody even refers to it by name, but simply as 'CLRS'?" Bear with me here; Algorithm Design is better than CLRS.

Now, it's not as COMPREHENSIVE. If you want a reference book to sit on your desk for later use, by all means use CLRS. CLRS is a great book to pick up, flip to the index, find the thing you're curious about, and read the relevant section on it. Virtually everything you encounter in Algorithms is in that book.

Algorithm Design isn't that way. There's tons of stuff in CLRS that isn't even touched on in Algorithm Design. Basic data structures like stacks, queues, heaps, trees, and such are not taught at all. You're expected to already be familiar with these concepts, since they should be covered in a Data Structures course, not an Algorithms course.

Algorithm Design covers exactly 7 things:

1) Basic analysis techniques
2) Graphs
3) Greedy Algorithms
4) Dynamic Programming
5) Divide and Conquer Algorithms
6) Network flows
7) Computational intractability and complexity.

That's it. These topics tend to show up in graduate courses more than undergrad courses, so if you're an undergrad, this probably isn't the right book for you. But if you're taking graduate algorithms, this book is fantastic. The reason why is that Algorithm Design doesn't merely cover those 7 topics, it annihilates them.

The presentation of each topic is so well-covered, so perfectly-paced, so thorough, and so readable, that you almost forget you're reading a textbook. Topics are introduced slowly and gradually. The authors write in a readable style unmatched by any other algorithms book I've ever read. While you are reading, the authors may make a claim. As soon as they do this, they immediately prove it true. The proofs are just as readable and followable as the rest of the text. I never felt lost or confused with this book, it was like having an excellent professor close by at all times. Each section is packed with examples - it's not enough to prove something true, Algorithm Design also delves into enough examples that it makes things extremely clear.

My only real complaint is that, in the name of readability, sometimes the book authors deviate a bit too far from standard terminology. As a quick example, proving a Greedy Algorithm to be correct, one must illustrate that it exhibits a) The Greedy-Choice Property and b) Optimal Substructure. These names don't really tell you what they are, so the authors refer to them as the "staying ahead" properties. This works well within the confines of the book because the argument is that the greedy algorithm "stays ahead" of the optimal solution, but I can easily imagine a student using that terminology getting confused looks from peers who learned with other books.

Otherwise, AD is a fantastic book that I cannot recommend highly enough for people studying algorithms within the confines of the limited subset of what the book covers.
9 likes · flag

Sign into Goodreads to see if any of your friends have read Algorithm Design.
Sign In »

Comments (showing 1-1 of 1) (1 new)

dateDown arrow    newest »

message 1: by Jason (new) - added it

Jason Gordon Hey man, thanks very much for the review this was helpful. I'm a philosopher who has been exposed to some math (mathematical logic, advanced logic, and probability theory) who's jumping into computer programming -- hopefully computational linguistics. You mentioned Cormen's book in your review and I was wondering whether or not this book, Algorithm Design, is a good companion piece to Cormen after going over the basic stuff. If you don't mind, I'll follow you on here to see what programming books you're reading. Cheers.

back to top