The tree compatibility problem is a problem concerned with evolutionary history construction. For a species set S, an S-labelled tree is a tree T along with a labelling L: S → V(T). The tree compatibility problem asks whether a set T of S-labelled trees, each of which describes the evolution of S, is compatible in the sense that there is a single tree T from which each tree T ∈ T can be derived by a sequence of edge contractions. Polynomial time algorithms for the tree compatibility problem have been known to exist for a long time, with the best being the recent O(n2k) algorithm by Gusfield to determine compatibility of k trees on n species. Recently Gusfield found an O(nk) algorithm for a restricted case of the tree compatibility problem. In this paper, we will present an O(nk) algorithm for the tree compatibility problem, thus achieving linear time. The perfect phylogeny problem is another problem in evolutionary history construction, which has been recently shown to be in P for special cases but NP-complete for the general case. We will show that we can characterize each instance to the perfect phylogeny problem as an instance to the tree compatibility problem, and thus derive an algorithm for the perfect phylogeny problem. Our algorithm is superior to the other algorithms for perfect phylogeny problem for many realistic cases, such as when the species are defined by molecular data such as amino-acid sequences.
ASJC Scopus subject areas
- Control and Optimization
- Computational Mathematics
- Computational Theory and Mathematics