Download presentation
Presentation is loading. Please wait.
1
UMass Lowell Computer Science 91.504 Advanced Algorithms Computational Geometry Prof. Karen Daniels Spring, 2007 Lecture 3 Chapter 3: 2D Convex Hulls Friday, 2/9/07
2
Chapter 3 2D Convex Hulls Definitions Gift Wrapping Graham Scan QuickHullIncrementalDivide-and-Conquer Lower Bound in (nlgn)
3
Convexity & Convex Hulls A convex combination of points x 1,..., x k is a sum of the form 1 x 1 +...+ k x k where ä Convex hull of a set of points is the set of all convex combinations of points in the set. nonconvex polygon convex hull of a point set source: O’Rourke, Computational Geometry in C source: 91.503 textbook Cormen et al. We will construct boundary of convex hull.
4
Naive Algorithms for Extreme Points Algorithm: INTERIOR POINTS for each i do for each j = i do for each j = i do for each k = j = i do for each k = j = i do for each L = k = j = i do for each L = k = j = i do if p L in triangle(p i, p j, p k ) then p L is nonextreme O(n 4 ) Algorithm: EXTREME EDGES for each i do for each j = i do for each j = i do for each k = j = i do for each k = j = i do if p k is not (left or on) (p i, p j ) if p k is not (left or on) (p i, p j ) then (p i, p j ) is not extreme O(n 3 ) source: O’Rourke, Computational Geometry in C
5
Algorithms: 2D Gift Wrapping ä Use one extreme edge as an anchor for finding the next O(n 2 ) Algorithm: GIFT WRAPPING i 0 index of the lowest point i i 0 repeat for each j = i for each j = i Compute counterclockwise angle from previous hull edge Compute counterclockwise angle from previous hull edge k index of point with smallest k index of point with smallest Output (p i, p k ) as a hull edge Output (p i, p k ) as a hull edge i k i k until i = i 0 source: O’Rourke, Computational Geometry in C
6
Gift Wrapping source: 91.503 textbook Cormen et al. 33.9 Output Sensitivity: O(n 2 ) run-time is actually O(nh) where h is the number of vertices of the convex hull.
7
Algorithms: 3D Gift Wrapping CxHull Animations: http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html O(n 2 ) time [output sensitive: O(nF) for F faces on hull]
8
Algorithms: 2D QuickHull ä Concentrate on points close to hull boundary ä Named for similarity to Quicksort a b O(n 2 ) Algorithm: QUICK HULL function QuickHull(a,b,S) if S = 0 return() if S = 0 return() else else c index of point with max distance from ab c index of point with max distance from ab A points strictly right of (a,c) A points strictly right of (a,c) B points strictly right of (c,b) B points strictly right of (c,b) return QuickHull(a,c,A) + (c) + QuickHull(c,b,B) return QuickHull(a,c,A) + (c) + QuickHull(c,b,B) source: O’Rourke, Computational Geometry in C finds one of upper or lower hull c A
9
Algorithms: 3D QuickHull CxHull Animations: http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html
10
Algorithms for Qhull: http://www.qhull.org Convex Hull boundary is intersection of hyperplanes, so worst-case combinatorial size (not necessarily running time) complexity is in:
11
Graham’s Algorithm ä Points sorted angularly provide “star-shaped” starting point ä Prevent “dents” as you go via convexity testing O(nlgn) Algorithm: GRAHAM SCAN, Version B Find rightmost lowest point; label it p 0. Sort all other points angularly about p 0. In case of tie, delete point(s) closer to p 0. In case of tie, delete point(s) closer to p 0. Stack S (p 1, p 0 ) = (p t, p t-1 ); t indexes top i 2 while i < n do if p i is strictly left of p t-1 p t then Push(p i, S) and set i i +1 else Pop(S) source: O’Rourke, Computational Geometry in C “multipop” p0p0p0p0
12
Graham Scan source: 91.503 textbook Cormen et al.
13
Graham Scan source: 91.503 textbook Cormen et al. 33.7
14
Graham Scan source: 91.503 textbook Cormen et al. 33.7
15
Graham Scan source: 91.503 textbook Cormen et al.
16
Graham Scan source: 91.503 textbook Cormen et al.
17
Algorithms: 2D Incremental ä Add points, one at a time ä update hull for each new point ä Key step becomes adding a single point to an existing hull. ä Find 2 tangents ä Results of 2 consecutive LEFT tests differ ä Idea can be extended to 3D. O(n 2 ) Algorithm: INCREMENTAL ALGORITHM Let H 2 ConvexHull{p 0, p 1, p 2 } for k 3 to n - 1 do H k ConvexHull{ H k-1 U p k } H k ConvexHull{ H k-1 U p k } can be improved to O(nlgn) source: O’Rourke, Computational Geometry in C
18
Algorithms: 3D Incremental CxHull Animations: http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html O(n 2 ) time
19
Algorithms: 2D Divide-and-Conquer ä Divide-and-Conquer in a geometric setting ä O(n) merge step is the challenge ä Find upper and lower tangents ä Lower tangent: find rightmost pt of A & leftmost pt of B; then “walk it downwards” ä Idea can be extended to 3D. Algorithm: DIVIDE-and-CONQUER Sort points by x coordinate Divide points into 2 sets A and B: A contains left n/2 points B contains right n/2 points Compute ConvexHull(A) and ConvexHull(B) recursively Merge ConvexHull(A) and ConvexHull(B) O(nlgn) A B source: O’Rourke, Computational Geometry in C
20
Algorithms: 3D Divide and Conquer CxHull Animations: http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html O(n log n) time !
21
Lower Bound of O(nlgn) Worst-case time to find convex hull of n points in algebraic decision tree model is in (nlgn) ä Proof uses sorting reduction: ä Given unsorted list of n numbers: (x 1,x 2,…, x n ) ä Form unsorted set of points: (x i, x i 2 ) for each x i ä Convex hull of points produces sorted list! ä Parabola: every point is on convex hull ä Reduction is O(n) (which is in o(nlgn)) Finding convex hull of n points is therefore at least as hard as sorting n points, so worst-case time is in (nlgn) Parabola for sorting 2,1,3 source: O’Rourke, Computational Geometry in C
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.