lowest common ancestors
DESCRIPTION
Lowest common ancestors. 0. Shallowest node. 12. 8. 3. 9. 1. 2. 11. 4. 7. 10. 5. 6. Write an Euler tour of the tree. 3. 3. 2. 3. 1. 4. 1. 7. 1. 3. 5. 6. 5. 3. 5. 1. 2. 4. 6. 7. LCA(1,5) = 3. 0. minimum. 12. 8. 3. 9. 1. 2. 11. 4. 7. 10. 5. 6. 3. 5. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/1.jpg)
Lowest common ancestors
![Page 2: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/2.jpg)
Write an Euler tour of the tree
3
4
51
672
4 1 7 1 3 5 6 5 33 1231
2
3
4
6
9
10
8
57
11
12
0
LCA(1,5) = 3
Shallowest node
![Page 3: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/3.jpg)
3
4
51
672
4 1 7 1 3 5 6 5 33 123
1
2
3
4
6
9
10
8
57
11
12
0
2 1 2 1 0 1 2 1 00 110
minimum
![Page 4: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/4.jpg)
Range minimum
3
4
51
672
4 1 7 1 3 5 6 5 33 123
1
2
3
4
6
9
10
8
57
11
12
0
2 1 2 1 0 1 2 1 00 110
minimum
Preprocess an array, such that given i,j you can find the minimum in [i,j] fast
Reduction takes linear time
![Page 5: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/5.jpg)
Trivial algorithms for RMQ
![Page 6: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/6.jpg)
Less trivial algorithms to RMQ
• Try to use O(nlog(n)) space to do a query in O(1) time
![Page 7: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/7.jpg)
... ... .........blocksn log
2n
… ...B[0] B[2n/logn]B[i]
… ...A’[0] A’[2n/logn]A’[i]
Rememeber the min in each block (A’) and its position (B)
Optimal solution
![Page 8: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/8.jpg)
10 337 2634 9 2 1225 22
0 21 93 4 5 6 7 8 10 11 12 13 14 15
24 43 5 11 19 27
n=16A[] :
10 25 22 7 34 9 … blocksn log
2n =8
10 7 9
0 21A’[] :
… 0 3 5
0 21B[] :
…
Example
![Page 9: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/9.jpg)
Preprocess A’ for RMQ using the O(nlog(n)) space algorithm.
Since the size of A’ is this would take
2
log
n
n
2 2log( ) ( )
log log
n nO n
n n Space,
preprocessing time
![Page 10: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/10.jpg)
i and j might be in the same block, we need some mechanism to answer inside blocks
i < j on different blocks, answer the query as follows:
1. Compute minima from i to end of its block.2. Compute minima of all blocks in between i’s and j’s
blocks.3. Compute minima from the beginning of j’s block to j.
Return the index of the minimum of these 3 values.
How do we answer queries ?
![Page 11: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/11.jpg)
So what do we do inside blocks?
![Page 12: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/12.jpg)
We need to solve a special case of RMQ
3
4
51
672
4 1 7 1 3 5 6 5 33 123
1
2
3
4
6
9
10
8
57
11
12
0
2 1 2 1 0 1 2 1 00 110
1 restriction
![Page 13: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/13.jpg)
0 13 2 2 1 2 3 1 2
+1 -1 -1-1 +1 +1 -1+1 +1
Each subproblem can be described by the first entry and a vector of ±1
Two subproblems with the same vector of ±1 are equivalent
3 4 6 5 5 4 5 6 4 5
![Page 14: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/14.jpg)
The bottom line
There aren’t too many different subproblems, only
log1
22 ( )n
O n
For each such subproblem prepare all answers in advance 2log ( )O n n o n
![Page 15: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/15.jpg)
n
Pick a subproblem:
Find the solution using i,j:
![Page 16: Lowest common ancestors](https://reader035.vdocument.in/reader035/viewer/2022072014/56812f52550346895d94e374/html5/thumbnails/16.jpg)
... ... .........blocksn log
2n
… ...B[0] B[2n/logn]B[i]
… ...A’[0] A’[2n/logn]A’[i]
Summary
Each block know its subproblem (A’’)
… ...A’’[0] A’’[2n/logn]A’’[i]