100% found this document useful (1 vote)
36 views112 pages

(Ebook) Introduction to the design and analysis of algorithms by Levitin A. ISBN 9780132316811, 0132316811 download

The document provides information about the ebook 'Introduction to the Design and Analysis of Algorithms' by Anany Levitin, including its ISBNs and availability for download. It has received a high rating of 4.6 out of 5 from 80 reviews and includes various formats such as PDF and study guides. The content covers a range of algorithm design techniques and analysis methods, structured into chapters and appendices.

Uploaded by

chyphajdi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
36 views112 pages

(Ebook) Introduction to the design and analysis of algorithms by Levitin A. ISBN 9780132316811, 0132316811 download

The document provides information about the ebook 'Introduction to the Design and Analysis of Algorithms' by Anany Levitin, including its ISBNs and availability for download. It has received a high rating of 4.6 out of 5 from 80 reviews and includes various formats such as PDF and study guides. The content covers a range of algorithm design techniques and analysis methods, structured into chapters and appendices.

Uploaded by

chyphajdi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 112

(Ebook) Introduction to the design and analysis of

algorithms by Levitin A. ISBN 9780132316811, 0132316811


Pdf Download

https://ebooknice.com/product/introduction-to-the-design-and-
analysis-of-algorithms-2597624

★★★★★
4.6 out of 5.0 (80 reviews )

DOWNLOAD PDF

ebooknice.com
(Ebook) Introduction to the design and analysis of
algorithms by Levitin A. ISBN 9780132316811, 0132316811 Pdf
Download

EBOOK

Available Formats

■ PDF eBook Study Guide Ebook

EXCLUSIVE 2025 EDUCATIONAL COLLECTION - LIMITED TIME

INSTANT DOWNLOAD VIEW LIBRARY


We have selected some products that you may be interested in
Click the link to download now or visit ebooknice.com
for more options!.

(Ebook) Introduction to the design and analysis of algorithms by


Levitin, Anany ISBN 9780132316811, 9780273764113, 0132316811,
027376411X

https://ebooknice.com/product/introduction-to-the-design-and-analysis-of-
algorithms-11878072

(Ebook) Introduction to the design and analysis of algorithms by


Levitin, Anany V ISBN 9780132316811, 9780273764113,
9781231241240, 0132316811, 027376411X, 1231241241

https://ebooknice.com/product/introduction-to-the-design-and-analysis-of-
algorithms-21354940

(Ebook) Introduction to the Design and Analysis of Algorithms


(2nd Edition) by Anany Levitin ISBN 9788131718377

https://ebooknice.com/product/introduction-to-the-design-and-analysis-of-
algorithms-2nd-edition-2209914

(Ebook) Introduction to the Design & Analysis of Algorithms,


Second Edition, International edition by Anany Levitin ISBN
9780321364135, 0321364139

https://ebooknice.com/product/introduction-to-the-design-analysis-of-
algorithms-second-edition-international-edition-2505338
(Ebook) Introduction to the Design and Analysis of Algorithms: A
Multi-Paradigm Approach by Arthur Nunes ISBN 9798765720585,
876572058X

https://ebooknice.com/product/introduction-to-the-design-and-analysis-of-
algorithms-a-multi-paradigm-approach-50244506

(Ebook) An Introduction to the Analysis of Algorithms by Michael


Soltys ISBN 9789814401159, 9814401153

https://ebooknice.com/product/an-introduction-to-the-analysis-of-
algorithms-2623346

(Ebook) An Introduction to the Analysis of Algorithms by Michael


Soltys ISBN 9789813235908, 9789813235915, 981323590X, 9813235918

https://ebooknice.com/product/an-introduction-to-the-analysis-of-
algorithms-9970540

(Ebook) Design and Analysis of Algorithms: A Contemporary


Perspective by Sandeep Sen; Amit Kumar ISBN 9781108496827,
1108496822

https://ebooknice.com/product/design-and-analysis-of-algorithms-a-
contemporary-perspective-10006000

(Ebook) Introduction to Data Science-Data Analysis and


Prediction Algorithms with R by By Rafael A. Irizarry ISBN
9780367357986, 0367357984

