A Simple Linear Time Greedy Triangulation Algorithm for ... - CiteSeerX

5 downloads 196392 Views 264KB Size Report
Feb 16, 1995 - then build the GT an edge at a time by examining each pair in order of ..... are generated only once. A radix sort based on the indices of the. 6 ...
A Simple Linear Time Greedy Triangulation Algorithm for Uniformly Distributed Points Robert L. Scot Drysdaley

Department of Computer Science 6211 Sudiko Laboratory Dartmouth College, Hanover NH 03755-3510, USA [email protected]

Gunter Rote

Technische Universitat Graz Institut fur Mathematik Steyrergasse 30, A-8010 Graz, AUSTRIA

Oswin Aichholzer

[email protected]

Technische Universitat Graz Institut fur Grundlagen der Informationsverarbeitung Klosterwiesgasse 32/2 A-8010 Graz, AUSTRIA [email protected]

February 16, 1995

1 Introduction

1.1 Overview of the Results

The greedy triangulation (GT) of a set S of n points in the plane is the triangulation obtained by starting with the empty set and at each step adding the shortest compatible edge between two of the points, where a compatible edge is de ned to be an edge that crosses none of the previously added edges. In this paper we present a simple, practical algorithm that computes the greedy triangulation in expected time O(n) and space O(n), for n points drawn independently from a uniform distribution over some xed convex shape C . This algorithm is an improvement of the O(n log n) algorithm of Dickerson, Drysdale, McElfresh, and Welzl [7]. It uses their basic approach, but generates only O(n) plausible greedy edges instead of O(n logn). It uses some ideas similar to those presented in Levcopoulos and Lingas's O(n) expected time algorithm [18]. Since we use more knowledge about the structure of a random point set and its greedy triangulation, our algorithm needs only elementary data structures and simple bucketing techniques. Thus it is a good deal simpler to explain and to implement than the algorithm of [18].

1.2 Background

Eciently computing the greedy triangulation is a problem of long standing, going back at least to 1970 [9]. A number of the properties of the GT have been discovered [16, 19, 22, 23] and the greedy algorithm has been used in applications [5, 23]. ?  The naive approach to computing the GT is to compute all n2 distances, sort them, and then build the GT an edge at a time by examining each pair in order of length and adding or discarding it based on its compatibility with the edges already added. It is easy to see that this method requires O(n2) space and O(n3 ) time, because in the compatibility test each pair must be tested for intersection with O(n) edges already in the partial triangulation. Gilbert [10] presented a data structure allowing an O(log n) time compatibility test and an O(n logn) time update, thus improving the algorithm's overall time complexity to O(n2 log n) without adversely a ecting space complexity. He does this by building a segment tree for each point in the set, where the endpoints of the \segments" are the polar angles between the given point and every other point  This paper bene ted from discussions with Franz Aurenhammer, Kurt Melhorn, Matt Dickerson, and Emo Welzl. y This study was supported in part by the funds of the National Science Foundation, DDM-9015851, and by a

Fulbright Foundation grant that helped support this author's sabbatical visit to the Freie Universitat Berlin and a visit to Graz, where much of this work took place.

1

in the set. Manacher and Zobrist [23] have since given an O(n2) expected time and O(n) space greedy triangulation algorithm that makes use of a probabilistic method for pretesting compatibility of new edges. Dickerson, Drysdale, McElfresh, and Welzl [7] showed how to improve on this \generate and test" paradigm by supplying an edge compatibility test that takes constant time for a test or an update and by showing how to generate all \plausible" greedy edges in expected O(n log n) time. Our result reduces the expected number of edges generated to O(n) and shows that their lengths can be bucket-sorted in O(n) expected time, creating an O(n) expected time algorithm. An alternate approach to \generate and test" is to generate only compatible edges. One way to do this was discovered independently by Goldman [11] and by Lingas [20]. The method uses the generalized or constrained Delaunay triangulation [3, 14, 27]. The constrained Delaunay triangulation is required to include a set of edges E. The rest of the edges in the triangulation have the property that the circumcircle of the vertices of any triangle contains no point visible from all three vertices. This alternate approach computes the constrained Delaunay triangulation of the points with the current set of GT edges as the set E. The next edge to be added to the GT can be found in linear time from the constrained Delaunay triangulation. The triangulation must then be updated to include the new edge in E, which takes O(n logn) time in the worst case. This gives an O(n2 logn) time and O(n) space algorithm, thus improving the space complexity of Gilbert's algorithm without a ecting the worst case time. Lingas [20] shows that his method runs in O(n log1:5 n) for points chosen uniformly from the unit square. Recently Levcopoulos and Lingas [17], and independently Wang [25], have shown how to do the update step in O(n) time, using a modi cation of the linear-time algorithm for computing the Voronoi diagram of a convex polygon [1], leading to an O(n2) time and O(n) space algorithm in the worst case. More recently Levcopoulos and Lingas give a modi cation of this algorithm that is expected to take O(n) time for points uniformly distributed in a square [18]. These methods are elegant, but are signi cantly more complicated to implement than our method and should be slower for practical-sized problems. They do have one de nite advantage over our method | they only require O(n) space in the worst case, whereas our approach could take O(n2 ) space (although O(n) space is expected with high probability).

The greedy triangulation and the minimum weight triangulation. One use of the greedy

triangulation is as an approximation to the minimum weight triangulation (MWT). A Minimum Weight Triangulation (MWT) of a point set in the plane is a triangulation that minimizes the total length of all edges. The MWT arises in numerical analysis [19, 21, 24]. In a method suggested by Yoeli [28] for numerical approximation of bivariate data, the MWT provides a good approximation of the sought-after function surface. Wang and Aggarwal use a minimum-weight triangulation in their algorithm to reconstruct surfaces from contours [26]. Though it has been shown how to compute the MWT in time O(n3 ) for the special case of n-vertex polygons [13], there are no known eciently computable algorithms for the MWT in the general case [24]. We therefore seek eciently computable approximations to the MWT. Although neither the GT nor the Delaunay triangulation (DT) yields the MWT [22, 21], the GT appears to be the better of the two at approximating it. In fact, for convex polygons the GT approximates the MWT to with a constant factor while the DT can be a factor of (n) larger [16]. For general point sets, the DT can be a factor of (n) larger than the MWT, but the best lower bound for the GT is (pn) [12, 15]. For points lying on a convex polygon or uniformly distributed points in a square, both the GT and the DT are expected to be within a constant factor of the MWT [18, 2]. Therefore a large amount of e ort has gone into nding ecient methods for computing the greedy triangulation.

