Presentation Transcript
Convex Hullsin 3-space : Convex Hulls in 3-space Jason C. Yang
Problem Statement : Problem Statement Given P: set of n points in 3-space
Return:
Convex hull of P: CH(P)
Smallest polyhedron s.t. all elements of P on or in the interior of CH(P).
Algorithm : Algorithm Randomized incremental algorithm
Steps:
Initialize the algorithm
Loop over remaining points Add pr to the convex hull of Pr-1 to transform CH(Pr-1) to CH(Pr) [for integer r1, let Pr:={p1,…,pr}]
Main Idea:
Incrementally insert new points into the running/intermediate Convex Hull.
Initialization : Initialization Need a CH to start with
Build a tetrahedron using 4 points in P
Start with two distinct points in P: p1 and p2
Walk through P to find p3 that does not lie on the line through p1 and p2
Find p4 that does not lie on the plane through p1, p2, p3
Special case: No such points exist?
Compute random permutation p5,…,pn of the remaining points Need a CH to start with
Build a tetrahedron using 4 points in P
Start with two distinct points in P: p1 and p2
Walk through P to find p3 that does not lie on the line through p1 and p2
Find p4 that does not lie on the plane through p1, p2, p3
Special case: No such points exist?
All points lie on a plane. Use planar CH algorithm!
Compute random permutation p5,…,pn of the remaining points
Inserting Points into CH : Inserting Points into CH Add pr to the convex hull of Pr-1 to transform CH(Pr-1) to CH(Pr) [for integer r1, let Pr:={p1,…,pr}]
Two Cases:
1) Pr is inside or on the boundary of CH(Pr-1)
Trivial: CH(Pr) = CH(Pr-1)
2) Pr is outside of CH(Pr-1)
Case 2: Pr outside CH(Pr-1) : Case 2: Pr outside CH(Pr-1) Determine horizon of pr on CH(Pr-1)
Closed curve of edges enclosing the visible region of pr on CH(Pr-1)
Visibility : Visibility Consider plane hf containing a facet f of CH(Pr-1)
f is visible from a point if that point lies in the open half-space on the other side of hf
Rethinking the Horizon : Rethinking the Horizon Boundary of polygon obtained from projecting CH(Pr-1) onto a plane with pr as the center of projection
CH(Pr-1) CH(Pr) : CH(Pr-1) CH(Pr) Remove visible facets from CH(Pr-1)
Found horizon: Closed curve of edges of CH(Pr-1)
Form CH(Pr) by connecting each horizon edge to pr to create a new triangular facet
Algorithm So Far… : Algorithm So Far… Initialization
Form tetrahedron CH(P4) from 4 points in P
Compute random permutation of remaining pts.
For each remaining point in P
pr is point to be inserted
If pr is outside CH(Pr-1) then
Determine visible region
Find horizon and remove visible facets
Add new facets by connecting each horizon edge to pr
How do we determine the visible region?
How to Find Visible Region : How to Find Visible Region Naïve approach:
Test every facet with respect to pr
O(n2)
Trick is to work ahead:
Maintain information to aid in determining visible facets.
Conflict Lists : Conflict Lists For each facet f maintain
Pconflict(f) {pr+1, …, pn}
containing points to be inserted that can see f
For each pt, where t > r, maintain
Fconflict(pt)
containing facets of CH(Pr) visible from pt
p and f are in conflict because they cannot coexist on the same convex hull
Conflict Graph G : Conflict Graph G Bipartite graph
pts not yet inserted
facets on CH(Pr)
Arc for every point-facet conflict
Conflict sets for a point or facet can be returned in linear time At any step of our algorithm, we know all conflicts
between the remaining points and facets on the current CH
Initializing G : Initializing G Initialize G with CH(P4) in linear time
Walk through P5-n to determine which facet each point can see f1 f2 p6 p5 p7
Updating G : Updating G Discard visible facets from pr by removing neighbors of pr in G
Remove pr from G
Determine new conflicts
f1 f2 p5 p7 p6
Determining New Conflicts : Determining New Conflicts If pt can see new f, it can see edge e of f.
e on horizon of pr, so e was already in and visible from pt in CH(Pr-1)
If pt sees e, it saw either f1 or f2 in CH(Pr-1)
Pt was in Pconflict(f1) or Pconflict(f2) in CH(Pr-1)
Determining New Conflicts : Determining New Conflicts Conflict list of f can be found by testing the points in the conflict lists of f1 and f2 incident to the horizon edge e in CH(Pr-1)
What About the Other Facets? : What About the Other Facets? Pconflict(f) for any f unaffected by pr remains unchanged
Final Algorithm : Final Algorithm Initialize CH(P4) and G
For each remaining point
Determine visible facets for pr by checking G
Remove Fconflict(pr) from CH
Find horizon and add new facets to CH and G
Update G for new facets by testing the points in existing conflict lists for facets in CH(Pr-1) incident to e on the new facets
Delete pr and Fconflict(pr) from G
Fine Point : Fine Point Coplanar facets
pr lies in the plane of a face of CH(Pr-1)
f is not visible from pr so we merge created triangles coplanar to f
New facet has same conflict list as existing facet
Analysis : Analysis
Complexity : Complexity of CH for n points in 3-space is O(n)
Number of edges of a convex polytope with n vertices is at most 3n-6 and the number of facets is at most 2n-4
From Euler’s formula: n – ne + nf = 2 Complexity
Complexity : Complexity Each face has at least 3 arcs
Each arc incident to two faces
2ne 3nf
Using Euler
nf 2n-4 ne 3n-6
Expected Number of Facets Created : Expected Number of Facets Created Will show that expected number of facets created by our algorithm is at most 6n-20
Initialized with a tetrahedron = 4 facets
Expected Number of New Facets : Expected Number of New Facets Backward analysis:
Remove pr from CH(Pr)
Number of facets removed same as those created by pr
Number of edges incident to pr in CH(Pr) is degree of pr:
deg(pr, CH(Pr))
Expected Degree of pr : Expected Degree of pr Convex polytope of r vertices has at most 3r-6 edges
Sum of degrees of vertices of CH(Pr) is 6r-12
Expected degree of pr bounded by (6r-12)/r
Expected Number of Created Facets : Expected Number of Created Facets 4 from initial tetrahedron
Expected total number of facets created by adding p5,…,pn
Running Time : Running Time Initialization O(nlogn)
Creating and deleting facets O(n)
Expected number of facets created is O(n)
Deleting pr and facets in Fconflict(pr) from G along with incident arcs O(n)
Finding new conflicts O(?)
Total Time to Find New Conflicts : Total Time to Find New Conflicts For each edge e on horizon we spend
O(card(P(e)) time
where P(e) Pconfict(f1)Pconflict(f2)
Total time is O(eLcard(P(e))) bounded by expected value of card(P(e))
Lemma 11.6 The expected value of ecard(P(e)), where the summation is over all horizon edges that appear at some stage of the algorithm is O(nlogn)
Randomized Insertion Order : Randomized Insertion Order
Running Time : Running Time Initialization O(nlogn)
Creating and deleting facets O(n)
Updating G O(n)
Finding new conflicts O(nlogn)
Total Running Time is O(nlogn)
Convex Hulls in Dual Space : Convex Hulls in Dual Space Upper convex hull of a set of points is essentially the lower envelope of a set of lines (similar with lower convex hull and upper envelope)
Half-Plane Intersection : Half-Plane Intersection Convex hulls and intersections of half planes are dual concepts
An algorithm to compute the intersection of half-planes can be given by dualizing a convex hull algorithm. Is this true?
Half-Plane Intersection : Half-Plane Intersection Duality transform cannot handle vertical lines
If we do not leave the Euclidean plane, there cannot be any general duality that turns the intersection of a set of half-planes into a convex hull. Why? Intersection of half-planes can be empty! And Convex hull is well defined.
Conditions for duality:
Intersection is not empty
Point in the interior is known. Duality transform cannot handle vertical lines
If we do not leave the Euclidean plane, there cannot be any general duality that turns the intersection of a set of half-planes into a convex hull. Why? Intersection of half-planes can be empty! And Convex hull is well defined.
Conditions for duality:
Intersection is not empty
Point in the interior is known.
Voronoi Diagrams Revisited : Voronoi Diagrams Revisited U:=(z=x2+y2) a paraboloid
p is point on plane z=0
h(p) is non-vert plane z=2pxx+2pyy-(p2x+p2y)
q is any point on z=0
vdist(q',q(p)) = dist(p,q)2
h(p) and paraboloid encodes any distance p to any point on z=0
Voronoi Diagrams : Voronoi Diagrams H:={h(p) | p P}
UE(H) upper envelope of the planes in H
Projection of UE(H) on plane z=0 is Voronoi diagram of P
Simplified Case : Simplified Case
Demo : Demo /mit/6.837/voronoi/voronoi
Delaunay Triangulations from CH : Delaunay Triangulations from CH
Higher Dimensional Convex Hulls : Higher Dimensional Convex Hulls Upper Bound Theorem: The worst-case combinatorial complexity of the convex hull of n points in d-dimensional space is (n d/2).
Our algorithm generalizes to higher dimensions with expected running time of (nd/2)
Higher Dimensional Convex Hulls : Higher Dimensional Convex Hulls Best known output-sensitive algorithm for computing convex hulls in Rd is:
O(nlogk +(nk)1-1/(d/2+1)logO(n))
where k is complexity
Catch the
buzz on authorSTREAM
Copyright © 2002-2008 authorSTREAM. All rights reserved.