Plane Sweep Algorithms in Computational Geometry

1/23/20
CMPS 3130/6130 Computational Geometry
1
CMPS 3130/6130 Computational Geometry
Spring 2020
Plane Sweep Algorithms
Carola Wenk
1/23/20
CMPS 3130/6130 Computational Geometry
2
Closest Pair
Problem:
 Given 
P
R
2
, 
|
P
|=
n
, find the distance
between the closest pair in 
P
 
Naïve algorithm: 
Check all pairs of points in time
O(n
2
)
1/23/20
CMPS 3130/6130 Computational Geometry
3
Plane Sweep: An Algorithm
Design Technique
 
Simulate sweeping a vertical line from left to right across the plane.
Maintain 
cleanliness property
: At any point in time, to the left of the
sweep line everything is clean, i.e., properly processed.
Sweep line status
: Store information along the sweep line
Events
: Discrete points in time when the sweep line status needs to be
updated
1/23/20
CMPS 3130/6130 Computational Geometry
4
Plane Sweep: An Algorithm
Design Technique
Simulate sweeping a vertical line from left to right across the plane.
Maintain 
cleanliness property
: At any point in time, to the left of the
sweep line everything is clean, i.e., properly processed.
Sweep line status
: Store information along the sweep line
Events
: Discrete points in time when the sweep line status needs to be
updated
Algorithm
 Generic_Plane_Sweep:
Initialize 
sweep line status
 
S
 at time 
x
=-
Store initial events in 
event queue 
Q
, a priority queue ordered by 
x
-coordinate
while 
Q 
 
// extract next event e:
 
e = Q
.extractMin();
 
// handle event:
 
Update sweep line status
 
Discover new upcoming events and insert them into 
Q
1/23/20
CMPS 3130/6130 Computational Geometry
5
Plane Sweep for
Closest Pair
Problem:
 Given 
P
R
2
, 
|
P
|=
n
, find the distance of
the closest pair in 
P
Sweep line status:
Store current distance 
Δ
 of closest pair of points to the
left of the sweep line
Store points in the 
Δ
-strip left of the sweep line
Store pointer to the leftmost point in the strip
Events:
 All points in 
P
. No new events will be
added during the sweep.
→ Presort 
P
 by 
x
-coordinate.
Cleanliness property
1/23/20
CMPS 3130/6130 Computational Geometry
6
Plane Sweep for
Closest Pair
Presort 
P
 by 
x
-coordinate
How to store points in 
Δ
-strip?
Store points in 
Δ
-strip left of sweep line in a balanced binary search tree,
ordered by 
y
-coordinate
→ Add point, delete point, and search in 
O(log 
n
)
 time
Event handling:
New event: Sweep line advances to point 
p
P
Update sweep line status:
Delete points outside 
Δ
-strip from search tree by using previous leftmost point in
strip and 
x
-order on 
P
Compute candidate points that may have distance 
 
Δ
 from 
p
:
Perform a search in the search tree to find points in 
Δ
–strip whose 
y
-
coordinates are at most 
Δ
 away from 
p
.
y
.
Δ 
x 2
Δ
 
rectangle
Because of the cleanliness property each pair of points to the left of the
previous sweep line has distance 
Δ
.
→ A 
Δ 
x 2
Δ
 
rectangle can contain at most 
6 
such points.
Check distance of these points to 
p
, and possibly update 
Δ
No new events necessary to discover
O(
n
 log 
n
)
O(
n
 log 
n
) 
total
O(
n
 log 
n
 + 6
n
) 
total
O(6
n
) 
total
Total runtime:
 O(
n
 log 
n
)
Δ
Δ
Δ
1
2
3
1/23/20
CMPS 3130/6130 Computational Geometry
7
Six Points
1/23/20
CMPS 3130/6130 Computational Geometry
8
Balanced Binary Search Tree
 -- a bit different
