Shortest Inspection-Path. Queries in Simple Polygons



Similar documents
Triangulation by Ear Clipping

Approximation of an Open Polygonal Curve with a Minimum Number of Circular Arcs and Biarcs

Diffuse Reflection Radius in a Simple Polygon

The Goldberg Rao Algorithm for the Maximum Flow Problem

Arrangements And Duality

Shortest Path Algorithms

BALTIC OLYMPIAD IN INFORMATICS Stockholm, April 18-22, 2009 Page 1 of?? ENG rectangle. Rectangle

Shortcut sets for plane Euclidean networks (Extended abstract) 1

Solving Geometric Problems with the Rotating Calipers *

Computational Geometry. Lecture 1: Introduction and Convex Hulls

Seminar. Path planning using Voronoi diagrams and B-Splines. Stefano Martina

Selected practice exam solutions (part 5, item 2) (MAT 360)

Disjoint Compatible Geometric Matchings

Largest Fixed-Aspect, Axis-Aligned Rectangle

GRAPH THEORY LECTURE 4: TREES

Chapter 3.1 Angles. Geometry. Objectives: Define what an angle is. Define the parts of an angle.

Grade 7 & 8 Math Circles Circles, Circles, Circles March 19/20, 2013

Largest Inscribed Rectangles in Convex Polygons

Lesson 2: Circles, Chords, Diameters, and Their Relationships

Solutions to Exercises, Section 5.1

Algebra 2 Chapter 1 Vocabulary. identity - A statement that equates two equivalent expressions.

Persistent Data Structures and Planar Point Location

Graphs without proper subgraphs of minimum degree 3 and short cycles

Binary search algorithm

A Note on Maximum Independent Sets in Rectangle Intersection Graphs

MA 408 Computer Lab Two The Poincaré Disk Model of Hyperbolic Geometry. Figure 1: Lines in the Poincaré Disk Model

The LCA Problem Revisited

Lecture 1: Course overview, circuits, and formulas

Reflection and Refraction

Max-Min Representation of Piecewise Linear Functions


4. How many integers between 2004 and 4002 are perfect squares?

Mathematical Induction. Mary Barnes Sue Gordon

Linear Programming Problems

On the k-path cover problem for cacti

- Easy to insert & delete in O(1) time - Don t need to estimate total memory needed. - Hard to search in less than O(n) time

Minimum cost maximum flow, Minimum cost circulation, Cost/Capacity scaling

GEOMETRY. Constructions OBJECTIVE #: G.CO.12

Chapter 6 Notes: Circles

The Union-Find Problem Kruskal s algorithm for finding an MST presented us with a problem in data-structure design. As we looked at each edge,

Math 181 Handout 16. Rich Schwartz. March 9, 2010

2.3 WINDOW-TO-VIEWPORT COORDINATE TRANSFORMATION

INDISTINGUISHABILITY OF ABSOLUTELY CONTINUOUS AND SINGULAR DISTRIBUTIONS

CIRCLE COORDINATE GEOMETRY

HOLES 5.1. INTRODUCTION

Chapters 6 and 7 Notes: Circles, Locus and Concurrence

8 Fractals: Cantor set, Sierpinski Triangle, Koch Snowflake, fractal dimension.

Binary Space Partitions

The Geometry of Piles of Salt Thinking Deeply About Simple Things

INCIDENCE-BETWEENNESS GEOMETRY

Analysis of Algorithms, I

Homework 2 Solutions

Fast Sequential Summation Algorithms Using Augmented Data Structures

Geometry Chapter Point (pt) 1.1 Coplanar (1.1) 1.1 Space (1.1) 1.2 Line Segment (seg) 1.2 Measure of a Segment

Lecture 3. Linear Programming. 3B1B Optimization Michaelmas 2015 A. Zisserman. Extreme solutions. Simplex method. Interior point method

CK-12 Geometry: Parts of Circles and Tangent Lines

Lesson 1: Introducing Circles

1 if 1 x 0 1 if 0 x 1

Line and Polygon Clipping. Foley & Van Dam, Chapter 3

Solutions to Homework 6

15. Appendix 1: List of Definitions

Lecture 4: BK inequality 27th August and 6th September, 2007

1 Symmetries of regular polyhedra

13. Write the decimal approximation of 9,000,001 9,000,000, rounded to three significant