2 The Greedy Triangulation Algorithm that We Improve Upon We assume throughout that the input consists of n points drawn independently from a uniform distribution over some xed convex shape C . For convenience we also assume that C has area 1, and we denote the perimeter of C by U. Some of the bounds that we derive depend on U, but we will regard U as constant. Dickerson, Drysdale, McElfresh, and Welzl [7] create fast greedy 2

triangulation algorithms for uniformly distributed points by using the generate and test approach, but reducing the number of pairs generated and the time for a test from previous algorithms. They de ne a plausible pair of points as follows. For two points p and q in the plane, and for a real number r > 0, let D(p; q; r) denote the closed disk of radius r centered at (p + q)=2. The line through p and q de nes two closed half-disks of D(p; q; r), denoted by D0 (p; q; r) and D00 (p; q; r). (It does not matter which half is D0 and D00.) Given a set S of n points in the plane, they call a pair fp; qg of points in S plausible p , if D0 (p; q; r1) \ S = ; or D00(p; q; r1) \ S = ;, with r1 = jp ? qj=2. They show that if = 1= 5, only plausible pairs can be in a greedy triangulation. They then show that for a set S of n points uniformly distributed over a convex shape C , the expected number of plausible pairs is O(n). They furthermore show in a precise way that every p plausible pair is expected to be \short" (at most O( logn=n) long) or has both points \close" p (within O( logn=n)) to the boundary of C . They de ne a candidate pair as a pair that is \short" enough or \close" enough to the boundary. They show that there are only O(n logn) candidate pairs, and that they are easy to generate by using xed-radius near neighbor search and by pairing up points close to the boundary of C . This leads to their rst algorithm. They rst generate O(n logn) candidate pairs which are almost certain to contain all greedy edges. They then reduce this set to O(n) plausible pairs by testing each candidate pair for plausibility in constant expected time per test. They sort these O(n) plausible pairs in O(n logn) time. Finally they insert them into a partial greedy triangulation in order of length, using an edge compatibility test that requires O(1) time for a test or a data structure update. This leads to an O(n log n) algorithm. (This version only nds the GT with very high probability, but they later modify it to guarantee that it always nds the greedy triangulation.) Our algorithm is a modi cation of this algorithm. There are two major di erences. First, instead of generating O(n log n) candidate pairs and then reducing them to O(n) plausible pairs, we only generate O(n) candidate pairs to start with, and guarantee that all plausible pairs are candidate pairs, so that the GT is a subset of these edges. The second di erence is the sorting. We show that we can sort these O(n) candidate pairs in linear time using a bucket sort. The uniform distribution of the points is enough to let us show that a bucket sort is expected to run in O(n) time. Given the set of candidate pairs in sorted order, we then use the edge compatibility test in [7] to nd the triangulation in O(n) expected time.

3 A Necessary Condition for an Edge to be in the Greedy Triangulation Our algorithm uses a de nition of plausibility based on shapes other than disks. It is based on the following lemma and corollary. First we need a de nition. p De nition 1 Let p; q be a pair of points in a set S. Consider the disc D of radius  = jp; qj=(2 5) centered at the midpoint of pq (cf. Figure 1). Let pu and pl be the upper and lower points of intersection between D and tangent lines from p, and de ne qu and ql similarly. Then we call the union of D, triangle ppupl , and triangle qquql the exclusion region for p and q. The segment pq divides the exclusion region into two half-regions. qu

pu

D p

q

pl

ql

Figure 1: Our Exclusion Region 3

Lemma 1 If each half-region of the exclusion region of two points p and q contains at least one point in S (other than p and q) then the edge pq cannot be in the GT of S .

This lemma is an extension of Lemma 3 in [7], where the exclusion region was only disk D. It is proved in a similar way, and the gure in the proof appeared originally in that paper. Theorem 3 in Levcopoulos and Lingas [18] is also similar. We de ne a plausible pair (or a plausible edge ) to be a pair where at least one of the halves of the exclusion region de ned in the lemma contains no points from S. For the proof of the lemma see the appendix. We do not believe that our bound is tight. The worst example that we have been able to nd isp a 'distorted' diamond with pq as its diameter, and opposite edges of the same length, namely p 8=17 jp; qj and 9=17 jp; qj. p There are two additional points just outside of the longer edges of the diamond, at distance 1=3 9=17 jp; qj from p and q respectively. This case approaches the p bound  = 2=17 jp; qj as closely as desired and thus disproves the conjecture of the Open Problem 3 in Dickerson, Drysdale, McElfresh, and Welzl [7]. From Lemma 1 we derive the following crucial corollary on which our algorithm is based.

Corollary 1 Given four pointsp p, q, a, and b with jp; aj; jp;bj  jp; qj=2 such that the angles apq and qpb are at most arctan(1= 5) (a bit more than 24 ) and pq intersects ab, then pq cannot be a GT edge. Proof. Consider points p, a, b, and q as described in the lemma. Let m be the midpoint of pq.

Consider a right triangle with pm as one leg and a segment cm of length  perpendicular to pm as the other leg. There are two such triangles, and a must be contained in one of them and b in the other. But these two triangles are subregions of the two halves of the exclusion region for pq described in De nition 1. Therefore by this lemma pq cannot be a greedy edge. This bound could be slightly improved because a slightly larger circular sector of radius jp; qj=2 can be t into the exclusion area.

4 Generating the Candidate Pairs In this section we show how to generate O(n) candidate pairs that include all plausible pairs in O(n) time. Here is an intuitive description of our algorithm: Grow two concentric circles C and D around p, D always double the size of C. If two points that have been passed by C are closer than 24 , the wedge between them is closed o . All points that are swept by D and that are not closed o are matched with p. Of course, regions where D moves out of C can also be closed o . Our decomposition into xed wedges is just an easy \bucketing" way to implement this, very much like in the linear-time solution of the MAX-GAP problem.

4.1 Description of the Approach

