Dr. Tamara Mchedlidze · Dr. Chih-Hung Liu · Computational Geometry Lecture Range Searching Chih-Hung Liu · Tamara Mchledidze Computational Geometry Lecture INSTITUT F ¨ UR THEORETISCHE INFORMATIK · FAKULT ¨ AT F ¨ UR INFORMATIK Range Searching 20.06.2018
132
Embed
Computational Geometry Lecture Range Searching - KIT
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Dr. Tamara Mchedlidze · Dr. Chih-Hung Liu · Computational Geometry Lecture Range Searching
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Geometry in Databases
In a personnel database, the employees of a company areanonymized and their monthly income and birth year aresaved. We now want to perform a search: which employeeshave an income between 2,000 and 3,000 Euro and were bornbetween 1960 and 1980?
2
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Geometry in Databases
In a personnel database, the employees of a company areanonymized and their monthly income and birth year aresaved. We now want to perform a search: which employeeshave an income between 2,000 and 3,000 Euro and were bornbetween 1960 and 1980?
Geometric Interpretation:Entries are points: (birth year, income level) and the query isan axis-parallel rectangle
income
birth year
2000
3000
1960 1980
2
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Geometry in Databases
In a personnel database, the employees of a company areanonymized and their monthly income and birth year aresaved. We now want to perform a search: which employeeshave an income between 2,000 and 3,000 Euro and were bornbetween 1960 and 1980?
income
birth year
2000
3000
1960 1980
24
children
This problem can easily be generalized to d dimensions.
2
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
17
8
5
7
7
52
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
17
8
5
7
7
52
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
8
5
7
7
52
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
7
7
52
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
7
52
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
6
7
52
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
6
7
52
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
6
7
5250
33
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
6
7
5250
3350
41
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
6
7
5250
3350
4150
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
6
7
5250
3350
4150
52
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries
Given: n points in Rd
Output: A data structure that e�ciently answers queries ofthe form [a1, b1]⇥ · · ·⇥ [ad, bd]
Problem: Design a data structure for the case d = 1.
Solution: Balanced binary search tree:Stores points in the leavesInternal node v stores pivot value xv
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
Example:Search for all points in [6,50]
vsplit
6 5017
86
5
6
7
6
7
5250
3350
4150
52
Answer:Points in the leaves between thesearch paths, (i.e.,{7,8,12,15,17,21,33,41})
3
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
1dRangeQuery
FindSplitNode(T, x, x0)
v root(T )while v not a leaf and (x0 xv or x > xv) do
if x0 xv then v lc(v) else v rc(v)return v
1dRangeQuery(T, x, x0)
vsplit FindSplitNode(T, x, x0)if vsplit is leaf then report vsplitelse
v lc(vsplit)while v not a leaf do
if x xv thenReportSubtree(rc(v)); v lc(v)
else v rc(v)
report v// analog. for x
0 and rc(vsplit)
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
vsplit
6 5017
86
5
6
7
6
7
5250
3350
4150
52
93
4
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
1dRangeQuery
FindSplitNode(T, x, x0)
v root(T )while v not a leaf and (x0 xv or x > xv) do
if x0 xv then v lc(v) else v rc(v)return v
1dRangeQuery(T, x, x0)
vsplit FindSplitNode(T, x, x0)if vsplit is leaf then report vsplitelse
v lc(vsplit)while v not a leaf do
if x xv thenReportSubtree(rc(v)); v lc(v)
else v rc(v)
report v// analog. for x
0 and rc(vsplit)
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
vsplit
6 5017
86
5
6
7
6
7
5250
3350
4150
52
Can find canonical subset inlinear time
93
4
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of 1dRangeQuery
Theorem 1: A set of n points in R can preprocessed inO(n log n) time and stored in O(n) space so thatwe can answer range queries in O(k + log n)time, where k is the number of reported points.
2
5 8 12 15
17
21 33 41
58
672 93
67582112
15
vsplit
6 5017
86
5
6
7
6
7
5250
3350
4150
52
1dRangeQuery(T, x, x0)
vsplit FindSplitNode(T, x, x0)if vsplit is leaf then report vsplitelse
v lc(vsplit)while v not a leaf do
if x xv thenReportSubtree(rc(v)); v lc(v)
else v rc(v)
report v// analog. for x
0 and rc(vsplit)
5
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries for d = 2
Given: Set P of n points in R2
Goal: A data structure to e�ciently answer range queries ofthe form R = [x, x0]⇥ [y, y0]
6
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries for d = 2
Given: Set P of n points in R2
Goal: A data structure to e�ciently answer range queries ofthe form R = [x, x0]⇥ [y, y0]
Ideas for generalizing the 1d case?
6
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries for d = 2
Given: Set P of n points in R2
Goal: A data structure to e�ciently answer range queries ofthe form R = [x, x0]⇥ [y, y0]
Ideas for generalizing the 1d case?
Solutions:
one search tree, alternate search for x and y coordinates
primary search tree on x-coordinates,several secondary search trees on y-coordinates
! kd-Tree
! Range Tree
6
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries for d = 2
Given: Set P of n points in R2
Goal: A data structure to e�ciently answer range queries ofthe form R = [x, x0]⇥ [y, y0]
Ideas for generalizing the 1d case?
Solutions:
one search tree, alternate search for x and y coordinates
primary search tree on x-coordinates,several secondary search trees on y-coordinates
! kd-Tree
! Range Tree
Temporary assumption: general position, that is no twopoints have the same x- or y-coordinates
6
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1 `1
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
`1
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
`1
`24
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
`4
`1
`24
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
`4
`1
`2
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
`8
`4
`1
`2
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
`8
`4
`1
`2
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
p1
`8
`4
`1
`2
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
p1 p2
`8
`4
`1
`2
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`2
p1 p2
p3
`8
`4
`1
`2
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`5
`2
p1 p2
p3
`8
`4
`1
`2
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`5
`2
p1 p2
p3
`8
`4
`1
`2
`5
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`5
`2
p1 p2
p3 p4
`8
`4
`1
`2
`5
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`5
`2
p1 p2
p3 p4 p5
`8
`4
`1
`2
`5
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`5
`2
p1 p2
p3 p4 p5
`8
`4
`1
`2
`5
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`5
`2
p1 p2
p3 p4 p5
`8
`4
`1
`2 `3
`5
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`6
`5
`2
p1 p2
p3 p4 p5
`8
`4
`1
`2 `3
`5
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`6
`5
`2
p1 p2
p3 p4 p5
`8
`4
`1
`2 `3
`5 `6
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`6
`5
`2
p1 p2
p3 p4 p5
`8
`4
`1
`2 `3
`5 `6
`8
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`6
`5
`2
p1 p2
p3 p4 p5
`8
`4
`1
`2 `3
`5 `6
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`6
`5
`2
p1 p2
p3 p4 p5
p6
`8
`4
`1
`2 `3
`5 `6
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`6
`5
`2
p1 p2
p3 p4 p5
p6 p7
`8
`4
`1
`2 `3
`5 `6
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1
`3
`6
`5
`2
p1 p2
p3 p4 p5
p6 p7
p8
`8
`4
`1
`2 `3
`5 `6
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`7
`3
`6
`5
`2
p1 p2
p3 p4 p5
p6 p7
p8
`8
`4
`1
`2 `3
`5 `6
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`7
`3
`6
`5
`2
p1 p2
p3 p4 p5
p6 p7
p8
`8
`4
`1
`2 `3
`5 `6 `7
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`7
`3
`6
`5
`2
p1 p2
p3 p4 p5
p6 p7
p8 p9
`8
`4
`1
`2 `3
`5 `6 `7
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
kd-Trees: Example
p
`1`7
`3
`6
`5
`2
p1 p2
p3 p4 p5
p6 p7
p8 p9 p10
`8
`4
`1
`2 `3
`5 `6 `7
`8 `9
`4
4
p1
p5
p3
p2
p7
p9
p10
p6
p8
`9
7
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
p2
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
Point d|P |/2e
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
`0 p2
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
vleft vright
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
vleft vright
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
v`
vleft vright
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
v`
vleft vright
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
v`
vleft vright
Dr. Martin Nollenburg · Vorlesung Algorithmische Geometrie Bereichsabfragen
kd-Trees: Construction
p
`
4
p1
p5
p3
p7
p9
p10
p6
p8
BuildKdTree(P, depth)
if |P | = 1 then
return leaf with the point in Pelse
if depth is even then
divide P vertically at` : x = xmedian(P ) in
P1 (Points left to or on `) andP2 = P \ P1
else
divide P horizontally at` : y = ymedian(P ) in
P1 (Points below or on `) undP2 = P \ P1
vleft BuildKdTree(P1, depth + 1)vright BuildKdTree(P2, depth + 1)Create node v, which stores `Make vleft und vright children of vreturn v
p2
v`
vleft vright
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of kd-Tree Construction
Lemma 1:A kd-tree for n points in R2 can be constructed inO(n log n) time, using O(n) space.
9
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of kd-Tree Construction
Lemma 1:A kd-tree for n points in R2 can be constructed inO(n log n) time, using O(n) space.
Proof sketch:Determine median:– make two lists sorted on x- and y-coordinates– at each step, determine median and divide the lists
9
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of kd-Tree Construction
Lemma 1:A kd-tree for n points in R2 can be constructed inO(n log n) time, using O(n) space.
Proof sketch:Determine median:– make two lists sorted on x- and y-coordinates– at each step, determine median and divide the lists
We get the following recurrence:
T (n) =
(O(1) if n = 1
O(n) + 2T (dn/2e) otherwise
9
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of kd-Tree Construction
Lemma 1:A kd-tree for n points in R2 can be constructed inO(n log n) time, using O(n) space.
Proof sketch:Determine median:– make two lists sorted on x- and y-coordinates– at each step, determine median and divide the lists
We get the following recurrence:
T (n) =
(O(1) if n = 1
O(n) + 2T (dn/2e) otherwise
Solves to T (n) = O(n log n) (analogous to MergeSort)
9
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of kd-Tree Construction
Lemma 1:A kd-tree for n points in R2 can be constructed inO(n log n) time, using O(n) space.
Proof sketch:Determine median:– make two lists sorted on x- and y-coordinates– at each step, determine median and divide the lists
We get the following recurrence:
T (n) =
(O(1) if n = 1
O(n) + 2T (dn/2e) otherwise
Solves to T (n) = O(n log n) (analogous to MergeSort)
Linear space, since we are using a binary tree with n leaves.
9
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries in a kd-Tree
p1
p2
p3
p4 p5
p6p7
p8
p9p10
p11
p12p13
p1 p2
p4 p5p3
p6
p7 p8 p9 p10
p11 p12 p13
10
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries in a kd-Tree
p1
p2
p3
p4 p5
p6p7
p8
p9p10
p11
p12p13
p1 p2
p4 p5
SearchKdTree(v,R)
if v leaf thenreport point p in v when p 2 R
elseif region(lc(v)) ✓ R then
ReportSubtree(lc(v))else
if region(lc(v))\R 6= ; thenSearchKdTree(lc(v), R)
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of Queries in kd-Trees
Lemma 2:A range query with an axis-aligned rectangle R in akd-tree on n points may use O(
pn+ k) time,
where k is the number of reported points.
11
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of Queries in kd-Trees
Lemma 2:A range query with an axis-aligned rectangle R in akd-tree on n points may use O(
pn+ k) time,
where k is the number of reported points.
Proof sketch:Calls to ReportSubtree take O(k) time in total
11
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Analysis of Queries in kd-Trees
Lemma 2:A range query with an axis-aligned rectangle R in akd-tree on n points may use O(
pn+ k) time,
where k is the number of reported points.
Proof sketch:Calls to ReportSubtree take O(k) time in total
Still missing:Number of remaining nodes visited! Exercise
11
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Orthogonal Range Queries for d = 2
X
Given: Set P of n points in R2
Goal: A data structure to e�ciently answer range queries ofthe form R = [x, x0]⇥ [y, y0]
Ideas for generalizing the 1d case?
Solutions:
one search tree, alternate search for x and y coordinates
primary search tree on x-coordinates,several secondary search trees on y-coordinates
! kd-Tree
! Range TreeTemporary assumption: general position, that is no twopoints have the same x- or y-coordinates
12
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Trees
Idea: Use 1-dimensional search trees on two levels:a 1d search tree Tx on x-coordinates
v
P (v)
Tx
13
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Trees
Idea: Use 1-dimensional search trees on two levels:a 1d search tree Tx on x-coordinates
v
P (v)
Tx
in each node v of Tx a 1d search tree Ty(v) storesthe canonical subset P (v) on y-coordinates
Ty(v)
P (v)
13
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Trees
Idea: Use 1-dimensional search trees on two levels:a 1d search tree Tx on x-coordinates
v
P (v)
Tx
in each node v of Tx a 1d search tree Ty(v) storesthe canonical subset P (v) on y-coordinates
compute the points by x-query in Tx andsubsequent y-queries in the auxiliary structures Ty
for the subtrees in Tx
Ty(v)
P (v)
13
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Trees: Construction
BuildRangeTree(P )
if |P | = 1 thenCreate leaf v for the point in P
elseSplit P at xmedian into P1 = {p 2 P | px xmedian}, P2 = P \ P1
vleft BuildRangeTree(P1)vright BuildRangeTree(P2)Create node v with pivot xmedian and children vleft and vright
Ty(v) binary search tree for P w.r.t y-coordinatesreturn v
14
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Trees: Construction
BuildRangeTree(P )
if |P | = 1 thenCreate leaf v for the point in P
elseSplit P at xmedian into P1 = {p 2 P | px xmedian}, P2 = P \ P1
vleft BuildRangeTree(P1)vright BuildRangeTree(P2)Create node v with pivot xmedian and children vleft and vright
Ty(v) binary search tree for P w.r.t y-coordinatesreturn v
Problem: How much space and runtime does BuildRangeTree use?
14
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Trees: Construction
BuildRangeTree(P )
if |P | = 1 thenCreate leaf v for the point in P
elseSplit P at xmedian into P1 = {p 2 P | px xmedian}, P2 = P \ P1
vleft BuildRangeTree(P1)vright BuildRangeTree(P2)Create node v with pivot xmedian and children vleft and vright
Ty(v) binary search tree for P w.r.t y-coordinatesreturn v
Problem: How much space and runtime does BuildRangeTree use?
Lemma 3: A Range Tree for n points in R2 uses O(n log n)space and can be constructed in O(n log n) time.
14
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries in a Range Tree
Reminder:1dRangeQuery(T, x, x0)
vsplit FindSplitNode(T, x, x0)if vsplit is leaf then report vsplitelse
v lc(vsplit)while v not leaf do
if x xv thenReportSubtree(rc(v))v lc(v)
else v rc(v)
report v// analogous for x
0 and rc(vsplit)
15
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries in a Range Tree
Reminder:1dRangeQuery(T, x, x0)
vsplit FindSplitNode(T, x, x0)if vsplit is leaf then report vsplitelse
v lc(vsplit)while v not leaf do
if x xv thenReportSubtree(rc(v))v lc(v)
else v rc(v)
report v// analogous for x
0 and rc(vsplit)
2dRangeQuery(T, [x, x0]⇥ [y, y0])
1dRangeQuery(Ty(rc(v)), y, y0)
15
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries in a Range Tree
Reminder:1dRangeQuery(T, x, x0)
vsplit FindSplitNode(T, x, x0)if vsplit is leaf then report vsplitelse
v lc(vsplit)while v not leaf do
if x xv thenReportSubtree(rc(v))v lc(v)
else v rc(v)
report v// analogous for x
0 and rc(vsplit)
2dRangeQuery(T, [x, x0]⇥ [y, y0])
1dRangeQuery(Ty(rc(v)), y, y0)
Lemma 4:A range query in a Range Tree takes O(log2 n+ k)time, where k is the number of reported points.
15
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
Idea: Use this property to accelerate the 1d queries toO(1 + kv) time
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
Idea: Use this property to accelerate the 1d queries toO(1 + kv) time
Example:Two sets B ✓ A ✓ R in sorted arrays
3 10 19 23 30 37 59 62 70 80 100 105
10 19 30 70 80 100
A
B 62
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
Idea: Use this property to accelerate the 1d queries toO(1 + kv) time
Example:Two sets B ✓ A ✓ R in sorted arrays
3 10 19 23 30 37 59 62 70 80 100 105
10 19 30 70 80 100
A
B
Search interval [20,65]
23
30 62
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
Idea: Use this property to accelerate the 1d queries toO(1 + kv) time
Example:Two sets B ✓ A ✓ R in sorted arrays
3 10 19 23 30 37 59 62 70 80 100 105
10 19 30 70 80 100
A
B
Search interval [20,65]
23
30 62
Can we do better than two binary searches?
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
Idea: Use this property to accelerate the 1d queries toO(1 + kv) time
Example:Two sets B ✓ A ✓ R in sorted arrays
3 10 19 23 30 37 59 62 70 80 100 105
10 19 30 70 80 100
A
B 62
link a 2 A
with smallestb � a in B
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
Idea: Use this property to accelerate the 1d queries toO(1 + kv) time
Example:Two sets B ✓ A ✓ R in sorted arrays
3 10 19 23 30 37 59 62 70 80 100 105
10 19 30 70 80 100
A
B 62
link a 2 A
with smallestb � a in B
Search interval [20,65]
23
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Range Queries with Fractional Cascading
Observation: Range queries in a Range Tree perform O(log n)1d queries, each taking O(log n+ kv) time.The query interval [y, y0] is always the same!
Idea: Use this property to accelerate the 1d queries toO(1 + kv) time
Example:Two sets B ✓ A ✓ R in sorted arrays
3 10 19 23 30 37 59 62 70 80 100 105
10 19 30 70 80 100
A
B 62
link a 2 A
with smallestb � a in B
Search interval [20,65]
23
30
Pointer yields starting point for secondsearch in O(1) time
16
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Speed-up with Fractional Cascading
In Range Trees we have P (lc(v)) ✓ P (v) and P (rc(v)) ✓ P (v) as thecanonical sets.
(2,19)
(5,80)
(7,10)
(8,37)(12,3)
(15,99)
(17,62) (21,49)
(33,30)
(41,95)
(52,23)
(58,59)
(67,89)
(93,70)
2
5 7 8 12 15
17
21 33 41 52
58
672 93
67584121127
5
8
15
17
52
33
Tx
17
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Speed-up with Fractional Cascading
In Range Trees we have P (lc(v)) ✓ P (v) and P (rc(v)) ✓ P (v) as thecanonical sets.
Define for each array element A(v)[i] two pointers into the arraysA(lc(v)) and A(rc(v))! Layered Range Tree
3 99
10 19 37 80
30 49
80 3 99 3049
9962
6210 37
10 3719
8019
99623719103 80 30 4923 59 70 89 95
30 49233 95 59 70 89
23 95 59 70 89
95 23 89 70
3 10 19 23 30 37 49 59 62 70 80 89 95 99
(2,19)
(5,80)
(7,10)
(8,37)(12,3)
(15,99)
(17,62) (21,49)
(33,30)
(41,95)
(52,23)
(58,59)
(67,89)
(93,70)
2
5 7 8 12 15
17
21 33 41 52
58
672 93
67584121127
5
8
15
17
52
33
Tx
17
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Speed-up with Fractional Cascading
In Range Trees we have P (lc(v)) ✓ P (v) and P (rc(v)) ✓ P (v) as thecanonical sets.
Define for each array element A(v)[i] two pointers into the arraysA(lc(v)) and A(rc(v))! Layered Range Tree
3 99
10 19 37 80
30 49
80 3 99 3049
9962
6210 37
10 3719
8019
99623719103 80 30 4923 59 70 89 95
30 49233 95 59 70 89
23 95 59 70 89
95 23 89 70
3 10 19 23 30 37 49 59 62 70 80 89 95 99
(2,19)
(5,80)
(7,10)
(8,37)(12,3)
(15,99)
(17,62) (21,49)
(33,30)
(41,95)
(52,23)
(58,59)
(67,89)
(93,70)
2
5 7 8 12 15
17
21 33 41 52
58
672 93
67584121127
5
8
15
17
52
33
Tx
In the split node a binary search takes O(log n) time,then it takes O(1) time to follow the pointers in the children
17
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Speed-up with Fractional Cascading
Theorem 2: A Layered Range Tree on n points in R2 can beconstructed in O(n log n) time and space. Range queriestake O(log n+ k) time, where k is the number of reportedpoints.
In Range Trees we have P (lc(v)) ✓ P (v) and P (rc(v)) ✓ P (v) as thecanonical sets.
Define for each array element A(v)[i] two pointers into the arraysA(lc(v)) and A(rc(v))! Layered Range Tree
In the split node a binary search takes O(log n) time,then it takes O(1) time to follow the pointers in the children
17
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py)
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py) p =�(px|py), (py|px)
�
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py) p =�(px|py), (py|px)
�
unique coord.
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py) p =�(px|py), (py|px)
�
unique coord.Rectangle R = [x, x0]⇥ [y, y0]
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py) p =�(px|py), (py|px)
�
unique coord.Rectangle R = [x, x0]⇥ [y, y0]
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py) p =�(px|py), (py|px)
�
unique coord.Rectangle R = [x, x0]⇥ [y, y0]
R = [(x|�1), (x0|+1)]⇥ [(y|�1), (y0|+1)]
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py) p =�(px|py), (py|px)
�
unique coord.Rectangle R = [x, x0]⇥ [y, y0]
R = [(x|�1), (x0|+1)]⇥ [(y|�1), (y0|+1)]
Then:
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Arbitrary Point Sets
Idea: Instead of R, use pairs of numbers (a|b) with totalorder $ lexicographic order
p = (px, py) p =�(px|py), (py|px)
�
unique coord.Rectangle R = [x, x0]⇥ [y, y0]
R = [(x|�1), (x0|+1)]⇥ [(y|�1), (y0|+1)]
p 2 R , p 2 RThen:
So far: Points in general position, where no two points havethe same x- or y-coordinate
18
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Summary
Given: Set P of n points in R2
Construct: Data structures with e�cient range queries of theform R = [x, x0]⇥ [y, y0]
kd-Tree Range Tree
Preprocessing
Space
Query time
! We have seen two alternatives
19
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Summary
Given: Set P of n points in R2
Construct: Data structures with e�cient range queries of theform R = [x, x0]⇥ [y, y0]
kd-Tree Range Tree
Preprocessing
Space
Query time
O(n log n) O(n log n)
O(n) O(n log n)
O(pn+ k) O(log2 n+ k)
! We have seen two alternatives
19
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Summary
Given: Set P of n points in R2
Construct: Data structures with e�cient range queries of theform R = [x, x0]⇥ [y, y0]
kd-Tree Range Tree
Preprocessing
Space
Query time
O(n log n) O(n log n)
O(n) O(n log n)
O(pn+ k) O(log2 n+ k)
! We have seen two alternatives
19
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Summary
Given: Set P of n points in R2
Construct: Data structures with e�cient range queries of theform R = [x, x0]⇥ [y, y0]
kd-Tree Range Tree
Preprocessing
Space
Query time
O(n log n) O(n log n)
O(n) O(n log n)
O(pn+ k) O(log2 n+ k)
! We have seen two alternatives
O(n)
O(log2 n+ k)
19
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Discussion
How can the data structures generalize to d-dimensions?
20
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Discussion
How can the data structures generalize to d-dimensions?
kd-Trees function analogously and by dividing the points alternatelyon d coordinates. Space is still O(n), construction O(n log n) and thequery time is O(n1�1/d + k).
20
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Discussion
How can the data structures generalize to d-dimensions?
kd-Trees function analogously and by dividing the points alternatelyon d coordinates. Space is still O(n), construction O(n log n) and thequery time is O(n1�1/d + k).
Range Trees can be built recursively: the auxiliary search tree on thefirst coordinate is a (d� 1)-dimensional Range Tree. The constructionand space takes O(n logd�1
n) time; a query takes O(logd n+ k)time, and with fractional cascading, O(logd�1
n+ k) time.
20
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Discussion
How can the data structures generalize to d-dimensions?
kd-Trees function analogously and by dividing the points alternatelyon d coordinates. Space is still O(n), construction O(n log n) and thequery time is O(n1�1/d + k).
Is it possible to query for other objects (e.g., polygons) with thesedata structures?
Range Trees can be built recursively: the auxiliary search tree on thefirst coordinate is a (d� 1)-dimensional Range Tree. The constructionand space takes O(n logd�1
n) time; a query takes O(logd n+ k)time, and with fractional cascading, O(logd�1
n+ k) time.
20
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Discussion
How can the data structures generalize to d-dimensions?
kd-Trees function analogously and by dividing the points alternatelyon d coordinates. Space is still O(n), construction O(n log n) and thequery time is O(n1�1/d + k).
Is it possible to query for other objects (e.g., polygons) with thesedata structures?
Yes, we can transform any polygon into a point in 4d space (exercise) orwe can use windowing queries (comes in a later lecture).
Range Trees can be built recursively: the auxiliary search tree on thefirst coordinate is a (d� 1)-dimensional Range Tree. The constructionand space takes O(n logd�1
n) time; a query takes O(logd n+ k)time, and with fractional cascading, O(logd�1
n+ k) time.
20
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Dynamic Range Queries
Question: Can we adapt these data structures for dynamicpoint sets?
Inserting pointsRemoving points
21
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Dynamic Range Queries
Question: Can we adapt these data structures for dynamicpoint sets?
Inserting pointsRemoving points
1) Divided kd-trees [van Kreveld, Overmars ’91]support updates in O(log n) time, but the query time isO(pn log n+ k)
21
Dr. Tamara Mchedlidze · Dr. Darren Strash · Computational Geometry Lecture Range Searching
Dynamic Range Queries
Question: Can we adapt these data structures for dynamicpoint sets?
Inserting pointsRemoving points
1) Divided kd-trees [van Kreveld, Overmars ’91]support updates in O(log n) time, but the query time isO(pn log n+ k)
2) Augmented dynamic range trees [Mehlhorn, Naher ’90]support updates in O(log n log log n) time and queries inO(log n log log n+ k) time