Geometry of Vectors. 1 Cartesian Coordinates. Carlo Tomasi

Connectivity and cuts

Data Structures Fibonacci Heaps, Amortized Analysis

Practical Guide to the Simplex Method of Linear Programming

Analytical Geometry (4)

Intersection of a Line and a Convex. Hull of Points Cloud

arxiv: v1 [math.co] 7 Mar 2012

Mathematics Spring 2015 Dr. Alexandra Shlapentokh Guide #3

Section 9.5: Equations of Lines and Planes

Solutions to old Exam 1 problems

Incenter Circumcenter

CSC 373: Algorithm Design and Analysis Lecture 16

5.1 Midsegment Theorem and Coordinate Proof

Offline sorting buffers on Line

Angles that are between parallel lines, but on opposite sides of a transversal.

Reliability Guarantees in Automata Based Scheduling for Embedded Control Software

2006 Geometry Form A Page 1

Persistent Data Structures

1 Solution of Homework

Planar Curve Intersection

MATHEMATICAL ENGINEERING TECHNICAL REPORTS. The Best-fit Heuristic for the Rectangular Strip Packing Problem: An Efficient Implementation

Geometry: Unit 1 Vocabulary TERM DEFINITION GEOMETRIC FIGURE. Cannot be defined by using other figures.

1 Computational Geometry

Stationary random graphs on Z with prescribed iid degrees and finite mean connections

Tilings of the sphere with right triangles III: the asymptotically obtuse families

2.3 Convex Constrained Optimization Problems

Strictly Localized Construction of Planar Bounded-Degree Spanners of Unit Disk Graphs

Centers of Triangles Learning Task. Unit 3

BPS Math Year at a Glance (Adapted from A Story Of Units Curriculum Maps in Mathematics K-5) 1

Definitions, Postulates and Theorems

11 th Annual Harvard-MIT Mathematics Tournament

TImath.com. Geometry. Points on a Perpendicular Bisector

Copyright 2011 Casa Software Ltd. Centre of Mass

Transcription:

Shortest Inspection-Path Queries in Simple Polygons Christian Knauer, Günter Rote B 05-05 April 2005

Shortest Inspection-Path Queries in Simple Polygons Christian Knauer, Günter Rote Institut für Informatik, Freie Universität Berlin, Takustraße 9, D 14195 Berlin, Germany. {knauer,rote}@inf.fu-berlin.de Abstract. We want to preprocess a simple n-vertex polygon P to quickly determine the shortest path from a fixed source point s P to some point visible from a query point q P. We call such queries inspection-path queries. We give an algorithm that computes a data structure which answers the queries in logarithmic time. The data structure has O(n) size and can be computed in O(n log n) time. Keywords: Computational geometry, Simple polygons, Shortest paths, Visibility. 1 Introduction Many variations of the problem of computing shortest paths in simple polygons have been studied extensively in the past. One incarnation of the problem is to find the shortest path from a given fixed source point s in a simple polygon P with n vertices to view a query point q P. Our goal is to preprocess the input (P, s) to answer queries of this type: Given a query point q P, find the shortest distance one needs to travel in P from s to see q, i.e., we want to find a point c P visible from q that has the shortest distance from s. The query can be answered in O(n) time without preprocessing [4], and in O(log n) time with O(n 2 ) preprocessing time and space [5]. We improve and simplify the latter result and describe a solution with O(n log n) preprocessing time and O(n) space that achieves O(log n) query time. Our approach can report the shortest path π from s to c in O(log n + k) time, where k is the length of π. The results are summarized in the following Theorem 1. Let P be a simple polygon with n vertices and s P. We can compute a data structure of O(n) size in O(n log n) time to answer queries of the following type in O(log n) time: Given a query point q P, find the shortest distance one needs to travel in P from s to see q. If desired, the actual shortest path can then be reported in time linear in its length. The paper is structured as follows: In Section 2 we define the necessary terminology and give a structural characterization of the solution that forms the basis of our approach. We then prove Theorem 1 by describing and analyzing the data structure and the query process in Section 3. We provide some conclusions in Section 4.

