3
Scientific Programming 14 (2006) 267–268 267 IOS Press Book Review The Art of Computer Programming, Volume 4, Fas- cicle 4, by D.E. Knuth, Addison Wesley Professions, Boston, MA, USA, 2006. ISBN: 0321335708 Donald Knuth is well known as the author of a three volume encyclopedic reference text on algorith- mic computer science [1–3]. The Art of Computer Pro- gramming volumes have been authoritative references since first published in the late 1960’s. Knuth pays fanatic attention to bibliographic and technical details, paying a bounty of $2.56 to the first finder of each er- ror. The books are also famous for Knuth’s exercises, which have challenged generations of students. Knuth originally planned to complete the series with four more volumes, on combinatorial algorithms, syn- tactical algorithms, the theory of languages, and com- pilers. Unfortunately other projects, including the TeX text processing system, intervened. Knuth also wanted to revise the first three volumes to reflect progress made during the intervening thirty years. In the late 1990’s Knuth completed revisions to the first three volumes of the series and began work on the fourth volume. As Pro- fessor Emeritus of The Art of Computer Programming at Stanford, Knuth recently made substantial progress on the fourth volume in the series. Volume 4, Combi- natorial Algorithms, is now projected as three physical volumes, with volume 4A on enumeration and back- tracking, 4B on graph and network algorithms, and 4C on combinatorial optimization and recursion. Drafts of the new material are being released in sections, called fascicles, of about 128 pages each. Fascicle 1 describes MMIX, an updated version of MIX, the computer architecture and assembly language used by Knuth to describe low level algorithms [4]. The material on MMIX is actually planned for a re- vised version of volume 1, and Knuth makes little use of it in the other fascicles from volume 4 that were re- cently published. Thus fascicles 2, 3, and 4 can be read independently of [4]. Counting families of combinatorial objects such as permutations and combinations is an important topic in combinatorics but most presentations of enumera- tive combinatorics ignore the problem of systematically listing the objects. Knuth is interested in algorithms for the systematic listing of combinatorial objects includ- ing n-tuples, permutations, combinations, partitions of integers, set partitions, and trees. In the second fasci- cle, Knuth considers the generation of n-tuples and per- mutations [5]. The third fascicle deals with generating combinations and integer and set partitions [6]. The fascicle under review, #4, completes the cov- erage of combinatorial generation in volume 4A with a section on the generation of trees. The section on generating all trees stands on its own and can be read without reference to the material in the previous fas- cicles. A second section gives a history of algorithms for generating combinatorial objects. This section in- cludes many references to material in fascicles 2 and 3. In Section 7.2.1.6, Knuth considers the problem of generating all trees on n nodes. A key idea is the cor- respondence between strings of properly nested paren- theses and trees. The number of properly nested strings of parentheses of length 2n (and the number of trees on n nodes) is well known as the Catalan number, C n = 2n n - 2n n - 1 . Although this solves the problem of counting the number of trees on n nodes, generating all of the trees in a systematic fashion is a different problem. Knuth discusses algorithms for generating all trees on n nodes in lexicographic order, determining where a tree occurs in the lexicographic ordering (ranking), finding the kth tree in the sequence (unranking), and generation of random trees. In addition to algorithms based on the lexicographic ordering, algorithms are given for the generation of trees in gray code order, in which successive trees differ in only one position. Knuth also gives algorithms for the generation of all spanning trees on a given graph. Much of the mate- rial in this section is well known [7–9]. What makes this section particularly interesting is the collection of 124 exercises that complete the section. These range from straight forward exercises that can be solved in a few minutes to challenging problems that will require ISSN 1058-9244/06/$17.00 2006 – IOS Press and the authors. All rights reserved

Scientific Programming 14 (2006) 267–268 IOS Press Book ...[3] Donald E. Knuth, Sorting and Searching, Addison-Wesley, Reading, Massachusetts, second edition, 1998. [4] Donald E

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Scientific Programming 14 (2006) 267–268 IOS Press Book ...[3] Donald E. Knuth, Sorting and Searching, Addison-Wesley, Reading, Massachusetts, second edition, 1998. [4] Donald E

Scientific Programming 14 (2006) 267–268 267IOS Press

