340 likes | 481 Vues
Convex Hulls in 3-space. Jason C. Yang. 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. Randomized incremental algorithm Steps:
E N D
Convex Hullsin 3-space Jason C. Yang
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 inthe interior of CH(P).
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 • 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 • 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) • Determine horizon of pr on CH(Pr-1) • Closed curve of edges enclosing the visible region of pr on CH(Pr-1)
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 • Boundary of polygon obtained from projecting CH(Pr-1) onto a plane with pr as the center of projection
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… • 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 • 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 • 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 • 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
G p5 f1 p6 f2 p7 Initializing G • Initialize G with CH(P4) in linear time • Walk through P5-n to determine which facet each point can see p6 f2 f1 p7 p5
G G p5 p5 f1 f1 p6 p6 f2 f2 p7 p7 G p5 f1 f3 f3 p6 f2 p7 Updating G • Discard visible facets from pr by removing neighbors of pr in G • Remove pr from G • Determine new conflicts p6 f2 f1 p7 p5
pt Determining New Conflicts • If pt can see newf, 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)
pt 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)
Pconflict(f) for any f unaffected by pr remains unchanged • Deleted facets not on horizon already accounted for pt What About the Other Facets? • Pconflict(f) for any f unaffected by pr remains unchanged
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 • 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
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
Each face has at least 3 arcs Each arc incident to two faces 2ne 3nf Using Euler nf 2n-4 ne 3n-6 Complexity
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 • 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 • 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 • 4 from initial tetrahedron • Expected total number of facets created by adding p5,…,pn
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 • 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.6The 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)
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)
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 • 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