Dhahran: King Fahd University of Petroleum & Minerals, 1998. - 430p.
The field of computer algorithms has flourished since the early 1960's when the 1rst users of electronic computers started to pay attention to the performance of programs. The limited resources of computers at that time resulted in additional impetus for devising efficient computer algorithms.
After extensive research in this field, numerous e±cient algorithms for different problems emerged. The similarities among dierent algorithms for certain classes of problems have resulted in general algorithm design techniques.
This book emphasizes most of these algorithm design techniques that have proved their utility in the solution to many problems. It may be considered as an attempt to cover the most common techniques in the design of sequential algorithms. Each technique is presented as follows.
First, the context in which that technique can be applied. Second, the special characteristics of that technique that set it apart. Third, comparison with other techniques, whenever possible; finally, and most importantly, illustration of the technique by applying it to several problems.
Basic Concepts and Introduction to Algorithms
Basic Concepts in Algorithmic Analysis
Mathematical Preliminaries
Data Structures
Heaps and the Disjoint Sets Data Structures
Techniques Based on Recursion
Induction
Divide and Conquer
Dynamic Programming
First-Cut Techniques
The Greedy Approach
Graph Traversal
Complexity of Problems
NP-complete Problems
Introduction to Computational Complexity
Lower Bounds
Coping with Hardness
Backtracking
Randomized Algorithms
Approximation Algorithms
Iterative Improvement for Domain-Specific Problems
Network Flow
Matching
Techniques in Computational Geometry
Geometric Sweeping
Voronoi Diagrams