2 Preliminaries Our terminology and notation follows [5]. The visibility polygon of a point x P will be denoted by V (x), the shortest path in P between two points x, y P by p(x, y), the shortest path tree from s in P by T, and the shortest path map of P with respect to s by M. If we remove V (q) from P, the polygon splits into disconnected regions that we call invisible regions. Each such region has exactly one edge in common with V (q) and will be called a window. If q is invisible from s, then s lies in an invisible region (if q is visible from s, then clearly c = q). In this case it is easy to see that the point c lies on the window w separating s from V (q), in particular c is the point on w that has the shortest distance to s, cf., Fig. 1. b c r a s q V (q) Fig. 1. The window ab separates s and V (q). c is the point with shortest distance to s that is visible from q. The drawing shows the shortest paths from q to a, from q to b, and from q to w, respectively. We next describe a simple characterization of c given in [5]. To this end let a and b denote be the endpoints of w, and r be the lowest common ancestor of a and b in T, i.e., the last common vertex between the two paths p(s, a) and p(s, b), cf., Fig. 1. The paths p(r, a), p(r, b) together with the segment w = ab form the funnel of w which will be denoted by F, cf. Fig. 2. Note that the paths p(r, a), p(r, b) are outward convex. Let a = v 0, v 1,..., r = v m,..., v k, v k+1 = b denote the vertices of the funnel from a to b. F can be decomposed into triangles by extending the edges of F until they intersect w. Let x i denote the intersection point of the extension of the edge v i v i+1 with w (hence, x 0 = a and x k = b). The shortest path from s to points on the segment x i x i+1 passes through v i as the last vertex of P. Denote 2

r = v 3 v 2 v 4 v 1 v 5 a = v 0 c Θ 2 b = v 6 x 1 x 2 x 3 x 4 Fig. 2. The funnel F over the window w = ab. The optimal point c is the foot of the perpendicular from v 2 to w. the angles between the extension edges and the window by θ 0, θ 1,..., θ k, i.e., θ i = bx i v i for 0 i < k and θ k = π abv k. The outward convexity of the paths p(r, a), p(r, b) implies that the sequence θ 0, θ 1,..., θ k is increasing. As a consequence we can characterize the optimal contact point c in the following way: 1. θ i = π/2 for some 0 i k. In this case, c = x i. 2. θ i < π/2 and θ i + 1 > π/2 for some 0 i k. In this case, c is the foot of the perpendicular from v i+1 to w. 3. θ 0 > π/2. In this case, c = a. 4. θ k < π/2. In this case, c = b. We can therefore search for c by looking at the angles θ i : If θ i > π/2 then c lies left of x i, whereas if θ i < π/2 then c lies right of x i. 3 The data structure To answer a query q we will proceed in two steps: 1. Compute the window w that separates s from V (q) along with the funnel base r. 2. Compute the optimal point c on w. After the preprocessing phase, the first step can be done in O(log n) time using standard data structures for point-location and ray-shooting queries, and for lowest common ancestor (LCA) queries in trees. The second step involves a binary search and the total running time for this step will also be O(log n). 3

3.1 Preprocessing phase The preprocessing phase prepares two data structures: the first set of data structures will enable us to quickly compute the window w that separates s from V (q) along with the funnel base r in the query phase. Another data structure will help us with the binary search for the optimal point c on w. Computing the funnel. In the first step of the preprocessing phase we do the following: 1. Compute the shortest path tree T and the shortest path map M in O(n) time, along with a point-location data structure for M that supports O(log n) time point-location queries [1, 6]. 2. Compute in O(n log n) time a data structure that supports O(log n) time ray-shooting queries to P [3]. 3. Preprocess T in O(n) time to support O(1) time LCA-queries [2]. Computing the optimal point on the window. In the second step of the preprocessing phase we do the following: 1. In O(n log n) time store the O(n) vertices V M of the shortest path map M in an array A, sorted in clockwise order along the boundary of P. Note that these vertices are defined by looking at the extensions of the edges of P until they hit the boundary of P, see Fig. 3. 2. Compute a tree T in O(n) time by augmenting the tree T as follows: (a) Add all the vertices of V M as new leaves. (b) Add an edge between a vertex u of T and a vertex v V M iff u is the endpoint of an edge e of P and the extension of e beyond u that hits the boundary in v. 3. Preprocess T in O(n) time to support O(1) time LCA-queries. 3.2 Query phase As a first step in the query phase we will check if q is visible from s (in this case c = q). This can be done in O(log n) time by shooting a ray from q in the direction of s and testing if the boundary of P is hit before s. In the following we can assume, that q is not visible from s. As we already mentioned, the query will then be answered in two steps: First we compute the window w that separates s from V (q) along with the funnel base r, then we find the optimal point c on w. Computing the funnel. To find w = ab and r in O(log n) time in the first step of the query phase we proceed as follows: Since the window separating s from V (q) is specified by the last vertex of P on the shortest path from s to q (Fig. 1), we can find a in O(log n) time by locating q in M. To find b in O(log n) time we shoot a ray from q in the direction of a. Next, we compute v k (which is an endpoint of the edge containing b) in O(1) time, and finally, we get the funnel base r = LCA T (a, v k ) in O(1) time. 4