1
6
8
12
14
17
26
35
41
42
43
59
61
key
[
x
]
 is the maximum key of any leaf in the left subtree of 
x
.
1/23/20
CMPS 3130/6130 Computational Geometry
9
12
1
6
8
12
14
17
26
35
41
42
43
59
61
6
26
41
59
1
14
35
43
42
8
17
Balanced Binary Search Tree
 -- a bit different
key
[
x
]
 is the maximum key of any leaf in the left subtree of 
x
.
1/23/20
CMPS 3130/6130 Computational Geometry
10
12
8
12
14
17
26
35
41
26
14
1
6
42
43
59
61
6
41
59
1
35
43
42
8
17
R
ANGE
-Q
UERY
([7, 41])
Balanced Binary Search Tree
 -- a bit different
General 1D range query
root
split node
1/23/20
11
CMPS 3130/6130 Computational Geometry
1/23/20
CMPS 3130/6130 Computational Geometry
12
Plane Sweep for
Closest Pair
Presort 
P
 by 
x
-coordinate
How to store points in 
Δ
-strip?
Store points in 
Δ
-strip left of sweep line in a balanced binary search tree,
ordered by 
y
-coordinate
→ Add point, delete point, and search in 
O(log 
n
)
 time
Event handling:
New event: Sweep line advances to point 
p
P
Update sweep line status:
Delete points outside 
Δ
-strip from search tree by using previous leftmost point in
strip and 
x
-order on 
P
Compute candidate points that may have distance 
 
Δ
 from 
p
:
Perform a search in the search tree to find points in 
Δ
–strip whose 
y
-
coordinates are at most 
Δ
 away from 
p
.
y
.
Δ 
x 2
Δ
 
rectangle
Because of the cleanliness property each pair of points to the left of the
previous sweep line has distance 
Δ
.
→ A 
Δ 
x 2
Δ
 
rectangle can contain at most 
6 
such points.
Check distance of these points to 
p
, and possibly update 
Δ
No new events necessary to discover
O(
n
 log 
n
)
O(
n
 log 
n
) 
total
O(
n
 log 
n
 + 6
n
) 
total
O(6
n
) 
total
Total runtime:
 O(
n
 log 
n
)
Δ
Δ
Δ
1
2
3
1/23/20
CMPS 3130/6130 Computational Geometry
13
Plane Sweep: An Algorithm
Design Technique
Plane sweep algorithms (also called sweep
line algorithms) are a special kind of
incremental algorithms
Their correctness follows inductively by
maintaining the cleanliness property
Common
 runtimes in the plane are 
O(
n
 log 
n
)
:
n
 events are processed
Update of sweep line status takes 
O(log 
n
)
Update of event queue: 
O(log 
n
)
 per event
1/23/20
CMPS 3130/6130 Computational Geometry
14
Geometric Intersections
Important and basic problem in Computational
Geometry
Solid modeling: Build shapes by applying set
operations (intersection, union).
Robotics: Collision detection and avoidance
Geographic information systems: Overlay two
subdivisions (e.g., road network and river
network)
Computer graphics: Ray shooting to render scenes
1/23/20
CMPS 3130/6130 Computational Geometry
15
Line Segment Intersection
 
Input: A set 
S
={
s
1
, …, 
s
n
}
 of (closed) line
segments in 
R
2
Output: All 
intersection points
 between segments
in 
S
1/23/20
CMPS 3130/6130 Computational Geometry
16
Line Segment Intersection
n
 line segments can intersect as few as 
0
 and as many as
       
=O(
n
2
)
 times
Simple algorithm: Try out all pairs of line segments
→ Takes 
O(
n
2
)
 time
→ Is optimal in the worst case
Challenge: Develop an 
output-sensitive algorithm
Runtime depends on size 
k
 of the output
Here: 
0 
 
k
 
 
c
 
n
2  
   
, where 
c
 
is a constant
Our algorithm will have runtime:
 O( (
n+k
)
 
log 
n
)
Best possible runtime: 
O(
n 
log 
n + k
)
 O(
n
2
) 
in worst case, but better in general
n
2
1/23/20
CMPS 3130/6130 Computational Geometry
17
Complexity
Why is runtime
 
O(
n 
log 
n + k
) 
optimal?
The 
element uniqueness
 problem requires 
(
n
 log 
n
)
 time
in algebraic decision tree model of computation (Ben-Or ’83)
Element uniqueness
: Given 
n
 real numbers, are all of them
distinct?
Solve 
element uniqueness
 using 
line segment
intersection
:
Take 
n
 numbers, convert into vertical line segments. There is an
intersection iff there are duplicate numbers.
If we could solve line segment intersection in 
o(
n
 log 
n
)
 time, i.e.,
strictly faster than 
Θ
(
n
 log 
n
)
, then 
element uniqueness
 could be
solved faster. Contradiction.
1/23/20
CMPS 3130/6130 Computational Geometry
18
Plane sweep
algorithm
Cleanliness property:
All intersections to the left of the sweep line 
l
 have been
reported
Sweep line status:
Store segments that intersect the sweep line 
l
, ordered along
the intersection with 
l
 .
Events:
Points in time when sweep line status changes
combinatorially (i.e., the order of segments intersecting 
l
changes)
→ Endpoints of segments (insert in beginning)
→ Intersection points (compute on the fly during plane sweep)
1/23/20
CMPS 3130/6130 Computational Geometry
19
General position
Assume that “nasty” special cases don’t happen:
No line segment is vertical
Two segments intersect in at most one point
No three segments intersect in a common point
1/23/20
CMPS 3130/6130 Computational Geometry
20
Event Queue
Need to keep events sorted:
Lexicographic order (first by 
x
-coordinate, and if two events
have same 
x
-coordinate then by 
y
-coordinate)
Need to be able to remove next point, and insert new
points in 
O(log 
n
)
 time
Need to make sure not to process same event twice
 Use a priority queue (heap), and possibly extract
multiples
 Or, use balanced binary search tree
1/23/20
CMPS 3130/6130 Computational Geometry
21
Sweep Line Status
Store segments that intersect the sweep line 
l
, ordered along the
intersection with 
l
.
Need to insert, delete, and find adjacent neighbor in 
O(log 
n
)
 time
Use 
balanced binary search
 tree, storing the order in which
segments intersect 
l 
in leaves
b
c
d
e
c
b
e
d
1/23/20
CMPS 3130/6130 Computational Geometry
22
Event Handling
1.
Left segment endpoint
Add new segment 
to the sweep line status
Test 
adjacent segments
 on the sweep line 
l
 for intersection with 
new
segment
 (see Lemma)
Add 
new intersection points
 to the event queue
a
b
c
d
e
c
b
d
 
c
b
e
d
1/23/20
CMPS 3130/6130 Computational Geometry
23
Event Handling
2. Intersection point
Report new intersection point
Two segments 
change order
 along 
l
→ Test 
new adjacent segments
 for new intersection points (to
insert into event queue)
a
b
c
d
e
c
e
b
d
c
b
e
d
Note: “new” intersection
might have been already
detected earlier.
1/23/20
CMPS 3130/6130 Computational Geometry
24
Event Handling
3. Right segment endpoint
Delete segment from sweep line status
Two segments become adjacent
. Check for intersection points (to
insert in event queue)
a
b
c
d
e
e
c
b
d
e
c
d
1/23/20
CMPS 3130/6130 Computational Geometry
25
Intersection Lemma
Lemma:
 Let 
s
, 
s’
 be two non-vertical segments whose
interiors intersect in a single point 
p
. Assume there is no
third segment passing through 
p
. Then there is an event
point to the left of 
p
 where 
s
 and 
s’
 become adjacent (and
hence are tested for intersection).
Proof:
 Consider placement of sweep line infinitesimally
left of 
p
. 
Segments 
s
 and 
