F i n d i n g a S h o r t e s t Pair of P a t h s on t h e P l a n e with Obstacles and Crossing Areas Yoshiyuki Kusakari *, Hitoshi Suzuki **, and Takao Nishizeki *~* Graduate School of Information Sciences, Tohoku University, Sendai 980-77, Japan A b s t r a c t . Given axis-parallel rectangular obstacles and crossing areas together with two pairs of terminals on the plane, our algorithm finds a shortest pair of rectilinear paths which connect the pairs of terminals and neither pass through any obstacle nor cross each other except in the crossing areas. The algorithm takes O(nlog n) time and O(n) space, where n is the total number of obstacles and crossing areas.
1
Introduction
The "shortest non-crossing path problem" often appears in the design of singlelayer VLSI layouts, where "non-crossing paths" should not cross each other on the plane but may share common points or line segments unlike "disjoint paths." The problem asks to find non-crossing paths of the minimum total length, each connecting a specified terminal pair in a two-dimensional plane region without passing through any obstacles, i.e. build-in blocks. Lee et al. presented an algorithm to find shortest k non-crossing rectilinear paths in a plane region with no rectangular obstacles in time O((k2!)kn log n), where k is the number of terminal pairs [4]. Throughout the paper, we denote by n the size of an input for problems. Therefore n = k + no for this problem. The algorithm does not seem practical when k is large. On the other hand, Takahashi et al. presented two efficient algorithms which find shortest k non-crossing paths in time O(n log n) for any k [7, 8]. One finds shortest k non-crossing rectilinear paths for the case when all terminals lie on the outer boundary of a plane region and the boundary of one of the rectangular obstacles [7]. The other finds shortest non-crossing paths in plane graphs in which all terminals lie on any two face boundaries [8]. On the other hand, the following problem often appear in the design of twolayer VLSI layouts: given two-layer routing regions called "crossing areas" in addition to obstacles on the plane, find a shortest pair of rectilinear paths which connect two pairs of terminals and neither pass through any obstacles nor cross each other except in the crossing areas. It should be noted that the found paths may cross each other in crossing areas. In this paper, we give an efficient algorithm to solve this problem in time O(nlogn), where n is the total number *
[email protected] ** hs~nishizeki.ecei.tohoku.ac.jp ***
[email protected] 43 of obstacles and crossing areas. T h e time complexity is best possible within a constant factor. This algorithm can be used for the rip-up and re-route problem of VLSI routing, in which each of unrouted wires together with a routed wire obstructing it are ripped up and two new re-route wires of the minimum total length will be found for the two pairs of terminals [5].
2
Preliminaries
The z-coordinate of a point p E F t 2 is denoted by z(p), and the y-coordinate by y(p). The point p is often denoted by (z(p), y(p)). In this paper we consider only rectilinear paths P C IR2. The length of P is denoted by l(P). For two points pl and p~ on P, P[Pl,P~] denotes the subpath of P connecting Pl and p2. All rectangles are assumed axis-parallel, that is, all edges of them are axis-parallel. We next formally define a "crossing" of two paths Pa and Pb on ~ 2 . Let a and a t be the ends of path P,, and let b and b' the ends of Pb. Clearly Pa and Pb do not cross each other if P~ N Pb = r Thus we may assume that P~ N Pb ~ r Let Q be a connected component (i.e. a path) of Pa N Pb, and let q and q~ be the ends of path Q. Consider a component Q such that {q, q'} N {a, at, b, b'} = r One may assume without loss of generality that a, q, q~ and a' appear on P~ in this order, and that b, q, q~ and b' appear on Pb in this order. Further one may assume that P~[q, a], Pb[q, b] and Q[q, q'] appear clockwise around q in this order in a small circle with a center on q. Then Pa and Pb cross each other if Pa[q t, a'], Pb[q', b'] and Q[q', q] appear clockwise around q' in this order in a small circle with a center on ql. We call such a component Q a crossing component, and call any point in a crossing component a crossing point. We say that P, and Pb do not cross each other if Pa and Pb cross each other at none of the components Q of Paf') Pb such that {q, q'} n {a, a', b, b'} = r We assume that there are no obstacles and nr crossing areas in the plane, and that all of them are rectangles and do not overlap each other. Thus n = no + no. The set of obstacles is denoted by O = {O1, O 2 , . . . , O,o }, and the set of crossing areas by C = {C1, C 2 , . . . , Cno}. In Fig. 1 obstacles are drawn in gray rectangles and crossing areas in white rectangles. The left-top, left-bottom, right-top, right-bottom vertices of a rectangle R e OUC are denoted by it(R), lb(R), rt(R) and rb(R), respectively. The left, right, top, and b o t t o m edges of R are denoted by le(R), re(R), re(R), and be(R), respectively. The boundary of R is denoted by B(R). The routing region A is a subregion of E 2 excluding the obstacles, that is, A -- ~ 2 _ U { R _ B(R)IR E O}. Thus A contains the boundaries of obstacles, and hence paths can pass through a boundary of two touching obstacles. We denote by d(pl, P2) the Ll-distance from Pl to P2. We denoted by dA(pl, P2) the length of a shortest path connecting Pl and P2 in A. We next precisely define the problem of this paper. Given two pairs (a, a ~) and (b, b') of terminals in routing region A, let path P~ connect a and a' in A, and let path Pb connect b and U in A. We say that (Pa, Pb) is a feasible pair of paths (in routing region A with crossing areas) if every crossing component Q of
Pa and Pb contains a point in a crossing area: Q N ( U i = I i) r r Note that
44 ~o~mg
a
x f - y ) -path
Fig. 1. A shortest pair of paths in a rout- Fig. 2. Subdivision of A into four regions. ing region with crossing areas.
for each crossing component Q one can make such a pair of paths (wires) cross each other, that is, interchange layers at a crossing point p E Q 91 (UT=~lCi) by putting "vias" on p in a crossing area, i.e., a "two-layer routing region." Our problem is to find a feasible pair of Pa and Pb having the minimum total length, which we call an optimal pair of paths (in routing region A with crossing areas). Fig. 1 illustrates such an optimal pair. We denote by 7~ the set of all shortest pairs of paths, and by !(7)) the sum of lengths of paths Pa and Pb for a pair (Pa, P6) E 7~. In this paper we will present an algorithm to find the length i(7~). It can be easily modified so that it actually finds a pair of paths (Pa, Pb) E P. A feasible pair of paths may cross or may not cross each other. Any pair (Pa, Pb) of non-crossing paths is feasible. The set of shortest pairs of non-crossing paths in A is denoted by 7~nc. On the other hand, if a feasible pair (Pa,P~) of paths cross each other, then Pa and Pb share a point in a crossing area: nc Pa 91Pb 91(Ui=lCi)__ ~ r We define that a shortest pair of paths sharing points is a shortest one among all feasible pairs of paths that share a point in a crossing area. The set of such pairs of paths is denoted by 7~8. Define lengths l(79nc) and l(P s) similarly as !(7~). Then i('P) = min{l(Pn~), I(P')} since "P C_ "P'*~ U P~. Thus it suffices to find/(P"r and I(:P'). It is known that either (Pa, P~) or (P', Pb) defined below is a shortest pair of non-crossing paths in A [4].
(1) Pa is an arbitrary shortest path connecting a and a' in A, and P~ is a shortest path connecting b and b' in A without crossing Pa. (2) Pb is an arbitrary shortest path connecting b and b' in A, and P" is a shortest path connecting a and a' in A without crossing Pb. Both (Pa, P[) and (P', Pb) can be found in time O(no log no), and hence 1(7)no) can be found in time O(no logno) [4]. Thus we shall show that l ( P ' ) can be found in time O(n log n).
45
3
Shortest pair of paths sharing points
In this section we present an algorithm to find the length I(P'). In Section 3.1 we define a set :P/' of shortest pairs of paths sharing a point in Ci for each crossing area Ci, 1 < i < he, define the length i('P~) of such paths, and then prove that l(:Ps) = min(i(~oi')ll < i < ne}. In Section 3.2, as a preprocessing of our algorithm, we divide the routing region A into 25 subregions Aj, 1 < j _< 25, which are classified in eight groups. In Section 3.3, we present Mgorithms to find I(P[); the algorithms depend on which group the subregion Aj containing Ci belongs to. Furthermore we show that all lengths l(P/') can be found total in time O(n log n).
3.1
Definition and property of W~
For i, 1 < i < no, we denote by :P~ the set of shortest pairs of paths Pa and Pb in A that share a point in Ci, that is, Pa ~ Pb N C/ r r Such a pair (Pa, Pb) may not be feasible because Pa and Pb may have a crossing component Q such that Q n (~.J:_~lCj) = r We define the length !(7~/') similarly as i(P). Then
1(7)') > min{l(:P~)ll < i < n,} since all pairs in P ' are feasible but some pairs in ~o/, may not be feasible. However, this equation holds in equality: Lemmal.
l ( p ' ) = min{l(P/)ll < i < he}
Lemma 1 implies that one can determine ICP' ) by calculating I(~O~) for all i, l z(t), and does not intersect any obstacle; or
46
(2)
P follows the +x-direction to a vertical edge of an obstacle, then follows the +y-direction up to the upper end p of the edge, and then follows an xy-path starting at p.
We similarly define x ( - y ) - , -xy-, and -x(-y)-paths. These four paths, illustrated in Fig. 2, are called prior paths starting at t. For a terminal t 9 {a, a ~, b, b~}, the x-region At[x] of A for t is the subregion of A which is bounded by the xy- and x(-y)-paths starting at t and contains the +x-semi-axis. We similarly define the (-x)-region A~[-x], y-region At[y], and (-y)-region At[-y], as illustrated in Fig. 2. One can easily observe the following lemma [1]. L e m m a 2 . Let t 9 {a,a',b,b'} and z 9 {-t-x,+y}. Then for any point p in At[z], there exists a shortest path connecting t and p in A which is a z-path and is contained in At[z]. [] The routing region A is divided into four subregions, =t:x,+y-regions, for each of the four terminals. Thus A is divided into 44 = 256 subregions Aj = A[zl ,z2,z3,z4] = Aa [zl] N An, [z2] NAb [z3] C1Ab,[z4], 1 _< j < 256, where zt, z2, z3, z4 9 {+x, +y}. However, one can easily know that at most twenty five Aj's are nonempty as follows. The four paths, each concatenating xy-path and - x ( - y ) - p a t h starting at each of the four terminals, do not cross each other. Similarly the four paths, each concatenating - x y - p a t h and x ( - y ) - p a t h starting at each of the four terminals, do not cross each other. These two sets of four non-crossing paths divide A into at most (4 + 1) 2 = 25 nonempty subregions. For example, A in Fig. 3 is divided into 16 nonempty subregions A1, A 2 , . . - , A16. Since one can find each prior path in time O(n log n) using O(n) space [1], one can find the subdivision above in time O(n log n) using O(n) space. It should be noted that a crossing area is not necessarily contained in one of the subregions. If a crossing area intersects two or more subregions, we divide it into several crossing areas by cutting it along prior paths on the boundaries of the subregions. The total number of crossing areas is O(nc) even if they are divided as above. Thus one may assume that each crossing area is completely contained in one of the 25 subregions. If (Pa, Pb) 9 5o/', then Pa and Pb share a point p in the crossing area C/. Therefore (Pa, Pb) is composed of four shortest paths connecting p 9 Ci and a, a ~, b, and b~ and having the minimum total length. Thus we have
!(7~.~) = min{dA(a,p) + dA(a',p) + dA(b,p) + dA(b',p)lp 9 Ci}.
(1)
For a crossing area Ci, an x-region Aci[x] is the subregion of A which is bounded by the xy-path starting at rt(Ci), the x ( - y ) - p a t h starting at rb(Ci), and the right edge re(Ci). We similarly define the -x-region Ac, [-x], y-region Ac, [y], -y-region Ac, [-y] for Ci. One can easily observe the following lemma.
Lemma3. L e t t E {a,a',b,b~}, and z E {4-x,+y}. Then Ci C_ At[z] if and only iSt 9 At, I-z].
47 By Lemma 3 and the symmetry of i x , i y directions, the 25 subregions Aj's can be classified in the following eight groups depending on the relative location of the four terminals and crossing areas Ci C_Aj. Group 1: For every Ci C_ Aj, all the four terminals are in the same region Av,[z] where z E { i x , i y } , as illustrated in Fig. 4. (Subregions A1, A2, A10 and A16 in Fig. 3 belong to this group.) Group 2: For every Ci C_Aj, three terminals are in the same region Ac~ [z] and the other terminal in the opposite region Ac, [-z]. Group 3: For every Ci _CAj, three terminals are in the same region Ac~[z] and the other terminal in an adjacent region Ae~[z ~] where z I = i y if z = i x and z I = i x ff z = i y . Group 4: For every Ci C Aj, two terminals are in the same region Ac~ [z] and the other two terminals in the opposite region Ac~ [-z]. Group 5: For every Ci _C Aj, two terminals are in the same region Ac,[z] and the other two terminals in one of the two adjacent regions Ac~ [z/]. Group 6: For every Ci C_ Aj, two terminals are in the same region Ae~[z], another in the opposite region Ac~ [-z], and the other in an adjacent region Aci[z']. Group 7: For every Ci C Aj, two terminals are in the same region Ac, [z], and exactly one of the other two terminals is in each of the two adjacent regions
Ac,[izl].
Group 8: For every Ci C Ai, exactly one of the four terminals is in each of the four regions for Ci.
!
All
Fig. 3. Subdivision of A into 16 nonempty
Fig. 4. Group 1.
subregions A1, A 2 , ' " , A16.
3.3
Algorithms
In this section we present algorithms to calculate min{l(Pt)[Ci C Aj, 1 < i < no} for subregions Aj. The algorithms depend on which group Aj belongs to. However, we present only an algorithm for Aj belonging to Group 1 since one can easily modify the algorithm for other groups.
48 Let t 9 {a, s b, U}, and let L be a horizontal line segment in A. A function f L : {x[p = (x,y) 9 L} ~ IR is defined as follows:fL(x ) = dA(t,p). The following lemma implies that the slope of this function takes values only -4-1, as illustrated in Fig. 5. L e m m a 4 . Let t 9 {a,a',b,U}. Let z 9 { + y , - y } , and let L be a horizontal line segment in At[z]. (a) Assume that, among terminalt and all vertices of obstacles in At[z], exactly q points vl,v~, . . . , v q are visible from L in the (-z)-direction, and that x(vl) < x(v~) < ... < x(vq). Then, for each i, 1 < i < q - 1, there exists x~ 9 1R, x(vi) < x~ < x(vi+l), such that
d it x (+lifx(vi)<x<x~; "~x t.( ) = - 1 i f x~ < x < z(vi+1). (b) IYz = +y, then the slope oY ftL(y) is +1. If z = - y , then the slope oy ytL(y) is --1. [] A function f~L(Y) is similarly defined for a vertical line segment L. Then Lemma 4 holds also for a vertical line segment L. Let t 9 {a, a ~, b, b'}, z 9 {q-x,:t:y}, and let L be a vertical or horizontal line segment in At[z]. A point on L at which the slope o f f ~ changes is called a bend point. The function f~ can be represented in terms of the bend points and the slopes between consecutive bend points on L. Denote by Etz the set of all edges of obstacles in At[z], then the following lemma holds on the total number of bend points on edges Lo 9 Etz. L e m m a 5 . Let t 9 {a,a',b,b'} and z 9 {=l=x,=l=y}. Then the total number of bend points on all edges Lo 9 Etz is at most 4no + 1. O Using these lemmas, we give an algorithm to calculate length l(Pt). As a preprocessing of the algorithm, we first construct 16 graphs Gtz, where t E {a, a', b, b'} and z 9 {q-z, +y}. Since the construction of these 16 graphs are similar, we give only the construction of Gtu. In Fig. 6, Gtu is drawn in dotted lines. Add to Gty, as vertices, terminal t and the corners of two prior paths on the boundary of At[y], that is, xy- and - x y - p a t h starting at t. Add to Gtu, as edges, line segments on the two paths connecting any two consecutive ones of these vertices. We add more vertices and edges to Gty by means of the following plane sweep. We move a horizontal sweep line L in the +y-direction from y(t) with stopping on each of the horizontal edges of obstacles in At[y]. We keep data on L, and update the data whenever L stops on an edge. We use a segment tree Tt as the data structure [6]. L A At[y] contains one or more horizontal line segments. Assume that, among terminal t, bend points and all vertices of obstacles in At [y], exactly q points vl, v 2 , . . . , v q are visible from line segments of L n At[y] in the (-y)-direction, and that y(vl) < y(v2) < . . . _< y(vq). Then the segment tree Tt has exactly q leaves, say !1,12,.'., lq from left to right. We store point vh at leaf
49
y
D
tO x I
x.
Fig. 5. Illustration for
ftL(z ).
Fig. 6. Ulustr~tion for Gt~.
Ih for 1 < h < q. Let Vl,~v2,~999 vq~ be points on L having the same z-coordinate as Vl,V2, ...,vq. We store at leaf lh, 1 < h < q, the length of a shortest path from t to v~. We store at an internal node v of the segment tree Tt an interval [ix, i2], where il is the smallest x-coordinate of points stored at leaves which are the descendants of v, and i2 is the largest one. When sweep line L is set on the terminal t, we add a leaf storing the terminal t to the segment tree T,. When sweep line L stops on the b o t t o m edge be(Ok) of an obstacle Ok C At[y], we add lb(Ok) and rb(Ok) to Gtv as vertices. Draw vertical line segments to be(Ok) from points which are stored in Tt and whose z-coordinates are in interval [x(lb(Ok)), x(rb(Ok))]. Add to G,y as vertices these intersection points on be(Ok), and add to Gtv as edges these vertical line segments together with horizontal line segments on be(Ok) connecting two consecutive ones of these vertices. After adding these vertices and edges to Gtv, we delete from Tt the leaves whose points have z-coordinates in interval [x(lb(Ok), x(rb(Ok))], Furthermore we add to Tt two leaves storing Ib(Ok) and rb(Ok). On the other hand, when sweep line L stops on the top edge re(Ok) of an obstacle Ok C At[y], we find a bend point p~ E re(Ok) if there is. One can easily find x(p~) from da(t, rt(Ok)) and dA(t, it(Ok)). Add the three vertices P'k, It(Ok) and rt(Ok) to Gtv, and add four line segments ie(Ok), re(Ok), [It(Ok)--P*k], and ~*k - rt(Ok)] to Gtv as edges. After adding these vertices and edges to Gt~, we insert to Tt three leaves storing p~, It(Ok), and rt(Ok). When sweep line L stops on the topmost edge of obstacle Ok C At[y], we execute the operation above, and add the infinite point to Gtv as a vertex. Add to Gtv, as the edges, line segments connecting the infinite point and the points stored at leaves of Tt. We thus complete the construction of Gtv. We similarly find the length of the shortest path connecting t and each vertex of Gtv by the plane sweep. Using 16 graphs Gt~ found in the preprocessing, we next find lengths l(P~) for
50 all crossing areas Ci in subregion Aj, 1 < j < 25. One can find the length l ( P t ) by finding the point p shared by two paths for which (1) holds. Note that each of the four paths connecting p and four terminals a, a t, b, bt is a shortest path in A. We denote by d4(p) the total length of four shortest paths connecting p E Ci and each of four terminals: d~(p) = dA(p, a) .4- da(p, at) -4- dA(p, b) -4- HA(p, b'). We find the shared point p and the length l ( P t ) by means of a plane sweep in which sweep line L stops not only on edges of obstacles but also on the edges of crossing areas. We then present an algorithm to find min{l(T9.~)lCi C_ Aj} for Aj in Group 1. Algorithms for the other groups are similar. One may assume without loss of generality that Aj = A[x,z,z,z]. We compute all lengths l(P s) for Ci C Aj, and take the minimum among them. In Fig. 3, At0 = A[x, x, z, z]. In this case, a, a ~, b, bt E A t , I-z] as illustrated in Fig. 4, and hence one may assume that p is on the left edge of each crossing area Ci C A i . By Lemma 2, Pa [a, p] C A~ [x], Pa[a',p] C_ A~,,[x], Pb[b,p] C Ab[z], and Pb[b',p] C_ Ab,[X]. Let zmln be the minimum x-coordinate of points in the subregion Aj. Then we initialize the sweep line L on the vertical line z = zmi,, and move L to the +z-direction. We store on L the following segment tree T*. Assume that, among all the top-left and bottomleft vertices of crossing areas in Aj and all vertices of four graphs G ~ , G~,~, Gbx and Gb,~ in Aj, exactly q points vz, v 2 , . . . , vq are visible from a vertical line segment of L tq Aj in the (-z)-direction, and that y(vx) < y(v2) 5 " " < y(vq). Then the segment tree T* has exactly q leaves, say I1,12, .--, Iq from left to right, which store vz,v2,...,Vq. Let v~, 1 < h < q, be the points on L having the same y-coordinate as vh, then leaf lh, 1 < h < q, stores the length d~4(v~). Each internal node v of T* stores leaf iv and an interval [i1,i2]; iz is the minimum y-coordinate of points stored at the leaves lh which are descendants of v, and is is the maximum y-coordinate; Iv is the leaf storing the minimum a~a(v~) among all the leaves which are descendants of v. When sweep line L stops on the left edge le(Ok) of Ok C Aj, we delete some of the leaves lh from T*: if a leaf lh of T* stores a vertex vh such that y(vh) e [y(lb(Ok)), y(lt(Ok))], then we delete the leaf lh from T*. We then insert to T* two leaves storing lb(Ok) and it(Ok). On the other hand, when sweep line L stops on the right edge re(Otc) of Ok C Aj, we delete from T* two leaves storing It(Ok) and lb(Ok). Furthermore, we insert to T* leaves storing vertices of four graphs Ga~, Ga,~, Gb~, Gb,~ on re(Ok). These vertices v are not always contained in all of four graphs. For example, it happens that v is a vertex of Ga~ but is not a vertex of Ga,z. In this case, dA (v, a) has already been computed, but da(v,a') has not. However, dA(V,a') can be easily computed as follow. Let v' be the vertex of G~,~ immediately above v on L, and let v" be the vertex of G~,~ immediately below v on L. From dA(v t, at) and dA(v", a') which have already been computed, one can easily compute da(v, a'). Similarly one can easily compute dA(v,b) and da(v,b'). Thus one can easily compute d4 (v). When sweep line L stops on the left edge le(Ci) of a crossing area Ci, we insert lb(C~) and lt(Ci) to T* as leaves. We then find a leaf in of T* such that
5] the vertex v stored at lh satisfies y(v) e [y(lb(Ci)),y(lt(Ci))] and d~(v~) is the minimum among all these vertices v. The vertex v~ is on the le(Ok). The point p shared by the two paths that we wish to find is v~, and l ( P [ ) = a~A(V~). In the plane sweep for Aj in Group 1, sweep line L does not stop on the right edge re(Q) of crossing areas C/. Finally, when sweep line L stops on the rightmost one of left edges le(Ci) of Ci C Aj, we execute the operation above and complete the plane sweep of Aj in Group 1. It is not difficult to show that our algorithm takes O(n log n) time and O(n) space to find i ( P ' ) .
4
Conclusion
In this paper we presented an efficient Mgorithm for finding a shortest pair of paths in a plane region with no rectangular obstacles and ne rectangular crossing areas. In the algorithm we use a plane sweep and a segment tree tailored for our purpose. The algorithm runs in time O(nlogn) where n = no + no. The complexity is best possible in a sense that finding a single shortest path between two points in a plane region with no rectangular obstacles requires time I2(no log no) [1]. It is rather straightforward to modify our sequential algorithm to an NC parallel algorithm which finds a shorest pair of paths in polylog time using a polynomial number of processors. Note that there are NC parallel algorithms for the shortest path problem [2, 3] and for the plane sweep [2].
References 1. P.J. de Rezend, D.T. Lee, and Y.F. Wu, "Rectilinear shortest paths with rectangular barriers," Discrete and Computational Geometry, 4, pp. 41-53, 1989. 2. J. Js An Introduction to Parallel Algorithms, Addison Wesley, Reading, MA, 1992. 3. P.N. Klein,"A linear processor polylog-time algorithm for shortest paths in planar graphs," Proc. of 34th Symp. on Found. of Comput. Sci., pp. 259-270, 1993. 4. D.T.Lee, C.F.Shem, C.D.Yang, and C.K.Wong, "Non-crossing paths problems," Manuscript, Dept. of EECS, Northwestern Univ., 1991. 5. T. Ohtsuki(Editor), Layout Design and Verification, North-Holland, Amsterdam, 1986. 6. F.P. Preparata, and M.I. Shamos, Computational Geometry : An Introduction, Springer-Verlag, New York, 1985. 7. J. Takahashi, H. Suzuki, and T. Nishizeki, "Finding shortest non-crossing rectilinear paths in plane regions," Proc. of ISAAC'93, Lect. Notes in Computer Science, Springer-Verlag, 762, pp. 98-107, 1993. 8. J. Takahashi, H. Suzuki, and T. Nishizeki, "Shortest non.crossingpaths in plane graphs," Algorithmica, to appear.