stl Sets and Quartet Puzzling

Hi, I am in bioinformatics and I need to make phylogenetic trees by the quartet puzzling method. A quartet is a set of 4 taxons. I am given the list of taxons and a matrix of distances between them. I've figured out the general steps that I have to take but I don't know how to score branches of a set according to a tree split. A picture version of what I am describing is in the link: page 384.

Generate all possible quartets and state the type according to minimum
distance and numerical order.

For each quartet, choose a random taxon E and generate all new possible
quartets from this with taxon E in it and get the type (1,2,3).

For each possible split according to the type for one possible quartet:
1: ij,kl i,jkl k,ijl l,ijk j,ikl
2: etc.
3: etc.
Add E to the side that has only one taxon from possible quartet and check
if the type is the same, using the taxa from the quartet on the other side.

For every split that is not the same type, add one penalty point for that
split. Do this for every possible quartet and add up the penalty points
on each split. Permanently pair taxon E according to the split with the
fewest penalty points.

Repeat this with a new random taxon F until a tree is generated. Do this
for all quartets.

So how do I score a split type? How do I navigate a set? Is there a better way than using a set for a tree?

I don't understand what you must achieve.

An std::set is a data container. It contains data elements and sorts them under the hood. It also discards duplicates, e.g. adding "Mary" to a set containing "John", "Mary" and "Paul" won't change the set.

You navigate an std::set the same way you navigate most other STL containers:
a for() loop with an iterator starting at begin() and ending at end().
Topic archived. No new replies allowed.