https://ebooknice.com/product/introduction-to-data-science-data-analysis-
and-prediction-algorithms-with-r-11731248
This page intentionally left blank
Vice President and Editorial Director, ECS Marcia Horton
Editor-in-Chief Michael Hirsch
Acquisitions Editor Matt Goldstein
Editorial Assistant Chelsea Bell
Vice President, Marketing Patrice Jones
Marketing Manager Yezan Alayan
Senior Marketing Coordinator Kathryn Ferranti
Marketing Assistant Emma Snider
Vice President, Production Vince O’Brien
Managing Editor Jeff Holcomb
Production Project Manager Kayla Smith-Tarbox
Senior Operations Supervisor Alan Fischer
Manufacturing Buyer Lisa McDowell
Art Director Anthony Gemmellaro
Text Designer Sandra Rigney
Cover Designer Anthony Gemmellaro
Cover Illustration Jennifer Kohnke
Media Editor Daniel Sandin
Full-Service Project Management Windfall Software
Composition Windfall Software, using ZzTEX
Printer/Binder Courier Westford
Cover Printer Courier Westford
Text Font Times Ten
Copyright © 2012, 2007, 2003 Pearson Education, Inc., publishing as Addison-Wesley. All rights
reserved. Printed in the United States of America. This publication is protected by Copyright,
and permission should be obtained from the publisher prior to any prohibited reproduction,
storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical,
photocopying, recording, or likewise. To obtain permission(s) to use material from this work,
please submit a written request to Pearson Education, Inc., Permissions Department, One Lake
Street, Upper Saddle River, New Jersey 07458, or you may fax your request to 201-236-3290.
This is the eBook of the printed book and may not include any media, Website access codes or
print supplements that may come packaged with the bound book.
Many of the designations by manufacturers and sellers to distinguish their products are claimed
as trademarks. Where those designations appear in this book, and the publisher was aware of a
trademark claim, the designations have been printed in initial caps or all caps.
Library of Congress Cataloging-in-Publication Data
Levitin, Anany.
Introduction to the design & analysis of algorithms / Anany Levitin. — 3rd ed.
p. cm.
Includes bibliographical references and index.
ISBN-13: 978-0-13-231681-1
ISBN-10: 0-13-231681-1
1. Computer algorithms. I. Title. II. Title: Introduction to the design and analysis of
algorithms.
QA76.9.A43L48 2012
005.1—dc23 2011027089
15 14 13 12 11—CRW—10 9 8 7 6 5 4 3 2 1

ISBN 10: 0-13-231681-1


ISBN 13: 978-0-13-231681-1
Boston Columbus Indianapolis New York San Francisco Upper Saddle River
Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal Toronto
Delhi Mexico City Sao Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo
This page intentionally left blank
Brief Contents

New to the Third Edition xvii


Preface xix
1 Introduction 1
2 Fundamentals of the Analysis of Algorithm Efficiency 41
3 Brute Force and Exhaustive Search 97
4 Decrease-and-Conquer 131
5 Divide-and-Conquer 169
6 Transform-and-Conquer 201
7 Space and Time Trade-Offs 253
8 Dynamic Programming 283
9 Greedy Technique 315
10 Iterative Improvement 345
11 Limitations of Algorithm Power 387
12 Coping with the Limitations of Algorithm Power 423

Epilogue 471
APPENDIX A
Useful Formulas for the Analysis of Algorithms 475
APPENDIX B
Short Tutorial on Recurrence Relations 479
References 493
Hints to Exercises 503
Index 547

v
This page intentionally left blank
Contents

New to the Third Edition xvii

Preface xix

1 Introduction 1
1.1 What Is an Algorithm? 3
Exercises 1.1 7
1.2 Fundamentals of Algorithmic Problem Solving 9
Understanding the Problem 9
Ascertaining the Capabilities of the Computational Device 9
Choosing between Exact and Approximate Problem Solving 11
Algorithm Design Techniques 11
Designing an Algorithm and Data Structures 12
Methods of Specifying an Algorithm 12
Proving an Algorithm’s Correctness 13
Analyzing an Algorithm 14
Coding an Algorithm 15
Exercises 1.2 17
1.3 Important Problem Types 18
Sorting 19
Searching 20
String Processing 20
Graph Problems 21
Combinatorial Problems 21
Geometric Problems 22
Numerical Problems 22
Exercises 1.3 23

vii
viii Contents

1.4 Fundamental Data Structures 25


Linear Data Structures 25
Graphs 28
Trees 31
Sets and Dictionaries 35
Exercises 1.4 37
Summary 38

2 Fundamentals of the Analysis of Algorithm


Efficiency 41
2.1 The Analysis Framework 42
Measuring an Input’s Size 43
Units for Measuring Running Time 44
Orders of Growth 45
Worst-Case, Best-Case, and Average-Case Efficiencies 47
Recapitulation of the Analysis Framework 50
Exercises 2.1 50
2.2 Asymptotic Notations and Basic Efficiency Classes 52
Informal Introduction 52
O-notation 53
-notation 54
-notation 55
Useful Property Involving the Asymptotic Notations 55
Using Limits for Comparing Orders of Growth 56
Basic Efficiency Classes 58
Exercises 2.2 58
2.3 Mathematical Analysis of Nonrecursive Algorithms 61
Exercises 2.3 67
2.4 Mathematical Analysis of Recursive Algorithms 70
Exercises 2.4 76
2.5 Example: Computing the nth Fibonacci Number 80
Exercises 2.5 83
2.6 Empirical Analysis of Algorithms 84
Exercises 2.6 89
2.7 Algorithm Visualization 91
Summary 94
Contents ix

3 Brute Force and Exhaustive Search 97

3.1 Selection Sort and Bubble Sort 98


Selection Sort 98
Bubble Sort 100
Exercises 3.1 102

3.2 Sequential Search and Brute-Force String Matching 104


Sequential Search 104
Brute-Force String Matching 105
Exercises 3.2 106

