|
This text takes(grouping algorithms
by design) to a whole new level."
-UNLV
"The manner in which algorithms are described with respect to both
their structure (English language description, pseudo-code) and behavior
(English language descriptions, execution trees) is excellent."
-University of Michigan
"The exercises provide a good mix of algorithm tracing, algorithm
design, mathematical proof, and program implementation"
-University of Alabama
|
|
TABLE OF CONTENTS
1. Introduction.
The Notion of Algorithm.
Fundamentals of algorithmic Problem Solving.
Important Problem Types.
A Review of Fundamental Data Structures.
2. Fundamentals of Analysis of Algorithms Efficiency.
The Analysis of Framework.
Asymptotic Notations and Standard Efficiency Classes.
Mathematical analysis of Non-Recursive Algorithms.
Mathematical Analysis of recursive algorithms.
An Example: the Fibonacci Numbers.
Empirical Analysis of Algorithms.
Algorithm Visualization.
3. Brute-Force.
Selection Sort and Bubble Sort.
Sequential Search and Brute-Force String Matching.
Closest-Pair and Convex-Hull Problems By Brute Force.
Exhaustive Search.
4. Divide-and-Conquer.
Mergesort.
Quicksort.
Binary Search.
Binary Tree Traversals and Related Properties.
Multiplication of Large Integers and Strassen's Matrix Multiplication.
Divide-and-Conquer Algorithms for the Closest-Pair and Convex-Hull Problems.
5. Decrease-and-Conquer.
Insertion Sort.
Depth-First Search and Breath-First Search.
Topological Sorting.
Algorithms for Generating Combinatorial Objects.
Decrease-by-a Constant-factor Algorithm.
Variable-Size-Decrease Algorithms.
6. Transform-and-Conquer.
Presorting and its Applications.
Gaussian Elimination.
Balanced Search Trees.
Heaps and Heapsort.
Horner's Rule and Binary Exponentiation.
Problem Reduction.
7. Space and Time Tradeoff in Algorithms.
Sorting by Distribution Counting.
Horspool's and Boyer-Moore Algorithms for String Matching.
Hashing.
B-Trees.
8. Dynamic Programming.
Binomial Coefficients.
Warshall's and Floyd's Algorithms.
Optimal Binary Search Trees.
The Knapsack Problem and Memory Functions.
9. Greedy Approach.
Prim's Algorithm.
Kruskal's Algorithm.
Dijkstra's Algorithm.
Huffman Trees.
10. Limitations of Algorithm Power.
Lower-Bound Arguments.
Decision Trees.
P, NP, and NP-complete Problems.
Challenges of Numerical Algorithms.
11. Coping with the Limitations of Algorithm Power.
Backtracking.
Branch-and-Bound.
Approximation Algorithms for NP-Hard Problems.
Algorithms for Solving Nonlinear Equations.
Epilogue.
Appendix A: Useful Formulas for the Analysis of Algorithms.
Appendix B: A Short tutorial on Recurrence Relations.
Appendix C: Exercise Hints.
|