The points are treated one by one as follows. Consider a xed point p. We divide the plane into s wedges of size = 2=s centered at p. For our algorithm, s = 30 and is 12. Conceptually we sweep through each wedge W, moving a growing circular arc centered at p across W and examining points as we nd them. As we sweep W we will keep track of the closest point w to p, the leftmost point l found so far, and the rightmost point r found so far. We sweep each wedge until we are sure that we need not search further to nd plausible pairs containing p. All points found in this process are paired with p and added to the set of candidate pairs to be sorted and tested for compatibility in the greedy algorithm. The usual way that we know that we have swept far enough depends on the nearest neighbors of p in the two adjoining wedges. We call the wedge lying left (counterclockwise) from W wedge Wl and the one lying right Wr . We call the nearest neighbors to p in these wedges wl and wr respectively. The angles qpwl and qpwr are never more than 24 for any q 2 W. We therefore need not consider points q 2 W such that jp; qj  2 max(jp; wlj; jp; wrj). By Corollary 1 such edges are not possible greedy edges. 4

However, if one of the adjacent wedges is empty (which is likely if p lies near the boundary of C ), then our wedge W cannot be bounded in this way. Always sweeping such a wedge to the border of C would be too expensive, so we must nd an alternate way to bound W in this case. This is where we use the leftmost and rightmost points. If l is the leftmost point found so far in W and we have swept far enough to ensure that l is indeed the leftmost point in all of W, we can use l in place of wl in the above formula. (In fact, even if wl exists we use l instead of wl if it is closer to p.) A similar situation holds on the right side. We summarize the above conceptual sketch of the algorithm. 1. For each wedge W, nd the point w closest to p. 2. For each wedge W, repeat the following steps. Let Wl and Wr be the adjacent wedges of W. Denote by wl and wr the closest points to p in these wedges. Set the thresholds tl := jp; wl j and tr := jp; wr j; (If any of wl and wr does not exist, set the corresponding quantity to 1.) Start sweeping W, i.e., visit the points q in order of increasing distance v = jp; qj: while v  2 max(tl ; tr ) and S(W; v) does not yet cover W \ C do Let q be the next point swept. Generate the pair p; q as a possible edge. If this point is the rst point swept, set l := q and r := q; Otherwise, if q is to the left of l, set l := q; Otherwise, if q is to the right of r, set r := q; If the circular arc with radius v centered at p, between the left edge of W and the ray pl, lies outside C , set tl := min(tl ; jp; lj); If the circular arc with radius v centered at p, between the ray pr and the right edge of W lies outside C , set tr := min(tr ; jp; rj);

end while

4.2 Implementation Details

Our implementation will rst cover C by a grid of squares with side 1=pn and will bucket the ppoints into these squares. On the average there will be one point per square, and there are n+O(U n) = O(n) squares. For each point p we search out from p in each wedge W, examining points in overlapping squares until we nd the nearest point w (or run out of possible squares). We can then continue searching in each wedge until we are beyond the distance at which further points in the wedge can possibly pair with p to form a greedy edge. Practically, the approach of looking at wedges one at a time would cause squares near p to be re-examined lots of times. (But not more than s times.) Instead one should begin spiraling out from p, putting points into whichever wedges they belong. More speci cally,pwe start with the square containing p, continue with all squares intersecting a circle of radius 1= n around p, then all squares intersecting a circle of radius 2=pn that have not been examined, and so on. As wedges are closed o one should skip squares lying only within those wedges and look only into wedges that are still active. We quit when all wedges are closed o . We show in section 5.5 that we can a ord to look at all points in a square even if only a part of the square intersects some active wedge. So what the algorithm really does is as follows. Departing from the description in section 4.1, we don't vary v continuously, stopping at every distance where some event occurs, but vary it in xed steps, and even that only approximately. For i = 0; 1; 2; : : :, we go around the point p following a circle of radius i=pn. Every square that intersect this circle and an active wedge is handled completely, in the sense that we go through all its points in an arbitrary order, pair them with p, and update w, l, and r for their respective wedges, as appropriate. (Of course, a square that has been considered in the previous round need not be considered again.) Only after processing all these squares and points for round i we update the thresholds tl and tr for every wedge which is still active and decide if any of them can be closed. This is the case when either v := i=pn > 2 max(tl ; tr ) or the wedge is exhausted. We can thus avoid such troubles as sorting the points in a square according to their distance from p, which we would have to do if we followed the sketched algorithm of section 4.1 literally. 5

This approach allows us to generate O(n) candidate pairs which include all plausible pairs in time O(n). The proof will be given in section 5. In the analysis we will rst assume that the algorithm proceeds as originally described above in section 4.1, and we will later account for the \error" that we make in being too liberal in the selection of squares and points that we examine. The above description in section 4.1 assumes that the algorithm knows the shape C from which the points are drawn. If C is not given we rst compute the convex hull of the points using one of the algorithms that perform this task in O(n) expected time for uniformly distributed points [24]. We compute the area of this hull, scale the data so that the area becomes 1, and then use the hull instead of C . The analysis is of course unchanged. The only place where C enters the algorithm is when testing if a wedge is exhausted, and whether the current leftmost or rightmost point is the true leftmost or rightmost point of the whole wedge. p The rst test is very easy to carry out. For example, as we go around the circle of radius i= n in round i, we may build a list of squares to be visited in round i + 1. In this list we skip all squares that do not intersect an active wedge or that lie completely outside C . Every square which should appear in this list is adjacent to at least one other square on the list or to a square which is visited in round i, and thus this list can easily be built. With this list, a wedge is automatically and implicitly \closed o " as soon as all its squares that lie inside C have been visited. For the second test we have to decide whether the angular region (sub-wedge) between, say, the ray pl and the left edge of W, may possibly contain any further points. As we walk around the circle of radius v and build up the list of squares for the next round, we can easily determine if the relevant angular region is closed o in this round, or whether any further squares will intersect this angular region in the next round. In the latter case we cannot be sure that l is the leftmost point. In the rst case, we know that we have looked at all points that may possible have been further to the left than l. That is, we either have found a new point l or we have established that the old previous point l was indeed the leftmost point in its wedge. In a preprocessing step, after initially computing the convex hull, we can determine for each square whether it intersects the boundary at all, and if so, we can nd the intersection points of the hull boundary with the boundary of the square. There can be only a constant number (at most 8, theoretically) of such intersection points. Then we can determine which of the four adjacent squares intersect C or lie completely outside C . With this information it is straightforward to carry out all the above operations.

4.3 Possible Improvements