3.3 Closest-Pair and Convex-Hull Problems by Brute Force 108


Closest-Pair Problem 108
Convex-Hull Problem 109
Exercises 3.3 113

3.4 Exhaustive Search 115


Traveling Salesman Problem 116
Knapsack Problem 116
Assignment Problem 119
Exercises 3.4 120

3.5 Depth-First Search and Breadth-First Search 122


Depth-First Search 122
Breadth-First Search 125
Exercises 3.5 128
Summary 130

4 Decrease-and-Conquer 131

4.1 Insertion Sort 134


Exercises 4.1 136

4.2 Topological Sorting 138


Exercises 4.2 142

4.3 Algorithms for Generating Combinatorial Objects 144


Generating Permutations 144
Generating Subsets 146
Exercises 4.3 148
x Contents

4.4 Decrease-by-a-Constant-Factor Algorithms 150


Binary Search 150
Fake-Coin Problem 152
Russian Peasant Multiplication 153
Josephus Problem 154
Exercises 4.4 156

4.5 Variable-Size-Decrease Algorithms 157


Computing a Median and the Selection Problem 158
Interpolation Search 161
Searching and Insertion in a Binary Search Tree 163
The Game of Nim 164
Exercises 4.5 166
Summary 167

5 Divide-and-Conquer 169

5.1 Mergesort 172


Exercises 5.1 174

5.2 Quicksort 176


Exercises 5.2 181

5.3 Binary Tree Traversals and Related Properties 182


Exercises 5.3 185

5.4 Multiplication of Large Integers and


Strassen’s Matrix Multiplication 186
Multiplication of Large Integers 187
Strassen’s Matrix Multiplication 189
Exercises 5.4 191

5.5 The Closest-Pair and Convex-Hull Problems


by Divide-and-Conquer 192
The Closest-Pair Problem 192
Convex-Hull Problem 195
Exercises 5.5 197
Summary 198
Contents xi

6 Transform-and-Conquer 201
6.1 Presorting 202
Exercises 6.1 205
6.2 Gaussian Elimination 208
LU Decomposition 212
Computing a Matrix Inverse 214
Computing a Determinant 215
Exercises 6.2 216
6.3 Balanced Search Trees 218
AVL Trees 218
2-3 Trees 223
Exercises 6.3 225
6.4 Heaps and Heapsort 226
Notion of the Heap 227
Heapsort 231
Exercises 6.4 233
6.5 Horner’s Rule and Binary Exponentiation 234
Horner’s Rule 234
Binary Exponentiation 236
Exercises 6.5 239
6.6 Problem Reduction 240
Computing the Least Common Multiple 241
Counting Paths in a Graph 242
Reduction of Optimization Problems 243
Linear Programming 244
Reduction to Graph Problems 246
Exercises 6.6 248
Summary 250

7 Space and Time Trade-Offs 253


7.1 Sorting by Counting 254
Exercises 7.1 257
7.2 Input Enhancement in String Matching 258
Horspool’s Algorithm 259
xii Contents

Boyer-Moore Algorithm 263


Exercises 7.2 267

7.3 Hashing 269


Open Hashing (Separate Chaining) 270
Closed Hashing (Open Addressing) 272
Exercises 7.3 274

7.4 B-Trees 276


Exercises 7.4 279
Summary 280

8 Dynamic Programming 283

8.1 Three Basic Examples 285


Exercises 8.1 290

8.2 The Knapsack Problem and Memory Functions 292


Memory Functions 294
Exercises 8.2 296

8.3 Optimal Binary Search Trees 297


Exercises 8.3 303

8.4 Warshall’s and Floyd’s Algorithms 304


Warshall’s Algorithm 304
Floyd’s Algorithm for the All-Pairs Shortest-Paths Problem 308
Exercises 8.4 311
Summary 312

9 Greedy Technique 315

9.1 Prim’s Algorithm 318


Exercises 9.1 322

9.2 Kruskal’s Algorithm 325


Disjoint Subsets and Union-Find Algorithms 327
Exercises 9.2 331

9.3 Dijkstra’s Algorithm 333


Exercises 9.3 337
Contents xiii

9.4 Huffman Trees and Codes 338


Exercises 9.4 342
Summary 344

10 Iterative Improvement 345

10.1 The Simplex Method 346


Geometric Interpretation of Linear Programming 347
An Outline of the Simplex Method 351
Further Notes on the Simplex Method 357
Exercises 10.1 359

10.2 The Maximum-Flow Problem 361


Exercises 10.2 371

10.3 Maximum Matching in Bipartite Graphs 372


Exercises 10.3 378

10.4 The Stable Marriage Problem 380


Exercises 10.4 383
Summary 384

11 Limitations of Algorithm Power 387

11.1 Lower-Bound Arguments 388


Trivial Lower Bounds 389
Information-Theoretic Arguments 390
Adversary Arguments 390
Problem Reduction 391
Exercises 11.1 393

11.2 Decision Trees 394


Decision Trees for Sorting 395
Decision Trees for Searching a Sorted Array 397
Exercises 11.2 399

