22.01.2015 Views

Refined Buneman Trees

Refined Buneman Trees

Refined Buneman Trees

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 6<br />

TheTreeDataStructure<br />

This chapter discusses a tree datastructure designed to maintain a compatible<br />

set of splits. In part 1 of the algorithm described in [BFÖ+ 03], we need to<br />

insert and remove splits from the tree and search for incompatible splits. These<br />

operations all need to perform in time O(|X|). Part 2 of the algorithm requires<br />

traversing paths in the tree and searching subtrees, also in linear time.<br />

6.1 Design of the tree data datastructure<br />

As we saw in a previous section, a compatible set of splits is atree—not<br />

necessarily a regular, leaf-labeled tree, but at least a semi-labeled tree. We<br />

also saw there was a close connection between the evolutionary trees we want<br />

to represent, and phylogenetic trees which can be represented by leaf-labeled<br />

trees. Thus, the design of the tree data structure used in this work will be a<br />

leaf-labeled tree that uses special markers to indicate edges that are not “real”<br />

edges, when needed. Since the refined <strong>Buneman</strong> tree algorithm deals with overapproximations<br />

of evolutionary trees, we shall simply disregard the controversy<br />

altogether; all complexity bounds will hold even if we do. The operations we<br />

need to support with the tree data structure are not affected by the presence of<br />

extra trivial splits; the search for incompatible splits will of course never return<br />

a trivial split, since they are compatible with any split, and in the insert and<br />

delete operations we can just ignore or work around the cases where trivial splits<br />

are involved.<br />

Even though we say that our tree is unrooted, we still need some sort of root<br />

as a starting point for our tree traversals. One way of creating such an artificial<br />

root would be to select an inner node and use this as a starting point for every<br />

tree operation. However, as the topology of the tree changes as we insert and<br />

remove splits from the compatible set of splits that the tree represents, a fixed<br />

root node might be removed at any time. Instead, we shall choose a random<br />

node in the tree as starting point each time we start a new operation, to ensure<br />

we have a valid starting point. This of course means we have to have a design<br />

42

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!