s’
 are adjacent along sweep line.
Hence there must have been a 
previous event point
 where
s
 and 
s’
 become adjacent.
p
s
s’
1/23/20
CMPS 3130/6130 Computational Geometry
26
Runtime
Sweep line status updates: 
O(log 
n
)
Event queue operations: 
O(log 
n
),
 as the total
number of stored events is 
 2
n
 + 
k
, and each
operation takes time
O(log(2
n
+
k
)) = O(log 
n
2
) = O(log 
n
)
There are 
O(
n
+
k
)
 events. Hence the total runtime
is 
O((
n
+
k
) log 
n
)
k
 = O(
n
2
)
Slide Note
Embed
Share

Plane sweep algorithms are a powerful technique in computational geometry for solving various problems efficiently. By simulating the sweep of a vertical line across the plane and maintaining a cleanliness property, these algorithms can process events at discrete points in time to update the status along the sweep line. The closest pair problem is a classic example that can be solved using a plane sweep approach, achieving a time complexity of O(n log n). By presorting points and storing them in a balanced binary search tree, the algorithm efficiently computes the closest pair distance within the given set.

  • Plane Sweep Algorithms
  • Computational Geometry
  • Closest Pair Problem
  • Algorithm Design
  • Efficient Solutions

Uploaded on Sep 25, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. CMPS 3130/6130 Computational Geometry Spring 2020 Plane Sweep Algorithms Carola Wenk 1/23/20 1 CMPS 3130/6130 Computational Geometry

  2. Closest Pair Problem: Given P R2, |P|=n, find the distance between the closest pair in P Na ve algorithm: Check all pairs of points in time O(n2) 1/23/20 2 CMPS 3130/6130 Computational Geometry

  3. Plane Sweep: An Algorithm Design Technique Simulate sweeping a vertical line from left to right across the plane. Maintain cleanliness property: At any point in time, to the left of the sweep line everything is clean, i.e., properly processed. Sweep line status: Store information along the sweep line Events: Discrete points in time when the sweep line status needs to be updated 1/23/20 3 CMPS 3130/6130 Computational Geometry

  4. Plane Sweep: An Algorithm Design Technique Simulate sweeping a vertical line from left to right across the plane. Maintain cleanliness property: At any point in time, to the left of the sweep line everything is clean, i.e., properly processed. Sweep line status: Store information along the sweep line Events: Discrete points in time when the sweep line status needs to be updated Algorithm Generic_Plane_Sweep: Initialize sweep line statusS at time x=- Store initial events in event queue Q, a priority queue ordered by x-coordinate while Q // extract next event e: e = Q.extractMin(); // handle event: Update sweep line status Discover new upcoming events and insert them into Q 1/23/20 4 CMPS 3130/6130 Computational Geometry

  5. Plane Sweep for Closest Pair Problem: Given P R2, |P|=n, find the distance of the closest pair in P Sweep line status: Store current distance of closest pair of points to the left of the sweep line Store points in the -strip left of the sweep line Store pointer to the leftmost point in the strip Events: All points in P. No new events will be added during the sweep. Presort P by x-coordinate. Cleanliness property 1/23/20 5 CMPS 3130/6130 Computational Geometry

  6. Plane Sweep for Closest Pair O(n log n) Presort P by x-coordinate How to store points in -strip? Store points in -strip left of sweep line in a balanced binary search tree, ordered by y-coordinate Add point, delete point, and search in O(log n) time Event handling: New event: Sweep line advances to point p P Update sweep line status: Delete points outside -strip from search tree by using previous leftmost point in strip and x-order on P Compute candidate points that may have distance from p: Perform a search in the search tree to find points in strip whose y- coordinates are at most away from p.y. x 2 rectangle Because of the cleanliness property each pair of points to the left of the previous sweep line has distance . A x 2 rectangle can contain at most 6 such points. Check distance of these points to p, and possibly update No new events necessary to discover 1 2 O(n log n) total O(n log n + 6n) total 3 O(6n) total Total runtime: O(n log n) 1/23/20 6 CMPS 3130/6130 Computational Geometry

  7. Six Points Theorem: At most 6 points with pairwise distance can fit in a 2 rectangle. And exactly 6 points have to be placed as shown. Proof: Consider placing the first point on the boundary. Depending on the placement, either 1, 2, or 3 of the 8 small /2 /2 squares cannot contain another point (cross-hatched). [If the first point is in the interior, the number of small squares, and area of the rectangle, that cannot contain other points only increases.] How can the 8 small squares be distributed to the most (boundary) points? Only the corner points use a single small square, but there are only 4 corner points. So it is optimal to place 4 points in the corners, which forces the remaining 2 points to be placed as claimed. < < < < < 1/23/20 7 CMPS 3130/6130 Computational Geometry

  8. Balanced Binary Search Tree -- a bit different 17 43 1 6 8 12 14 26 35 41 42 59 61 key[x] is the maximum key of any leaf in the left subtree of x. 1/23/20 8 CMPS 3130/6130 Computational Geometry

  9. Balanced Binary Search Tree -- a bit different x 17 x > x 8 42 1 14 35 43 17 43 6 12 26 41 59 1 6 8 12 14 26 35 41 42 59 61 key[x] is the maximum key of any leaf in the left subtree of x. 1/23/20 9 CMPS 3130/6130 Computational Geometry

  10. Balanced Binary Search Tree -- a bit different x 17 x > x 8 42 1 14 14 35 43 17 17 43 6 12 12 26 26 41 59 1 6 8 8 12 12 14 14 26 26 35 35 41 41 42 59 61 RANGE-QUERY([7, 41]) 1/23/20 10 CMPS 3130/6130 Computational Geometry

  11. General 1D range query root split node 1/23/20 11 CMPS 3130/6130 Computational Geometry

  12. Plane Sweep for Closest Pair O(n log n) Presort P by x-coordinate How to store points in -strip? Store points in -strip left of sweep line in a balanced binary search tree, ordered by y-coordinate Add point, delete point, and search in O(log n) time Event handling: New event: Sweep line advances to point p P Update sweep line status: Delete points outside -strip from search tree by using previous leftmost point in strip and x-order on P Compute candidate points that may have distance from p: Perform a search in the search tree to find points in strip whose y- coordinates are at most away from p.y. x 2 rectangle Because of the cleanliness property each pair of points to the left of the previous sweep line has distance . A x 2 rectangle can contain at most 6 such points. Check distance of these points to p, and possibly update No new events necessary to discover 1 2 O(n log n) total O(n log n + 6n) total 3 O(6n) total Total runtime: O(n log n) 1/23/20 12 CMPS 3130/6130 Computational Geometry

  13. Plane Sweep: An Algorithm Design Technique Plane sweep algorithms (also called sweep line algorithms) are a special kind of incremental algorithms Their correctness follows inductively by maintaining the cleanliness property Common runtimes in the plane are O(n log n): n events are processed Update of sweep line status takes O(log n) Update of event queue: O(log n) per event 1/23/20 13 CMPS 3130/6130 Computational Geometry

  14. Geometric Intersections Important and basic problem in Computational Geometry Solid modeling: Build shapes by applying set operations (intersection, union). Robotics: Collision detection and avoidance Geographic information systems: Overlay two subdivisions (e.g., road network and river network) Computer graphics: Ray shooting to render scenes 1/23/20 14 CMPS 3130/6130 Computational Geometry

  15. Line Segment Intersection Input: A set S={s1, , sn} of (closed) line segments in R2 Output: All intersection points between segments in S 1/23/20 15 CMPS 3130/6130 Computational Geometry

  16. Line Segment Intersection n line segments can intersect as few as 0 and as many as =O(n2) times Simple algorithm: Try out all pairs of line segments Takes O(n2) time Is optimal in the worst case Challenge: Develop an output-sensitive algorithm Runtime depends on size k of the output Here: 0 k cn2 , where c is a constant Our algorithm will have runtime: O( (n+k)log n) n 2 Best possible runtime: O(n log n + k) O(n2) in worst case, but better in general 1/23/20 16 CMPS 3130/6130 Computational Geometry

  17. Complexity Why is runtime O(n log n + k) optimal? The element uniqueness problem requires (n log n) time in algebraic decision tree model of computation (Ben-Or 83) Element uniqueness: Given n real numbers, are all of them distinct? Solve element uniqueness using line segment intersection: Take n numbers, convert into vertical line segments. There is an intersection iff there are duplicate numbers. If we could solve line segment intersection in o(n log n) time, i.e., strictly faster than (n log n), then element uniqueness could be solved faster. Contradiction. 1/23/20 17 CMPS 3130/6130 Computational Geometry

  18. Plane sweep algorithm Cleanliness property: All intersections to the left of the sweep line l have been reported Sweep line status: Store segments that intersect the sweep line l, ordered along the intersection with l . Events: Points in time when sweep line status changes combinatorially (i.e., the order of segments intersecting l changes) Endpoints of segments (insert in beginning) Intersection points (compute on the fly during plane sweep) 1/23/20 18 CMPS 3130/6130 Computational Geometry

  19. General position Assume that nasty special cases don t happen: No line segment is vertical Two segments intersect in at most one point No three segments intersect in a common point 1/23/20 19 CMPS 3130/6130 Computational Geometry

  20. Event Queue Need to keep events sorted: Lexicographic order (first by x-coordinate, and if two events have same x-coordinate then by y-coordinate) Need to be able to remove next point, and insert new points in O(log n) time Need to make sure not to process same event twice Use a priority queue (heap), and possibly extract multiples Or, use balanced binary search tree 1/23/20 20 CMPS 3130/6130 Computational Geometry

  21. Sweep Line Status Store segments that intersect the sweep line l, ordered along the intersection with l. Need to insert, delete, and find adjacent neighbor in O(log n) time Use balanced binary search tree, storing the order in which segments intersect l in leaves b c e d c b e d 1/23/20 21 CMPS 3130/6130 Computational Geometry

  22. Event Handling 1. Left segment endpoint Add new segment to the sweep line status Test adjacent segments on the sweep line l for intersection with new segment (see Lemma) Add new intersection points to the event queue b c a e d c b d c b e d 1/23/20 22 CMPS 3130/6130 Computational Geometry

  23. Event Handling 2. Intersection point Report new intersection point Two segments change order along l Test new adjacent segments for new intersection points (to insert into event queue) b c a e d Note: new intersection might have been already detected earlier. c b e d c e b d 1/23/20 23 CMPS 3130/6130 Computational Geometry

  24. Event Handling 3. Right segment endpoint Delete segment from sweep line status Two segments become adjacent. Check for intersection points (to insert in event queue) b c a e d e c b d e c d 1/23/20 24 CMPS 3130/6130 Computational Geometry

  25. Intersection Lemma Lemma: Let s, s be two non-vertical segments whose interiors intersect in a single point p. Assume there is no third segment passing through p. Then there is an event point to the left of p where s and s become adjacent (and hence are tested for intersection). Proof: Consider placement of sweep line infinitesimally left of p. Segments s and s are adjacent along sweep line. Hence there must have been a previous event point where s and s become adjacent. s p s 1/23/20 25 CMPS 3130/6130 Computational Geometry

  26. Runtime Sweep line status updates: O(log n) Event queue operations: O(log n), as the total number of stored events is 2n + k, and each operation takes time O(log(2n+k)) = O(log n2) = O(log n) k = O(n2) There are O(n+k) events. Hence the total runtime is O((n+k) log n) 1/23/20 26 CMPS 3130/6130 Computational Geometry

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#