Preface
List of Figures
Chapter 1 INTRODUCTION
Chapter 2 THE COMPLEXITY OF ALGORITHMS AND THE LOWER BOUNDS OF PROBLEMS
2-1 The time complexity of an algorithm
2-2 The best-, average- and worst-case analysis of algorithms
2-3 The lower bound of a problem
2-4 The worst-case lower bound of sorting
2-5 Heap sort: A sorting algorithm which is optimal in worst cases
2-6 The average-case lower bound of sorting
2-7 Improving a lower bound through oracles
2-8 Finding the lower bound by problem transformation
2-9 Notes and references
2-10 Further reading materials
Exercises
Chapter 3 THE GREEDY METHOD
3-1 Kruskal's method to find a minimum spanning tree
3-2 Prim's method to find a minimum spanning tree
3-3 The single-source shortest path problem
3-4 The 2-way merge problem
3-5 The minimum cycle basis problem solved by the greedy algorithm
3-6 The 2-terminal one to any problem solved by the greedy method
3-7 The minimum cooperative guards problem for 1-spiral polygons solved by the greedy method
3-8 The experimental results
3-9 Notes and references
3-10 Further reading materials
Exercises
Chapter 4 THE DIVIDE-AND-CONQUER STRATEGY
4-1 The 2-dimensional maxima finding problem
4-2 The closest pair problem
4-3 The convex hull problem
4-4 The Voronoi diagrams constructed by the divide-and-conquer strategy
4-5 Applications of the Voronoi diagrams
4-6 The Fast Fourier Transform
4-7 The experimental results
4-8 Notes and references
4-9 Further reading materials
Exercises
Chapter 5 TREE SEARCHING STRATEGIES
5-1 Breadth-first search
5-2 Depth-first search
5-3 Hill climbing
5-4 Best-fIRst search strategy
5-5 Branch-and-bound strategy
5-6 A personnel assignment problem solved by the branch-and-bound strategy
5-7 The traveling salesperson optimization problem solved by the branch-and-bound strategy
5-8 The 0/1 knapsack problem solved by the branch-and-bound strategy
5-9 A job scheduling problem solved by the branch-and-bound approach
5-10 A* algorithm
5-11 A channel routing problem solved by a specialized A* algorithm
5-12 The linear block code decoding problem solved by the A* algorithm
5-13 The experimental results
5-14 Notes and references
5-15 Further reading materials
Exercises
Chapter 6 PRUNE-AND-SEARCH
6-1 The general method
6-2 The selection problem
6-3 Linear programming with two variables
6-4 The 1-center problem
6-5 The experimental results
6-6 Notes and references
6-7 Further reading materials
Exercises..
Chapter 7 DYNAMIC PROGRAMMING
7-1 The resource allocation problem
7-2 The longest common subsequence problem
7-3 The 2-sequence alignment problem
7-4 The RNA maximum base pair matching problem
7-5 0/1 knapsack problem
7-6 The optimal binary tree problem
7-7 The weighted perfect domination problem on trees
7-8 The weighted single step graph edge searching problem on trees
7-9 The m-watchmen routes problem for 1-spiral polygons solved by the dynamic programming approach
7-10 The experimental results
7-11 Notes and references
7-12 Further reading materials
Exercises
Chapter 8 THE THEORY OF NP-COMPLETENESS
8-1 An informal discussion of the theory of NP-completeness
8-2 The decision problems
8-3 The satisfiability problem
8-4 The NP problems
8-5 Cook's theorem
8-6 NP-complete problems
8-7 Examples of proving NP-completeness
8-8 The 2-satisfiability problem
8-9 Notes and references
8-10 Further reading materials
Exercises
Chapter 9 APPROXIMATION ALGORITHMS
9-1 An approximation algorithm for the node cover problem
9-2 An approximation algorithm for the Euclidean traveling salesperson problem
9-3 An approximation algorithm for a special bottleneck traveling salesperson problem
9-4 An approximation algorithm for a special bottleneck weighted k-supplier problem
9-5 An approximation algorithm for the bin packing problem
9-6 An optimal approximation algorithm for the rectilinear m-center problem
9-7 An approximation algorithm for the multiple sequence alignment problem
9-8 A 2-approximation algorithm for the sorting by transposition problem
9-9 The polynomial time approximation scheme
9-10 A 2-approximation algorithm for the minimum routing Cost spanning tree problem
9-11 A PTAS for the minimum routing cost spanning tree problem
9-12 NPO-completeness
9-13 Notes and references
9-14 Further reading materials
Exercises
Chapter 10 AMORTIZED ANALYSIS
10-1 An example of using the potential function
10-2 An amortized analysis of skew heaps
10-3 Amortized analysis of AVL-trees
10-4 Amortized analysis of self-organizing sequential search heuristics
10-5 Pairing heap and its amortized analysis
10-6 Amortized analysis of a disjoint set union algorithm
10-7 Amortized analysis of some disk scheduling algorithms
10-8 The experimental results
10-9 Notes and references
10-10 Further reading materials
Exercises
Chapter 11 RANDOMIZED ALGORITHMS
11-1 A randomized algorithm to solve the closest pair problem
11-2 The average performance of the randomized closest pair problem
11-3 A randomized algorithm to test whether a number is a prime
11-4 A randomized algorithm for pattern matching
11-5 A randomized algorithm for interactive proofs
11-6 A randomized linear time algorithm for minimum spanning trees
11-7 Notes and references
11-8 Further reading materials
Exercises
Chapter 12 ON-LINE ALGORITHMS
12-1 The on-line Euclidean spanning tree problem solved by the greedy method
12-2 The on-line k-server problem and a greedy algorithm to solve this problem defined on planar trees
12-3 An on-line obstacle traversal algorithm based on the balance strategy
12-4 The on-line bipartite matching problem solved by the compensation strategy
12-5 The on-line m-machine problem solved by the moderation strategy
12-6 On-line algorithms for three computational geometry problems based on the elimination strategy
12-7 An on-line spanning tree algorithm based on the randomization strategy
12-8 Notes and references
12-9 Further reading materials
Exercises
BIBLIOGRAPHY
auTHOR INDEX
SUBJECT INDEX