The bible of programming theory and practice is being updated for the first time in more than 20 years. The book is concerned with information structures--the representation of information within a computer, the structural interrelations between data elements and how to work with them efficiently, a
The Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition)
β Scribed by Donald E. Knuth
- Publisher
- Addison-Wesley Professional
- Year
- 1997
- Tongue
- English
- Edition
- 3
- Category
- Library
No coin nor oath required. For personal study only.
β¦ Synopsis
This magnificent tour de force presents a comprehensive overview of a wide variety of algorithms and the analysis of them. Now in its third edition, The Art of Computer Programming, Volume I: Fundamental Algorithms contains substantial revisions by the author and includes numerous new exercises.
Although this book was conceived several decades ago, it is still a timeless classic. One of the book's greatest strengths is the wonderful collection of problems that accompany each chapter. The author has chosen problems carefully and indexed them according to difficulty. Solving a substantial number of these problems will help you gain a solid understanding of the issues surrounding the given topic. Furthermore, the exercises feature a variety of classic problems.
Fundamental Algorithms begins with mathematical preliminaries. The first section offers a good grounding in a variety of useful mathematical tools: proof techniques, combinatorics, and elementary number theory. Knuth then details the MIX processor, a virtual machine architecture that serves as the programming target for subsequent discussions. This wonderful section comprehensively covers the principles of simple machine architecture, beginning with a register-level discussion of the instruction set. A later discussion of a simulator for this machine includes an excellent description of the principles underlying the implementation of subroutines and co-routines. Implementing such a simulator is an excellent introduction to computer design.
In the second section, Knuth covers data structures--stacks, queues, lists, arrays, and trees--and presents implementations (in MIX assembly) along with techniques for manipulating these structures. Knuth follows many of the algorithms with careful time and space analysis. In the section on tree structures, the discussion includes a series of interesting problems concerning the combinatorics of trees (counting distinct trees of a particular form, for example) and some particularly interesting applications. Also featured is a discussion of Huffmann encoding and, in the section on lists, an excellent introduction to garbage collection algorithms and the difficult challenges associated with such a task. The book closes with a discussion of dynamic allocation algorithms.
The clear writing in Fundamental Algorithms is enhanced by Knuth's dry humor and the historical discussions that accompany the technical matter. Overall, this text is one of the great classics of computer programming literature--it's not an easy book to grasp, but one that any true programmer will study with pleasure.
β¦ Table of Contents
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.3. Linked Allocation
2.2.4. Circular Lists
2.2.5. Doubly Linked 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.4. Multilinked Structures
2.5. Dynamic Storage Allocation
2.6. History and Bibliography
Answers to Exercises
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
Appendix C β Index to Algorithms and Theorems
Index and Glossary
π SIMILAR VOLUMES
&>The bible of all fundamental algorithms and the work that taught many of today's software developers most of what they know about computer programming.<p style="margin:0px;"> </p> <p style="margin:0px;">β<i>Byte</i>, September 1995</p> <p style="margin:0px;">Β </p> <p style="margin:0px;"> <i>I can'
<i>The bible of all fundamental algorithms and the work that taught many of today's software developers most of what they know about computer programming.</i><p></p> <p></p> <p>β<i>Byte</i>, September 1995</p> <p>Β </p> <p><i>I can't begin to tell you how many pleasurable hours of study and recreatio
Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and offers the purchaser a $50 discount off the price of buying the four volumes individually. Β The
Volume 2 of Donald Knuth's classic series The Art of Computer Programming covers seminumerical algorithms, with topics ranging from random number generators to floating point operations and other optimized arithmetic algorithms. Truly comprehensive and meticulously written, this book (and series) is