The remaining part of this section discusses some possibilities to speed up the practical implementation. It can be skipped without a ecting the remainder of the paper. Dickerson et al. [7] use a plausibility test that runs in linear expected time to reduce the number of pairs that are sorted and tested for inclusion into the triangulation. It is based on bucketing. Our algorithm need not use such a plausibility test because it generates only a linear number of candidate pairs. However, the constants for space (and probably time) can be improved by pretesting the candidate pairs for plausibility. One could use the method described in [7] to test for plausibility, but an alternate method is available. A simple way to test a pair (p; q) for implausibility when it is rst found in wedge W is to look at the near neighbors and leftmost and rightmost points in the wedges that overlap the exclusion region for pq. Overlapping wedges consist of the wedge W and its two adjacent wedges. If one of these points lies in one half of the exclusion region and another lies in the other half, then pq is not plausible. It is possible that an implausible pair is not rejected by this test, because the two points that prove the implausibility of pair (p; q) are not necessarily the closest or the leftmost or the rightmost points in their respective wedges. However, this test is fast and easy and should work often enough to make it worthwhile. The test of [7] is probably too expensive, in view of the fact that the remaining steps which an edge undergoes once it is generated are very simple and fast. We nd each pair of points twice, once from each endpoint. Thus we can search only half (say the upper half) of the wedges, plus two additional boundary wedges that are only searched out until the rst point is found (to be used for bounding their neighbors). Then each pair would be found only when searching from the lower of the two points. Alternatively, we generate all pairs and eliminate those pairs which are generated only once. A radix sort based on the indices of the 6

endpoints can accomplish this in linear time, or it can be done while sorting the generated edges by length. This involves more work but it reduces the number of edges for the rest of the algorithm.

5 Analysis of the Run Time The sweep of the wedge W under consideration is stopped by the minimum of the two thresholds tl = min(jwl ; pj; jl; pj) and tr = min(jwr ; pj; jr; pj). They come, respectively, from the closest point wl in Wl and the closest point wr in Wr . Instead of thinking in terms of the wedge W being bounded, we will consider the wedges Wl and Wr doing the bounding. The wedge Wl contributes \half" of the bound for W and \half" of the bound for its left neighbor. We can thus construct the area around p to be searched by taking the union of 2s circular sectors. We de ne S(W; v) as the circular sector which is the intersection of wedge W with a disk of radius v centered at the apex of W. For the wedge Wl , we construct S(W; 2tl ) and a similar sector S((Wl )l ; v) for the left neighbor of Wl . The union of these 2s sectors will be the area around p that needs to be considered, and its area will be less than the total area of all sectors. We will show that the expected area of such a sector is O(1=n), implying that the area that needs to be searched for a given point p before all wedges are closed o by points in adjacent wedges is O(1=n). A constant number of points is thus examined for each p and the overall work is linear. We analyze how the wedge Wl in uences W via the threshold tl = min(jwl ; pj; jl; pj), the situation for Wr being symmetric. The analysis is divided into two cases, corresponding roughly to the cases when tl = jwl ; pj and when tl = jl; pj. Formally, the two cases of our analysis are distinguished as follows. Let b be the distance from p to the closest point of the boundary of C inside Wl .  Case M. b  tl : The arc sweeping Wl does not intersect the boundary of C before the distance tl = min(jwl ; pj; jl; pj) is reached.  Case B. b < tl : The arc sweeping Wl intersects the boundary of C before the distance tl is reached. We rst analyze case M, which is typical when the point p lies in the middle of C . In this case, the sweep of the wedge W under consideration is usually stopped by wl and wr , not by l or by r. Case M is the predominant case for most wedges, and there we can give a fairly good estimate on the area of the wedge. We then consider case B, which brings in the e ect of the boundary of C . At rst glance the boundary seems to only make things better, because we can stop searching in a wedge once we cross the boundary. However, it can also make searches longer: if the wedge Wl is cut o and contains no points, the adjacent wedge W (which can be quite large and therefore contain a large number of points) will not be bounded by any point in the empty wedge. The approach of keeping track of the leftmost and rightmost point in each wedge provides an alternate bound in this case. We apply rather crude estimations, and we can show that the area is still O(1=n).

5.1 Case M: Area Bounds Based on Adjacent Wedges

As mentioned above, the bound that will usually allow us to stop searching in the wedge W is the one that says we need look no farther than 2 max(jp; wlj; jp; wrj). In this section we analyze the expected number of points that we will have to consider in searching a wedge W assuming that the boundary of C does not interfere. Thus our problem is reduced to nding the expected area of S(W; 2jp; wl j), which is four times the area of S(Wl ; jp; wj). Formally, we de ne a random variable A1 which is equal to this area (4 t2l ) if the arc with radius tl does not intersect the boundary of C inside Wl (case M). The radius V1 = 2tl is an upper bound on the distance v at which the sweep of W stops. If case M does not hold we de ne A1 and V1 to be 0. Clearly, if V1 = 2tl is to be bigger than some threshold v, the sector S(Wl ; v=2) of half the radius must be empty, because otherwise the point wl would be in this sector and tl would be at most v. Therefore we have p Pr[A1  u] = Pr[ the sector S(Wl ; u=(4 )) of area u=4 is empty ] = (1 ? u=4)n?1: p This equation holds when the sector S(Wl ; u=(4 )) is contained in C ; otherwise we have Pr[A1  u] = 0. In any case the right side is an upper bound for Pr[A1  u]. Thus we get the following bounds for the expected values of A1 and V1 . 7

Lemma 2 The expected value of the area A of the part of the wedge W which is swept in case M p is at most 4=n. The expected radius V of this sector is at most s=(n ? 1). 1

1

Proof.

E(A1 ) =

Z

1

u=0

Pr[A1  u] du 

Z

1

u=0

(1 ? u=4)n?1du = 4=n

For the radius V1, which is related to the area by the formula A1 = V12  2=s, we have Z

1

1

Z

Z

1

Pr[A1  v2  2=s] dv  (1 ? v2  =(2s))n?1 dv v=0 v=0 r v=0 Z 1 s ? 2 (n?1)=(2s)v 2  e dv = n ? 1 : v=0

E(V1 ) =

Pr[V1  v] dv =

5.2 Case B: Area Bounds Based on Leftmost and Rightmost Points

