Lowest common ancestors
Download
1 / 16

Lowest common ancestors - PowerPoint PPT Presentation


  • 62 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Lowest common ancestors' - orla-herring


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Write an euler tour of the tree

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

1

2

4

6

7

3

2

3

1

4

1

7

1

3

5

6

5

3

0

1

0

1

2

1

2

1

0

1

2

1

0


Range minimum

0

minimum

12

8

3

9

1

2

11

4

7

10

5

6

Range minimum

Preprocess an array, such that given i,j you can find the minimum in [i,j] fast

3

5

Reduction takes linear time

1

2

4

6

7

3

2

3

1

4

1

7

1

3

5

6

5

3

0

1

0

1

2

1

2

1

0

1

2

1

0



Less trivial algorithms to rmq
Less trivial algorithms to RMQ

  • Try to use O(nlog(n)) space to do a query in O(1) time


Optimal solution

...

...

...

...

...

Rememeber the min in each block (A’) and its position (B)

… ...

B[0]

B[i]

B[2n/logn]

… ...

A’[0]

A’[i]

A’[2n/logn]


Example
Example

n=16

A[] :

8

0

1

2

3

4

5

6

7

9

10

11

12

13

14

15

10

25

22

7

34

9

2

26

33

12

24

43

5

11

19

27

= 8

10

25

22

7

34

9

B[] :

A’[] :

0

1

2

0

1

2

0

3

5

10

7

9


Preprocess A’ for RMQ using the O(nlog(n)) space algorithm.

Since the size of A’ is

this would take

Space, preprocessing time


How do we answer queries
How do we answer queries ? algorithm.

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:

  • Compute minima from i to end of its block.

  • Compute minima of all blocks in between i’s and j’s blocks.

  • Compute minima from the beginning of j’s block to j.

    Return the index of the minimum of these 3 values.



We need to solve a special case of rmq

0 algorithm.

12

8

3

9

1

2

11

4

7

10

5

6

restriction

We need to solve a special case of RMQ

3

5

1

2

4

6

7

3

2

3

1

4

1

7

1

3

5

6

5

3

0

1

0

1

2

1

2

1

0

1

2

1

0


3 algorithm.

4

5

6

5

4

5

6

5

4

Two subproblems with the same vector of ±1 are equivalent

Each subproblem can be described by the first entry and a vector of ±1

0

1

2

3

2

1

2

3

2

1

+1

+1

+1

-1

-1

+1

+1

-1

-1


The bottom line
The bottom line algorithm.

There aren’t too many different subproblems, only

For each such subproblem prepare all answers in advance 


Find the solution using i,j: algorithm.

Pick a subproblem:


Summary
Summary algorithm.

...

...

...

...

...

Each block know its subproblem (A’’)

… ...

B[0]

B[i]

B[2n/logn]

… ...

A’[0]

A’[i]

A’[2n/logn]

… ...

A’’[0]

A’’[i]

A’’[2n/logn]


ad