Fast Area-Weighted Peeling of Convex Hulls for Outlier Detection111This work is supported in part by Independent Research Fund Denmark grant 9131-00113B and a fellowship from the Department of Computer Science at UC Irvine.
Abstract
We present a novel 2D convex hull peeling algorithm for outlier detection, which repeatedly removes the point on the hull that decreases the hull’s area the most. To find outliers among points, one simply peels points. The algorithm is an efficient heuristic for exact methods, which find the points whose removal together results in the smallest convex hull. Our algorithm runs in time using space for any choice of . This is a significant speedup compared to the fastest exact algorithms, which run in time using space by Eppstein et al. [12, 14], and time by Atanassov et al. [4]. Existing heuristic peeling approaches are not area-based. Instead, an approach by Harsh et al. [17] repeatedly removes the point furthest from the mean using various distance metrics and runs in time. Other approaches greedily peel one convex layer at a time [20, 2, 19, 30], which is efficient when using an time algorithm by Chazelle [7] to compute the convex layers. However, in many cases this fails to recover outliers. For most values of and , our approach is the fastest and first practical choice for finding outliers based on minimizing the area of the convex hull. Our algorithm also generalizes to other objectives such as perimeter.
1 Introduction
When performing data analysis, a critical first step is to identify outliers in the data. This has applications in data exploration, clustering, and statistical analysis [31, 9, 23]. Typical methods of outlier detection such as Grubbs’ test [15] are based in statistics and require strong assumptions about the distribution from which the sample is taken. These are known as parametric outlier detection tests. If the sample size is too small or the distribution assumptions are incorrect, parametric tests can produce misleading results. For these reasons, non-parametric complementary approaches based in computation geometry have emerged. Our work follows this line of research and is based on the fundamental notion of a convex hull. For a set of points , the convex hull is the smallest convex set containing [10].
There are numerous definitions of outliers [22, 28, 3], but a general theme is that points without many close neighbors are likely to be outliers. As such, these outlying points tend to have a large effect on the shape of the convex hull. Prior work has applied this insight in different ways to identify possible outliers, such as removing points from the convex hull to minimize its diameter [1, 13], its perimeter [11], or its area [14, 12]. Motivated by the last category, we will consider likely outliers to be points whose removal causes the area of the convex hull to shrink the most. We propose a greedy algorithm that repeatedly removes the point such that the area of ’s convex hull decreases the most. We call the amount the area would decrease if point is removed its sensitivity . The removed point is guaranteed to be on the convex hull, and such an algorithm is known as a convex hull peeling algorithm [19, 30]. To find outliers, we peel points. Our algorithm is conceptually simple, though it relies on the black-box use of a dynamic (or deletion-only) convex hull data structure [18, 6]. We assume that points are in general position. This assumption may be lifted using perturbation methods [25].
The main challenge is maintaining the sensitivities as points are peeled. When peeling a single point , there may be new points affecting the sensitivity for a different point , as in Figure 1. In that case, naively computing the new sensitivity would take time. Nevertheless, we show that our algorithm runs in time for any .
2 Related work
The two existing approaches for finding outliers based on the area of the convex hull took a more ideal approach. They considered finding the points (outliers) whose removal together causes the area of the convex hull to decrease the most. We call this a -peel and note that it always yields an area smaller or equal to that of performing individual -peels. It is not hard to come up with examples where the difference in area between the two approaches is arbitrarily large such as in Figure 2. Still, these examples are quite artificial and require that outliers have at least one other point close by. More importantly, these methods are combinatorial in nature, and much less efficient than our algorithm. The state-of-the-art algorithms for performing a -peel run in time and space by Eppstein [12, 14] and time by Atanassov et al. [4]. While excellent theoretical results, for most values of and , the running time of both of these algorithms is prohibitive for practical purposes. Our contribution is a fast and practical heuristic for these ideal approaches. There are also several results for finding the points minimizing other objectives such as the minimum diameter, perimeter, or area-enclosing rectangle [13, 29].
Another convex hull peeling algorithm is presented in [17]. Unlike in area-based peeling, they repeatedly remove the point furthest from the mean under various distance metrics. Letting be the time to compute the distance between two points, their algorithm runs in time, which is also significantly slower than our algorithm for most values of . Since they maintain the mean of the remaining points during the peeling process, each peel takes time.
Some depth-based outlier detection methods also use convex hulls. They compute a point set’s convex layers, which can be defined by iteratively computing and are computable in time [7]. Here, points are deleted from the outermost-layer-in [20, 2, 19, 30]. While efficient, the natural example in Figure 3 is a bad instance for this approach.
3 Results
The main result of our paper is Theorem 3.1, that there exists an algorithm for efficiently performing area-weighted-peeling.
Theorem 3.1.
Given points in 2D, Algorithm 1 performs area-weighted-peeling, repeatedly removing the point from the convex hull which causes its area to decrease the most, in time.
To prove Theorem 3.1, we derive Theorem 6.7, which bounds the total number of times points become active in any 2D convex hull peeling process to .
Definition 3.2 (Active Points).
Let be consecutive points on the first layer in clockwise order. A point is active for if, upon deleting and restoring the first and second layers, moves to the first layer.
Intuitively, the active points are the points not on the convex hull that affect the sensitivities. Note that the active points form a subset of the points on the second convex layer. We define to be the set of active points for point in a given configuration. Furthermore, all points in can be found by performing gift-wrapping starting from ’s counterclockwise neighbor while ignoring . We use this ordering for the points in . In Theorem 7.1, we show that our algorithm generalizes to other objectives such as perimeter where the sensitivity only depends on the points on the first layer and the active points.
4 Machinery
In this section, we describe some of the existing techniques we use. To efficiently calculate how much the hull shrinks when a point is peeled, we perform tangent queries from the neighbours of the peeled point to the second convex layer. The tangents from a point to a convex polygon can be found in time both with [27] and without [21] a line separating and . In our application, such a separating line is always available, and either approach can be used. Tangent queries require that is represented as an array or a balanced binary search tree of its vertices ordered (cyclically) as they appear on the perimeter of . To allow efficient updates to we use a binary tree representation that is leaf-linked such that given a pointer to a vertex its successor/predecessor can be found in time.
The convex layers of points can be computed in time using an algorithm by Chazelle [7]. Given convex layers, after a single peel they can be restored in time (Lemma 3.3 [24]). However, for our purposes we only need the 2 outermost layers for area calculations. As such, we explicitly maintain the two outermost layers and , and we store all remaining points in a center convex hull. To restore we use tangent queries on as in [24]. To restore we use extreme point queries on the center convex hull which we maintain using a semi-dynamic [18] or fully-dynamic [6] convex hull data structures supporting extreme point queries in worst case time and updates in amortized time.
5 Area-Weighted-Peeling Algorithm
In this section, we describe Algorithm 1 in detail and show that its running time is .
At a high level, we want to repeatedly identify and remove the point which causes the area of the convex hull to decrease the most. Such an iteration is a peel, and we call the amount the area would decrease if point was peeled the sensitivity of . To efficiently find the point to peel, we maintain a priority queue on the sensitivities of hull points. Only points on the convex hull may have positive sensitivity, and in lines 1-1 we compute the initial sensitives of the points on the convex hull and store them in . For a hull point , to compute its sensitivity we find its active points . Note they must be on the second convex layer, and if ’s neighbors are and , then the points are in the triangle . In line 1 we compute the two outer convex hull layers represented as balanced binary trees. That allows us to compute using tangent queries on the inner layer from and . Then can be found by computing the area of the polygon .
As points are peeled (lines 1-1) layers and must be restored. To restore when point is peeled (line 1) we perform tangent queries on as in [24] to find ’s active points (line 1) and move from to . See Figure 4 for an example of tangent queries from to .
To restore the broken part of , we perform extreme point queries on the remaining points efficiently using a dynamic convex hull data structure (line 1) as in [18] or [6]. As described in Lemma 6.9, is always contiguous on . Therefore, removing from requires us to restore it between two ”endpoints” and . The first extreme point query uses line in the direction of . If a point from is found then at least two more queries are performed with lines and . In general, if points are found then the number of queries is . The points are deleted from . This all happens on line 1.
Next, we compute the sensitivities of the new points on the hull (line 1) and insert them into the priority queue. Finally, we update the sensitivities of ’s neighbors and (line 1), which, by Lemma 6.1(4), are the only two points already in whose sensitivity changes.
5.1 Analysis
The hardest part of the analysis is showing that the overall time spent on lines 1 and 1 is . We first show that, excluding the time spent on these lines, the running time of Algorithm 1 is . In line 1 we compute the first and second convex layers in time by running any optimal convex hull algorithm twice. In lines 1 to 1, we compute the initial sensitivities by finding the points active for each . As described above, we can do this by applying two tangent queries, allowing us to recover the first and last extreme point for . We can walk along between them to recover . Once is found for each , we find by computing the area of the polygon , where and are ’s neighbors. By Lemma 6.1(1), in this initial configuration each point on is active in at most three triangles. Thus, we make in total tangent queries, each of which costs time. Since the area of a simple polygon can be computed in linear time [26], all the area computations take time. Therefore, the overall time to initialize the priority queue is .
Initializing in line 1 takes time [18]. In line 1, we can perform tangent queries on from and to find the first and last active points of . In line 1, it will take no more than tangent queries to restore and throughout the algorithm by charging the queries to the points moved from the center convex hull to or from to . Using an efficient dynamic convex hull data structure, it takes amortized time to delete a point and thus time overall [18, 6]. We add points to the priority queue times, delete points from the priority queue times, and perform priority queue update operations for each iteration of the outer loop on line 1. Excluding lines 1 and 1 this establishes the overall running time.
To bound the total time spent on line 1 to , we prove Theorem 6.7, bounding the total number of times points becomes active to . Computing in line 1 requires us to find , where is a new point added to the first layer. From the theorem, it takes time to compute for every . In addition, because it takes to compute from , overall it takes time to compute for every .
6 Geometric properties of peeling
In this section, we develop an amortized analysis of peeling to show that lines 1 and 1 can be computed efficiently. We ultimately aim to show that the number of times that any point becomes active for any triangle is , bounding the amount of work done to initialize new triangles to . Then we show that the amount of work done to update the sensitivities of neighbor points is proportional to the number of new active points for them and an additive term. Thus, updating the sensitivities over all iterations takes .
6.1 Preliminaries
When considering outer hull points, we use the notation for the triangle formed by , its counterclockwise neighbor , and its clockwise neighbor . For a set of ordered vertices we let be the polygon formed by the points in the (cyclical) order. We say if is strictly inside the polygon.
The following Lemma 6.1 combines a number of simple but useful propositions.
Lemma 6.1.
For a set of points , the following propositions are true:
-
1.
Any point is active for at most three points on the first layer.
-
2.
Let be a triangle for consecutive vertices on the first layer and let be points and . Then .
-
3.
Let be a point on any layer . After deleting any point and reconstructing the convex layers, is on layer or .
-
4.
Let be consecutive vertices on the first layer . Then if is deleted, among the vertices in , only the sensitivities of vertices and change.
-
5.
For adjacent points on the hull, .
Proof 6.2.
See Section 7.2 in the appendix.
6.2 Bounding the active points
We will show that once a point is active for a hull point, it remains active for that hull point until the point is moved to the first layer. This implies a much stronger result by Lemma 6.1(1): over the entire course of the algorithm, a point becomes active for at most three other points. To do so, we first show that for each peel the active points remain in ’s triangle (Lemma 6.3) and second that the points in remain active (Lemma 6.5).
Lemma 6.3.
Given a set of points , for all adjacent hull points and for all points , if is deleted then still remains within ’s triangle.
Proof 6.4.
Let be ’s other neighbor, and w.l.o.g. let the clockwise order on the hull be . Then if is ’s new neighbor after deleting , the clockwise order on the new hull will be . Because is active for before is deleted, .
First, we consider the case where . We want to show that . Equivalently, that is in the intersection of the three half-planes , , and . Clearly, must satisfy the half-planes and as these coincide with hull edges. In addition, since , the half-plane for is a subset of the half-plane for . Because , satisfies . Therefore, must satisfy .
Now we consider the case where . Assume that . Then because we know that , either or . If , by Lemma 6.1(2), could not have been active for prior to deleting . If , is now outside of the convex hull. Either way, this is a contradiction.
The following Lemma 6.5 shows that if is in , it remains in until moved to the first layer, after which it never becomes active again. It also shows that the active points only change by adding or deleting points from either end, and thus can easily be found.
Lemma 6.5.
Given a set of points , for all hull points and and for all points , upon deleting , is in , ’s new set of active points.
Proof 6.6.
Case 1 ( is not adjacent to )
If is not adjacent to , there are no changes to upon deleting , and thus, .
For the following cases, assume that was adjacent to . Then by Lemma 6.3, is still in the triangle defined by even after deleting . Also, w.l.o.g. let be the clockwise ordering of the points, and let be ’s new neighbor.
Case 2 ()
By Lemma 6.1(5), . By Lemma 6.3, all points are in . Because the second layer is a convex hull, each consecutive pair of points in define a half-plane with only points from the first layer to the left of each half-plane. This is still the case after deleting by Lemma 3. Since the only new points on the first layer are then all points in remain on the second layer. Thus, the gift-wrapping starting from wraps around all points in . Gift wrapping can hit no new points because, if that were true, there must be some point on the second layer to the left of one of the half-planes in described above. Thus, .
Case 3 ()
Let be the last point . Similar to the previous case, the gift-wrapping certifies all points in . Again, wrapping will not hit new active points before wrapping around because that would imply the points hit were to the left of the half-planes described previously. When wrapping continues around , several new active points may appear, until the wrapping terminates at . Thus, .
Theorem 6.7.
For any 2D convex hull peeling process on points the total number of times any point becomes active in any triangle is at most .
6.3 Updating sensitivities
Next, we show that the total time to update the sensitivities in line 1 when peeling all points takes time. Here is the the number of times any point becomes active for any triangle. Theorem 6.7 proves that . The following lemma shows that the sensitivity of a point can be updated in time proportional to the increase to and an additive term. Figure 5 shows an example of how the sensitivity of a point changes when its neighbor is peeled.
Lemma 6.9.
Let be points on the first layer. Consider a peel of where new points become active points for . Then the updated sensitivity can be computed it time, excluding the time to restore the second and first layer.
Proof 6.10.
The sensitivity is equal to the area of the polygon . By the shoelace formula, the area of can be computed as the sum of certain simple terms for each of its edges [5, 8]. We consider how , and thus , changes when is peeled. Inspecting the proof of Lemma 6.5, we see that at most two vertices are removed from and at most vertices are added to . Furthermore, all the new vertices are located contiguously on the restored second layer and can be found in time using a tangent query from ’s new neighbor which replaces . To update , we simply add and subtract the appropriate terms depending on the removed and added edges.
7 Generalization and open problems
Theorem 7.1 shows that Algorithm 1 generalizes straightforwardly to other objectives such as peeling the point that causes the perimeter of the convex hull to decrease the most each iteration.
Theorem 7.1.
Let be a point and an objective where is the sensitivity of under . Consider the following three conditions:
-
C1:
If , then .
-
C2:
If , then , and depends only on , ’s neighbors and its active points .
-
C3:
If a single point is added or removed from , then provided and the neighbors and of in , the new sensitivity can be computed in time.
If satisfies the above conditions, then Algorithm 1 runs in time for objective .
Proof 7.2.
By conditions C1 and C2, it is always a point on the first layer that is peeled. Furthermore, when is peeled only the sensitivities of the new points on the first layer and the neighbors of must be updated since they are the only points for which their active points or neighbors change. Thus, Algorithm 1 can be used for objective . Now we will show that the runtime of Algorithm 1 remains .
First, observe that all parts unrelated to computing sensitivities behave the same and still take time. By condition C3, for a point on the first layer, its sensitivity only depends on its neighbors and active points . As described in the proof of Lemma 6.9, when the set of points that affect changes, these points are readily available. The total number of neighbor changes is since, in each iteration, only the neighbors of the points adjacent to the peeled point change. The total number of changes to active points is by Theorem 6.7. If there are multiple changes to the active points in one iteration, such as when deleting one of ’s neighbors, we perform one change at a time and, by condition C3, the total time to update sensitivities is .
For concrete examples, we show how the three objectives area (), perimeter (), and number of active points ( fit into this framework.
Let be a function for computing the sensitivity when is added to between and (the functions where a point is removed from or a neighbor of changes are similar). For to match each of the objectives it is sufficient to implement as follows for points :
-
:
-
:
-
:
The case with is based on the shoelace formula. Additionally, for to satisfy condition C2, we add when computing the sensitivity of to ensure that even if . For the three objectives, takes time to compute satisfying the time requirement from condition C3.
7.1 Open problems
The first open problem is extending the result to or higher. Directly applying our approach requires a dynamic 3D convex hull data structure, and Theorem 6.7 has to be extended to 3D. Second, is it possible to improve the quality of peeling by performing -peels, even for in time? Third, is there an efficient approximation algorithm for -peeling?
Acknowledgement
We thank Asger Svenning for the initial discussions that inspired us to consider this problem.
References
- [1] A. Aggarwal, H. Imai, N. Katoh, and S. Suri. Fining k points with minimum spanning trees and related problems. In Proceedings of the fifth annual symposium on Computational geometry, pages 283–291, 1989.
- [2] G. Aloupis. Geometric measures of data depth. DIMACS series in discrete mathematics and theoretical computer science, 72:147, 2006.
- [3] F. Angiulli and C. Pizzuti. Fast outlier detection in high dimensional spaces. In European conference on principles of data mining and knowledge discovery, pages 15–27. Springer, 2002.
- [4] R. Atanassov, P. Bose, M. Couture, A. Maheshwari, P. Morin, M. Paquette, M. Smid, and S. Wuhrer. Algorithms for optimal outlier removal. Journal of Discrete Algorithms, 7(2):239–248, 2009. Selected papers from the 2nd Algorithms and Complexity in Durham Workshop ACiD 2006.
- [5] R. Boland and J. Urrutia. Polygon area problems. In Proc. of the 12th Canadian Conf. on Computational Geometry, Fredericton, NB, Canada, 2000.
- [6] G. Brodal and R. Jacob. Dynamic planar convex hull. In The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002. Proceedings., pages 617–626, 2002.
- [7] B. Chazelle. On the convex layers of a planar set. IEEE Transactions on Information Theory, 31(4):509–517, 1985.
- [8] F. Contreras. Cutting polygons and a problem on illumination of stages. University of Ottawa (Canada), 1998.
- [9] R. N. Dave. Characterization and detection of noise in clustering. Pattern Recognition Letters, 12(11):657–664, 1991.
- [10] M. De Berg. Computational geometry: algorithms and applications. Springer Science & Business Media, 2000.
- [11] D. P. Dobkin, R. Drysdale, and L. J. Guibas. Finding smallest polygons. Computational Geometry, 1:181–214, 1983.
- [12] D. Eppstein. New algorithms for minimum area k-gons. In Proceedings of the Third Annual ACM-SIAM Symposium on Discrete Algorithms, SODA ’92, page 83–88, USA, 1992. Society for Industrial and Applied Mathematics.
- [13] D. Eppstein and J. Erickson. Iterated nearest neighbors and finding minimal polytopes. Discrete & Computational Geometry, 11:321–350, 1994.
- [14] D. Eppstein, M. Overmars, G. Rote, and G. Woeginger. Finding minimum area k-gons. Discrete & Computational Geometry, 7:45–58, 1992.
- [15] F. E. Grubbs. Sample criteria for testing outlying observations. University of Michigan, 1949.
- [16] S. Har-Peled. On the expected complexity of random convex hulls. arXiv preprint arXiv:1111.5340, 2011.
- [17] A. Harsh, J. E., and P. Wei. Onion-peeling outlier detection in 2-d data sets. International Journal of Computer Applications, 139:26–31, 04 2016.
- [18] J. Hershberger and S. Suri. Applications of a semi-dynamic convex hull algorithm. BIT Numerical Mathematics, 32:249–267, 1992.
- [19] P. J. Huber. The 1972 wald lecture robust statistics: A review. The Annals of Mathematical Statistics, 43(4):1041–1067, 1972.
- [20] J. Hugg, E. Rafalin, K. Seyboth, and D. Souvaine. An experimental study of old and new depth measures. In 2006 Proceedings of the Eighth Workshop on Algorithm Engineering and Experiments (ALENEX), pages 51–64. SIAM, 2006.
- [21] D. Kirkpatrick and J. Snoeyink. Computing common tangents without a separating line. In S. G. Akl, F. Dehne, J.-R. Sack, and N. Santoro, editors, Algorithms and Data Structures, pages 183–193, Berlin, Heidelberg, 1995. Springer Berlin Heidelberg.
- [22] E. M. Knorr and R. T. Ng. Finding intensional knowledge of distance-based outliers. In Vldb, volume 99, pages 211–222, 1999.
- [23] S. K. Kwak and J. H. Kim. Statistical data preparation: management of missing values and outliers. Korean journal of anesthesiology, 70(4):407, 2017.
- [24] M. Löffler and W. Mulzer. Unions of onions: preprocessing imprecise points for fast onion decomposition. Journal of Computational Geometry, 5(1), 2014.
- [25] K. Mehlhorn, R. Osbild, and M. Sagraloff. Reliable and efficient computational geometry via controlled perturbation. In International Colloquium on Automata, Languages, and Programming, pages 299–310. Springer, 2006.
- [26] A. Meister. Generalia de genesi figurarum planarum et inde pendentibus earum affectionibus. 1769.
- [27] M. H. Overmars and J. Van Leeuwen. Maintenance of configurations in the plane. Journal of computer and System Sciences, 23(2):166–204, 1981.
- [28] S. Ramaswamy, R. Rastogi, and K. Shim. Efficient algorithms for mining outliers from large data sets. In Proceedings of the 2000 ACM SIGMOD international conference on Management of data, pages 427–438, 2000.
- [29] M. Segal and K. Kedem. Enclosing k points in the smallest axis parallel rectangle. Information Processing Letters, 65(2):95–99, 1998.
- [30] M. I. Shamos. Problems in computational geometry. 1975.
- [31] A. F. Zuur, E. N. Ieno, and C. S. Elphick. A protocol for data exploration to avoid common statistical problems. Methods in ecology and evolution, 1(1):3–14, 2010.
Appendix
7.2 Proof of Lemma 6.1
Lemma 6.1(1)
Fix a point set . Any point is active in at most three triangles.
Proof 7.3.
First, note that a point can only be active for a hull point if it is located inside , so it is sufficient to show that any is strictly inside at most three triangles. In addition, one can prove this by showing that only intersects with its neighbors’ triangles and .
Consider some , such that is not a neighbor of . That is, is not one of the vertices of . If intersects with , then either a vertex of is inside or the convex hull is a self-intersecting polygon, both violating convexity.
Lemma 6.1(2)
Let be a triangle for consecutive vertices on the first layer and let be points and . Then .
Proof 7.4.
By definition, or . Either way, implies that , so .
Lemma 6.1(3)
Let be a point on any convex layer . After deleting any point and reconstructing the convex layers, is on layer or .
Proof 7.5.
First we show that never moves inward to layer . Consider the outermost layer . By a property of convex hulls, every point inside the convex hull is a convex combination of the hull points whereas any point is not a convex combination of . If deleting causes to descend to a layer inside , that implies that is a convex combination of some subset of . This contradicts the fact that is not a convex combination of and by extension is not a convex combination of . Because of the recursive definition of convex layers, the proof for subsequent layers is symmetric.
Now we will show that never moves up more than one layer at a time. This is clearly true for and because only one point is completely removed from the structure at at time (i.e. shifts to layer 0). For layers , consider a point on layer that moves to layer . Let be the set of points on layer after deleting . Let be the set of points on layer before deleting .
Because , no convex combination of the points in equals by convexity. By the inductive hypothesis, all points on are convex combinations of because upon deleting no point on advances above layer . Furthermore, they are all convex combinations of as itself is a convex combination of . But if is not a convex combination of , and all the points on layer are convex combinations of , then prior to deleting , was above layer , which is a contradiction.
Lemma 6.1(4)
Let be consecutive vertices on the first layer . Then if is deleted, among the vertices in , only the sensitivities of vertices and change.
Proof 7.6.
Consider a vertex not adjacent to . By the same arguments as in the proof of Lemma 6.1(1), the vertices defining do not change upon deleting because it does not intersect . In addition, because their triangles do not intersect, . Therefore, no points are removed from upon deleting .
Lastly, we will show that no points are added to upon deleting . Assume that there is some point added to when we delete . But if satisfies the conditions of being active for and did not change upon deleting , it should have been active for before was deleted, which is a contradiction.
Because and do not change upon deleting , it must be that remains the same.
Lemma 6.1(5)
For adjacent points on the hull, .
Proof 7.7.
We assume the contrary. Let be two points such that . By the definition of active and Lemma 6.1(3), and must be on the second layer. W.l.o.g. let be the clockwise ordering of the points on the first layer. In addition, let be ’s counterclockwise neighbor.
Say that is the first point in . Then we have the tangent line that defines . By definition of tangent lines, no point on the second layer can be to the left of . But for to be active for , then must be to the left of . The only way to satisfy both half-planes is for to be placed such that , in which case by Lemma 6.1(2) cannot be in , which is a contradiction.