## Introduction to Algorithms

**On loan**

Author: Thomas H Cormen et al.

*Introduction to Algorithms*builds on the tradition of the original with a truly magisterial guide to the world of algorithms. Clearly presented, mathematically rigorous, and yet approachable even for the math-averse, this title sets a high standard for a textbook and reference to the best algorithms for solving a wide range of computing problems.

With sample problems and mathematical proofs demonstrating the correctness of each algorithm, this book is ideal as a textbook for classroom study, but its reach doesn't end there. The authors do a fine job of explaining each algorithm. (Reference sections on basic mathematical notation will help readers bridge the gap, but it will help to have some math background to appreciate the full achievement of this handsome hardcover volume.) Every algorithm is presented in pseudo-code, which can be implemented in any computer language, including C/C++ and Java. This ecumenical approach is one of the book's strengths. When it comes to sorting and common data structures, from basic linked lists to trees (including binary trees, red-black, and B-trees), this title really shines, with clear diagrams that show algorithms in operation. Even if you just glance over the mathematical notation here, you can definitely benefit from this text in other ways.

The book moves forward with more advanced algorithms that implement strategies for solving more complicated problems (including dynamic programming techniques, greedy algorithms, and amortized analysis). Algorithms for graphing problems (used in such real-world business problems as optimizing flight schedules or flow through pipelines) come next. In each case, the authors provide the best from current research in each topic, along with sample solutions.

This text closes with a grab bag of useful algorithms including matrix operations and linear programming, evaluating polynomials, and the well-known Fast Fourier Transformation (FFT) (useful in signal processing and engineering). Final sections on "NP-complete" problems, like the well-known traveling salesman problem, show off that while not all problems have a demonstrably final and best answer, algorithms that generate acceptable approximate solutions can still be used to generate useful, real-world answers.

Throughout this text, the authors anchor their discussion of
algorithms with current examples drawn from molecular biology (like
the Human Genome Project), business, and engineering. Each section
ends with short discussions of related historical material, often
discussing original research in each area of algorithms. On the
whole, they argue successfully that algorithms are a "technology"
just like hardware and software that can be used to write better
software that does more, with better performance. Along with
classic books on algorithms (like Donald Knuth's three-volume set,
*The Art of Computer Programming*), this title sets a new
standard for compiling the best research in algorithms. For any
experienced developer, regardless of their chosen language, this
text deserves a close look for extending the range and performance
of real-world software. *--Richard Dragan*

**Topics covered:** Overview of algorithms
(including algorithms as a technology); designing and analyzing
algorithms; asymptotic notation; recurrences and recursion;
probabilistic analysis and randomized algorithms; heapsort
algorithms; priority queues; quicksort algorithms; linear time
sorting (including radix and bucket sort); medians and order
statistics (including minimum and maximum); introduction to data
structures (stacks, queues, linked lists, and rooted trees); hash
tables (including hash functions); binary search trees; red-black
trees; augmenting data structures for custom applications; dynamic
programming explained (including assembly-line scheduling,
matrix-chain multiplication, and optimal binary search trees);
greedy algorithms (including Huffman codes and task-scheduling
problems); amortized analysis (the accounting and potential
methods); advanced data structures (including B-trees, binomial and
Fibonacci heaps, representing disjoint sets in data structures);
graph algorithms (representing graphs, minimum spanning trees,
single-source shortest paths, all-pairs shortest paths, and maximum
flow algorithms); sorting networks; matrix operations; linear
programming (standard and slack forms); polynomials and the Fast
Fourier Transformation (FFT); number theoretic algorithms
(including greatest common divisor, modular arithmetic, the Chinese
remainder theorem, RSA public-key encryption, primality testing,
integer factorization); string matching; computational geometry
(including finding the convex hull); NP-completeness (including
sample real-world NP-complete problems and their insolvability);
approximation algorithms for NP-complete problems (including the
traveling salesman problem); reference sections for summations and
other mathematical notation, sets, relations, functions, graphs and
trees, as well as counting and probability backgrounder (plus
geometric and binomial distributions).

Images and descriptions provided by Amazon