Now we consider the case where the arc sweeping a wedge Wl reaches the boundary before distance tl . This includes the case where the sweep of Wl still nds a point wl at a later time, and the distance of that point is used as tl to bound the sweep of W. Typically, however, the sweep of W is stopped by the leftmost point l in W, i. e., tl = jp; lj. Intuitively, we rotate a ray around p, starting from the left edge of Wl , rotating clockwise until we hit l. The distance jp; lj determines the radius of the sector S(W; 2jp; lj) in W which we have to sweep. As in the previous section, we would like to relate its area to the area over which the ray has swept before hitting l, which must necessarily be empty. Now, if p is close to the boundary of C , the sector S(W; 2jp; lj) may be very large although W contains very little of C. Our bound on the expected number of generated points will therefore involve the distance = (p) of p from the boundary of C . We will then average of the possible values of to determine expected area of the sector for a random point p. Let us bound the expected area of the sector S(W; 2tl ) in case B. Similarly as before, let us denote by V2 the random variable whose value is 2tl , the radius of the sector, and by A2 = V22  2=s its area. If case B does not hold we de ne A2 and V2 to be 0. To estimate the probability that V2  v for some threshold v, let f be the leftmost point of C \ W that lies at distance v from p (see Figure 2). Denote by f 0 the midpoint between p and f, and let g be the point on the left edge of Wl whose distance from p is equal to the distance from p to the boundary of C . Since we assume that case B holds for the wedge W, we can have V2  v only if v=2  .

Wl β

p

g v/2

f

f’

W

v

C

Figure 2: Bounding W Now, the sweep of W can reach distance v only if the shaded sector of radius v=2 between f 0 and the left edge of Wl contains no points of S. The triangle pgf 0 , whose area is denoted by L, is contained both in this sector, since jp; gj  v=2, and in C , by convexity. Therefore, the probability Pr[V2  v] is at most (1 ? L)n?1. This triangle has a base pf 0 of length v=2. Its height is at least sin , and so we can bound L as follows. L  12  v=2  sin = cv 8

with the constant c = (sin )=4  0:05. So we get Pr[V2  v]  (1 ? L)n?1  e?L(n?1)  e?cv (n?1):

Lemma 3 For a point p with distance from the boundary of C, the expected value of the threshold distance V = 2tl in case B is at most 1=(c (n ? 1)). The expected value of the area A of the 2

2

corresponding part of the wedge W which is swept is at most O(1=( n)2 ).

Proof.

E(V2 ) =

Z

1

v=0

Pr[V2  v] dv 

1

Z

v=0

e?cv (n?1) dv = c (n1? 1) :

Let us now bound the expected area A2 = V  2=s of the sector S(W; V2 ). Z

1

Pr[A2  a] da =

Z

1

2 2

Pr[V  2=s  a] da =

Z

1

Pr[V22  2=s  x2 ]  2x dx 4 = c2 s 2 (n ? 1)2 The above expression still depends on the distance = (p) from the boundary. So we integrate over all possible values of , using an upper bound of U on the density function of for a random point p. (In other words, the \probability" that a point is at distance from the boundary of C is at most U d .) Thus we get the following bound on the total number of point pairs that are generated for a random point p. E(A2 ) =

Za=0

a=0

2 2

x=0 Z 1 1 p p ? cx (n?1) s=(2 ) dx = 2x e Pr[V2  x s=(2)]  2x dx  x=0 x=0

Lemma 4 For a random point p, the expected value of the threshold distance V = 2tl in case B is 2

at most O((log n)=n). The expected value of the area A2 of the corresponding part of the wedge W is at most O(1=n).

Proof. The distance is bounded by U=(2), and V can be at most U=2. Thus, the previous 2

lemma gives





Z U=(2) 2 U U U 2 d E(V2 )  min c(n ? 1) ; 2 U d = cU(n ? 1)  2 + c(n ? 1)  =2=(cU (n?1)) =0   2 ? 1) = O log n = c(n 1? 1) + c(nU? 1)  ln cU (n 4 n From the bound on V2 we conclude that the area is bounded from above by (U=2)2 = U 2=(2s). Thus, the result of the previous lemma gives   Z 1 U 2 U d E(A2 )  min c2s 2 4 ; (n ? 1)2 2s =0 p Z 1 3 8 U  4U d = cU(n ? 1)  2s + c2 s(n ? 1)2  p = 8=(cU (n?1)) 2 p p 2 p 4U  cU(np ? 1) = 2U 2 + 2U 2 = O(1=n): = cs(n2U + ? 1) c2 s(n ? 1)2 cs(n ? 1) cs(n ? 1) 8 Z

U=(2)

1

5.3 The Total Number of Pairs Generated

The area of a sector S(W; tl ) can simply be written as A1 + A2 , to account for the two cases. We have therefore established above that, for a wedge W emanating from a random point p, the expected area of S(W; tl ) is O(1=n). We have to multiply this area by 2s to account for every wedge W and its two adjacent wedges Wl and Wr , and by n ? 1 to get an upper bound on the expected number of new points. The resulting expression must be multiplied by n to get the expected overall sum over all points p. Thus we have the following theorem. Theorem 1 The expected number of candidate pairs that the algorithm generates is O(n). 9

Based on some considerations which are partially heuristic, we shall now derive a more accurate estimate of the number of candidate pairs. For points p in the middle, case B should be very unlikely; but even if the point p lies at the boundary of C , the analysis of Lemma 3, and hence of Lemma 4, overestimates the area in which points for candidate pairs are found by some factor of the order s: Among the s wedges surrounding p only the two wedges which contain a large part of the boundary of C are cases where the area bound used in the proof of Lemma 3 is tight (see Figure 2). Therefore, by looking at the constants in the lemmas one can see that the contribution of case B to the number of generated pairs should be rather small in comparison to case M. Concentrating thus on Lemma 2, we know that the expected number of points in a sector is bounded by (n ? 1)  E(A1 )  4. This is a very precise estimate, because the only error that we commit is that A1 is the area of the whole sector, even if part of it lies outside C . In case M this should be negligible. Since we create 2s bounding sectors, the expected number of points in their union is 8s. Actually, each sector gets covered up to two times in this analysis, when once is enough. Therefore a more accurate estimate of 6s can be shown: We have to consider the maximum of two areas which are distributed like A1 instead of their sum. The overall number of pairs generated can therefore be estimated as 6sn. For our choice of s = 30 this is 180n, a factor of 60 times the number of edges actually in the triangulation. Because many edges are generated twice (once from each endpoint), this gure over-estimates of the number of generated pairs by a factor at most 2. All these considerations hold for the algorithm as it is described in section 4.1. With the bucketing technique, we generate more pairs, but it is dicult to estimate the precise e ect of this.

5.4 Area Bound for Searching the Closest Point

Before searching each wedge up to its threshold in order to nd candidate pairs, we must search every wedge to nd its closest point w (step 1 of the algorithm). In practice these two searches are not carried out separately, but we have to account for the fact that we always have to search out to the rst point w in W, even if the bounds from the adjacent regions would tell us to stop before we found w, and wp will not be generated as a candidate edge. The analysis is similar to case M, except that we now use the points in W itself to bound the search in W, not one of the adjacent wedges. Thus, let A3 be the area of S(W; jp; wj) \ C which is searched until w is found. In contrast to the previous analyses, we do not take the full sector but only the part which belongs to C . If W is empty we take the whole area of W \ C . Similarly as in section 5.1, we have p

Pr[A3  u] = Pr[ the region S(W; u= ) \ C of area u is empty ] = (1 ? u)n?1; when u is less than the maximum area of W \ C , and Pr[A3  u] = 0 otherwise.

Lemma 5 The expected value of the area A of the part of the wedge W which is searched until the closest p point w is found is at most 1=n. The expected value of the corresponding radius V is O(1= n). 3

3

Proof. The area bound follows from the analogous calculation as in the proof of Lemma 2. For the radius, we make a similar case distinction as above. In the case when w is found before the sweeping arc reaches the boundary of C , V3 is equal to V1=2 from Lemma 2, and therefore its expected value is O(1=pn). Otherwise, we use a similar argument as in case B to prove a statement analogous to Lemma 3. Assume that V3  v, where v  . Let f any point of C \ W that lies at distance v from p (see Figure 3). Let g and g0 be the two points at distance on the edges of W. Then the quadrilateral pgfg0 must be empty. Its area is L0 = 1=2  v  (sin \gpf + sin \g0 pf)  v=2  sin ; which is twice the empty area L which was used to bound V2 in Lemma 3. Thus we can conclude as in Lemmas 3 and 4 that E(V3 ) = O((log n)=n)

5.5 The Number of Buckets Searched

In the above analyses, we have shown how to restrict each wedge W to a subset W 0 that must be examined in order to nd a superset of all plausible pairs. 10

C β

g p

f

v

W

g’

Figure 3: Bounding the area that is examined in searching for w We have shown that the total area of all the W 0 regions is O(1) and that the number of points found is therefore O(n), if we follow the original approach of section 4.1. In addition, the total area searched in order to nd the closest points w in every wedge is also O(1) (Lemma 5). However, this does not immediately imply that the work done is O(n), because we are using bucketing to nd the points. Since a square may overlap W 0 only partially, the number of squares examined in searching all of the W 0 regions is not necessarily proportional to the total area. In addition, we are somewhat sloppy in closing o wedges, delaying the decision whether to close a wedge until a whole round of squares is completed. We treat both problems by enlarging every sector S = S(W; v) to its outer pparallel body S" that includes all points which are withing a distance " of S. If we choose " = (3 + 5)=(2pn)  3=pn, we are sure that every square that the algorithm looks at is contained in S" . Thisp gure comes about as follows. When we process a square that intersects the circle C of radius i= n around p, we are only sure thatpthe wedge should have remained active after the previous round, i. e., for distance v = (i ? 1)= n. This delay contributes 1=pn to ". In addition, we know only that the square intersects both the circle C and the wedge W. A point in the square can have distance up p to (1=2 + 5=4)=pn from C \ W. This is the second contribution to ". The area of S" can be written as p area(S" ) = area(S) + "  perimeter(S) + "2   A + 3=n  V  (2 + ) + 9=n; denoting by A the area of the sector S and by V its radius. The expected area A = A1 +A2 = O(1=n) has already been considered in the previous section, and the sum of all areas has been shown to be O(1). Thus the expected number of intersected squares (of area 1=n) to which this term contributes is O(n), the same as the expected number of points covered. p The second term, the expected radius V = V1 + V2p, was also analyzed to be O( 1=n) + p O((logn)=n) = O( 1=n), and since this is multiplied by 3=n, this does not exceed the bound of O(1=n) for the area of S" . The third term is also O(1=n). Thus we have shown that we may include all points in the enlarged wedges S" without destroying the validity of Theorem 1.

