by M H Alsuwaiyel (King Fahd University of Petroleum & Minerals (KFUPM), Saudi Arabia)
Problem solving is an essential part of every scientific discipline. It has two components: (1) problem identification and formulation, and (2) solution of the formulated problem. One can solve a problem on its own using ad hoc techniques or follow those techniques that have produced efficient solutions to similar problems. This requires the understanding of various algorithm design techniques, how and when to use them to formulate solutions and the context appropriate for each of them. This book advocates the study of algorithm design techniques by presenting most of the useful algorithm design techniques and illustrating them through numerous examples.
Contents:
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: