In Chapter 8 we discuss an algorithm that can be used for compute the transitive
closure for arbitrary graphs (with or without loops).
If a data set has a hierarchical structure, then it can be described by a rooted
tree, that is, by a special acyclic graph G = (V, E) that has a distinguished
vertex v0 called root such that for every other vertex v of the graph there is
a unique path that joins v0 to v. It is not difficult to show that for any two
distinct vertices u, v of a rooted tree there exists at most one path that joins u
to v. If such a path exists then we say that v is a descendant of u.