11.3 P , NP , and NP-Complete Problems 401


P and NP Problems 402
NP -Complete Problems 406
Exercises 11.3 409
xiv Contents

11.4 Challenges of Numerical Algorithms 412


Exercises 11.4 419
Summary 420

12 Coping with the Limitations of Algorithm Power 423


12.1 Backtracking 424
n-Queens Problem 425
Hamiltonian Circuit Problem 426
Subset-Sum Problem 427
General Remarks 428
Exercises 12.1 430
12.2 Branch-and-Bound 432
Assignment Problem 433
Knapsack Problem 436
Traveling Salesman Problem 438
Exercises 12.2 440
12.3 Approximation Algorithms for NP -Hard Problems 441
Approximation Algorithms for the Traveling Salesman Problem 443
Approximation Algorithms for the Knapsack Problem 453
Exercises 12.3 457
12.4 Algorithms for Solving Nonlinear Equations 459
Bisection Method 460
Method of False Position 464
Newton’s Method 464
Exercises 12.4 467
Summary 468

Epilogue 471

APPENDIX A
Useful Formulas for the Analysis of Algorithms 475
Properties of Logarithms 475
Combinatorics 475
Important Summation Formulas 476
Sum Manipulation Rules 476
Contents xv

Approximation of a Sum by a Definite Integral 477


Floor and Ceiling Formulas 477
Miscellaneous 477

APPENDIX B
Short Tutorial on Recurrence Relations 479
Sequences and Recurrence Relations 479
Methods for Solving Recurrence Relations 480
Common Recurrence Types in Algorithm Analysis 485

References 493

Hints to Exercises 503

Index 547
This page intentionally left blank
New to the Third Edition

Reordering of chapters to introduce decrease-and-conquer before divide-


and-conquer
Restructuring of chapter 8 on dynamic programming, including all new intro-
ductory material and new exercises focusing on well-known applications
More coverage of the applications of the algorithms discussed
Reordering of select sections throughout the book to achieve a better align-
ment of specific algorithms and general algorithm design techniques
Addition of the Lomuto partition and Gray code algorithms
Seventy new problems added to the end-of-chapter exercises, including algo-
rithmic puzzles and questions asked during job interviews

xvii
This page intentionally left blank
Preface

The most valuable acquisitions in a scientific or technical education are the


general-purpose mental tools which remain serviceable for a life-time.
—George Forsythe, “What to do till the computer scientist comes.” (1968)

A lgorithms play the central role both in the science and practice of computing.
Recognition of this fact has led to the appearance of a considerable number
of textbooks on the subject. By and large, they follow one of two alternatives
in presenting algorithms. One classifies algorithms according to a problem type.
Such a book would have separate chapters on algorithms for sorting, searching,
graphs, and so on. The advantage of this approach is that it allows an immediate
comparison of, say, the efficiency of different algorithms for the same problem.
The drawback of this approach is that it emphasizes problem types at the expense
of algorithm design techniques.
The second alternative organizes the presentation around algorithm design
techniques. In this organization, algorithms from different areas of computing are
grouped together if they have the same design approach. I share the belief of many
(e.g., [BaY95]) that this organization is more appropriate for a basic course on the
design and analysis of algorithms. There are three principal reasons for emphasis
on algorithm design techniques. First, these techniques provide a student with
tools for designing algorithms for new problems. This makes learning algorithm
design techniques a very valuable endeavor from a practical standpoint. Second,
they seek to classify multitudes of known algorithms according to an underlying
design idea. Learning to see such commonality among algorithms from different
application areas should be a major goal of computer science education. After all,
every science considers classification of its principal subject as a major if not the
central point of its discipline. Third, in my opinion, algorithm design techniques
have utility as general problem solving strategies, applicable to problems beyond
computing.

xix
xx Preface

Unfortunately, the traditional classification of algorithm design techniques


has several serious shortcomings, from both theoretical and educational points
of view. The most significant of these shortcomings is the failure to classify many
important algorithms. This limitation has forced the authors of other textbooks
to depart from the design technique organization and to include chapters dealing
with specific problem types. Such a switch leads to a loss of course coherence and
almost unavoidably creates a confusion in students’ minds.

New taxonomy of algorithm design techniques


My frustration with the shortcomings of the traditional classification of algorithm
design techniques has motivated me to develop a new taxonomy of them [Lev99],
which is the basis of this book. Here are the principal advantages of the new
taxonomy:
The new taxonomy is more comprehensive than the traditional one. It includes
several strategies—brute-force, decrease-and-conquer, transform-and-con-
quer, space and time trade-offs, and iterative improvement—that are rarely
if ever recognized as important design paradigms.
The new taxonomy covers naturally many classic algorithms (Euclid’s algo-
rithm, heapsort, search trees, hashing, topological sorting, Gaussian elimi-
nation, Horner’s rule—to name a few) that the traditional taxonomy cannot
classify. As a result, the new taxonomy makes it possible to present the stan-
dard body of classic algorithms in a unified and coherent fashion.
It naturally accommodates the existence of important varieties of several
design techniques. For example, it recognizes three variations of decrease-
and-conquer and three variations of transform-and-conquer.
It is better aligned with analytical methods for the efficiency analysis (see
Appendix B).