Book Review

The Art of Computer Programming, Volume 4, Fas-cicle 4, by D.E. Knuth, Addison Wesley Professions,Boston, MA, USA, 2006. ISBN: 0321335708

Donald Knuth is well known as the author of athree volume encyclopedic reference text on algorith-mic computer science [1–3]. The Art of Computer Pro-gramming volumes have been authoritative referencessince first published in the late 1960’s. Knuth paysfanatic attention to bibliographic and technical details,paying a bounty of $2.56 to the first finder of each er-ror. The books are also famous for Knuth’s exercises,which have challenged generations of students.

Knuth originally planned to complete the series withfour more volumes, on combinatorial algorithms, syn-tactical algorithms, the theory of languages, and com-pilers. Unfortunately other projects, including the TeXtext processing system, intervened. Knuth also wantedto revise the first three volumes to reflect progress madeduring the intervening thirty years. In the late 1990’sKnuth completed revisions to the first three volumes ofthe series and began work on the fourth volume. As Pro-fessor Emeritus of The Art of Computer Programmingat Stanford, Knuth recently made substantial progresson the fourth volume in the series. Volume 4, Combi-natorial Algorithms, is now projected as three physicalvolumes, with volume 4A on enumeration and back-tracking, 4B on graph and network algorithms, and 4Con combinatorial optimization and recursion. Drafts ofthe new material are being released in sections, calledfascicles, of about 128 pages each.

Fascicle 1 describes MMIX, an updated version ofMIX, the computer architecture and assembly languageused by Knuth to describe low level algorithms [4].The material on MMIX is actually planned for a re-vised version of volume 1, and Knuth makes little useof it in the other fascicles from volume 4 that were re-cently published. Thus fascicles 2, 3, and 4 can be readindependently of [4].

Counting families of combinatorial objects such aspermutations and combinations is an important topicin combinatorics but most presentations of enumera-tive combinatorics ignore the problem of systematically

listing the objects. Knuth is interested in algorithms forthe systematic listing of combinatorial objects includ-ing n-tuples, permutations, combinations, partitions ofintegers, set partitions, and trees. In the second fasci-cle, Knuth considers the generation of n-tuples and per-mutations [5]. The third fascicle deals with generatingcombinations and integer and set partitions [6].

The fascicle under review, #4, completes the cov-erage of combinatorial generation in volume 4A witha section on the generation of trees. The section ongenerating all trees stands on its own and can be readwithout reference to the material in the previous fas-cicles. A second section gives a history of algorithmsfor generating combinatorial objects. This section in-cludes many references to material in fascicles 2 and3.

In Section 7.2.1.6, Knuth considers the problem ofgenerating all trees on n nodes. A key idea is the cor-respondence between strings of properly nested paren-theses and trees. The number of properly nested stringsof parentheses of length 2n (and the number of trees onn nodes) is well known as the Catalan number,

Cn =(

2nn

)−

(2n

n − 1

).

Although this solves the problem of counting thenumber of trees on n nodes, generating all of the treesin a systematic fashion is a different problem.

Knuth discusses algorithms for generating all treeson n nodes in lexicographic order, determining wherea tree occurs in the lexicographic ordering (ranking),finding the kth tree in the sequence (unranking), andgeneration of random trees. In addition to algorithmsbased on the lexicographic ordering, algorithms aregiven for the generation of trees in gray code order,in which successive trees differ in only one position.Knuth also gives algorithms for the generation of allspanning trees on a given graph. Much of the mate-rial in this section is well known [7–9]. What makesthis section particularly interesting is the collection of124 exercises that complete the section. These rangefrom straight forward exercises that can be solved in afew minutes to challenging problems that will require

ISSN 1058-9244/06/$17.00 2006 – IOS Press and the authors. All rights reserved

Page 2: Scientific Programming 14 (2006) 267–268 IOS Press Book ...[3] Donald E. Knuth, Sorting and Searching, Addison-Wesley, Reading, Massachusetts, second edition, 1998. [4] Donald E

268 Book Review

considerable effort to solve. Each exercise is markedwith a difficulty level from 00 to 50, where a level 00problem should be immediately solvable and a level 50problem is an unsolved problem whose solution wouldbe publishable.

