# Book:Donald E. Knuth/The Art of Computer Programming: Volume 1: Fundamental Algorithms/Third Edition

## Donald E. Knuth: The Art of Computer Programming: Volume 1: Fundamental Algorithms (3rd Edition)

Published $\text {1997}$, Addison-Wesley

ISBN 0-201-89683-4.

### Contents

Preface
Preface to the Third Edition (Stanford, California, April 1997)
Procedure for Reading This Set of Books
Notes on the Exercises

Chapter 1 Basic Concepts
1.1. Algorithms
1.2. Mathematical Preliminaries
1.2.1. Mathematical Induction
1.2.2, Numbers, Powers, and Logarithms
1.2.3. Sums and Products
1.2.4. Integer Functions and Elementary Number Theory
1.2.5. Permutations and Factorials
1.2.6. Binomial Coefficients
1.2.7. Harmonic Numbers
1.2.8. Fibonacci Numbers
1.2.9. Generating Functions
1.2.10. Analysis of an Algorithm
*1.2.11. Asymptotic Representations
*1.2.11.1. The $O$-notation
*1.2.11.2. Euler's summation formula
*1.2.11.3. Some asymptotic calculations
1.3. MIX
1.3.1. Description of MIX
1.3.2. The MIX Assembly Language
1.3.3. Applications to Permutations
1.4. Some Fundamental Programming Techniques
1.4.1. Subroutines
1.4.2. Coroutines
1.4.3. Interpretive Routines
1.4.3.1. A MIX simulator
*1.4.3.2. Trace routines
1.4.4. Input and Output
1.4.5. History and Bibliography
Chapter 2 - Information Structures
2.1. Introduction
2.2. Linear Lists
2.2.1. Stacks, Queues and Deques
2.2.2. Sequential Allocation
2.2.4. Circular Lists
2.2.6. Arrays and Orthogonal Lists
2.3. Trees
2.3.1. Traversing Binary Trees
2.3.2. Binary Tree Representation of Trees
2.3.3. Other Representations of Trees
2.3.4. Basic Mathematical Properties of Trees
2.3.4.1. Free trees
2.3.4.2. Oriented trees
*2.3.4.3. The "infinity lemma"
*2.3.4.4. Enumeration of trees
2.3.4.5. Path length
*2.3.4.6. History and bibliography
2.3.5. Lists and Garbage Collection
2.5. Dynamic Storage Allocation
2.6. History and Bibliography
Appendix A - Tables of Numerical Quantities
1. Fundamental Constants (decimal)
2. Fundamental Constants (octal)
3. Harmonic Numbers, Bernoulli Numbers, Fibonacci Numbers
Appendix B - Index to Notations
Index and Glossary

## Errata

### Hurwitz's Generalisation of Binomial Theorem

$2.3.4.4.$ Enumeration of Trees: Exercise $30$: Solution

Use this to prove Hurwitz' generalization of the binomial theorem:
$\displaystyle \sum x \paren {x + \epsilon_1 z_1 + \cdots + \epsilon_n z_n}^{\epsilon_1 + \cdots + \epsilon_n - 1} y \paren {y + \paren {1 - \epsilon_1} z_1 - \cdots + \paren {1 - \epsilon_n} z_n}^{n - \epsilon_1 - \cdots - \epsilon_n} = \paren {x + y} \paren {x + y + z_1 + \cdots + z_n}^{n - 1}$

## Source work progress

Mostly complete up to this point. Much of the detailed work on algorithms has been left undone.