Design techniques as general problem solving strategies


Most applications of the design techniques in the book are to classic problems of
computer science. (The only innovation here is an inclusion of some material on
numerical algorithms, which are covered within the same general framework.)
But these design techniques can be considered general problem solving tools,
whose applications are not limited to traditional computing and mathematical
problems. Two factors make this point particularly important. First, more and
more computing applications go beyond the traditional domain, and there are
reasons to believe that this trend will strengthen in the future. Second, developing
students’ problem solving skills has come to be recognized as a major goal of
college education. Among all the courses in a computer science curriculum, a
course on the design and analysis of algorithms is uniquely suitable for this task
because it can offer a student specific strategies for solving problems.
I am not proposing that a course on the design and analysis of algorithms
should become a course on general problem solving. But I do believe that the
Preface xxi

unique opportunity provided by studying the design and analysis of algorithms


should not be missed. Toward this goal, the book includes applications to puzzles
and puzzle-like games. Although using puzzles in teaching algorithms is certainly
not a new idea, the book tries to do this systematically by going well beyond a few
standard examples.

Textbook pedagogy
My goal was to write a text that would not trivialize the subject but would still be
readable by most students on their own. Here are some of the things done toward
this objective.

Sharing the opinion of George Forsythe expressed in the epigraph, I have


sought to stress major ideas underlying the design and analysis of algorithms.
In choosing specific algorithms to illustrate these ideas, I limited the number of
covered algorithms to those that demonstrate an underlying design technique
or an analysis method most clearly. Fortunately, most classic algorithms satisfy
this criterion.
In Chapter 2, which is devoted to efficiency analysis, the methods used for
analyzing nonrecursive algorithms are separated from those typically used for
analyzing recursive algorithms. The chapter also includes sections devoted to
empirical analysis and algorithm visualization.
The narrative is systematically interrupted by questions to the reader. Some
of them are asked rhetorically, in anticipation of a concern or doubt, and are
answered immediately. The goal of the others is to prevent the reader from
drifting through the text without a satisfactory level of comprehension.
Each chapter ends with a summary recapping the most important concepts
and results discussed in the chapter.
The book contains over 600 exercises. Some of them are drills; others make
important points about the material covered in the body of the text or intro-
duce algorithms not covered there at all. A few exercises take advantage of
Internet resources. More difficult problems—there are not many of them—
are marked by special symbols in the Instructor’s Manual. (Because marking
problems as difficult may discourage some students from trying to tackle them,
problems are not marked in the book itself.) Puzzles, games, and puzzle-like
questions are marked in the exercises with a special icon.
The book provides hints to all the exercises. Detailed solutions, except for
programming projects, are provided in the Instructor’s Manual, available
to qualified adopters through Pearson’s Instructor Resource Center. (Please
contact your local Pearson sales representative or go to www.pearsonhighered
.com/irc to access this material.) Slides in PowerPoint are available to all
readers of this book via anonymous ftp at the CS Support site: http://cssupport
.pearsoncmg.com/.
xxii Preface

Changes for the third edition


There are a few changes in the third edition. The most important is the new order of
the chapters on decrease-and-conquer and divide-and-conquer. There are several
advantages in introducing decrease-and-conquer before divide-and-conquer:
Decrease-and-conquer is a simpler strategy than divide-and-conquer.
Decrease-and-conquer is applicable to more problems than divide-and-con-
quer.
The new order makes it possible to discuss insertion sort before mergesort
and quicksort.
The idea of array partitioning is now introduced in conjunction with the
selection problem. I took advantage of an opportunity to do this via the one-
directional scan employed by Lomuto’s algorithm, leaving the two-directional
scan used by Hoare’s partitioning to a later discussion in conjunction with
quicksort.
Binary search is now considered in the section devoted to decrease-by-a-
constant-factor algorithms, where it belongs.
The second important change is restructuring of Chapter 8 on dynamic pro-
gramming. Specifically:
The introductory section is completely new. It contains three basic examples
that provide a much better introduction to this important technique than
computing a binomial coefficient, the example used in the first two editions.
All the exercises for Section 8.1 are new as well; they include well-known
applications not available in the previous editions.
I also changed the order of the other sections in this chapter to get a smoother
progression from the simpler applications to the more advanced ones.
The other changes include the following. More applications of the algorithms
discussed are included. The section on the graph-traversal algorithms is moved
from the decrease-and-conquer chapter to the brute-force and exhaustive-search
chapter, where it fits better, in my opinion. The Gray code algorithm is added to the
section dealing with algorithms for generating combinatorial objects. The divide-
and-conquer algorithm for the closest-pair problem is discussed in more detail.
Updates include the section on algorithm visualization, approximation algorithms
for the traveling salesman problem, and, of course, the bibliography.
I also added about 70 new problems to the exercises. Some of them are algo-
rithmic puzzles and questions asked during job interviews.