6 The Sorting Algorithm We now must sort the O(n) point pairs by their distances in linear time. We do this using bucket sort. If we apply the function g(x) = x2 to the distance jp; qj of a random point q from a given point p, the resulting random variable has probability density at most one. In fact, the density equals one as long as the circle ?  with radius x around p is contained in C , and it falls o for larger x. Thus, ?  even if we take all n2 pairwise distances, square them and put them into buckets of size 1=( n2 ), the average number of elements per bucket is less than one. Since the maximum possible distance is U=2, the number of buckets is at most dU 2 n2=8e. So we can rst sort the O(n) edge lengths into buckets using a two-stage radix sort on bucket indices, using 2  O(n + Un) = O(n) time and O(Un) space. After that, we can apply any simple 11

quadratic sorting method to sort the elements in each bucket, and maintain the O(n) expected time bound.

7 Summary and Open Problems We have shown how to modify Dickerson, Drysdale, McElfresh, and Welzl's algorithm [7] to generate a greedy triangulation of uniformly distributed points in expected linear time and space. Our improvements were to generate the plausible edges in linear time and to show that the edge lengths could be sorted in expected linear time. In the process we proved a necessary condition involving wedges that is an extension of earlier lemmas. This approach also seems promising for non-uniform distributions. The correctness of the basic idea of searching out from a given point using wedges does not depend on the distribution. The bucketing schemes and time bounds do. If the distribution is known, the bucketing could take advantage of the known distribution. If not, then perhaps some sort of sampling or bucketing via quad trees or k-d trees would allow the points in the wedges to be found quickly on the average. It is also possible that some variation of searching on the Delaunay triangulation, as is done in papers by Dickerson, Drysdale, and Sack [6, 8], could prove useful. It seems likely that this sort of algorithm could work quite well for relatively smooth distributions. Some obvious questions arise from this work. Problem 1. What are reasonable ways to adapt this algorithm to other distributions? Ideally the algorithm would adapt to any distribution and run in O(n logk n) time for some small k as long as the distribution had some nice properties. One possible property is that the probability density is a quasi-concave function, i. e., along any segment it is minimized at an endpoint. The symmetric two-dimensional normal distribution is a good candidate. The algorithm at least can be applied almost without change; only the sorting step may have to be adapted. The analysis will be di erent, since there is no clear distinction between the cases M and B. Problem 2. It would be more elegant and probably faster to use a single-stage bucket sort. We would need to know some approximation of the cumulative distribution function of the edge lengths of the generated edges. We were able to compute this for the edges generated in case M, whereas for the points close to the boundary this seems very dicult to do. We would need some estimations which would show that the in uence of the \boundary edges", which tend to be longer than the other edges, is limited. Forpexample, if we could show that the number of edges generated under case B were bounded by O( n), they could not foul up our analysis even if they fell all in the same bucket. Problem p is the true worst-case ratio for  in Lemma 1? We have bounded it between p 3. What jp; qj=(2 5) and 2=17 jp; qj. Note that in this paper we only use a circular sector with radius jp; qj=2 centered at p as an exclusion region. Therefore we can't apply the example for the upper bound mentioned after Lemma 1 for our exclusion region. But a very similar example gives approximately 43:87 for the angle apq of the circular sector (cf. Corollary 1) showing that we need at least 17 wedges. A more accurate computation for Corollary 1 gives approximately 25:84 for the angle apq, thus 28 wedges are enough (rather than 30). What is the true worst case for the angle of the circular sector, i.e., the lowest number of wedges?

