howmanytrees(n, rooted = TRUE, binary = TRUE,
labeled = TRUE, detail = FALSE)
TRUE
).TRUE
).TRUE
).FALSE
). This
applies only for the multifurcating trees, and the bifurcating,
rooted, unlabeled trees (aka tree shapes).detail = TRUE
is
used, a named vector or matrix. For multifurcating trees, and bifurcating, rooted, unlabeled trees,
the calculation is done iteratively for 1 to n
tips. Thus the
user can print all the intermediate values if detail = TRUE
, or
only a single value if detail = FALSE
(the default).
For multifurcating trees, if detail = TRUE
, a matrix is
returned with the number of tips as rows (named from 1
to
n
), and the number of nodes as columns (named from 1
to
n - 1
). For bifurcating, rooted, unlabeled trees, a vector is
returned with names equal to the number of tips (from 1
to
n
).
The number of unlabeled trees (aka tree shapes) can be computed only for the rooted binary cases.
Note that if an infinite value (Inf
) is returned this does not
mean that there is an infinite number of trees (this cannot be if the
number of tips is finite), but that the calculation is beyond the
limits of the computer.
### Table 3.1 in Felsenstein 2004:
for (i in c(1:20, 30, 40, 50))
cat(paste(i, howmanytrees(i), sep = "t"), sep ="")
### Table 3.6:
howmanytrees(8, binary = FALSE, detail = TRUE)
Run the code above in your browser using DataLab