Skip to main content
. 2023 Apr 20;9:e1339. doi: 10.7717/peerj-cs.1339

Algorithm 1: An algorithm to compute a parsimonious tree from a minimum spanning tree.

Data: T1 a minimum spanning tree, with edge set E(T1)
Result: T2 a labeled tree, with edge set E(T2)
E(T2)←∅;
while |E(T1)|≠0 do
    L←leaves(T1);
    P←predecessors(L);
   if P≠Lthen
        E(T2)←E(T2)+{(u,v,d(u,v)),u∈L,v∈P};
        E(T2)←E(T2)+{(v,v,0),v∈P};
        E(T1)←E(T1)−{(u,v,d(u,v)),u∈L,v∈P};
   else
        E(T2)←E(T2)+{(L[0],L[1],d(L[0],L[1]))};
        E(T2)←E(T2)+{(L[1],L[1],0)};
        E(T1)←E(T1)−{(L[0],L[1],d(L[0],L[1])),};
   end
end