s r = v 3 a 8 a 1 v 2 v 4 q v 1 v 5 a c a 7 x 1 x 2 x 3 x 4 a a 2 a 6 4 a 3 a 5 Fig. 3. The vertices a 1,..., a 8 are created by the extensions of edges of P that hit the boundary. They are the vertices of the shortest path map of P that are not polygon vertices. Computing the optimal point on the window. To find the optimal point c on w in O(log n) time in the second step of the query phase we proceed as follows: First we check if θ 0 > π/2 or θ k < π/2. In the first case c = a, in the second case c = b, and in either case we are finished. Next we look at the extensions of the edges emanating from the apex r = v m of the funnel. If θ m 1 = π/2, or θ m = π/2, or θ m 1 π/2 < θ m, c is the foot of the perpendicular from v m to w and we are finished. If θ m 1 > π/2, then θ i > π/2 for m i k, since the angle sequence is increasing. In particular c is the foot of the perpendicular from some vertex v i to w, where v i is on the left side p(r, a) of the funnel F, i.e., 1 i < m. To determine for which vertex v i the perpendicular to w has to be drawn, we would like to perform a binary search on the sequence v 0,..., v k. However this sequence is not directly accessible, so we use the array A instead, and perform a binary search on the interval between a and b in this array. For a vertex u in this interval we compute LCA T (v 1, u), which is one of the vertices v 1,..., v m on the left edge of the funnel, say v i. By computing the angle θ i we can decide if the binary search has to continue to the left or to the right of u. After O(log n) iterations the binary search is narrowed down to an interval between two successive vertices in A. This implies that the point v i from which the perpendicular to c has to be drawn is also determined. In the case that θ m 1 < π/2, we have that θ i < π/2 for 1 i < m, so c is the foot of the perpendicular from some vertex v i to w, where v i is on the right side p(r, b) of the funnel F. In this case, we proceed analogously to 5

find v i by binary search in A. Again, the total running time for the search is O(log n). In the end, we can compute the length of the shortest path in constant time from the information stored in the shortest path tree. If desired, the shortest path itself can be output in linear time. 4 Conclusion We described a data structure to find for a given query point q in a simple n- vertex polygon P with a designated starting point s the shortest path from s to some point visible from q. Our approach yields a structure of linear size that can be computed in O(n log n) time and achieves logarithmic query time. This significantly improves previous work on the subject [5]. Our approach also seems to be conceptually simpler. It remains unclear if the problem can still be solved efficiently if we consider the case of polygonal scenes, i.e., polygons with holes. Acknowledgements We would like to thank Frank Hoffmann for fruitful discussions on the subject. References 1. L. J. Guibas, J. Hershberger, D. Leven, M. Sharir, and R. E. Tarjan. Lineartime algorithms for visibility and shortest path problems inside triangulated simple polygons. Algorithmica, 2:209 233, 1987. 2. D. Harel and R. E. Tarjan. Fast algorithms for finding nearest common ancestors. SIAM J. Comput., 13(2):338 355, 1984. 3. J. Hershberger and S. Suri. A pedestrian approach to ray shooting: Shoot a ray, take a walk. J. Algorithms, 18:403 431, 1995. 4. R. Khosravi and M. Ghodsi. Shortest paths in simple polygons with polygon-meet constraints. Inf. Process. Lett., 91(4):171 176, 2004. 5. R. Khosravi and M. Ghodsi. The fastest way to view a query point in simple polygons. In Abstracts of the 21st European Workshop on Computational Geometry (EWCG), Eindhoven, Netherlands, pages 187 190, 2005. 6. D. G. Kirkpatrick. Optimal search in planar subdivisions. SIAM J. Comput., 12(1):28 35, 1983. 6