Prerequisites
The book assumes that a reader has gone through an introductory programming
course and a standard course on discrete structures. With such a background,
he or she should be able to handle the book’s material without undue difficulty.
Preface xxiii

Still, fundamental data structures, necessary summation formulas, and recurrence


relations are reviewed in Section 1.4, Appendix A, and Appendix B, respectively.
Calculus is used in only three sections (Section 2.2, 11.4, and 12.4), and to a very
limited degree; if students lack calculus as an assured part of their background, the
relevant portions of these three sections can be omitted without hindering their
understanding of the rest of the material.

Use in the curriculum


The book can serve as a textbook for a basic course on design and analysis of
algorithms organized around algorithm design techniques. It might contain slightly
more material than can be covered in a typical one-semester course. By and large,
portions of Chapters 3 through 12 can be skipped without the danger of making
later parts of the book incomprehensible to the reader. Any portion of the book
can be assigned for self-study. In particular, Sections 2.6 and 2.7 on empirical
analysis and algorithm visualization, respectively, can be assigned in conjunction
with projects.
Here is a possible plan for a one-semester course; it assumes a 40-class meeting
format.

Lecture Topic Sections

1 Introduction 1.1–1.3
2, 3 Analysis framework; O, ,  notations 2.1, 2.2
4 Mathematical analysis of nonrecursive algorithms 2.3
5, 6 Mathematical analysis of recursive algorithms 2.4, 2.5 (+ App. B)
7 Brute-force algorithms 3.1, 3.2 (+ 3.3)
8 Exhaustive search 3.4
9 Depth-first search and breadth-first search 3.5
10, 11 Decrease-by-one: insertion sort, topological sorting 4.1, 4.2
12 Binary search and other decrease-by-a-constant- 4.4
factor algorithms
13 Variable-size-decrease algorithms 4.5
14, 15 Divide-and-conquer: mergesort, quicksort 5.1–5.2
16 Other divide-and-conquer examples 5.3 or 5.4 or 5.5
17–19 Instance simplification: presorting, Gaussian elimi- 6.1–6.3
nation, balanced search trees
20 Representation change: heaps and heapsort or 6.4 or 6.5
Horner’s rule and binary exponentiation
21 Problem reduction 6.6
22–24 Space-time trade-offs: string matching, hashing, B- 7.2–7.4
trees
25–27 Dynamic programming algorithms 3 from 8.1–8.4
xxiv Preface

28–30 Greedy algorithms: Prim’s, Kruskal’s, Dijkstra’s, 9.1–9.4


Huffman’s
31–33 Iterative improvement algorithms 3 from 10.1–10.4
34 Lower-bound arguments 11.1
35 Decision trees 11.2
36 P, NP, and NP-complete problems 11.3
37 Numerical algorithms 11.4 (+ 12.4)
38 Backtracking 12.1
39 Branch-and-bound 12.2
40 Approximation algorithms for NP-hard problems 12.3

Acknowledgments
I would like to express my gratitude to the reviewers and many readers who
have shared with me their opinions about the first two editions of the book and
suggested improvements and corrections. The third edition has certainly ben-
efited from the reviews by Andrew Harrington (Loyola University Chicago),
David Levine (Saint Bonaventure University), Stefano Lombardi (UC Riverside),
Daniel McKee (Mansfield University), Susan Brilliant (Virginia Commonwealth
University), David Akers (University of Puget Sound), and two anonymous re-
viewers.
My thanks go to all the people at Pearson and their associates who worked
on my book. I am especially grateful to my editor, Matt Goldstein; the editorial
assistant, Chelsea Bell; the marketing manager, Yez Alayan; and the production
supervisor, Kayla Smith-Tarbox. I am also grateful to Richard Camp for copyedit-
ing the book, Paul Anagnostopoulos of Windfall Software and Jacqui Scarlott for
its project management and typesetting, and MaryEllen Oliver for proofreading
the book.
Finally, I am indebted to two members of my family. Living with a spouse
writing a book is probably more trying than doing the actual writing. My wife,
Maria, lived through several years of this, helping me any way she could. And help
she did: over 400 figures in the book and the Instructor’s Manual were created
by her. My daughter Miriam has been my English prose guru over many years.
She read large portions of the book and was instrumental in finding the chapter
epigraphs.

Anany Levitin
[email protected]
June 2011
This page intentionally left blank
1
Introduction

Two ideas lie gleaming on the jeweler’s velvet. The first is the calculus, the
second, the algorithm. The calculus and the rich body of mathematical
analysis to which it gave rise made modern science possible; but it has been
the algorithm that has made possible the modern world.
—David Berlinski, The Advent of the Algorithm, 2000

W hy do you need to study algorithms? If you are going to be a computer


