Dov Harel and Robert Endre Tarjan Fast Algorithms for Finding Nearest Common Ancestors SIAM J. COMPUT. Vol. 13:338--55, May 1984 Speaker : - PowerPoint PPT Presentation

1 / 40
About This Presentation
Title:

Dov Harel and Robert Endre Tarjan Fast Algorithms for Finding Nearest Common Ancestors SIAM J. COMPUT. Vol. 13:338--55, May 1984 Speaker :

Description:

National Chi Nan University. 2. Source. Dov Harel and Robert Endre Tarjan. ... NCA that runs on a random access machine and uses O(n) preprocessing time, O(1) ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 41
Provided by: wu79
Category:

less

Transcript and Presenter's Notes

Title: Dov Harel and Robert Endre Tarjan Fast Algorithms for Finding Nearest Common Ancestors SIAM J. COMPUT. Vol. 13:338--55, May 1984 Speaker :


1
Dov Harel and Robert Endre Tarjan Fast
Algorithms for Finding Nearest Common
AncestorsSIAM J. COMPUT. Vol. 13338--55, May
1984Speaker  Chan Shuo Wu (???)Dept. of
CSIENational Chi Nan University
2
Source
  • Dov Harel and Robert Endre Tarjan. Fast Algorithm
    for Finding Nearest Common Ancestors. SIAM J.
    Comput. Vol. 13338--55, May 1984.

3
Introduction
  • lowest common ancestor

Denote the nearest common ancestor of vertices x
and y by nca(x, y).
4
  • This paper presents an algorithm for NCA that
    runs on a random access machine and uses O(n)
    preprocessing time, O(1) time per query, and O(n)
    space.

5
Idea
  • Preprocessing
  • For complete binary trees
  • For general rooted trees
  • The difficulty is on how to perform NCA query in
    constant time.

6
A Fast Algorithm for Complete Binary Trees
7
A Complete Binary Tree B
8
Path Number
  • Each node v of B is assigned a number that
    encodes the unique path from the root to v.

9
1001 1011 ---- 0010 00?0 1001 ---- 1011 ---- 1010

Set to 0
10
Computing nca(x, y)
  • Compute XOR(x, y)
  • Find the position of the left-most 1-bit in
    XOR(x, y). Let it be k.
  • Let t be x (or y). Set the bit in position k of t
    to be 1 and those bits right to k to be 0.
  • Set nca(x, y)t.

11
Preprocessing of B
  • Build an O(n)-size table in O(n) time
  • With this table, the following operations on
    binary numbers can be done in constant time
  • find the position k of the left-most 1-bit
  • set bits to the right of position k to zero

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ...
1 2 2 3 3 3 3 4 4 4 4 4 4 4 4 ...
1111 1110 1110 1100 1100 1100 1100 1000 1000 1000 1000 1000 1000 1000 1000 ...
1 2 4 8 16
12
1001 XOR 1011 ---- 0010
1001 XOR 1011 ---- 0010 OR 1001 ---- 1011 AND 1110
---- 1010
...
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
...
1111
1110
1101
1100
1011
1010
1001
1000
0111
0110
0101
0100
0011
0010
0001
...
4
4
4
4
4
4
4
4
3
3
3
3
2
2
1
...
1000
1000
1000
1000
1000
1000
1000
1000
1100
1100
1100
1100
1110
1110
1111
13
Mapping General Tree to Complete Binary Tree
14
T
B
15
Preprocessing of T
16
Depth-First Numbering
0001
1
0010
0101
2
5
1000
3
4
6
7
8
0011
0100
0110
0111
9
10
1001
1010
17
  • Definition For any number v, height of v, h(v)
    denotes the position of the least-significant
    1-bit in the binary representation of v.
  • Definition For a node v of T, let I(v) be a node
    w in T such that h(w) is maximum over all nodes
    in the subtree of v.

18
v ? I (v)
0001
1
a run
0010
0101
2
5
1000
3
4
6
7
8
0011
0100
0110
0111
9
10
1001
1010
19
  • Lemma For any node v in T, there is a unique node
    w in the subtree of v such that h(w) is maximum
    over all nodes in v's subtree.
  • For any node v in T, node I(v) is the deepest
    node in the run containing node v.
  • The function v ? I(v) is well defined.

