Prove that lca correctly prints the least common ancestor


Ancestor's algorithm

The least common ancestor of two nodes u and ν in a rooted tree T is the node w that is an ancestor of both u and ν and that has the greatest depth in T. In the off-line least-common-ancestors problem, we are given a rooted tree T and an arbitrary set P = {{u, ν}} of unordered pairs of nodes in T, and we wish to determine the least common ancestor of each pair in P. To solve the off-line least-common-ancestors problem, the following procedure performs a tree walk of T with the initial call LCA (T.root). We assume that each node is colored WHITE prior to the walk.

LCA(u)

1 MAKE-SET(u)
2 FIND-SET(u).ancestor = u
3 for each child ν of u in T
4 LCA(ν)
5 UNION(u, ν)
6 FIND-SET(u).ancestor D u
7 u.color = BLACK
8 for each node ν such that {u, ν } ∈P
9 if ν.color = = BLACK
10 print "The least common ancestor of"

u "and" ν "is" FIND-SET(ν).ancestor

a. Argue that line 10 executes exactly once for each pair {u,ν}∈P.

b. Argue that at the time of the call LCA(u), the number of sets in the disjoint-set data structure equals the depth of u in T .

c. Prove that LCA correctly prints the least common ancestor of u and ν for each pair {u, ν} ∈P.

d. Analyze the running time of LCA, assuming that we use the implementation of the disjoint-set data structure in Section 21.3.

Solution Preview :

Prepared by a verified Expert
Data Structure & Algorithms: Prove that lca correctly prints the least common ancestor
Reference No:- TGS01382567

Now Priced at $25 (50% Discount)

Recommended (95%)

Rated (4.7/5)