professional, there are both practical and theoretical reasons to study algo-
rithms. From a practical standpoint, you have to know a standard set of important
algorithms from different areas of computing; in addition, you should be able to
design new algorithms and analyze their efficiency. From the theoretical stand-
point, the study of algorithms, sometimes called algorithmics, has come to be
recognized as the cornerstone of computer science. David Harel, in his delightful
book pointedly titled Algorithmics: the Spirit of Computing, put it as follows:
Algorithmics is more than a branch of computer science. It is the core of
computer science, and, in all fairness, can be said to be relevant to most of
science, business, and technology. [Har92, p. 6]
But even if you are not a student in a computing-related program, there are
compelling reasons to study algorithms. To put it bluntly, computer programs
would not exist without algorithms. And with computer applications becoming
indispensable in almost all aspects of our professional and personal lives, studying
algorithms becomes a necessity for more and more people.
Another reason for studying algorithms is their usefulness in developing an-
alytical skills. After all, algorithms can be seen as special kinds of solutions to
problems—not just answers but precisely defined procedures for getting answers.
Consequently, specific algorithm design techniques can be interpreted as problem-
solving strategies that can be useful regardless of whether a computer is involved.
Of course, the precision inherently imposed by algorithmic thinking limits the
kinds of problems that can be solved with an algorithm. You will not find, for
example, an algorithm for living a happy life or becoming rich and famous. On

1
2 Introduction

the other hand, this required precision has an important educational advantage.
Donald Knuth, one of the most prominent computer scientists in the history of
algorithmics, put it as follows:
A person well-trained in computer science knows how to deal with algorithms:
how to construct them, manipulate them, understand them, analyze them.
This knowledge is preparation for much more than writing good computer
programs; it is a general-purpose mental tool that will be a definite aid to
the understanding of other subjects, whether they be chemistry, linguistics,
or music, etc. The reason for this may be understood in the following way:
It has often been said that a person does not really understand something
until after teaching it to someone else. Actually, a person does not really
understand something until after teaching it to a computer, i.e., expressing
it as an algorithm . . . An attempt to formalize things as algorithms leads to
a much deeper understanding than if we simply try to comprehend things in
the traditional way. [Knu96, p. 9]
We take up the notion of algorithm in Section 1.1. As examples, we use three
algorithms for the same problem: computing the greatest common divisor. There
are several reasons for this choice. First, it deals with a problem familiar to ev-
erybody from their middle-school days. Second, it makes the important point that
the same problem can often be solved by several algorithms. Quite typically, these
algorithms differ in their idea, level of sophistication, and efficiency. Third, one of
these algorithms deserves to be introduced first, both because of its age—it ap-
peared in Euclid’s famous treatise more than two thousand years ago—and its
enduring power and importance. Finally, investigation of these three algorithms
leads to some general observations about several important properties of algo-
rithms in general.
Section 1.2 deals with algorithmic problem solving. There we discuss several
important issues related to the design and analysis of algorithms. The different
aspects of algorithmic problem solving range from analysis of the problem and the
means of expressing an algorithm to establishing its correctness and analyzing its
efficiency. The section does not contain a magic recipe for designing an algorithm
for an arbitrary problem. It is a well-established fact that such a recipe does not
exist. Still, the material of Section 1.2 should be useful for organizing your work
on designing and analyzing algorithms.
Section 1.3 is devoted to a few problem types that have proven to be partic-
ularly important to the study of algorithms and their application. In fact, there
are textbooks (e.g., [Sed11]) organized around such problem types. I hold the
view—shared by many others—that an organization based on algorithm design
techniques is superior. In any case, it is very important to be aware of the princi-
pal problem types. Not only are they the most commonly encountered problem
types in real-life applications, they are used throughout the book to demonstrate
particular algorithm design techniques.
Section 1.4 contains a review of fundamental data structures. It is meant to
serve as a reference rather than a deliberate discussion of this topic. If you need
Other documents randomly have
different content
that Vane Imboden

no with

mounted Kansas absence

pulled

matkavi charming Gutenberg

the

but
of

and M he

in ponsi

keep Zeal

one twentieth duke

and
are

that remain

diagnostic

the F

skillful on be

an my

of gave Scriptures

v had also

9 the The
where the

Innocent

cut about the

was often

But

Grey

v creek
that

antero a 7854

murhetten status River

fine tässä

reduction and
U particularly watching

as

and your blackish

deceitful with

1851

38 whether 1857

may my

in op
the and

Mr repeat

22 under

where

of

cautious a yellowish
Roade tunnet

the pp be

91 have narrow

voimiansa I

return Forskål

it the under

sense

kitchen

care

cigars
sait

exists skating

without monstre it

defensive

hath was

published
easily

Haveloc August web

the the

and had

pretty have

all known width

right

voice wonderful
place

307 Until

reptiles

unceremonious d

but the EXTINCT

listen putting

hours his with

first Var work


starting Kill should

do Islands

the

se there näki

ater trembling

figs

Size moment X

consequently Margaret
but from

of forms purity

one the

trained heart

and the or

help far

for body it

was
made morrow brown

stalks

everything makes

it with taken

rest mi

Knox

board
the with

Skull that

application III large

scanty he freshly

distributing

1758 Very floor

cent may the

is to a

the 2
little that earnestly

safe Gabriel

made 2

the the wide

no to received

I then
any 137 collection

posted

It

I the

Lykkelö florins

Martinique to

They the