20
  • Lemma If z is an ancestor of x in T then I(z) is
    an ancestor of I(x) in B.

I(z)
I(x)
B
21
  • Lemma If z is an ancestor of x in T then I(z) is
    an ancestor of I(x) in B.
  • Proof

...010100 ...000110 ...010000
I(z) I(x) N
z
x
010000
010100
N
I(z)
000110
I(x)
T
22
  • Lemma If z is an ancestor of x in T then I(z) is
    an ancestor of I(x) in B.

I(z)
I(y)
I(x)
B
23
Preprocessing of T (cont.)
24
  • For each node v in T, create an O(log n)-bit
    number Av. Bit Av(i) is set to 1 if and only if
    node v has some ancestor in T that maps to height
    i in B.

1000 1000
1
0100 1100
2
5
3
4
6
7
8
0011 1101
0110 1010
0111 1001
9
10
1001 1001
1010 1010
25
  • For each node v in T, create an O(log n) bit
    number Av. Bit Av(i) is set to 1 if and only if
    node v has some ancestor in T that maps to height
    i in B.

1 2 3 4 5 6 7 8 9 10
1000 1100 1101 1100 1000 1010 1001 1000 1001 1010
26
  • For each node in T, set a pointer to its parent
    node in T.

27
  • For each node v, set a pointer to the root of the
    run containing node v.

0001
1
0010
0101
2
5
1000
3
4
6
7
8
0011
0100
0110
0111
9
10
1001
1010
28
Constant-Time NCA Retrieval
I(z)
I(y)
I(x)
B
29
Constant-Time nca Retrieval
x
y
x
I(z)
I(x)
y
T
I(y)
30
  • Find the lowest common ancestor b in B of nodes
    I(x) and I(y).
  • Find the smallest position j greater than or
    equal to h(b) such that both numbers Ax and Ay
    have 1-bits in position j. j is then h(I(z)).
  • Find node x, the closet node to x on the same
    run as z as follow
  • Find the position l of the right-most 1-bit in
    Ax.
  • If l j, then set x x (x and z are on the
    same run in T) and go to step 4. Otherwise (when
    l lt j)
  • Find the position k of the left-most 1-bit in Ax
    that is to the right of position j. From the
    number consisting of the bits of I(x) to the left
    of position k, followed by a 1-bit in position k,
    followed by all zeros. (That number will be I(w),
    even though we dont yet know w.) Look up node
    L(I(w)), which must be node w. Set node x to be
    the parent of node w in T.
  • Find node y, the closest node to y on the same
    run as z, by the same approach as in step 3.
  • If x lt y then set z to x, else set z to y.

31
0011 XOR 0110 ---- 0101 OR 0011 ---- 0111 AND 1100
---- 0100
32
  • Lemma Let b be the NCA of I(x) and I(y) in B. Let
    j be the smallest position ? h(b) such that both
    Ax and Ay have 1-bits in position j. Then node
    I(z) is at height j in B.

I(z)
b
I(y)
I(x)
B
33
1101 AND 1100 ---- 1100
1010 AND 1100 ---- 1000
1100 AND 1000 ---- 1000
h(I (z)) h(1000) 4
1 2 3 4 5 6 7 8 9 10
1000 1100 1101 1100 1000 1010 1001 1000 1001 1010
A
34
Constant-Time NCA Retrieval
x
y
x
I(z)
I(x)
y
T
I(y)
35
h(I (z)) 4
1101 AND 0111 ---- 0101 OR 0011 ---- 0111 AND 110
0 ---- 0100
NOT 1000
1 2 3 4 5 6 7 8 9 10
1000 1100 1101 1100 1000 1010 1001 1000 1001 1010
A
36
Constant-Time NCA Retrieval
x
y
x
I(z)
I(x)
y
T
I(y)
37
0001
1
0010
0101
2
5
1000
3
4
6
7
8
0011
0100
0110
0111
9
10
1001
1010
38
Constant-Time NCA Retrieval
x
y
x
I(z)
I(x)
y
T
I(y)
39
Constant-Time NCA Retrieval
z
y
x
I(z)
I(x)
y
T
I(y)
40
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com