21
$\begingroup$

I've finished most of the material in Cormen's Intro to Algorithms book and I am looking for an algorithms book that covers material beyond Corman's book. Are there any recommendations?

NOTE: I asked this on stackoverflow but wasn't all too happy with the answer.

NOTE: Looking at most of the comments I think ideally I would like to find a book that would cover the material of the the 787 course in this course description.

$\endgroup$
  • 1
    $\begingroup$ see this $\endgroup$ – Kaveh Jun 26 '12 at 3:50
  • 1
    $\begingroup$ @Kaveh I've read Tardos already. $\endgroup$ – Eugene Jun 26 '12 at 3:56
  • 1
    $\begingroup$ "Introduction to Algorithms" covers almost everything in the scope of algorithm design and analysis, and is the world's most popular textbook for both undergraduate and graduate level courses. Each chapter provides a terse introduction to the related materials, and there is also a very long list of references for further study at the end. If you feel you need a deeper understanding of a certain topic, e.g. graph algorithms, complexity theory, etc, your best bet is to look at the book's bibliography, and if it does not help, you may also seek advise from domain experts in that particular area. $\endgroup$ – Ali Jun 26 '12 at 3:59
  • 12
    $\begingroup$ "Introduction to Algorithms" covers almost everything in the scope of algorithm design and analysis — Ah, if only that were true. $\endgroup$ – JeffE Jun 26 '12 at 17:53
  • 5
    $\begingroup$ One book I really like is Introduction to Algorithms: A Creative Approach, by Udi Manber. Unlike most other textbooks, he teaches how to come up with algorithms on your own. For each algorithm covered in the textbook, he provides an increasing progression of sections, the first one describing the most obvious approach and each successive attempt rectifying the mistakes of the previous one. It's an excellent text in my opinion. $\endgroup$ – Vinayak Pathak Jun 26 '12 at 23:12
9
$\begingroup$
I am looking for an algorithms book that covers material beyond Corman's book.

This can be answered in numerous different ways, depending on what you want "beyond". I would recommend asking much more specific directions, as you are more likely to get specific answers that are helpful. As for some general guidance though:

  • You may find a handful of general books that explore general algorithmic topics in more depth than Corman, but for the most part, you need to start specialising if the book is going to be significantly more in depth. Otherwise it is likely to be bloated and lacking in usefulness.
  • So, instead look for specific topics. There is plenty of advanced material if you focus on specific topics. Are you intersted in:
    • sorting algorithms?
    • string algorithms?
    • number theoretic algorithms?
    • matrix algorithms?
    • graph algorithms?
    • geometric algorithms?
    • quantum algorithms?
    • stochastic/randomised algorithms?
    • linear programming?
    • models of computation?
    • foundational complexity theory and algorithmics?
  • If you want to understand how to derive your own algorithms, focus on understanding the known data structures used in the problem space you are investgating (so, get good depth of existing knowledge) and look to have a good understanding of complexity theory and models of computation. These will give good intuitive feeling of what is possible for a given problem, and what approaches will likely have better success, even if you have a hard time proving lower bounds formally.

Books like Papadimitriou's several or Arora/Barak on Complexity Theory would be my suggestion for follow up to Corman to understand better what algorithms are possible and build up some intuition, but I would just look to modern overview papers on particular areas and look to graduate and research level books on more specific topics if you want familiarity with the modern level of understanding.

$\endgroup$
  • 1
    $\begingroup$ You ask a very good question. I am interested in number theoretic algorithms so I've already looked at Bach and Shallit's Algorithmic Number Theory. I'm looking for books that will build up my algorithmic development techniques beyond Cormen though. $\endgroup$ – Eugene Jun 27 '12 at 1:30
  • 1
    $\begingroup$ I'm not looking for depth, but breadth. Not foundational complexity theory, but an introduction to algorithms/data structures I hear about but aren't in CLRS (or only present as problems) to add to the programming arsenal of things I've heard about; stuff like: A* search, Best First Search, Bloom filters, file/image compression, Burstsort, Hidden Markov Model, Naive Bayes classifiers, quantum algorithms, skip lists, TimSort, Treaps, Tries, Voronoi diagram algorithms, etc. Even if its just a collection of interesting articles on variety of topics like Bentley's Programming Pearls. $\endgroup$ – dr jimbob Dec 10 '12 at 16:52
16
$\begingroup$

As others have noted, books about (advanced) algorithms are best selected by topic. A good but heavy-weight general reference with rigorous analysis is probably The Art of Computer Programming by Knuth.

As for analysis techniques, you may be interested in An Introduction to the Analysis of Algorithms by Sedgewick and Flajolet, and Algorithmic Combinatorics by Flajolet and Sedgewick for more theory in the same direction.

For approaches on tackling hard problems, see Algorithmics for Hard Problems by Hromkovič.

$\endgroup$
5
$\begingroup$

Have you looked at Handbook of Theoretical Computer Science

If you want to move beyond imperative algorithms and move into functional programming, take a look at Purely Functional Data Structures. I know the title says data structures but the algorithms in the book may open your eyes to a different way of programming.

EDIT

I took a look at the course description for CS 787, and current classes

It notes

We will mainly use papers from the literature. These will be made available either as handouts or via the web. Several books on algorithms will be put on reserve at Wendt library.

If it were me I would contact the instructor directory. :)

$\endgroup$
  • $\begingroup$ No I haven't seen the handbook. Thanks for the suggestion! $\endgroup$ – Eugene Jun 27 '12 at 1:31
  • $\begingroup$ Wow. I wasn't able to find the course info. Thanks for the link. $\endgroup$ – Eugene Jun 29 '12 at 2:54
-2
$\begingroup$

The computer algorithms are very complex and hard to understand topic, so there is no best book, i.e. just one book which will explain you everything. You need to read couple of them to get hold of this topic.

here are my 2 cents based upon my 10 years of programming and attending numerous interviews:

  1. Algorithm Design Manual by Steven S. Skiena
  2. Algorithms (http://algs4.cs.princeton.edu/home/) by Sedgwick
  3. Introduction to Algorithms By Thomas Cormen
  4. Algorithms for Interviews by Adnan Aziz
  5. Python Algorithms: Mastering Basic Algorithms in the Python Language
  6. Algorithms Unlocked by Thomas Cormen

Reference:

$\endgroup$
  • 4
    $\begingroup$ And why do you recommend these? $\endgroup$ – Raphael Jul 5 '16 at 8:23
  • 3
    $\begingroup$ In particular, why are you recommending Cormen et al.'s "Introduction to Algorithms" in response to a question asking for books that go beyond that book. $\endgroup$ – David Richerby Jul 5 '16 at 10:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.