# Introduction to the Design and Analysis of Algorithms / Edition 2

ISBN-10: 0321358287

ISBN-13: 9780321358288

Pub. Date: 02/17/2006

Based on a new classification of algorithm design techniques and a clear delineation of analysis methods, Introduction to the Design and Analysis of Algorithms, 2e presents the subject in a truly innovative manner.

Written in a reader-friendly style, the book encourages broad problem-solving skills while thoroughly covering the material required for introductory

…  See more details below

## Overview

Based on a new classification of algorithm design techniques and a clear delineation of analysis methods, Introduction to the Design and Analysis of Algorithms, 2e presents the subject in a truly innovative manner.

Written in a reader-friendly style, the book encourages broad problem-solving skills while thoroughly covering the material required for introductory algorithms. The author emphasizes conceptual understanding before the introduction of the formal treatment of each technique. Popular puzzles are used to motivate readers' interest and strengthen their skills in algorithmic problem solving. Other enhancement features include chapter summaries, hints to the exercises, and a solution manual.

For those interested in learning more about algorithms.

## Product Details

ISBN-13:
9780321358288
Publisher:
Publication date:
02/17/2006
Edition description:
REV
Pages:
592
Product dimensions:
7.48(w) x 9.11(h) x 1.14(d)

## Related Subjects

Contents

Preface

1Introduction

1.1 What is an Algorithm?

1.2 Fundamentals of Algorithmic Problem Solving

1.3 Important Problem Types

1.4 Fundamental Data Structures

2 Fundamentals of the Analysis of Algorithm Efficiency

2.1 Analysis Framework

2.2 Asymptotic Notations and Basic Efficiency Classes

2.3 Mathematical Analysis of Nonrecursive Algorithms

2.4 Mathematical Analysis of Recursive Algorithms

2.5 Example: Fibonacci Numbers

2.6 Empirical Analysis of Algorithms

2.7 Algorithm Visualization

3 Brute Force

3.1 Selection Sort and Bubble Sort

3.2 Sequential Search and Brute-Force String Matching

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

3.4 Exhaustive Search

4 Divide-and-Conquer

4.1 Mergesort

4.2 Quicksort

4.3 Binary Search

4.4 Binary Tree Traversals and Related Properties

4.5 Multiplication of Large Integers and Strassen’s Matrix Multiplication

4.6 Closest-Pair and Convex-Hull Problems by Divide-and-Conquer

5 Decrease-and-Conquer

5.1 Insertion Sort

5.2 Depth-First Search and Breadth-First Search

5.3 Topological Sorting

5.4 Algorithms for Generating Combinatorial Objects

5.5 Decrease-by-a-Constant-Factor Algorithms

5.6 Variable-Size-Decrease Algorithms

6 Transform-and-Conquer

6.1 Presorting

6.2 Gaussian Elimination

6.3 Balanced Search Trees

6.4 Heaps and Heapsort

6.5 Horner’s Rule and Binary Exponentiation

6.6 Problem Reduction

7.1 Sorting by Counting

7.2 Input Enhancement in String Matching

7.3 Hashing

7.4 B-Trees

8 Dynamic Programming

8.1 Computing a Binomial Coefficient

8.2 Warshall’s and Floyd’s Algorithms

8.3 Optimal Binary Search Trees

8.4 The Knapsack Problem and Memory Functions

9 Greedy Technique

9.1 Prim’s Algorithm

9.2 Kruskal’s Algorithm

9.3 Dijkstra’s Algorithm

9.4 Huffman Trees

10 Iterative Improvement

10.1 The Simplex Method

10.2 The Maximum-Flow Problem

10.3 Maximum Matching in Bipartite Graphs

10.4 The Stable Marriage Problem

11 Limitations of Algorithm Power

11.1 Lower-Bound Arguments

11.2 Decision Trees

11.3 P, NP, and NP-complete Problems

11.4 Challenges of Numerical Algorithms 4

12 Coping with the Limitations of Algorithm Power

12.1 Backtracking

12.2 Branch-and-Bound

12.3 Approximation Algorithms for NP-hard Problems

12.4 Algorithms for Solving Nonlinear Equations

Epilogue

APPENDIX A

Useful Formulas for the Analysis of Algorithms

APPENDIX B

Short Tutorial on Recurrence Relations

Bibliography

Hints to Exercises

Index