Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The eBook copy of this book is not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Summary

Algorithm Designintroduces algorithms by looking at the real-world problems that motivate them. The book teaches a range of design and analysis techniques for problems that arise in computing applications. The text encourages an understanding of the algorithm design process and an appreciation of the role of algorithms in the broader field of computer science.

Author Biography

Eva Tardos is a professor of Computer Science at Cornell University.

Table of Contents

About the Authors

v

Preface

xiii

Introduction: Some Representative Problems

1

(28)

A First Problem: Stable Matching

1

(11)

Five Representative Problems

12

(17)

Solved Exercises

19

(3)

Exercises

22

(6)

Notes and Further Reading

28

(1)

Basics of Algorithm Analysis

29

(44)

Computational Tractability

29

(6)

Asymptotic Order of Growth

35

(7)

Implementing the Stable Matching Algorithm Using Lists and Arrays

42

(5)

A Survey of Common Running Times

47

(10)

A More Complex Data Structure: Priority Queues

57

(16)

Solved Exercises

65

(2)

Exercises

67

(3)

Notes and Further Reading

70

(3)

Graphs

73

(42)

Basic Definitions and Applications

73

(5)

Graph Connectivity and Graph Traversal

78

(9)

Implementing Graph Traversal Using Queues and Stacks

87

(7)

Testing Bipartiteness: An Application of Breadth-First Search

94

(3)

Connectivity in Directed Graphs

97

(2)

Directed Acyclic Graphs and Topological Ordering

99

(16)

Solved Exercises

104

(3)

Exercises

107

(5)

Notes and Further Reading

112

(3)

Greedy Algorithms

115

(94)

Interval Scheduling: The Greedy Algorithm Stays Ahead

116

(9)

Scheduling to Minimize Lateness: An Exchange Argument

125

(6)

Optimal Caching: A More Complex Exchange Argument

131

(6)

Shortest Paths in a Graph

137

(5)

The Minimum Spanning Tree Problem

142

(9)

Implementing Kruskal's Algorithm: The Union-Find Data Structure

151

(6)

Clustering

157

(4)

Huffman Codes and Data Compression

161

(16)

Minimum-Cost Arborescences: A Multi-Phase Greedy Algorithm

177

(32)

Solved Exercises

183

(5)

Exercises

188

(17)

Notes and Further Reading

205

(4)

Divide and Conquer

209

(42)

A First Recurrence: The Mergesort Algorithm

210

(4)

Further Recurrence Relations

214

(7)

Counting Inversions

221

(4)

Finding the Closest Pair of Points

225

(6)

Integer Multiplication

231

(3)

Convolutions and the Fast Fourier Transform

234

(17)

Solved Exercises

242

(4)

Exercises

246

(3)

Notes and Further Reading

249

(2)

Dynamic Programming

251

(86)

Weighted Interval Scheduling: A Recursive Procedure

252

(6)

Principles of Dynamic Programming: Memoization or Iteration over Subproblems