Sequence Comparison pp 17-33 | Cite as

# Basic Algorithmic Techniques

An *algorithm* is a step-by-step procedure for solving a problem by a computer. Although the act of designing an algorithm is considered as an art and can never be automated, its general strategies are learnable. Here we introduce a few frameworks of computer algorithms including greedy algorithms, divide-and-conquer strategies, and dynamic programming.

This chapter is divided into five sections. It starts with the definition of algorithms and their complexity in Section 2.1. We introduce the asymptotic *O*-notation used in the analysis of the running time and space of an algorithm. Two tables are used to demonstrate that the asymptotic complexity of an algorithm will ultimately determine the size of problems that can be solved by the algorithm.

Then, we introduce greedy algorithms in Section 2.2. For some optimization problems, greedy algorithms are more efficient. A greedy algorithm pursues the best choice at the moment in the hope that it will lead to the best solution in the end. It works quite well for a wide range of problems. Huffman’s algorithm is used as an example of a greedy algorithm.

## Keywords

Greedy Algorithm Output Sequence Recursive Call Fibonacci Number Longe Common Subsequence## Preview

Unable to display preview. Download preview PDF.