![Page 1: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/1.jpg)
Introduction2D Range trees
Degenerate cases
Range trees
Computational Geometry
Lecture 8: Range trees
Computational Geometry Lecture 8: Range trees1
![Page 2: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/2.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Database queries
A database query may ask forall employees with agebetween a1 and a2, and salarybetween s1 and s2
date of birth
salary
19,500,000 19,559,999
G. Ometerborn: Aug 16, 1954salary: $3,500
Computational Geometry Lecture 8: Range trees2
![Page 3: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/3.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Result
Theorem: A set of n points on the real line can bepreprocessed in O(n logn) time into a data structure of O(n)size so that any 1D range [counting] query can be answered inO(logn [+k]) time
Computational Geometry Lecture 8: Range trees3
![Page 4: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/4.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Result
Theorem: A set of n points in the plane can be preprocessedin O(n logn) time into a data structure of O(n) size so thatany 2D range query can be answered in O(
√n+ k) time,
where k is the number of answers reported
For range counting queries, we need O(√
n) time
Computational Geometry Lecture 8: Range trees4
![Page 5: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/5.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Faster queries
Can we achieve O(logn [+k]) query time?
Computational Geometry Lecture 8: Range trees5
![Page 6: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/6.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Faster queries
Can we achieve O(logn [+k]) query time?
Computational Geometry Lecture 8: Range trees6
![Page 7: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/7.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Faster queries
If the corners of the query rectangle fall in specific cells of thegrid, the answer is fixed (even for lower left and upper rightcorner)
Computational Geometry Lecture 8: Range trees7
![Page 8: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/8.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Faster queries
Build a tree so that the leaves correspond to the differentpossible query rectangle types (corners in same cells of grid),and with each leaf, store all answers (points) [or: the count]
Build a tree on the different x-coordinates (to search with leftside of R), in each of the leaves, build a tree on the differentx-coordinates (to search with the right side of R), in each ofthe leaves, . . .
Computational Geometry Lecture 8: Range trees8
![Page 9: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/9.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Faster queries
n
n
n
n
Computational Geometry Lecture 8: Range trees9
![Page 10: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/10.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Faster queries
Question: What are the storage requirements of thisstructure, and what is the query time?
Computational Geometry Lecture 8: Range trees10
![Page 11: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/11.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Faster queries
Recall the 1D range tree and range query:
Two search paths (grey nodes)
Subtrees in between have answers exclusively (black)
Computational Geometry Lecture 8: Range trees11
![Page 12: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/12.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Example 1D range query
A 1-dimensional range query with [25, 90]
3 10 19 23 30 37 59 62 70 80
893 19
10
30 59 70
62
93
89
8023
49
93 97
37
49
Computational Geometry Lecture 8: Range trees12
![Page 13: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/13.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Example 1D range query
A 1-dimensional range query with [61, 90]
3 10 19 23 30 37 59 62 70 80
893 19
10
30 59 70
62
93
89
8023
49
93 97
37
49
split node
Computational Geometry Lecture 8: Range trees13
![Page 14: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/14.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Examining 1D range queries
Observation: Ignoring the search path leaves, all answers arejointly represented by the highest nodes strictly between thetwo search paths
Question: How many highest nodes between the searchpaths can there be?
Computational Geometry Lecture 8: Range trees14
![Page 15: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/15.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Examining 1D range queries
For any 1D range query, we can identify O(logn) nodes thattogether represent all answers to a 1D range query
Computational Geometry Lecture 8: Range trees15
![Page 16: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/16.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Toward 2D range queries
For any 2d range query, we can identify O(logn) nodes thattogether represent all points that have a correct firstcoordinate
Computational Geometry Lecture 8: Range trees16
![Page 17: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/17.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Toward 2D range queries
(3, 8)(1, 5) (4, 2) (5, 9) (6, 7) (8, 1)(7, 3) (9, 4)
Computational Geometry Lecture 8: Range trees17
![Page 18: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/18.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Toward 2D range queries
(3, 8)(1, 5) (4, 2) (5, 9) (6, 7) (8, 1)(7, 3) (9, 4)
Computational Geometry Lecture 8: Range trees18
![Page 19: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/19.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Toward 2D range queries
(3, 8)(1, 5) (4, 2) (5, 9) (6, 7) (8, 1)(7, 3) (9, 4)
data structurefor searching ony-coordinate
Computational Geometry Lecture 8: Range trees19
![Page 20: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/20.jpg)
Introduction2D Range trees
Degenerate casesRange queries
Toward 2D range queries
(3, 8)(1, 5) (4, 2) (5, 9) (6, 7) (8, 1)(7, 3) (9, 4)
(3, 8)
(1, 5)
(4, 2)
(5, 9)
(6, 7)
(8, 1)
(7, 3)
(9, 4)
Computational Geometry Lecture 8: Range trees20
![Page 21: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/21.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range trees
Every internal node stores a whole tree in an associatedstructure, on y-coordinate
Question: How much storage does this take?
Computational Geometry Lecture 8: Range trees21
![Page 22: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/22.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Storage of 2D range trees
To analyze storage, two arguments can be used:
By level: On each level, any point is stored exactly once.So all associated trees on one level together have O(n)size
By point: For any point, it is stored in the associatedstructures of its search path. So it is stored in O(logn) ofthem
Computational Geometry Lecture 8: Range trees22
![Page 23: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/23.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Construction algorithm
Algorithm Build2DRangeTree(P)1. Construct the associated structure: Build a binary search
tree Tassoc on the set Py of y-coordinates in P2. if P contains only one point3. then Create a leaf ν storing this point, and make
Tassoc the associated structure of ν .4. else Split P into Pleft and Pright, the subsets ≤ and >
the median x-coordinate xmid5. νleft ← Build2DRangeTree(Pleft)6. νright ← Build2DRangeTree(Pright)7. Create a node ν storing xmid, make νleft the left
child of ν , make νright the right child of ν , andmake Tassoc the associated structure of ν
8. return ν
Computational Geometry Lecture 8: Range trees23
![Page 24: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/24.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Efficiency of construction
The construction algorithm takes O(n log2 n) time
T(1) = O(1)
T(n) = 2 ·T(n/2)+O(n logn)
which solves to O(n log2 n) time
Computational Geometry Lecture 8: Range trees24
![Page 25: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/25.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Efficiency of construction
Suppose we pre-sort P on y-coordinate, and whenever we splitP into Pleft and Pright, we keep the y-order in both subsets
For a sorted set, the associated structure can be built in lineartime
Computational Geometry Lecture 8: Range trees25
![Page 26: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/26.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Efficiency of construction
The adapted construction algorithm takes O(n logn) time
T(1) = O(1)
T(n) = 2 ·T(n/2)+O(n)
which solves to O(n logn) time
Computational Geometry Lecture 8: Range trees26
![Page 27: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/27.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range queries
How are queries performed and why are they correct?
Are we sure that each answer is found?
Are we sure that the same point is found only once?
Computational Geometry Lecture 8: Range trees27
![Page 28: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/28.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range queries
ν
µ µ′ p
p
p
p
Computational Geometry Lecture 8: Range trees28
![Page 29: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/29.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Query algorithm
Algorithm 2DRangeQuery(T, [x : x′]× [y : y′])1. νsplit ←FindSplitNode(T,x,x′)2. if νsplit is a leaf3. then report the point stored at νsplit, if an answer4. else ν ← lc(νsplit)5. while ν is not a leaf6. do if x≤ xν
7. then 1DRangeQ(Tassoc(rc(ν)), [y : y′])8. ν ← lc(ν)9. else ν ← rc(ν)10. Check if the point stored at ν must be reported.11. Similarly, follow the path from rc(νsplit) to x′ . . .
Computational Geometry Lecture 8: Range trees29
![Page 30: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/30.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range query time
Question: How much time does a 2D range query take?
Subquestions: In how many associated structures do wesearch? How much time does each such search take?
Computational Geometry Lecture 8: Range trees30
![Page 31: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/31.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range queries
ν
µ µ′
Computational Geometry Lecture 8: Range trees31
![Page 32: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/32.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range query efficiency
We search in O(logn) associated structures to perform a 1Drange query; at most two per level of the main tree
The query time is O(logn)×O(logm+ k′), or
∑ν
O(lognν + kν)
where ∑kν = k the number of points reported
Computational Geometry Lecture 8: Range trees32
![Page 33: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/33.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range query efficiency
Use the concept of grey and black nodes again:
Computational Geometry Lecture 8: Range trees33
![Page 34: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/34.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range query efficiency
The number of grey nodes is O(log2 n)
The number of black nodes is O(k) if k points are reported
The query time is O(log2 n+ k), where k is the size of theoutput
Computational Geometry Lecture 8: Range trees34
![Page 35: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/35.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Result
Theorem: A set of n points in the plane can be preprocessedin O(n logn) time into a data structure of O(n logn) size sothat any 2D range query can be answered in O(log2 n+ k)time, where k is the number of answers reported
Recall that a kd-tree has O(n) size and answers queries inO(√
n+ k) time
Computational Geometry Lecture 8: Range trees35
![Page 36: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/36.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Efficiency
n logn log2 n√
n
16 4 16 464 6 36 8
256 8 64 161024 10 100 324096 12 144 64
16384 14 196 12865536 16 256 256
1M 20 400 1K16M 24 576 4K
Computational Geometry Lecture 8: Range trees36
![Page 37: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/37.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
2D range query efficiency
Question: How about range counting queries?
Computational Geometry Lecture 8: Range trees37
![Page 38: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/38.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Higher dimensional range trees
A d-dimensional range tree hasa main tree which is aone-dimensional balancedbinary search tree on the firstcoordinate, where every nodehas a pointer to an associatedstructure that is a(d−1)-dimensional range treeon the other coordinates
Computational Geometry Lecture 8: Range trees38
![Page 39: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/39.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Storage
The size Sd(n) of a d-dimensional range tree satisfies:
S1(n) = O(n) for all n
Sd(1) = O(1) for all d
Sd(n)≤ 2 ·Sd(n/2)+Sd−1(n) for d ≥ 2
This solves to Sd(n) = O(n logd−1 n)
Computational Geometry Lecture 8: Range trees39
![Page 40: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/40.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Query time
The number of grey nodes Gd(n) satisfies:
G1(n) = O(logn) for all n
Gd(1) = O(1) for all d
Gd(n)≤ 2 · logn+2 · logn ·Gd−1(n) for d ≥ 2
This solves to Gd(n) = O(logd n)
Computational Geometry Lecture 8: Range trees40
![Page 41: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/41.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Result
Theorem: A set of n points in d-dimensional space can bepreprocessed in O(n logd−1 n) time into a data structure ofO(n logd−1 n) size so that any d-dimensional range query canbe answered in O(logd n+ k) time, where k is the number ofanswers reported
Recall that a kd-tree has O(n) size and answers queries inO(n1−1/d + k) time
Computational Geometry Lecture 8: Range trees41
![Page 42: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/42.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Comparison for d = 4
n logn log4 n n3/4
1024 10 10,000 18165,536 16 65,536 4096
1M 20 160,000 32,7681G 30 810,000 5,931,6411T 40 2,560,000 1G
Computational Geometry Lecture 8: Range trees42
![Page 43: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/43.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
We can improve the query time of a 2D range tree fromO(log2 n) to O(logn) by a technique called fractionalcascading
This automatically lowers the query time in d dimensions toO(logd−1 n) time
Computational Geometry Lecture 8: Range trees43
![Page 44: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/44.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
The idea illustrated best by a different query problem:
Suppose that we have a collection of sets S1, . . . ,Sm, where|S1|= n and where Si+1 ⊆ Si
We want a data structure that can report for a querynumber x, the smallest value ≥ x in all sets S1, . . . ,Sm
Computational Geometry Lecture 8: Range trees44
![Page 45: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/45.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
1 2 3 5 8 13 21 34 55
1 3 5 8 13 21 34 55
1 3 13 34 55
3 34 55
21
S1
S2
S3
S4
Computational Geometry Lecture 8: Range trees45
![Page 46: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/46.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
1 2 3 5 8 13 21 34 55
1 3 5 8 13 21 34 55
1 3 13 34 55
3 34 55
21
S1
S2
S3
S4
Computational Geometry Lecture 8: Range trees46
![Page 47: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/47.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
1 2 3 5 8 13 21 34 55
1 3 5 8 13 21 34 55
1 3 13 34 55
3 34 55
21
S1
S2
S3
S4
Computational Geometry Lecture 8: Range trees47
![Page 48: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/48.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
Suppose that we have a collection of sets S1, . . . ,Sm, where|S1|= n and where Si+1 ⊆ Si
We want a data structure that can report for a querynumber x, the smallest value ≥ x in all sets S1, . . . ,Sm
This query problem can be solved in O(logn+m) time insteadof O(m · logn) time
Computational Geometry Lecture 8: Range trees48
![Page 49: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/49.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
Can we do something similar for m 1-dimensional rangequeries on m sets S1, . . . ,Sm?
We hope to get a query time of O(logn+m+ k) with k thetotal number of points reported
Computational Geometry Lecture 8: Range trees49
![Page 50: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/50.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
1 2 3 5 8 13 21 34 55
1 3 5 8 13 21 34 55
1 3 13 34 55
3 34 55
21
S1
S2
S3
S4
Computational Geometry Lecture 8: Range trees50
![Page 51: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/51.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
1 2 3 5 8 13 21 34 55
1 3 5 8 13 21 34 55
1 3 13 34 55
3 34 55
21
S1
S2
S3
S4
Computational Geometry Lecture 8: Range trees51
![Page 52: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/52.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Improving the query time
1 2 3 5 8 13 21 34 55
1 3 5 8 13 21 34 55
1 3 13 34 55
3 34 55
21
[6,35]
S1
S2
S3
S4
Computational Geometry Lecture 8: Range trees52
![Page 53: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/53.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
Now we do “the same” on the associated structures of a2-dimensional range tree
Note that in every associated structure, we search with thesame values y and y′
Replace all associated structures except for the one ofthe root by a linked list
For every list element (and leaf of the associatedstructure of the root), store two pointers to theappropriate list elements in the lists of the left child andof the right child
Computational Geometry Lecture 8: Range trees53
![Page 54: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/54.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
Computational Geometry Lecture 8: Range trees54
![Page 55: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/55.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
Computational Geometry Lecture 8: Range trees55
![Page 56: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/56.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
(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
67
17
8
155
7 12 21 41
33
52
58 67
932
Computational Geometry Lecture 8: Range trees56
![Page 57: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/57.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
3 99
10 19 37 80
30 4962
3 10 19 23 30 37 49 59 62 70 80 89 95 99
89705923 9530 49803 9962371910
3 9962 89705923 9530 49
897023 9510 3719 80
70892395371019
59
4980 3 3099
Computational Geometry Lecture 8: Range trees57
![Page 58: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/58.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
(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
67
17
8
155
7 12 21 41
33
52
58 67
932
[4, 58]× [19, 65]
Computational Geometry Lecture 8: Range trees58
![Page 59: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/59.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
3 99
10 19 37 80
30 4962
3 10 19 23 30 37 49 59 62 70 80 89 95 99
89705923 9530 49803 9962371910
3 9962 89705923 9530 49
897023 9510 3719 80
70892395371019
59
4980 3 3099
Computational Geometry Lecture 8: Range trees59
![Page 60: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/60.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
3 99
10 19 37 80
30 4962
3 10 19 23 30 37 49 59 62 70 80 89 95 99
89705923 9530 49803 9962371910
3 9962 89705923 9530 49
897023 9510 3719 80
70892395371019
59
4980 3 3099
Computational Geometry Lecture 8: Range trees60
![Page 61: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/61.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Fractional cascading
Instead of doing a 1D range query on the associated structureof some node ν , we find the leaf where the search to y wouldend in O(1) time via the direct pointer in the associatedstructure in the parent of ν
The number of grey nodes reduces to O(logn)
Computational Geometry Lecture 8: Range trees61
![Page 62: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/62.jpg)
Introduction2D Range trees
Degenerate cases
ConstructionQueryingHigher dimensionsFractional cascading
Result
Theorem: A set of n points in d-dimensional space can bepreprocessed in O(n logd−1 n) time into a data structure ofO(n logd−1 n) size so that any d-dimensional range query canbe answered in O(logd−1 n+ k) time, where k is the number ofanswers reported
Recall that a kd-tree has O(n) size and answers queries inO(n1−1/d + k) time
Computational Geometry Lecture 8: Range trees62
![Page 63: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/63.jpg)
Introduction2D Range trees
Degenerate cases
Degenerate cases
Both for kd-trees and for rangetrees we have to take care ofmultiple points with the samex- or y-coordinate
Computational Geometry Lecture 8: Range trees63
![Page 64: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/64.jpg)
Introduction2D Range trees
Degenerate cases
Degenerate cases
Both for kd-trees and for rangetrees we have to take care ofmultiple points with the samex- or y-coordinate
Computational Geometry Lecture 8: Range trees64
![Page 65: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/65.jpg)
Introduction2D Range trees
Degenerate cases
Degenerate cases
Treat a point p = (px,py) with two reals as coordinates as apoint with two composite numbers as coordinates
A composite number is a pair of reals, denoted (a|b)
We let (a|b)< (c|d) iff a < c or ( a = c and b < d ); thisdefines a total order on composite numbers
Computational Geometry Lecture 8: Range trees65
![Page 66: Lecture 8: Range trees - Universiteit Utrecht · Lecture 8: Range trees 1 Computational Geometry Lecture 8: Range trees. Introduction 2D Range trees Degenerate cases Range queries](https://reader033.vdocuments.us/reader033/viewer/2022052004/6017be3190574c7ffd060586/html5/thumbnails/66.jpg)
Introduction2D Range trees
Degenerate cases
Degenerate cases
The point p = (px,py) becomes ((px|py) , (py|px)). Then notwo points have the same first or second coordinate
The median x-coordinate or y-coordinate is a compositenumber
The query range [x : x′]× [y : y′] becomes
[(x|−∞) : (x′|+∞)]× [(y|−∞) : (y′|+∞)]
We have (px,py) ∈ [x : x′]× [y : y′] iff
((px|py) , (py|px)) ∈ [(x|−∞) : (x′|+∞)]× [(y|−∞) : (y′|+∞)]
Computational Geometry Lecture 8: Range trees66