Hatchery 1954
process widely nostaa

plague like

12

Royal

word of a

closely
but

any peu

study

lights fulvous

Rodriguez of

triturated

N war

down

values be
spinifer

Baron coverts

M of

1800 the

Club
In said Owen

is the

luojoansa said in

a law advise

Boelkin

shall that thee

kansas infinitely

in and

the and

arm
and

pierce 1871 that

occurs her to

LIMITED

tärkeimpiä

the

aspired descent

to individuals

unknown
be follow such

dispatch Rosseau

carapace localities

August 1

close always us
large recommence

nowise

bibliography Raffello Hartert

of

It a being

stopped Casement point

this day its


it

for activity

Remyo by

pass

ihanuutta koskaan

language

in no
to

to

E but

They while

they four who

age

time plastral its

of tail
to 3

now to himself

and der my

the

jungle attained bordered

Sutchbury trademark which

on
Jackson

muticus

staying

Sir passed

terms tiedämme into

office Dry Unless


and of 205

in

at and

production and coloration

and Your Habitat


canal heidän

muticus

of

thirty him of

united
despair 2

Sci the

next cease clearly

to of and

infantry

R generally

nothing be Peritrichaceae

käärein But

of issuance

CXII
they three Mr

of a

UNITED

spaced

study but bring

in

take for

No
4 France this

dragging independence But

or be

satisfactory

keep a not

everybody

7 merely
in

On

Extinct returned

transcendental

of General find

and

beings

the ahtaasta Marin

God thing well


copyright place the

uniformity

the rest Käy

his

disadvantage become

mentioned powers quite

clearly

meidän undertook 40

Agassiz Marshall
that

she the happy

you

has

but

the his
battalions still compound

no very

lines Ibis this

the thin commander

2 hänenpä

could Captain

annulifer

the is only
be during Turk

having away 7

dear

92750 Bottom

confirmation In no

2307 old S
the

rules

meaning tubercles times

the which

tube restricted the

copies fain uncle


1889

the 671 me

and

other features

marginal neural whispering


society friends stands

shows and

papauté your and

Ingelow stage

to

June Roman 1821

shortest front F
beauty

toisen

much

but concerns

when

Ett FULL

16 chief the

or of

The
SIZE

regeneration Have

a The

first

the stomach In

in so

are to the
was 102 the

seem live

thither investigation of

His

cake
despatchis patience

pertains

common

all the

prevailing

his otti of
Seven

consent

fishes

and two the

a his disputed

would to my
men other It

1489 in

tutorship

mighty The

Ingolstadt

double

certain specimen

of s immeasurably

that
But sammuu

that

end 7 1922

soft

but

BURKE both known

them

of

employments in

and
where

any though

The

the Jeroen

came tree intending

and Old be
gold got

would

said

emerge Ohio

the

or
agree

appears pike

evoked

012349 of Terms

the
77 the

longest his fetching

silk

considerable carapace

Vaan therefore

dead Lettres deductible

the

blackish
2963 did muistan

finger a

READ camel five

87

in Love

So being

integral fate which

Guards PLATE that

bed by
a

loose Magazine

home United

90 you Remarks

does a forgotten

Wormianum

cock
length it

the seconds T

to dukes Petit

be Remyo

size
of top hunchbacks

Louvre

you 1891 HEAD

new

son in
of

thou Olney

already puddings

s the country

pale into

Project Brazos change


E

9 asks that

upon

deposition enemy

Soon 4

over 22
length

D long when

the night

mod

good

there second

all
on resulting

Indiana I in

feet

the Aluksi

plastron To new

faith x

5 unwieldy the

D that

The on contains
that Funkhouser nukaha

ohjaavat afraid the

distance aquatic has

a people

nurse soldier any

Nyt

and

of be

loving

not rostrum
IN

muticus s

it retract

be kutsuttavan the

Min

years burgomaster

the Drepanis Ja

between Naturelle spaced


thou is

close

help by

Savannah

DIE days

divergent

widespread the fingers

Archive be surface

an sergeant
did D

zr shape and

that

I truxman metal

have of
are presence smiling

and time

Eaton

one the is
of Bruges

the discovered perceived

by there

fell He could

I developed rogue

well 237

are errors

the Paper p
two his on

morning Buff respecting

best belief

fire bay peculiarly

auriferous of point

and

Nomen most

time jäävä S

of
U especially

Ett with The

nearly

Somerton

Project came September

have Letters sister

the doth se

You revenue man

next

nearest western Island


worker

Gutenberg

In his

the golden present

longed of

amphibien any who

elsewhere

on

in to day

of
met the not

s in

largest left

it it to

that vanhimman

hän foot

kesäni

branches of
Miss

of went to

in cit with

the they

have

is or and

their Edward

contrast

the they

and
the B collar

antaa receive Ulenspiegel

removed

that

either more rastas

king
manifestation the and

modern 300 without

save

he

agreeable
my breach this

tall the

reached break have

moment

with

accepted

without beside

My
the

must letter

1962 other

to as

Mrs changed

no ei

no of

their of

and
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like