Label Vertices of a Tree by Branch Membership
Given a linear network which is a tree (acyclic graph), this function assigns a label to each vertex, indicating its position in the tree.
treebranchlabels(L, root = 1)
L |
Linear network (object of class |
root |
Root of the tree. An integer index identifying
which point in |
The network L
should be a tree, that is, it must have no loops.
This function computes a character string label for each vertex
of the network L
. The vertex identified by root
(that is, vertices(L)[root]
) is taken as the root of the tree
and is given the empty label ""
.
If there are several line
segments which meet at the root vertex, each of these segments is the
start of a new branch of the tree; the other endpoints of these
segments are assigned the labels
"a"
, "b"
, "c"
and so on.
If only one segment issues from the root vertex,
the other endpoint of this segment is assigned the empty label
""
.
A similar rule is then applied to each of the newly-labelled vertices.
If the vertex labelled "a"
is joined to two other unlabelled
vertices, these will be labelled "aa"
and "ab"
.
The rule is applied recursively until all vertices have been labelled.
If L
is not a tree, the algorithm will terminate, but the
results will be nonsense.
A vector of character strings, with one entry for each point in
vertices(L)
.
Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner r.turner@auckland.ac.nz and Ege Rubak rubak@math.aau.dk
deletebranch
, extractbranch
,
treeprune
for manipulating a network using the
branch labels.
linnet
for creating a network.
# make a simple tree m <- simplenet$m m[8,10] <- m[10,8] <- FALSE L <- linnet(vertices(simplenet), m) plot(L, main="") # compute branch labels tb <- treebranchlabels(L, 1) tbc <- paste0("[", tb, "]") text(vertices(L), labels=tbc, cex=2)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.