/***********************************************************\ | A didactic script - Wagner Trees | | by P.A. Goloboff (2021) | | | | This script makes heavy use of TNT's commands for | | editing trees (to make it simpler) | | | | Feel free to modify and use. | | | \***********************************************************/ int taxorder[ 2*root-1 ] ; int destorder[ 2*root-1 ] ; void main ( void ) { int i , j , ninserts , add , bestat , bestlen , this ; int todo = 0 , done = 0 ; randomlist ( taxorder , Ntax , 0 ) ; tnt ( "report - ; sil = all ; keep 0 ; tread ( 0 ( %i %i ) ) ;" , taxorder[ 1 ] , taxorder[ 2 ] ) ; for ( i = 3 ; i < Ntax ; ++ i ) todo += 2 * i - 3 ; for ( i = 3 ; i < Ntax ; ++ i ) { progress ( done , todo , "Creating Wagner tree " ) ; done += 2 * i - 3 ; add = taxorder [ i ] ; ninserts = uplist ( destorder , 0 , sister ( 0 , 0 ) , 1 ) ; bestlen = 10e6 ; for ( j = 0 ; j < ninserts ; ++ j ) { tnt ( "edit ] 0 %i %i %i ; " , root , add , destorder [ j ] ) ; if ( bestlen > ( this = length ( 0 ) ) ) { bestlen = this ; bestat = destorder [ j ] ; } tnt ( "pruntax 0 / %i ; " , add ) ; } tnt ( "edit ] 0 %i %i %i ; " , root , add , bestat ) ; } progress ( 0 , 0 , NULL ) ; tnt ( "sil-all ; report=; " ) ; tntprintf ( "Calculated Wagner tree, %i steps.\n" , length ( 0 ) ) ; }