Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr....

13
Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät für Angewandte Wissenschaften Albert-Ludwigs-Universität Freiburg
  • date post

    18-Dec-2015
  • Category

    Documents

  • view

    225
  • download

    3

Transcript of Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr....

Page 1: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Orthogonal Range Searching

Computational Geometry, WS 2006/07Lecture 13 – Part II

Prof. Dr. Thomas Ottmann

Algorithmen & Datenstrukturen, Institut für InformatikFakultät für Angewandte WissenschaftenAlbert-Ludwigs-Universität Freiburg

Page 2: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 2

Orthogonal Range Searching

1. Linear Range Search : 1-dim Range Trees

2. 2-dimensional Range Search : kd-trees

3. 2-dimensional Range Search : 2-dim Range Trees

4. Range Search in Higher Dimensions

Page 3: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 3

Range search

Salary

Children

Age

Input: Set of data points in d-space, orthogonal (iso-oriented) query range R

Output: All point contained in R

Page 4: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 4

2 – dimensional range search

Assumption :

No two points have the same x- or y-coordinates

Page 5: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 5

Construction of kd-trees

1 p

1

2

3

4 5

7

6

8

9

10

1

1,2,3,4,5 6,7,8,9,10

P1 P2

Page 6: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 6

Construction of kd-trees

15 7

2

6

8

4

3

91

2

3

4 5

67

8

9

10

1 2

3 4 5

6 7

8 9 10

1

2 3

4 5 6 7

89

Page 7: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 7

Algorithm for building 2d-trees

BuildTree (P, depth)

if (|P| = 1) return leaf(P)

if (depth even) split P into P1,P2

through vertical median

else split P into P1,P2 through

horizontal median

v1 = BuildTree (P1, depth + 1)

v2 = BuildTree (P2, depth + 1)

return (v1 , median , v2 )

Page 8: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 8

Theorem: The algorithm for constructing a 2d-tree uses O(n) storage and can be carried out in time O(n log n)

Proof: Space: 2d-tree is a binary tree with n leaves.Time:

O(1) , if n =1T(n) =

O(n) + 2T(n/2) , if n > 1 T(n) <= cn + 2T(n/2)

<= cn + 2(cn/2 + 2T(n/4)) <= ....... = O(n log n)

Analysis

Page 9: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 9

Nodes represent regions1

5 7

2

6

8

4

3

91

2

3

4 5

67

8

9

10

1

2 3

4 5 6 7

8 9

1 2

3 4 5

6 7

8 9 10

below

left right

above

Regions: Region(5) is left of 1 and above 2

Incremental ............ :

Region(left(v)) = left(v) Region(v)

Page 10: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 10

Algorithm search in a 2d-tree

15 7

2

6

8

4

3

91

2

3

4 5

67

8

9

10

1

2 3

4 5 6 7

8 9

1 2

3 4 5

6 7

8 9 10

SearchTree(v,R)

if (leaf(v) && v in R) then write v; return

if (Region(left(v)) in R ) then write Subtree(left(v)), return

if (Region(left(v)) R <> ) then SearchTree(left(v), R)

if (Region(right(v)) in R) then write Subtree(right(v)),return

if (Region(right(v)) R <> ) then SearchTree(right(v),R)

Page 11: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 11

Analysis algorithm search in 2d-tree

Lemma : A query with an axis-parallel rectangle in a 2d-tree storing n points can be performed in time, where k is the number of reported points.

kn

Proof : B = # of blue nodes, G = # of green nodesG(n) = O(k).B(n) # of vertical intersection regions V +

# of horizontal intersection regions H Line l intersects either the region to left of

root(T) or to the right. This gives the following recursion:

V(n) = O(1) , if n = 1 = 2 + 2V(n/4), if n > 1V(n) = 2 + 4 + 8 + 16 + ... + 2log

4n

= 2 + 4 + 8 + 16 + ... + n = O(n)

Page 12: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 12

V

# of regions in a 2d-tree with n points, which are intersected by a vertical straight line.

V(1)= 1

V(n)= 2+ 2V(n/4)

Page 13: Orthogonal Range Searching Computational Geometry, WS 2006/07 Lecture 13 – Part II Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für.

Computational Geometry, WS 2006/07Prof. Dr. Thomas Ottmann 13

Summary

A 2d-tree for a set P of n points in the plane uses

O(n) storage and can be built in O(n log n) time.

A rectangular range query on the 2d-tree takes

kn time, where k is number of reported points.