1 / 33

Convex Hulls in 3-space

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:

sally
Télécharger la présentation

Convex Hulls in 3-space

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Convex Hullsin 3-space Jason C. Yang

  2. 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).

  3. 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 r1, let Pr:={p1,…,pr}] Main Idea: Incrementally insert new points into the running/intermediate Convex Hull.

  4. 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

  5. Inserting Points into CH • Add pr to the convex hull of Pr-1 to transform CH(Pr-1) to CH(Pr)[for integer r1, 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)

  6. 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)

  7. 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

  8. Rethinking the Horizon • Boundary of polygon obtained from projecting CH(Pr-1) onto a plane with pr as the center of projection

  9. 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

  10. 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?

  11. 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.

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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)

  17. 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)

  18. 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

  19. 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

  20. 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

  21. Analysis

  22. 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

  23. Each face has at least 3 arcs Each arc incident to two faces 2ne  3nf Using Euler nf  2n-4 ne  3n-6 Complexity

  24. 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

  25. 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))

  26. 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

  27. Expected Number of Created Facets • 4 from initial tetrahedron • Expected total number of facets created by adding p5,…,pn

  28. 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(?)

  29. 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(eLcard(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)

  30. Randomized Insertion Order

  31. 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)

  32. 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 (nd/2)

  33. 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

More Related