The Full Spectrum of Modern Algorithms in Introduction to Algorithms

Did you know, some books on algorithms are rigorous but incomplete? Others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers.

Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.The first edition became a widely used text in universities worldwide as well as the standard reference for professionals.

The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming. The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, substantial additions to the chapter on recurrence (now called "Divide-and-Conquer"), and an appendix on matrices. It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many new exercises and problems have been added for this edition. As of the third edition, this textbook is published exclusively by the MIT Press.

As a CS student using this book as a textbook for an algorithms class, this book is fantastic. This book (colloquially known as CLRS) and Algorithm Design (known as KT) are the two most popular textbooks on the analysis and design of algorithms. Compared to KT and other algorithm books, CLRS is definitely more mathematical, with a lot of emphasis on proving correctness and time complexity of algorithms.

To illustrate, CLRS begins with a simple sorting algorithm (insertion sort) and an introduction to running time analysis, defining big-O, big-omega, theta, little-O, and little-omega notation. For example, if an algorithm is O(n^2), that means that in the long run the algorithm will take an amount of time which is (at most) quadratic in the size of the input. In contrast, KT starts with five problems which are a lot more advanced than sorting, and then goes into running time analysis, but it is not as mathematically involved as CLRS.

In general, CLRS focuses less on the algorithms themselves and more on the mathematics behind them. Before going into this book, you'll need to have mastered basic proof techniques (especially induction), and you should be very adroit at manipulating mathematical equations. It also won't hurt to know some combinatorics. At the end there is an appendix with a lot of useful mathematical facts and tips/review on summation techniques, set theory, graph theory, combinatorics, probability, and linear algebra. 

Once some fundamentals in discrete mathematics, esp- logic, series, and a little probability are clear this book would be a joy read. This book does require some special efforts from our side like some discipline cause the subject matter is difficult and its very challenging for anyone to represent.

At over 1200 pages, the book covers a huge amount of material. The only downside is that occasionally the material is not covered very well and/or insufficient examples are given. But overall highly recommend this as a reference work for your CS library.