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
    Lleaves(T1);
    Ppredecessors(L);
   if PLthen
        E(T2)E(T2)+{(u,v,d(u,v)),uL,vP};
        E(T2)E(T2)+{(v,v,0),vP};
        E(T1)E(T1){(u,v,d(u,v)),uL,vP};
   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