In this thesis we are concerned with constructing algorithms that address prob- lems of biological relevance. This activity is part of a broader interdisciplinary area called computational biology, or bioinformatics, that focuses on utiliz- ing the capacities of computers to gain knowledge from biological data. The majority of problems in computational biology relate to molecular or evolu- tionary biology, and focus on analyzing and comparing the genetic material of organisms. One deciding factor in shaping the area of computational biology is that DNA, RNA and proteins that are responsible for storing and utilizing the genetic material in an organism, can be described as strings over nite al- phabets. The.