In Section 7.2.1.7, Knuth discusses the history ofalgorithms for generating combinatorial objects. Thehistory of the subject goes back thousands of years. Hegives a fascinating account of early ad hoc and system-atic listings of combinatorial objects as diverse as thehexagrams of the I Ching, metrical feet in Greek poetry,and rhythmic patterns in music. The modern history ofthe subject starts in the 1950’s with the advent of digitalcomputers. As usual, Knuth provides a very extensivecollection of references. This section includes a setof 32 exercises, but these are somewhat less interest-ing than the exercises in Section 7.2.1.6. Many of theexercises simply ask the reader to complete historicalexamples.

The fascicle concludes with solutions to the exercisesand an extremely thorough index. Bibliographic refer-ences are scattered throughout the fascicle, so there isno conventional bibliography.

Although the author doesn’t claim that this is a com-plete and final version of the work, the quality is veryhigh. The material that has already appeared in the fas-cicles could be compiled into a very respectable booktoday. With the feedback that the author is getting fromreaders of the fascicles, there is no doubt that the finalpublished version of this material will have very fewerrors. Fascicle 4 is recommended to readers with aparticular interest in the generation of trees or the his-tory of combinatorial generation. It will also interestmany fans of Knuth’s work who just can’t wait for thecomplete volume 4.

References

[1] Donald E. Knuth, Fundamental Algorithms, Addison-Wesley,Reading, Massachusetts, third edition, 1997.

[2] Donald E. Knuth, Seminumerical Algorithms, Addison-Wesley,Reading, Massachusetts, third edition, 1997.

[3] Donald E. Knuth, Sorting and Searching, Addison-Wesley,Reading, Massachusetts, second edition, 1998.

[4] Donald E. Knuth, The Art of Computer Programming, Volume1, Fascicle 1: MMIX – A RISC Computer for the New Millen-nium. Addison-Wesley Professional, Reading, Massachusetts,2005.

[5] Donald E. Knuth, The Art of Computer Programming, Vol-ume 4, Fascicle 2: Generating All Tuples and Permutations.Addison-Wesley Professional, Reading, Massachusetts, 2005.

[6] Donald E. Knuth, The Art of Computer Programming, Volume4, Fascicle 3: Generating All Combinations and Partitions.Addison-Wesley Professional, Reading, Massachusetts, 2005.

[7] Donald L. Kreher and Douglas R. Stinson, Combinatorial Al-gorithms: Generation, Enumeration, and Search, CRC Press,Boca Raton, 1999.

[8] Albert Nijenhuis and Herbert S. Wilf, Combintorial Algorithms,Academic Press, San Diego, second edition, 1978.

[9] Herbert S. Wilf, Combinatorial Algorithms: An Update, SIAM,Philadelphia, 1989.

Brian BorchersDepartment of Mathematics

New Mexico TechSocorro, NM, USA

Page 3: Scientific Programming 14 (2006) 267–268 IOS Press Book ...[3] Donald E. Knuth, Sorting and Searching, Addison-Wesley, Reading, Massachusetts, second edition, 1998. [4] Donald E

Submit your manuscripts athttp://www.hindawi.com

Computer Games Technology

International Journal of

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Distributed Sensor Networks

International Journal of

Advances in

FuzzySystems

Hindawi Publishing Corporationhttp://www.hindawi.com

Volume 2014

International Journal of

ReconfigurableComputing

Hindawi Publishing Corporation http://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Applied Computational Intelligence and Soft Computing

 Advances in 

Artificial Intelligence

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Advances inSoftware EngineeringHindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Electrical and Computer Engineering

Journal of

Journal of

Computer Networks and Communications

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporation

http://www.hindawi.com Volume 2014

Advances in

Multimedia

International Journal of

Biomedical Imaging

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

ArtificialNeural Systems

Advances in

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

RoboticsJournal of

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Computational Intelligence and Neuroscience

Industrial EngineeringJournal of

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Modelling & Simulation in EngineeringHindawi Publishing Corporation http://www.hindawi.com Volume 2014

The Scientific World JournalHindawi Publishing Corporation http://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Human-ComputerInteraction

Advances in

Computer EngineeringAdvances in

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014