The Art of Computer Programming is a comprehensive monograph written by
Donald Knuth which covers all kinds of
algorithms . The first three volumes are published, two others are planned. Originally, it was planned as a single volume of ten chapters, but Knuth soon discovered that a single volume could not hold all the material that need inclusion. Along the way, Knuth was interrupted by his increasing dissatisfaction with the quality of scientific typesetting, and decided to spend a few months working up something more suitable. Eight years later, he returned with
TeX. The intended ninth and tenth chapters, on language parsing and compilation techniques, are promised at some time in the distant future.
- Volume 1 - Fundamental Algorithms
- Chapter 1 - Basic concepts
- Chapter 2 - Information structures
- Volume 2 - Seminumerical Algorithms
- Chapter 3 - Random numbers
- Chapter 4 - Arithmetic
- Volume 3 - Sorting and Searching
- Chapter 5 - Sorting
- Chapter 6 - Searching
- Volume 4 - Combinatorial Algorithms, in preparation.
- Volume 4A, Enumeration and Backtracking
- Chapter 7 - Combinatorial searching
- Volume 4B, Graph and Network Algorithms
- Volume 4C and possibly 4D, Optimization and Recursion
- Chapter 7 cont.
- Chapter 8 - Recursion
- Volume 5 - Syntactic Algorithms, in preparation.
- Chapter 9 - Lexical scanning
- Chapter 10 - Parsing techniques
- Volume 6 - Theory of Context-Free Languages, planned.
- Volume 7 - Compiler Techniques, planned.
All examples in the books use a language called "MIX assembly language," which runs on the hypothetical MIX computer.
(Currently, the MIX computer is being replaced by the MMIX computer, which is a RISC version).
Some readers are chagrined at the use of assembly language, but Knuth considers this necessary because algorithms need a context to judge speed and memory usage.
Fortunately, there are free MIX emulators available for download.
Further information:
Overview of topics (http://www-cs-faculty.stanford.edu/~knuth/taocp) (Knuth's personal homepage)
All Wikipedia text
is available under the
terms of the GNU Free Documentation License