Initialise: Build an initial tree, \(t^*\) using some method (e.g., UPGMA or NJ) and let score \(t^* = s^*\).
Choose 3 (distant) taxa and form the unique unrooted 3-taxon tree.
Add this tree to a queue.
Iterate: Choose a taxon and add to previous best partial tree (at front of queue) in each possible position to get \(k\) new partial trees, \(t_1,\ldots,t_k\)
- If \(score(t_i) \leq s^*\), add \(t_i\) to queue and order the queue by score and number of taxa
- If \(score(t_i) > s^*\), discard \(t_i\).
- If \(t_i\) is complete (all taxa have been added) and \(score(t_i) < s^*\), set \(s^* = score(t_i)\).
Finish: When queue is empty, return tree with lowest score.