References [1] A. Aggarwal and L. J. Guibas and J. Saxe and P. Shor, \A linear time algorithm for computing the Voronoi diagram of a convex polygon ." Discrete Comput. Geom. 4 (1989) 591{604. [2] R. C. Chang and R. C. T. Lee, \On the average length of Delaunay triangulations." BIT 24 (1984) 269{213. [3] P. L. Chew, \Constrained Delaunay triangulations." Proceedings of the Third Annual Symposium on Computational Geometry (1987) 215{222. [4] G. Das and D. Joseph, \Which Triangulations Approximate the Complete Graph?", Optimal Algorithms, International Symposium Proceedings, Lecture Notes in Computer Science 401, Springer-Verlag, Berlin 1989, pp. 168{192. 12

[5] F. Dehne, B. Flach, J.-R. Sack, and N. Valiveti, \Analog Parallel Computational Geometry." Proceedings of the 4th Canadian Conference on Computational Geometry (1992) 143{153. [6] M. Dickerson and R. S. Drysdale, \Fixed-radius near neighbors search algorithms for points and segments." Information Processing Letters 35 (1990) 269{273. [7] M. Dickerson, R. L. Drysdale, S. McElfresh, and E. Welzl, \Fast greedy triangulation algorithms." Proc. 10th Annual Symposium on Computational Geometry (1994) 211-220. [8] M. Dickerson, R. L. Drysdale, and J.-R. Sack, \Simple Algorithms for enumerating interpoint distances and nding k nearest neighbors." International Journal of Computational Geometry and Applications 3 (1992) 221{239. [9] R. D. Duppe and H. J. Gottschalk, \Automatische Interpolation von Isolinien bei willkurlich verteilten Stutzpunkten." Allgemeine Vermessungsnachrichten 77 (1970) 423{426. [10] P. Gilbert, \New results in planar triangulations." MS Thesis, University of Illinois, Urbana, IL, 1979. [11] S. Goldman, \A Space Ecient Greedy Triangulation Algorithm." Information Processing Letters 31 (1989) 191{196. [12] D. Kirkpatrick, \A note on Delaunay and optimal triangulations." Information Processing Letters 10 (1980) 127{128. [13] G. Klincsek, \Minimal triangulations of polygonal domains." Ann. Discrete Math. 9 121{123. [14] D. T. Lee and A. K. Lin, \Generalized Delaunay triangulations for planar graphs." Discrete Comput. Geom. 1 (1986) 201{217. [15] C. Levcopoulos, \An (pn) Lower Bound for the Nonoptimality of the Greedy Triangulation." Information Processing Letters 25 (1987) 247{251. [16] C. Levcopoulos and A. Lingas, \On Approximating Behavior of the Greedy Triangulation for Convex Polygons." Algorithmica 2 (1987) 175{193. [17] C. Levcopoulos and A. Lingas, \Fast Algorithms for Greedy Triangulation." BIT 32 (1992) 280{296. [18] C. Levcopoulos and A. Lingas, \Greedy Triangulation Approximates the Minimum Weight Triangulation and Can be Computed in Linear Time in the Average Case." Tech. Report LUCS-TR:92-105, Dept. of Computer Science, Lund University, 1992. A preliminary version of this report appeared in Advances in Computing and Information Proceedings of the 3rd International Conference on Computing and Information, (ICCI'91), Ottawa, May 1991, ed. F. Dehne, F. Fiala, W. W. Koczkodaj, Lecture Notes in Computer Science 497, Springer-Verlag (1991) 139-148. [19] A. Lingas, \On Approximating Behavior and Implementation of the Greedy Triangulation for Convex Planar Point Sets." Proceedings of the Second Annual Symposium on Computational Geometry (1986) 72{79. [20] A. Lingas, \Greedy triangulation can be eciently implemented in the average case." Proceedings of the International Workshop on Graph-Theoretic Concepts in Computer Science (WG'88), Amsterdam, June 1988, ed. J. van Leeuwen. Lecture Notes in Computer Science 344, Springer-Verlag (1989) 253{261. [21] E. L. Lloyd, \On triangulations of a set of points in the plane." Proceedings of the 18th IEEE Symp. Foundations of Computer Science (1977) 228{240. [22] G. Manacher and A. Zobrist, \Neither the greedy nor the Delaunay triangulation of the planar set approximates the optimal triangulation." Information Processing Letters 9 (1979) 31{34. [23] G. Manacher and A. Zobrist, \Probabilistic methods with heaps for fast-average-case greedy algorithms." Advances in Computing Research vol. 1 (1983) 261{278. 13

[24] F. Preparata and M. Shamos, \Computational Geometry: an Introduction." Springer-Verlag, 1985. [25] C. A. Wang, \Eciently updating the constrained Delaunay triangulations." BIT 33 (1993) 238{252. [26] Y. F. Wang and J. K. Aggarwal, \Surface reconstruction and representation of 3-D scenes." Pattern Recognition 19 (1986) 197{207. [27] C. A. Wang and L. Schubert, \An optimal algorithm for constructing the Delaunay triangulation of a set of line segment." Proceedings of the Third Annual Symposium on Computational Geometry (1987) 223{232. [28] P. Yoeli, \Compilation of data for computer-assisted relief cartography." In Display and Analysis of Spatial Data , J. C. Davis and M. J. McCullagh, editors, John Wiley & Sons, NY (1975).

14

Appendix: Proof of Lemma 1 For notational convenience, rotate the plane so that segment pq is horizontal, with p on the left side. (For the remainder of the proof, refer to Figure 4.) Let a be the point in S closest to pq in the upper exclusion region and let b be the point in S closest to pq in the lower exclusion region. Let C be the circle with pq as a diameter, Cp bepthe circle of radius jp; qj centered at p, and Cq be the circle of radius jp; qj centered at q. Let = jp; qj2 ? 4 2 . The quantity was chosen to make the following true:

Observation 1 Any segment that intersects ab, does not intersect the interior of pq, and has both endpoints on or outside of C is at least long.

as

x

( (

p

s

( ( ((

( (( (

((

( (( ( ( (    

 

( (( (  

( (   (( (   (( (  (  (  ((  ( (  (  ( ((  ((  (  (

s

( (

 

( 

(( (

((  

( (

@ @ @  @   @

   

s

z1

 

 

 

   

wk?1

( (( (

s

w1

( ((     

s

@ @

s

( (  (( (  (  (   

 

 

 

 

q

s

b

Figure 4: Edges intersecting ab We will assume that pq is a GT edge and show that this leads to a contradiction. We will use the following observation.

Observation 2 Let p and p be any pair of points that are not connected by an edge in the GT. Then some GT edge intersecting segment p p must have length  jp ; p j. 1

2

1 2

1

2

If pq is a GT edge, then ab cannot be a GT edge because they would intersect. Therefore, by Observation 2 there must be some GT edge of length no longer than ja; bj \cutting o " ab. We will show that that no such edge exists either above or below pq. Since there are points on both sides of edge pq, it is not a CH edge, and therefore it must be an edge in two triangles { an upper and a lower. Let pw1q be the upper triangle and let pz1 q be the lower triangle. For notational convenience, we label all the GT edges intersecting segment ab. The GT edges above pq that intersect ab we label e1 ; : : : ; em , with the edge whose intersection with ab lies nearest to pq labeled e1 , the next nearest labeled e2 , etc. The edges below pq that intersect ab we similarly label f1 ; : : : ; fn. Our proof will be a case analysis on the edges e1 ; : : : ; em and f1 ; : : : ; fn. Since the GT is a triangulation, e1 shares an endpoint with pq, each successive pair ei ei+1 shares a common endpoint, the non-shared endpoints are connected by an edge, and a is connected to both endpoints of em . We label the new endpoint introduced by edge ei as wi . We similarly label the new endpoint introduced by fi as zi . We rst make a series of observations about the ways that these edges can be arranged. These observations will be stated in terms of the ei and will assume without loss of generality that pw1 (instead of qw1) intersects ab. However, these observations are also true when e is replaced by f and a is replaced by b. They also remain true when p and q are interchanged. 15

Observation 3 If all of the ei have both endpoints on or outside of C, then each ei is of the form pwi and ja; qj  . To see this, we rst note that the segment aq intersects precisely these ei . Each edge is at least long, by Observation 1. To prevent aq from being an edge that cuts these edges o , ja; qj  by Observation 2. If some ei has a left endpoint di erent than p, then by similar reasoning ja; pj  . But a cannot simultaneously lie at least away from both p and q and remain in C. Observation 4 If w is on or outside of C and ek is the lowest-numbered ei with an endpoint x inside of C, then jx; qj  . All of the ei with 1  i  k ? 1 must have both endpoints on or outside of C, so must be at least 1

long by Observation 1. But these are precisely the GT edges intersecting xq (each completely crosses C). Therefore by Observation 2 one of them must be no longer than xq, implying that jx; qj  .

Observation 5 jp; w j < jp; qj. Assume that jp; w j  jp; qj. Then w lies on or outside of Cp , and therefore outside of C. 1

1

1

Assume that there exists an ei with either a left endpoint di erent from p or a right endpoint inside of Cp. Call the lowest numbered such edge ek and let that endpoint be x. Note that this new point will connect to p and wk?1 to form a new triangle. All edges ei with 1  i  k ? 1 must be at least jp; qj long, so jx; qj  jp; qj to prevent xq from cutting them all o . This is not possible if ek is of the form px, so ek must be of the form xwk?1 and x must lie outside of C to the left. This edge has both endpoints outside of C and has neither p nor q as one of its endpoints. But then no ei can ever have an endpoint wi in C. Otherwise the lowest-numbered such wj would have to lie at least away from both p and q to avoid cutting o edges ei with k  i  j ? 1. No point in C is distance at least away from both p and q. But if no such ek exists, all edges ei have left endpoint p and right endpoint outside of Cp , so are at least jp; qj long. But that is impossible, because ja; qj < jp; qj, so aq would cut them all o .

The Contradiction This structure is very constraining. If w1 and z1 are both in C, then jw1; z1j < jp; qj and the GT has chosen the longer diagonal from a convex quadrilateral. This is

impossible, so one of the points must lie on or outside of C. Without loss of generality we assume that w1 is on or outside of C. It must lie on or below the upper tangent ray pp~ u . In addition, it must lie within Cp by Observation 5. This leaves two cases to consider. (See Figure 4 again.) We rst consider the case where none of the ei has an endpoint within C. Then every ei is at least long by Observation 1. By Observation 3 a must lie at least away from q. In the second case some ei has an point x inside of C. By Observation 4 it must lie at distance at least from q. This point x must also lie below the upper tangent ray qq~ u. Note that the region consisting of possible locations for x contains the region consisting of possible locations for a in the previous case. We now ask where z1 can go. It must lie strictly inside the lune formed by the intersection of Cp and Cq by Observation 5. This also implies that segments z1 w1 , z1 x, and z1 a must all intersect pq. It must lie above at least one of the rays pp~ l and qq~ l . It must lie at least jp; qj away from w1 (only pq can intervene). It must lie at least away from either a (case 1) or x (case 2), because all intervening edges are of length at least . (All have both endpoints on or outside of C.) But this is not possible. If z1 is in the right half of C, it can be at most away from w1 . (The distance between the intersections of pp~ u and pp~ l with Cp is exactly , but in this case we require the much larger separation of jp; qj.) If it lies in the left half of C, the actual maximum distance will be the distance between the intersection of qq~u with C and the intersection of qq~ l with Cq , and this distance is about :95 . Therefore we could increase the size of  slightly, but only at the expense of greatly complicating its formula.

16

Suggest Documents