Academia.eduAcademia.edu

Point Location in Dynamic Planar Subdivisions

2018

We study the point location problem on dynamic planar subdivisions that allows insertions and deletions of edges. In our problem, the underlying graph of a subdivision is not necessarily connected. We present a data structure of linear size for such a dynamic planar subdivision that supports sublinear-time update and polylogarithmic-time query. Precisely, the amortized update time is $O(\sqrt{n}\log n(\log\log n)^{3/2})$ and the query time is $O(\log n(\log\log n)^2)$, where $n$ is the number of edges in the subdivision. This answers a question posed by Snoeyink in the Handbook of Computational Geometry. When only deletions of edges are allowed, the update time and query time are just $O(\alpha(n))$ and $O(\log n)$, respectively.

Point Location in Dynamic Planar Subdivisions∗ Eunjin Oh† Hee-Kap Ahn‡ March 13, 2018 arXiv:1803.04325v1 [cs.CG] 12 Mar 2018 Abstract We study the point location problem on dynamic planar subdivisions that allows insertions and deletions of edges. In our problem, the underlying graph of a subdivision is not necessarily connected. We present a data structure of linear size for such a dynamic planar subdivision that supports sublinear-time update and polylogarithmic-time query. Precisely, the amortized √ update time is O( n log n(log log n)3/2 ) and the query time is O(log n(log log n)2 ), where n is the number of edges in the subdivision. This answers a question posed by Snoeyink in the Handbook of Computational Geometry. When only deletions of edges are allowed, the update time and query time are just O(α(n)) and O(log n), respectively. 1 Introduction Given a planar subdivision, a point location query asks with a query point specified by its coordinates to find the face of the subdivision containing the query point. In many situations such point location queries are made frequently, and therefore it is desirable to preprocess the subdivision and to store it in a data structure that supports point location queries fast. The planar subdivisions for point location queries are usually induced by planar embeddings of graphs. A planar subdivision is connected if the underlying graph is connected. The vertices and edges of the subdivision are the embeddings of the nodes and arcs of the underlying graph, respectively. An edge of the subdivision is considered to be open, that is, it does not include its endpoints (vertices). A face of the subdivision is a maximal connected subset of the plane that does not contain any point on an edge or a vertex. We say a planar subdivision dynamic if the subdivision allows two types of operations, the insertion of an edge to the subdivision and the deletion of an edge from the subdivision. The subdivision changes over insertions and deletions of edges accordingly. For an insertion of an edge e, we require e to intersect no edge or vertex in the subdivision and the endpoints of e to lie on no edge in the subdivision. We insert the endpoints of e in the subdivision as vertices if they were not vertices of the subdivision. In fact, the insertion with this restriction is general enough. The insertion of an edge e with an endpoint u lying on an edge e′ of the subdivision can be done by a sequence of four operations: deletion of e′ , insertion of e, and insertions of two subedges of e′ partitioned by u. The dynamic point location problem is closely related to the dynamic vertical ray shooting problem [6]. For this problem, we are asked to find the edge of a dynamic planar subdivision that lies immediately above (or below) a query point. In the case that the subdivision is connected ∗ This research was supported by NRF grant 2011-0030044 (SRC-GAIA) funded by the government of Korea, and the MSIT (Ministry of Science and ICT), Korea, under the SW Starlab support program (IITP-2017-0-00905) supervised by the IITP (Institute for Information & communications Technology Promotion). † Max Planck Institute for Informatics, Saarbrücken, Germany, Email: [email protected] ‡ Pohang University of Science and Technology, Pohang, Korea, Email: [email protected] 1 at any time, we can answer a point location query without increasing the space and time complexities using a data structure for the dynamic vertical ray shooting problem by maintaining the list of the edges incident to each face in a concatenable queue [6]. However, it is not the case in a general (possibly disconnected) planar subdivision. Although the dynamic vertical ray shooting algorithms presented in [2, 3, 5, 6] work for general (possibly disconnected) subdivisions, it is unclear how one can use them to support point location queries efficiently. As pointed out in some previous works [5, 6], a main issue concerns how to test whether the two edges lying immediately above two query points belong to the boundary of the same face in a dynamic planar subdivision. Notice that the boundary of a face may consist of more than one connected component. In this paper, we consider a point location query on dynamic planar subdivisions. The subdivisions we consider are not necessarily connected, that is, the underlying graphs may consist of one or more connected components. We also require that every edge is a straight line segment. We present a data structure for a dynamic planar subdivision which answers point location queries efficiently. Previous work. The dynamic vertical ray shooting problem has been studied extensively [2, 3, 5, 6]. These data structures do not require that the subdivision is connected, but they require that the subdivision is planar. None of the known algorithms for this problem is superior to the others. Moreover, optimal update and query times (or their optimal trade-offs) are not known. The update time or the query time (or both) is worse than O(log2 n), except the data structures by Arge et al. [2] and by Chan and Nekrich [5]. The data structure by Arge at al. [2] supports expected O(log n) query time and expected O(log2 n/ log log n) update time under Las Vegas randomization in the RAM model. The data structure by Chan and Nekrich [5] supports O(log n(log log n)2 ) query time and O(log n log log n) update time in the pointer machine model. Their algorithm can also be modified to reduce the query time at the expense of increasing the update time. As pointed out by Cheng and Janardan [6], all these data structures [2, 3, 5, 6] can be used for answering point location queries if the underlying graph of the subdivision is connected without increasing any resource. Little has been known for the dynamic point location in general planar subdivisions. In fact, no nontrivial data structure is known for this problem.1 Cheng and Janardan asked whether such a data structure can be maintained for a general planar subdivision [6], but this question has not been resolved until now. Very recently, it was asked again by Chan and Nekrich [5] and by Snoeyink [12]. Specifically, Snoeyink asked whether it is possible to construct a dynamic data structure for a general (possibly disconnected) planar subdivision supporting sublinear query time of determining if two query points lie in the same face of the subdivision. Our result. In this paper, we present a data structure and its update and query algorithms for the dynamic point location in general planar subdivisions under the pointer machine model. This is the first result supporting sublinear update and query times, and answers the question √ posed in [5, 6, 12]. Precisely, the amortized update time is O( n log n(log log n)3/2 ) and the query time is O(log n(log log n)2 ), where n is the number of edges in the current subdivision. When only deletions of edges are allowed, the update and query times are just O(α(n)) and 1 The paper [2] claims that their data structure supports a point location query for a general subdivision. They present a vertical ray shooting data structure and claim that this structure supports a point location query for a general subdivision using the paper [9]. However, the paper [9] mentions that it works only for a subdivision such that every face in the subdivision has a constant complexity. Therefore, the point location problem for a general subdivision is still open. 2 O(log n), respectively. Here, we assume that a deletion operation is given with the pointer to an edge to be deleted in the current edge set. Our approach itself does not require that every edge in the subdivision is a line segment, and can handle arbitrary curves of constant description. However, the data structures for dynamic vertical ray shooting queries require that every edge is a straight line segment, which we use as a black box. Once we have a data structure for answering vertical ray shooting queries for general curves, we can also extend our results to general curves. For instance, the result by Chan and Nekrich [5] is directly extended to x-monotone curves, and so is ours. One may wonder if the problem is decomposable in the sense that a query over D1 ∪ D2 can be answered in constant time from the answers from D1 and D2 for any pair of disjoint data sets D1 and D2 [8]. If a problem is decomposable, we can obtain a dynamic data structure from a static data structure of this problem using the framework of Bentley and Saxe [4], or Overmars and Leeuwen [10]. However, the dynamic point location problem in a general planar subdivision is not decomposable. To see this, consider a subdivision D consisting of a square face and one unbounded face. Let D1 be the subdivision consisting of three edges of the square face and D2 be the subdivision consisting of the remaining edge of the square face. There is only one face in D1 (and D2 ). Any two points in the plane are contained in the same face in D1 (and D2 ). But it is not the case for D. Therefore, the answers from D1 and D2 do not help to answer point location queries on D. Outline. Consider any two query points in the plane. Our goal is to check whether they are in the same face of the current subdivision. To do this, we use the data structures for answering dynamic vertical ray shooting queries [2, 3, 5, 6], and find the edges lying immediately above the two query points. Then we are to check whether the two edges are on the boundary of the same face. In general subdivisions, the boundary of each face may consist of more than one connected components. This makes Θ(n) changes to the boundaries of the faces in the worst case, where n is the number of edges in the current subdivision. Therefore, we cannot maintain the explicit description of the subdivision. To resolve this problem, we consider two different subdivisions, Mo and Mn , such that the current subdivision consists of the edges of Mo and Mn , and construct data structures on the subdivisions, Do and Dn , respectively. Recall that the dynamic point location problem is not decomposable. Thus the two subdivisions must be defined carefully. We set each edge in the current subdivision to be one of the three states: old, communal, and new. Then let Mo be the subdivision induced by all old and communal edges, and Mn be the subdivision induced by all new and communal edges. Note that every communal edge belongs to both subdivisions. The state of each edge is defined as follows. The data structures are reconstructed periodically. In specific, they are rebuilt after processing f (n) updates since the latest reconstruction, where n is the number of edges in the current subdivision. Here, f (n) is called a reconstruction period, √ which is set to n roughly. When an edge e is inserted, we find the face F in Mo intersecting e and set the old edges on the outer boundary of F to communal. If one endpoint of e lies on the outer boundary of F and the other lies on an inner boundary of F , we set the old edges on this inner boundary to communal. Also, we set e to new. When an edge e is deleted, we find the faces in Mo incident to e and set the old edges of the outer boundaries of the faces to communal. We show that the current subdivision has the following property: no face in the current subdivision contains both new and old edges on its outer boundary. In other words, for every face in the current subdivision, either every edge is classified as new or communal, or every edge is classified as old or communal. Due to this property, for any two query points, they are in the same face in the current subdivision if and only if they are in the same face in both Mo and Mn . Therefore, we can represent the name of a face in the current subdivision as a pair of faces, one 3 in Mo and one in Mn . To answer a point location query on the current subdivision, it suffices to find the faces containing the query point in Mo and in Mn . To answer point location queries on Mo , we observe that no edge is inserted to Mo unless it is rebuilt. Therefore, it suffices to construct a semi-dynamic point location data structure on Mo supporting only deletion operations. If only deletion operations are allowed, two faces are merged into one face, but no new face appears. Using this property, we provide a data structure supporting O(α(n)) update time and O(log n) query time. To answer point location queries on Mn , we make use of the following property: the boundary of each face of Mn consists of O(f (n)) connected components while the number of edges of Mn is Θ(n) in the worst case, where n is the number of all edges in the current subdivision. Due to this property, the amount of the change on the subdivision Mn is O(f (n)) at any time. Therefore, we can maintain the explicit description of Mn . In specific, we maintain a data structure on Mn supporting point location queries, which is indeed a doubly connected linked list of Mn . Due to lack of space, some proofs and details are omitted. The missing proofs and missing details can be found in the full version of the paper. 2 Preliminaries Consider a planar subdivision M that consists of n straight line segment edges. Since the subdivision is planar, there are O(n) vertices and faces. One of the faces of M is unbounded and all other faces are bounded. Notice that the boundary of a face is not necessarily connected. For the definitions of the faces and their boundaries, refer to [7, Chapter 2]. We consider each edge of the subdivision as two directed half-edges. The two half-edges are oriented in opposite directions so that the face incident to a half-edge lies to the left of it. In this way, each half-edge is incident to exactly one face, and the orientation of each connected component of the boundary of F is defined consistently. We call a boundary component of F the outer boundary of F if it is traversed along its half-edges incident to F in counterclockwise order around F . Except for the unbounded face, every face has a unique outer boundary. We call each connected component other than the outer boundary an inner boundary of F . Consider the outer boundary γ of a face. Since γ is a noncrossing closed curve, it subdivides the plane into regions exactly one of which contains F . We say a face F encloses a set C in the plane if C is contained in the (open) region containing F of the planar subdivision induced by the outer boundary of F . Note that if F encloses F ′ , the outer boundary of F does not intersect the boundary of F ′ . For more details on planar subdivisions, refer to the computational geometry book [7]. Our results are under the pointer machine model, which is more restrictive than the random access model. Under the pointer machine model, a memory cell can be accessed only through a series of pointers while any memory cell can be accessed in constant time under the random access model. Most of the results in [2, 3, 5, 6] are under the pointer machine model, and the others are under the random access model. Updates: insertion and deletion of edges. We allow two types of update operations: InsertEdge(e) and DeleteEdge(e). In the course of updates, we maintain a current edge set E, which is initially empty. InsertEdge(e) is given with an edge e such that no endpoints of e lies on an edge of the current subdivision. This operation adds e to E, and thus update the current subdivision accordingly. Recall that an edge of the subdivision is a line segment excluding its endpoints. If an endpoint of e does not lie on a vertex of the current subdivision, we also add the endpoint of e to the current subdivision as a vertex. DeleteEdge(e) is given with an edge e in the current subdivision. Specifically, it is given with a pointer to e in the set 4 E. This operation removes e from E, and updates the subdivision accordingly. If an endpoint of e is not incident to any other edge of the subdivision, we also remove the vertex which is the endpoint of e from the subdivision. Queries. Our goal is to process update operations on the data structure so that given a query point q the face of the current subdivision containing q can be computed from the data structure efficiently. Specifically, each face is assigned a distinct name in the subdivision, and given a query point the name of the face containing the point is to be reported. A query of this type is called a location query, denoted by locate(x) for a query point x in the plane. 2.1 Data structures In this paper, we show how to process updates and queries efficiently by maintaining a few data structures for dynamic planar subdivisions. In specific, we use disjoint-set data structures and concatenable queues. Before we continue with algorithms for updates and queries, we provide brief descriptions on these structures in the following. Throughout this paper, we use S(n), U (n) and Q(n) to denote the size, the update and query time of the data structures we use for the dynamic vertical ray shooting in a general subdivision. Notice that U (n) = Ω(log n), U (n) = o(n), and Q(n) = Ω(log n) for any nontirivial data structure for the dynamic vertical ray shooting problem under the pointer machine model. Also, U (n) is increasing. Thus in the following, we assume that U (n) and Q(n) satisfy these properties. A disjoint-set data structure keeps track of a set of elements partitioned into a number of disjoint subsets [13]. Each subset is represented by a rooted tree in this data structure. The data structure has size linear in the total number of elements, and can be used to check whether two elements are in the same partition and to merge two partitions into one. Both operations can be done in O(α(N )) time, where N is the number of elements at the moment and α(·) is the inverse Ackermann function. A concatenable queue represents a sequence of elements, and allows four operations: insert an element, delete an element, split the sequence into two subsequences, and concatenate two concatenable queues into one. By implementing them with 2-3 trees [1], we can support each operation in O(log N ) time, where N is the number of elements at the moment. We can search any element in the queue in O(log N ) time. 3 Deletion-only point location In this section, we present a semi-dynamic data structure for point location queries that allows only DeleteEdge operations. Initially, we are given a planar subdivision consisting of n edges. Then we are given update operations DeleteEdge(e) for edges e in the subdivision one by one, and process them accordingly. In the course of updates, we answer point location queries. We maintain static data structures on the initial subdivision and a disjoint-set data structure that changes dynamically as we process DeleteEdge operations. Static data structures. We construct the static point location data structure on the initial subdivision of size O(n) in O(n log n) time [11]. Due to this data structure, we can find the face in the initial subdivision containing a query point in O(log n) time. We assign a name to each face, for instance, the integers from 1 to m for m faces. Also, we compute the doubly connected edge list of the initial subdivision, and make each edge in the current edge set to point to its counterparts in the doubly connected edge list. These data structures are static, so they do not change in the course of updates. 5 History structure of faces over updates. Consider an edge e to be deleted from the subdivision. If e is incident to two distinct faces in the current subdivision, the faces are merged into one and the subdivision changes accordingly. To apply such a change and keep track of the face information of the subdivision, we use a disjoint-set data structure S on the names of the faces in the initial subdivision. Initially, each face forms a singleton subset in S. In the course of updates, subsets in S are merged. Two elements in S are in the same subset of S if and only if the two faces corresponding to the two elements are merged into one face. Deletion. We are given DeleteEdge(e) for an edge e of the subdivision. Since only history structure changes dynamically, it suffices to update the history structure only. We first compute the two faces in the initial subdivision that are incident to e in O(1) time by using the doubly connected edge list. Then we check if the faces belong to the same subset or not in S. If they belong to two different subsets, we merge the subsets into one in O(α(n)) time. The label of the root node in the merged subset becomes the name of the merged face. If the faces belong to the same subset, e is incident to the same face F in the current subdivision, and therefore there is no change to the faces in the subdivision, except the removal of e from the boundary of F . Since we do not maintain the boundary information of faces, there is nothing to do with the removal and we do not do anything on S. Thus, there is a bijection between faces in the current subdivision and subsets in the disjoint-set data structure S. We say that the face corresponding to the root of a subset represents the subset. Location queries. To answer locate(x) for a query point x in the plane, we find the face F in the initial subdivision in O(log n) time. Then we return the subset in the disjoint-set data structure S that contains F in O(α(n)) time. Precisely, we return the root of the subset containing F whose label is the name of the face containing x in the current subdivision. The argument in this section implies the correctness of the query algorithm. Theorem 1. Given a planar subdivision consisting of n edges, we can construct data structures of size O(n) in O(n log n) time so that locate(x) can be answered in O(log n) time for any point x in the plane and the data structures can be updated in O(α(n)) time for a deletion of an edge from the subdivision. 4 Data structures for fully dynamic point location In Section 4 and Section 5, we present a data structure and its corresponding update and query algorithms for the dynamic point location in fully dynamic planar subdivisions. Initially, the subdivision is the whole plane. While we process a mixed sequence of insertions and deletions of edges, we maintain two data structures, one containing old and communal edges and one containing new and communal edges. We consider each edge of the subdivision to have one of three states, “new”, “communal”, and “old”. The first data structure, denoted by Do , is the point location data structure on old and communal edges that supports only DeleteEdge operations described in Section 3. The second data structure, denoted by Dn , is a fully dynamic point location data structure on new and communal edges. Three states: old, communal and new. We rebuild both data structures periodically. When they are rebuilt, every edge in the current subdivision is set to old. As we process updates, some of them are set to communal as follows. For InsertEdge(e), there is exactly one face F of Mo whose interior is intersected by e as e does not intersect any edges or vertices. We set all edges on the outer boundary of F to communal. If e connects the outer boundary of F with 6 e e (a) (a) (a) Figure 1: (a) Face containing only one inner boundary. (b) The insertion of e makes the old edges on the outer boundary communal. (c) The insertion of e makes all old boundary edges communal. one inner boundary of F , we set all edges on the inner boundary to communal. As a result, the outer boundary edges in the faces incident to e in Mo are communal or new after e is inserted. See Figure 1. For DeleteEdge(e), there are at most two faces of Mo whose boundaries contain e. We set all edges on the outer boundary of these faces to communal. Here, we do not maintain the explicit description (the doubly connected edge list) of Mo , but maintain the semi-dynamic data structure on Mo described in Section 3. Also, the edges inserted after the latest reconstruction are set to new. The subdivision Mn of the new and communal edges has complexity of Θ(n) in the worst case. We maintain a fully dynamic point location data structure on Mn , which is indeed the explicit description (the doubly connected edge list) of Mn . 4.1 Reconstruction Let f : N → N be an increasing function satisfying that f (n)/2 ≤ f (n/2) ≤ n/4 for every n larger than a constant, which will be specified later. We call the function a reconstruction period. We reconstruct Do and Dn if we have processed f (n) updates since the latest reconstruction time, where n is the number of the edges in the current subdivision. The following lemma is a key to achieve an efficient update time. Each face of Mn has O(f (n)) boundary components while the number of edge in Mn is Θ(n) in the worst case. Lemma 2. Each face of Mn has O(f (n)) inner boundaries. Proof. Consider a face F of Mn . There are two types of the inner boundaries of F : either all edges on an inner boundary are communal or at least one edge on an inner boundary is new. For an inner boundary of the second type, all edges other than the new edges are communal. By the construction, the number of new edges in Mn is at most f (n). Recall that when we rebuild the data structures, Mo and Mn , all edges are set to old. We pick an arbitrary edge on each inner boundary of F of the first type, and call it the representative of the inner boundary. Each representative is inserted before the latest reconstruction, and is set to communal later. It becomes communal due to a pair (F ′ , e′ ), where F ′ is a face of Mo and e′ is an edge inserted or deleted after the latest reconstruction, such that the insertion or deletion of e′ makes the edges on a boundary component of F ′ communal, and e was on this boundary component of F ′ at that moment. See Figure 2. If the representatives of all first-type inner boundaries of F are induced by distinct pairs, it is clear that the number of the first-type inner boundaries of F is O(f (n)). But it is possible that the representative of some inner boundaries of F are induced by the same pair (F ′ , e′ ). Consider the representatives of some inner boundaries of F that are induced by the same pair (F ′ , e′ ). The insertion of deletion of e′ makes the outer boundary of F ′ become communal. In the case that e′ connects the outer boundary of F ′ and an inner boundary of F ′ , let γ be the 7 e F′ F e e′ (a) (b) Figure 2: (a) Subdivision Mo . All edges are old. (b) Subdivision Mn . The two dashed edges are deleted after the reconstruction, which makes all outer boundary edges become communal. Then the edges on the leftmost triangle (hole) are inserted. cycle consisting of the outer boundary of F ′ , the inner boundary of F ′ and e′ . Let γ be the outer boundary of F ′ , otherwise. All representatives induced by (F ′ , e′ ) are on γ, and therefore they are connected after e′ is inserted or before e′ is deleted. Notice that any two of such representatives are disconnected later. This means that γ becomes at least t connected components due to the removal of t edges on it, where t is the number of the representatives induced by (F ′ , e′ ). The total number of edges that are removed after the latest reconstruction is O(f (n)), and each edge that are removed after the latest reconstruction can be a representative of at most two first-type inner boundaries of F . Therefore, the total number of the representatives of the first-type inner boundaries of F is also O(f (n)). Consider an inner boundary of the second type. Since each edge is incident to at most one inner boundary of F , the number of the second-type inner boundaries is at most the number of new edges. Therefore, there are O(f (n)) second-type inner boundaries of Mn . 4.2 Two data structures We maintain two data structures: Do , a semi-dynamic point location for old and communal edges, and Dn , a fully dynamic point location for new and communal edges. In this subsection, we describe the data structures Do and Dn . The update procedures are described in Section 5. Semi-dynamic point location for old and communal edges. After each reconstruction, we construct the point location data structure Do supporting only DeleteEdge described in Section 3 for all edges in the current subdivision, which takes O(n log n) time. Recall that all edges in the current subdivision are old at this moment. In Section 5, we will see that the amortized time for reconstructing Do is O(n log n/f (n)) at any moment, where n is the number of all edges in the subdivision at the moment. As update operations are processed, some old or communal edges are deleted, and thus we remove them from Do . Notice that no edge is inserted to Do by the definition of old and communal edges. In addition to this, we store the old edges on each boundary component of the faces of Mo in a concatenable queue. Notice that such edges are not necessarily contiguous on the boundary component. In spite of this fact, we can traverse the old edges along a boundary component of each face of Mo in time linear in the number of the old edges due to the concatenable queu for the old edges. Fully dynamic point location for new and communal edges. Let En be the set of all new and communal edges and Mn be the subdivision induced by En . Also, let Eo denote the set of all old and communal edges and Mo be the subdivision induced by Eo . 8 We maintain a dynamic data structure that supports vertical ray-shooting queries for En . The update time U (n) is O(log n log log n) and the query time Q(n) is O(log n(log log n)2 ) if we use the data structure by Chan and Nekrich [5]. Or, there are alternative data structures with different update and query times [2, 3, 6]. We also maintain the boundary of each face F of Mn . We store each connected component of the boundary of F in a concatenable queue. More specifically, a concatenable queue represents a cyclic sequence of the edges in a connected component of the boundary of F . Since e is incident to at most two faces of Mn , there are at most two such elements in the queues. We implement the concatenable queues using the 2-3 trees. We choose an element in each queue and call it the root of the queue. For a concatenable queue implemented by a 2-3 tree, we choose the root of the 2-3 tree as the root of the queue. Given any element of a queue, we can access the root of the queue in O(log n) time. For an inner boundary of a face F of Mn , we let the root of the queue for this inner boundary point to the root of the queue for the outer boundary of F . We also make the root of the queue for the outer boundary of F point to the root of the queue for all inner boundaries of F . Also, we let each edge of En point to its corresponding elements in the queues. We maintain a balanced binary search tree on the vertices of Mn sorted in a lexicographical order so that we can check whether a point in the plane is a vertex of Mn in O(log n) time. Also, for each vertex of Mn , we maintain a balanced binary search tree on the edges incident to it in Mn in clockwise order around it. The update procedure of this data structure is straightforward, and the update time is subsumed by the time for maintaining the boundaries of the faces of Mn . Thus, in the following, we do not mention the update of this structure. Lemma 3. The data structures Do and Dn have size O(n). 5 Update procedures for fully dynamic point location We have two update operations: InsertEdge(e) and DeleteEdge(e). Recall that we rebuild the data structures periodically. More precisely, we reconstruct the data structures if we have processed f (n) updates since the latest reconstruction time, where n is the number of the edges we have at the moment. After the reconstruction, the data structure Dn becomes empty. This is simply because the reconstruction resets all edges to old. For the data structure Do , we will show that the amortized time for reconstruction is O(n log n/f (n)). Also, this data structure is updated as some old or communal edges are deleted. In this section, we present a procedure for updates of the two data structures. Recall that we use Mo to denote the subdivision induced by the old and communal edges, and Mn to denote the subdivision induced by the new and communal edges. We use the subdivisions, Mo and Mn , only for description purpose, and we do not maintain them. 5.1 Common procedure for edge insertions and edge deletions We are given operation InsertEdge(e) or DeleteEdge(e) for an edge e. Recall that we construct Do and Dn periodically. The reconstruction period f : N → N is an increasing function satisfying that f (n)/2 ≤ f (n/2) ≤ n/4 for every n larger than a constant. During the process, we receive update operations. We use an integer index i to denote the interval between the time when we receive the ith operation and the time when we receive the (i + 1)th operation. We consider two consecutive reconstructions that occur at time i and at time j. Let ni and nj denote the numbers of edges at times i and j, respectively. 9 Lemma 4. The amortized reconstruction time of Do is O(n log n/f (n)), where n is the number of all edges at the moment. Proof. Consider the two consecutive reconstructions occur at time stamps i and j with i < j. The amount of time for the reconstruction at time j is O(nj log nj ). Imagine that the reconstruction time is distributed equally to the update operations occurring between i + 1 to j. Then the amortized reconstruction time per update operation in this period is O(nj log nj /(j − i)). We claim that O(nj log nj /(j − i)) is O(n log n/f (n)), where n is the number of edges at any fixed time in the period from time i + 1 to time j. By the reconstruction scheme, we have f (nj ) = j − i. We also have n − f (nj ) ≤ nj ≤ n + f (nj ) because each update operation inserts or deletes exactly one edge to the current subdivision. Since f (nj ) ≤ nj /2, we have nj ≤ 2n. Thus, we have nj log nj /(j − i) = nj log nj /f (nj ) ≤ 2n log 2n/f (nj ). The only remaining thing is to show that f (nj ) ≥ c · f (n) for some constant c > 0. We first claim that nj ≥ n/2. Assume to the contrary that nj < n/2. Since n − f (nj ) ≤ nj and f (·) is increasing, we have n/2 < f (nj ) < f (n/2), which contradicts that f satisfies f (n/2) ≤ n/4. Therefore, nj ≥ n/2. Since f (·) is increasing, we have f (nj ) ≥ f (n/2) ≥ f (n)/2. Therefore, the lemma holds. The insertion or deletion sets some old edges to communal. By applying a point location query for an endpoint of e in Mo , we find the faces F of Mo such that the boundary of F contains an endpoint of e or the interior of F is intersected by e. All edges lying on the outer boundary and at most one inner boundary of F become communal. We insert them and e to the data structure Dn for vertical ray shooting queries. This takes O(N · U (n)) time, where N denotes the number of all edges inserted to the data structure. It is possible that some edges of the faces are already communal. In this case, we avoid removing (also accessing) such edges by using the concatenable queue representing the cyclic sequence of the old edges on each boundary component of F . Lemma 5. The average number of old edges which are set to communal is O(n/f (n)) at any moment, where n is all edges at the moment. Proof. Consider the two consecutive reconstructions occur at time stamps i and j with i < j. In the period from time i to j, at most ni old edges are set to communal in total because each edge we have at time i is set to communal at most once. Imagine that the number of old edges which are set to communal is distributed equally to the update operations occurring between i + 1 to j. Then the average number of old edges which are set to communal per update operation in this period is O(ni /(j − i)). We claim that ni /(j − i) = O(n/f (n)), where n is the number of edges at any fixed time in the period from time i + 1 to time j. By the reconstruction scheme, we have f (nj ) = j − i. We also have n − f (nj ) ≤ ni ≤ n + f (nj ) because each update operation inserts or deletes exactly one edge. Since f (nj ) ≤ nj /2 and n/2 ≤ nj ≤ 2n as we already showed in Lemma 4, we have ni ≤ 2n. Thus, we have ni /(j − i) = ni /f (nj ) ≤ 2n/f (nj ) = O(n/f (n)). Corollary 6. The amortized time for inserting new and communal edges to the vertical ray shooting data structure in Dn is O(n · U (n)/f (n)). Proof. By Lemma 5, the average number of old edges which are set to communal is O(n/f (n)). We use the notations defined in the proof of Lemma 5. In the period between i and j, we insert O(ni ) edges to the vertical ray shooting data structure in total because each edge we have at time i is inserted to the structure at most once. Thus the amortized update time of Dn at any moment in this time is O(n · U (n′ )/f (n)), where n′ is the maximum number of the edges we have in the period. 10 We claim that n′ ≤ 2n. Since n′ − f (nj ) ≤ n and nj ≤ 2n, we have n′ ≤ f (nj ) + n ≤ f (2n) + n ≤ 2f (n) + n ≤ 2n. Assuming that U (n) is an increasing sublinear function, we have U (n′ ) = U (2n) = O(U (n)), which implies the lemma. 5.2 Edge insertions We are given operation InsertEdge(e) for an edge e. For the data structure Do , we do nothing since the set of the old and communal edges remains the same. For the data structure Dn , we are required to insert one new edge e and several communal edges. In other words, we are required to update the ray shooting data structure, the concatenable queues and the pointers associated to each edge of En . We first process the update due to the communal edges, and then process the update due to the new edge e. The process for the new edge e is the same as the process for the communal edges, except that there is only one new edge e, but there are O(n/f (n)) communal edges (amortized). In the following, we describe the process for the communal edges only. Let En be the union of the closures of all edges of En , where En is the set of the new and communal edges before InsertEdge(e) is processed. Recall that it is not necessarily connected. Recall that the old edges on the outer boundary of the face intersected by e become communal. If the outer boundary is connected to an inner boundary, we also set the edges of the inner boundary to communal. In this case, let γ be the cycle consisting of these two boundary components and e. Otherwise, let γ be the outer boundary of the face in Mo intersecting e. If γ consists of only communal edges, we do nothing. Thus we assume that it contains at least one old edge. We insert the old edges of γ to Dn in O(n · U (n)/f (n)) amortized time by Corollary 6. Recall that the average number of such edges is O(n/f (n)) by Corollary 6. Now we update the concatenable queues and the pointers made by the communal edges on γ in O(f (n)Q(n) + n log n/f (n)). Let F be the face of Mn intersected by γ. Lemma 7. The curve γ intersects no connected component of En enclosed by γ assuming that γ contains at least one old edge. Proof. Assume that γ intersects a connected component of En enclosed by γ. Since γ comes from Mo , neither communal nor old edge is incident to γ. Thus, there is a new edge incident to γ. Consider the subdivision induced by all new and communal edges restricted to the region enclosed by γ after γ is inserted. In this subdivision, there is a face F incident to both a new edge en and an old edge eo . Note that en is inserted after the latest reconstruction. When it was inserted, all outer boundary edges of the face F ′ that was intersected by en in the subdivision M′ of the old and communal edges at the moment were set to communal. Since a communal edge is set to old only by a reconstruction, the only possibility for eo to remain as old is that eo was not on the outer boundary of F ′ but on the outer boundary of another face in M′ , and after then it has become an outer boundary edge of F by a series of splits and merges of the faces that are incident to eo . These splits and merges occur only by insertions and deletions of edges, and eo is set to communal by such a change to the face that is incident to eo , and remains communal afterwards. Therefore, eo is not old, which is a contradiction. By Lemma 7, there is a unique face Fγ in the subdivision Mn after the communal edges are inserted such that the outer boundary of Fγ is γ. See Figure 3. The boundaries of F change due to the communal edges, but the boundaries of the other faces remain the same. More precisely, F is subdivided into subfaces, one of which is Fγ . We compute the concatenable queues for each boundary component of the subfaces. We first show how to do this for Fγ . Then we show how to compute all boundaries of every subface in the same time while computing the boundary of Fγ . 11 F Fγ Fγ (a) (b) (c) Figure 3: (a) Subdivision Mn before the communal edges are inserted. (b) The dashed edges are communal edges made by InsertEdge. They subdivide F into three faces one of which is Fγ . The boundary of Fγ is γ. (c) All edges of γ are communal edges set by InsertEdge. Concatenable queue for the outer boundary γ of Fγ . We walk along the old edges of γ which become communal one by one using the concatenable queue for the old edges of γ. We make an empty concatenable queue for γ, and insert such edges one by one. If two consecutive old edges g1 and g2 of γ share no endpoints, there is a polygonal chain between g1 and g2 of γ consisting of communal edges only. Notice that this chain is a part of a boundary component of F . We find the boundary component of F in constant time. We split it with respect to g1 and g2 , and combine one subchain with the concatenable queue for γ. We keep the other subchain for updating the boundary of F . In this way, we can obtain the concatenable queue for the outer boundary γ of Fγ . This takes O(N log n) time, where N is the number of old edges of γ which become communal. Concatenable queues for the inner boundaries of Fγ . A inner boundary β of F might be enclosed by Fγ in the subdivision after the communal edges are inserted. For each inner boundary β of F , we check if it is enclosed by Fγ . To do this, we compute the edge e′ immediately lying above the topmost vertex of β using the vertical ray shooting data structure on all new and communal edges, which include the edges of γ. Using the pointer for each edge e′ pointing to the elements in the concatenable queues, we can find the boundary component βe′ containing e′ in constant time. If βe′ is γ, we can determine if β is enclosed by Fγ immediately. Otherwise, β is enclosed by Fγ if and only if βe′ is enclosed by Fγ . Therefore, we can determine for each inner boundary β of F whether β is enclosed by Fγ in O(f (n)Q(n)) time in total since there are O(f (n)) inner boundaries of F by Lemma 2. Since each inner boundary of Fγ was an inner boundary of F before the communal edges are inserted, there is a concatenable queue for each inner boundary of Fγ whose root node points to the outer boundary of F . We make the root of the concatenable queue to point to Fγ , which takes O(f (n)) time in total for all inner boundaries of γ. Concatenable queues for the boundary of F . We walk along the old edges of γ one by one. Here we compute all endpoints of the old edges of γ that are already in Mn using the balanced binary search tree on the vertices of Mn in O(N log n) time in total. For each old edge e′ with endpoint u on Mn , we locate its position on the balanced binary search tree on the edges incident to u in Mn in the same time. Then we can find the boundary components of F containing u. For each such boundary component, we split its concatenable queue with respect to the vertices of γ on it. In this way, we obtain a number of pieces of the boundary components of F . By combining them with the old edges of γ, we can obtain the outer boundaries of the subfaces of F in O(N log n) time in total. If F is subdivided into exactly two subfaces, the outer boundary of one subface F ′ is the 12 outer boundary of F , and the outer boundary of the other is γ. An inner boundary of F ′ consists of old edges of γ and parts of inner boundaries of F . We can obtain the concatenable queue for this inner boundary similarly in O(N log n) time. Then we are done in this case. In the case that F is subdivided into more than two subfaces, we compute the other inner boundaries of each subface. Notice that they are inner boundaries of F before γ is inserted. We find the subface enclosing each inner boundary of F . This can be done in O(f (n)Q(n)) time in total for every inner boundary edge of F as we did for inner boundaries of Fγ . More precisely, for the topmost vertex of each inner boundary β of F , we find the edge e′ lying immediately above it among all new and communal edges including γ. If e′ is an outer boundary edge of a subface, β is an inner boundary of the subface. Otherwise, e′ is an edge of an inner boundary β ′ of F before γ is inserted. Then β is an inner boundary of a subface F ′ if and only if β ′ is an inner boundary of F ′ . Since there are O(f (n)) inner boundaries of F , this takes O(f (n)Q(n)) time in total. Pointers for edges. Finally, we update the pointers associated to each edge of En and each old edge of γ which become communal. Recall that each edge of En points to the element in the concatenable queues corresponding to it. For the update of the concatenable queues, we do not remove the elements of them. We just make their pointers to point to other elements of the queues. Therefore, we do not need to do anything for En . The only thing we do is to make each old edge of γ to point to the elements in the queues, one representing the outer boundary of Fγ and one representing a boundary component of a subface of F . This takes O(N log n) time, where N is the number of old edges of γ which become communal. Therefore, the overall update time for inserting the communal edges is O(f (n)Q(n) + N log n). Since the average value of N is O(n/f (n)) by Lemma 5, the amortized update time is O(f (n)Q(n) + n log n/f (n)). Similarly, the update time for the insertion of e is O(f (n)Q(n) + log n). The amortized reconstruction time is O(n log n/f (n)) by Lemma 4. Also, the amortized time for inserting the communal edges to the vertical ray shooting data structure is O(n · U (n)/f (n)) by Corollary 6. Therefore, the overall update time is O(f (n)Q(n) + n log n/f (n) + n · U (n)/f (n)), which is O(f (n)Q(n) + n · U (n)/f (n)) since U (n) = Ω(log n). Lemma 8. We can process InsertEdge(e) in O(f (n)Q(n) + n · U (n)/f (n)) amortized time. 5.3 Edge deletions We are given operation DeleteEdge(e) for an edge e. For the data structure Do , we update the semi-dynamic point location data structure on the old and communal edges. We also update the concatenable queues for old edges on the boundary components of a face of Mo . For the data structure Dn , we are required to update the concatenable queues and the pointers associated to each edge of En . Here, we insert O(n/f (n)) communal edges and delete only one edge e from the data structure. The insertion of the communal edges is exactly the same as the case for edge insertions in the previous subsection. The deletion of e is also similar to the update procedure for edge insertions. Consider the union En of the closures of all edges of En \ {e}. There are four cases on the configuration of e: both endpoints of e lie on the same connected component of En , the two endpoints of e lie on two distinct connected components of En , only one endpoint of e lies on En , or no endpoint of e lies on En . See Figure 4. Case 1: Two faces F1 and F2 are merged into one face F . We can find two faces F1 and F2 in Mn incident to e in constant time using the pointers that e has. We merge the concatenable queues, one for the outer boundary of F1 and one for the outer boundary of F2 , 13 (a) (b) (c) (d) Figure 4: (a) The endpoints of e (dashed line segment) lie on the same connected component of En . (b) The endpoints of e lie on distinct connected components of En . (c) Only one endpoint of e lies on En . (d) No endpoint of e lies on En . after removing e from the queues in O(log n) time. The resulting queue represents the outer boundary of F . Every inner boundary of F1 and F2 becomes an inner boundary of F . Thus we make the concatenable queues representing the inner boundaries of F1 and F2 to point to F . The other concatenable queues remain the same. Since F has O(f (n)) inner boundaries by Lemma 2, the update of the pointers for the concatenable queues takes O(f (n)) time. Then we update the pointers associated to each edge of En \ {e}. Recall that each edge of En points to the elements in the concatenable queues corresponding to it. For the update of the concatenable queues, we remove the elements for e only. For the other elements, we just make their pointers to point to other elements of the queues. Therefore, we do not need to do anything for En \ {e}. Case 2: A boundary component γ of F is split into two boundary components of F . We find the boundary component of F containing e in constant time using the pointers that e has. It is possible that the component is an inner boundary of F or an outer boundary of F . For the first one, it is split into two inner boundaries of F . For the second one, it is split into one inner boundary of F and one outer boundary of F . In any case, we delete e from its concatenable queue and split the queue into two pieces with respect to e in O(log n) time. We make each queue to point to the concatenable queue for a boundary component of F accordingly. The other concatenable queues remain the same. Case 3: An edge of a boundary component γ disappears. We update the concatenable queue for this boundary in O(log n) time by deleting the element corresponding to e from the concatenable queue. We do nothing for updating the pointers associated to each edge of En \ {e}. In total, Case 3 can be handled in O(log n) time. Case 4: A boundary component γ disappears. We simply remove the concatenable queue representing this boundary component in constant time. It is an inner boundary of a face F of Mn . The outer boundary of F and γ point to each other. We remove the pointers in constant time. Therefore, the update time for the deletion of e (excluding the time for the insertion of the communal edges) is O(f (n) + log n). The update time for inserting the communal edges is O(n · U (n)/f (n) + f (n)Q(n)). The amortized reconstruction time is O(n log n/f (n)). The deletion of e from the vertical ray shooting data structure takes O(U (n)) time. Also, the deletion of e from Do takes O(α(n)) time. Therefore, the overall update time is O(f (n)Q(n) + n log n/f (n) + n · U (n)/f (n)), which is O(f (n)Q(n) + n · U (n)/f (n)) since U (n) = Ω(log n). 14 Lemma 9. We can process DeleteEdge(e) in O(f (n)Q(n) + n · U (n)/f (n)) time. 6 Query procedure We call the subdivision induced by all old, communal, and new edges the complete subdivision and denote it by Mc . Sometimes we mention a face without specifying the subdivision if the face is in the complete subdivision. Given Do and Dn , we are to answer locate(x), that is, to find the face containing the query point x in Mc . Let Fo and Fn be the faces of Mo and Mn containing x, respectively. By Theorem 1, we can find Fo in O(log n) time. For Fn , we find the edge e of Mn immediately lying above x in Q(n) time using the vertical ray shooting data structure. Then we find the faces containing e on their boundaries using the pointers e has. There are at most two such faces. Since the connected components of the boundary of each face are oriented consistently, we can decide which one contains x in constant time. Therefore, we can compute Fn in O(Q(n)) time in total. To answer locate(x), we need the following lemmas. Lemma 10. No face of Mc contains both an old edge and new edge in its outer boundary. Proof. Assume to the contrary that both a new edge en and an old edge eo lie on the outer boundary of a face F of Mc . Note that en is inserted after the latest reconstruction. When en was inserted, all outer boundary edges of the face F ′ that was intersected by en in Mo at the moment were set to communal. Since a communal edge is set to old only by a reconstruction, the only possibility for eo to remain as old is that eo was not on the outer boundary of F ′ but on the outer boundary of another face in Mo , and after then it has become an outer boundary edge of F by a series of splits and merges of the faces that are incident to eo . These splits and merges occur only by insertions and deletions of edges, and eo is set to communal by such a change to the face that is incident to eo , and remains communal afterwards. This contradicts that eo is old, and this case never occurs. Lemma 11. For any face F in Mc , there exists a face in Mo or in Mn whose outer boundary coincides with the outer boundary of F . Proof. By Lemma 10, the outer boundary of F contains either no new edge or no old edge. Consider the case that the outer boundary of F contains no new edge, that is, all edges on the outer boundary of F are in Mo . No edge of Mo intersects F because all edges of Mo appear in Mc but no edge of Mc intersects F . Thus there is a face in Mo whose outer boundary coincides with the outer boundary of F . Similarly, we can prove the lemma for the case that the outer boundary of F contains no old edge. Using the two lemmas above, we can obtain the following lemma. Lemma 12. For any two points in the plane, they are in the same face in Mc if and only if they are in the same face in Mo and in the same face in Mn . Proof. Assume that two points x and y are in the same face F in Mc . There is a face F ′ in Mo or in Mn whose outer boundary coincides with the outer boundary of F by Lemma 11. Consider a face F ′′ in Mo or Mn enclosed by F ′ . Neither x nor y is enclosed by F ′′ because the edge set of Mo (and Mn ) is a subset of the edge set of Mc . Since the complete subdivision Mc is planar, this implies that x and y are in the same face in both Mo and Mn . Now assume that two points x and y are in different faces in Mc . Let Fx and Fy be the faces containing x and y in Mc , respectively. This means that x is not enclosed by Fy or y is not 15 enclosed by Fx . The outer boundaries of Fx and Fy are distinct. By Lemma 11, there are faces Fx′ and Fy′ in Mo or in Mn whose outer boundaries coincide with the outer boundaries of Fx and Fy , respectively. Note that x is enclosed by Fx′ and y is enclosed by Fy′ . However, either x is not enclosed by Fy′ or y is not enclosed by Fx′ . Therefore, x and y are in different faces in Mo or Mn , which proves the lemma. Lemma 12 immediately gives an O(Q(n))-time query algorithm. We represent the name of each face in Mc by the pair consisting of two faces, one from Mo and one from Mn , corresponding to it. In this way, we have the following lemma. Lemma 13. We can answer any query locate(x) in O(Q(n)) time using Do and Dn . p By setting f (n) = n · U (n)/Q(n), we have the following theorem. Theorem 14. We can construct a data structure of size O(S(n)) so that locate(x) can be answered in O(Q(n)) time for any pointpx in the plane. Each update, InsertEdge(e) or DeleteEdge(e), can be processed in O( n · U (n) · Q(n)) amortized time, where n is the number of edges at the moment. Using the data structure by Chan and Nekrich [5], we set S(n) = n, Q(n) = log n(log log n)2 and U (n) = log n log log n. Corollary 15. We can construct a data structure of size O(n) so that locate(x) can be answered in O(log n(log log n)2 ) time for any point x in the plane. Each update, InsertEdge(e) √ or DeleteEdge(e), can be processed in O( n log n(log log n)3/2 ) amortized time, where n is the number of edges at the moment. 16 References [1] Alfred V. Aho and John E. Hopcroft. The Design and Analysis of Computer Algorithms. Addison-Wesley Longman Publishing Co., Inc., 1974. [2] Lars Arge, Gerth Stølting Brodal, and Loukas Georgiadis. Improved dynamic planar point location. In Proceedings of the 47th Annual IEEE Symposium on Foundations of Computer Science (FOCS 2006), pages 305–314, 2006. [3] Hanna Baumgarten, Hermann Jung, and Kurt Mehlhorn. Dynamic point location in general subdivisions. Journal of Algorithms, 17(3):342–380, 1994. [4] Jon Louis Bentley and James B Saxe. Decomposable searching problems 1: Static-todynamic transformations. Journal of Algorithms, 1(4):301–358, 1980. [5] Timothy M. Chan and Yakov Nekrich. Towards an optimal method for dynamic planar point location. In Proceedings of the 56th Annual IEEE Symposium on Foundations of Computer Science (FOCS 2015), pages 390–409, 2015. [6] Siu-Wing Cheng and Ravi Janardan. New results on dynamic planar point location. SIAM Journal on Computing, 21(5):972–999, 1992. [7] Mark de Berg, Otfried Cheong, Marc van Kreveld, and Mark Overmars. Computational Geometry: Algorithms and Applications. Springer-Verlag TELOS, 2008. [8] Jiřı́ Matousěk. Efficient partition trees. Discrete & Computational Geometry, 8(3), 1992. [9] Mark H. Overmars. Range searching in a set of line segments. Technical report, Rijksuniversiteit Utrecht, 1983. [10] Mark H. Overmars and Jan van Leeuwen. Worst-case optimal insertion and deletion methods for decomposable searching problem. Information Processing Letters, 12(4):168–173, 1981. [11] Neil Sarnak and Robert E. Tarjan. Planar point location using persistent search trees. Communications of the ACM, 29(7):669–679, 1986. [12] Jack Snoeyink. Point location. In Handbook of Discrete and Computational Geometry, Third Edition, pages 1005–1023. Chapman and Hall/CRC, 2017. [13] Robert Endre Tarjan. Efficiency of a good but not linear set union algorithm. Journal of the ACM, 22(2):215–225, 1975. 17