We introduced dynamic programming in chapter 2 with the Rocks problem.
While the Rocks problem does not appear to be related to bioinformatics,
the algorithm that we described is a computational twin of a popular
alignment algorithm for sequence comparison. Dynamic programming
provides a framework for understanding DNA sequence comparison algorithms,
many of which have been used by biologists to make important inferences
about gene function and evolutionary history. We will also apply
dynamic programming to gene finding and other bioinformatics problems.