Advertisement

Discrete & Computational Geometry

, Volume 50, Issue 1, pp 124–184 | Cite as

An Approximation Algorithm for Computing Shortest Paths in Weighted 3-d Domains

  • Lyudmil Aleksandrov
  • Hristo Djidjev
  • Anil Maheshwari
  • Jörg-Rüdiger Sack
Article

Abstract

We present an approximation algorithm for computing shortest paths in weighted three-dimensional domains. Given a polyhedral domain \(\mathcal D \), consisting of \(n\) tetrahedra with positive weights, and a real number \(\varepsilon \in (0,1)\), our algorithm constructs paths in \(\mathcal D \) from a fixed source vertex to all vertices of \(\mathcal D \), the costs of which are at most \(1+\varepsilon \) times the costs of (weighted) shortest paths, in \(O(\mathcal{C }(\mathcal D )\frac{n}{\varepsilon ^{2.5}}\log \frac{n}{\varepsilon }\log ^3\frac{1}{\varepsilon })\) time, where \(\mathcal{C }(\mathcal D )\) is a geometric parameter related to the aspect ratios of tetrahedra. The efficiency of the proposed algorithm is based on an in-depth study of the local behavior of geodesic paths and additive Voronoi diagrams in weighted three-dimensional domains, which are of independent interest. The paper extends the results of Aleksandrov et al. (J ACM 52(1):25–53, 2005), to three dimensions.

Keywords

Shortest path problems Weighted paths Weighted 3-d domains Approximation algorithms Voronoi diagrams 

1 Introduction

1.1 Motivation

The computation of shortest paths is a key problem arising in a number of diverse application areas including geographic information systems, robotics, computer graphics, computer-aided design, medical computing and others. This has motivated the study and subsequent design of efficient algorithms for solving shortest path problems in different settings based on the geometric nature of the problem domain [e.g., two-dimensional (2-d), three-dimensional (3-d), surfaces, the presence/absence of obstacles] and the cost function/metric (e.g., Euclidean, \(L_p\), link distance, weighted/unweighted, multi-criteria). In addition to its driver—the applications—the field has provided, and still provides, exciting challenges from a theoretical perspective. As a result, shortest path problems have become fundamental problems in areas of Computer Science such as Computational Geometry and Algorithmic Graph Theory.

The standard 3-d Euclidean shortest path problem of computing a shortest path between a pair of points avoiding a set of polyhedral obstacles, denoted as the ESP3D problem, is known to be NP-hard even when the obstacles are parallel triangles in space. It is not difficult to see that the number of combinatorially distinct shortest paths from a source point to a destination point may be exponential in the input size. Canny and Reif [8] used this to establish the NP-hardness of the ESP3D problem, for any \(L_p\) metric, \(p\ge 1\). In addition to this combinatorial hardness result, Chandrajit and Bajaj [7] has provided an algebraic hardness argument that an exponential number of bits may be required. More recently, Mitchell and Sharir [27] gave NP-completeness proofs for the problem of computing Euclidean shortest paths among sets of stacked axis-aligned rectangles, and computing \(L_1\)-shortest paths among disjoint balls. Given the NP-hardness of the ESP3D problem, work has focused on exploiting the geometric structure of the obstacles and/or on providing approximation algorithms. We will mention some of these approaches in Sect. 1.4.

In many applications, the Euclidean metric does not capture adequately the nature of the problem, for instance, when the problem domain is not homogeneous. This motivates the weighted versions of the shortest path problem. For example in the 2-d (2.5-d) case, consider triangulated regions (triangulated irregular networks) where each triangle represents a particular terrain type such as water, rock, or forest. Here different weights capture the cost of traveling a Euclidean unit-length through each face. Incorporating weights makes the solution more difficult to obtain even in 2-d, but it does provide more realistic answers. It is known that light and other types of waves (e.g., seismic and sonic) travel along the shortest paths in heterogeneous media. Hence, algorithms solving the weighted shortest path problem (WSP3D) can be used for modeling wavefront propagation in such media. In 3-d, a number of applications are non-homogeneous in nature and can be expressed using the weighted model. Next, we list some of such potential applications.
  • In Geology, seismic refraction and reflection methods are employed based on measurements of the travel time of seismic waves refracted at the interfaces between subsurface layers of different densities. Some wave types propagate along shortest paths and weighted shortest path algorithms may be used to produce more accurate and more efficient estimation of subsurface layer characteristics, e.g., the amount of oil contained in the subsurface [16]. Another related application is the assessment of garbage dumps’ health. When a new garbage dump is built, sensors are placed at the bottom, and when the garbage dump starts to fill, waves from the top passing through the garbage to these sensors are used in order to determine the decomposition rate of the garbage [16].

  • Computation of 3-d shortest path has also been used to compute fastest routes for aircrafts between designated origin and destination points, while avoiding hazardous, time-varying weather systems. Krozel et al. [21] investigate synthesizing weather avoidance routes in the transition airspace. Our weighted 3-d region model can be used to generalize that approach: instead of totally avoiding undesirable regions, one can assign penalty weights to them and then search for routes that minimize travel through such regions, while also avoiding unnecessarily long detours.

  • In medical applications simulation of sonic wavefront propagation is used when performing imaging methods as photoacoustic tomography or ultrasound imaging through heterogeneous tissue [12, 33]. In radiation therapy, domain features include densities of tissue, bone, organs, cavities, or risk to radiation exposure, and optimal radiation treatment planning takes this non-homogeneity into consideration.

  • The problem of time-optimum movement planning in 2-d and 3-d for a point robot that has bounded control velocity through a set of \(n\) polygonal regions of given translational flow velocities has been studied by Reif and Sun [30]. They state that this intriguing geometric problem has immediate applications to macroscale motion planning for ships, submarines, and airplanes in the presence of significant flows of water or air. Also, it is a central motion planning problem for many of the mesoscale and microscale robots that have environments with significant flows that can affect their movement. They establish the computational hardness for the 3-d version of this problem by showing the problem to be PSPACE hard. They give a decision algorithm for the 2-d flow path problem, which has very high computational complexity, and they also design an efficient approximation algorithm with bounded error. The determination of the exact computational complexity of the 3-d flow path problem is posed as an open problem. Although our weighted 3-d model does not apply directly to this setting, it may be useful for constructing initial approximations by assigning appropriate weights depending on the velocity and direction of the flows in different regions. In addition, the discretization scheme and the algorithmic techniques developed here may also be useful for solving the 3-d flow path problem.

1.2 Problem Formulation

In this paper, we consider the following problem. Let \(\mathcal D \) be a connected 3-d domain consisting of \(n\) tetrahedra with a positive real weight associated to each of them. The 3-d weighted shortest path problem (WSP3D) is to compute minimum cost paths in \(\mathcal D \) from a fixed source vertex to all vertices of \(\mathcal D \). The cost of a path in \(\mathcal D \) is defined as the weighted sum of the Euclidean lengths of the sub-paths within each crossed tetrahedron. We will describe and analyze an approximation algorithm for this problem that, for any real number \(\varepsilon \in (0,1)\), computes paths the costs of which are at most \(1+\varepsilon \) times greater than the costs of the minimum cost paths. In Sect. 2, we describe our model in detail.

Note that the WSP3D problem can be viewed as a generalization of the ESP3D problem. Namely, given an instance of the ESP3D problem, one can find a large enough cube containing all the obstacles, tetrahedralize the free space (i.e., exterior of the obstacles, but in the interior of the cube) and set equal weights to the resulting tetrahedra obtaining an instance of the WSP3D problem.

1.3 Challenges

A key difference between Euclidean shortest path computation in 2-d and 3-d weighted domain is the NP ardness already mentioned. Underlying this is the fact that, unlike in 2-d, the search space for an Euclidean 3-d shortest path is not discrete. Specifically, in 2-d, the edges of a shortest path (e.g., Euclidean shortest paths among obstacles in the plane) are edges of a graph, namely the visibility graph of the obstacles including the source and the destination points. In contrast, in polyhedral 3-d domains, the bending points of shortest paths on obstacles may lie in the interior of the obstacles’ edges. Moreover, in weighted 3-d settings, bending points may even belong to the interior of the faces.

Furthermore, even in the case of weighted triangulated planar domains, the (weighted) shortest path may be composed of \(\Theta (n^2)\) segments. Not only is the path complexity higher but also computation of weighted shortest paths in 2-d turns out to be substantially more involved than in the Euclidean setting. In fact, no exact algorithm is even known, and the first \((1+\varepsilon )\) approximation algorithm described in [26] had an \(O(n^8\log (\frac{n}{\varepsilon }))\) time bound, where \(n\) is the number of triangles in the subdivision. This problem has been actively researched since then, and currently the best known in terms of \(n\) and \(\varepsilon \) algorithm for the weighted region problem on planar subdivisions (as well as on polyhedral surfaces) runs in \(O(\frac{n}{\sqrt{\varepsilon }}\log \frac{n}{\varepsilon }\log \frac{1}{\varepsilon })\) time [3]. The constants involved in the big-O notation in the bounds on the time complexity of all known to us algorithms depend in various ways on the geometry of the subdivision and/or on the weights. (See [3] for a detailed literature review and discussion for the planar case.)

One of the classical tools of computational geometry is the Voronoi diagram. This structure finds numerous applications (see e.g., [6]). It is also a key ingredient in several efficient shortest path algorithms. Researchers have studied these diagrams under several metrics (including Euclidean, Manhattan, weighted, additive, convex, abstract) and for different types of objects (including points, lines, curves, polygons), but somehow the computation of these diagrams in media with different densities (i.e., the refractive media) remained elusive. One of the main ingredients in solving the problem studied here is to compute (partial) additive Voronoi diagrams of points in refractive media. The generic techniques of Klein [19], Klein et al. [20] and Lê [23] do not apply in this case, as the bisecting surfaces do not satisfy the required conditions. In this paper, we make an important step toward the understanding and computation of these diagrams.

1.4 Previous Related Work

By now, shortest path problems in 2-d are fairly well understood. Efficient algorithms have been developed for many problem instances and surveys are readily available describing the state of the art in the field. In 3-d, virtually all the work has been devoted to the ESP3D problem. Papadimitriou [29] suggested the first polynomial time approximation scheme for that problem. It runs in \(O(\frac{n^4}{\varepsilon ^2}(L+\log (n/\varepsilon )))\) time, where \(L\) is the number of bits of precision in the model of computation. Clarkson [11] provided an algorithm running in \(O(n^2\lambda (n)\log (n/{\varepsilon })/{(\varepsilon ^4)}+n^2\log n\rho \log (n\log \rho ))\) time, where \(\rho \) is the ratio of the longest obstacle edge to the distance between the source and the target vertex, \(\lambda (n)={\alpha (n)}^{O(\alpha (n))^{O(1)}}\), and \(\alpha (n)\) is the inverse Ackermann’s function.

Papadimitriou’s algorithm was revised and its analysis was refined by Choi et al. [9] under the bit complexity framework. Their algorithm runs roughly in \(O(\frac{n^4L^2}{\varepsilon ^2}\mu (X))\) time, where \(\mu (X)\) represents the time (or bit) complexity of multiplying \(X\)-bit integers and \(X=O(\log (\frac{n}{\varepsilon })+L)\). In [10], the same authors further developed their ideas and proposed a precision-sensitive algorithm for the ESP3D problem. In [5], Asano et al. proposed and studied a technique for computing approximate solutions to optimization problems and obtained another precision-sensitive approximation algorithm for the ESP3D problem with improved running time in terms of \(L\).

Har-Peled [13] proposed an algorithm that invokes Clarkson’s algorithm as a subroutine \(O(\frac{n^2}{\varepsilon ^2}\log \frac{1}{\varepsilon })\) times to build a data structure for answering approximate shortest path queries from a fixed source in \(O(\log \frac{n}{\varepsilon })\) time. The data structure is constructed in roughly \(O(\frac{n^6}{\varepsilon ^4})\) time. Agarwal et al. [1] considered the ESP3D problem for the case of convex obstacles and proposed an approximation algorithm running in \(O(n+\frac{k^4}{\varepsilon ^7}\log ^2\frac{k}{\varepsilon }\log \log k)\) time, where \(k\) is the number of obstacles. In contrast to all other algorithms discussed here, the complexity of this algorithm does not depend on the geometric features of the obstacles. In the same paper, the authors describe a data structure for answering approximate shortest path queries from a fixed source in logarithmic time.

In the weighted (non-Euclidean) 3-d case no previous algorithms have been reported by other authors. In [2], we have announced and sketched an approximation scheme for WSP3D problem that runs in \(O(\frac{n}{\varepsilon ^{3.5}}\log \frac{1}{\varepsilon }(\frac{1}{\sqrt{\varepsilon }}+\log n))\) time (ignoring the geometric parameters). Furthermore, the run-time improves to \(O(\frac{n}{\varepsilon ^3}\log \frac{1}{\varepsilon }\log n)\) when all weights are equal. In this paper, we apply that approach, but develop the required details, apply new techniques, improve the complexity bounds, and provide a rigorous mathematical analysis.

1.5 Contributions of This Paper

In this paper, we make several contributions to the fields of shortest path computations and the analysis of the weighted 3-d regions model, as listed below.
  • We provide an approximation algorithm for solving the WSP3D problem in a polyhedral domain \(\mathcal D \) consisting of \(n\) weighted tetrahedra. The algorithm computes approximate weighted shortest paths from a source vertex to all other vertices of \(D\) in \(O(\mathcal{C }(\mathcal D )\frac{n}{\varepsilon ^{2.5}}\log \frac{n}{\varepsilon }\log ^3\frac{1}{\varepsilon })\) time, where \(\varepsilon \in (0,1)\) is the user-specified approximation parameter and \(\mathcal{C }(\mathcal D )\) is a geometric parameter related to the aspect ratios of tetrahedra.1 The costs of the computed paths are within a (multiplicative) factor of \(1+\varepsilon \) of the cost of the corresponding shortest paths. As we stated above, the ESP3D problem, i.e., the unweighted version of this problem, is already NP-hard even when the obstacles are parallel triangles in the space [8]. The time complexity of our algorithm, which is designed for the more general weighted setting, compares favorably even when applied in the Euclidean setting to the existing approximation algorithms.

  • Our detailed analysis, especially the results on additive Voronoi diagrams derived in Sect. 2, provides valuable insights into the understanding of Voronoi diagrams in heterogeneous media. This may open new avenues, for example, for designing an algorithm to compute discretized Voronoi diagrams in such settings.

  • Our approximation algorithms in 2-d have proven to be easily implementable and be of practical value [22]. They have been applied in a variety of different settings such as multi-resolution mesh morphing [24], interactive mesh fusion [17], topology matching [14], Cultural Heritage Toolbox [28], metamorphosis of arbitrary triangular meshes [18], and in the context of studying locally deepest regions of major sulci on the cortical surface [15]. Our algorithm for WSP3D presented here, in spite of being hard to analyze, essentially uses similar primitives, and thus also has the potential to be implementable, practical, and applicable in different areas.

  • Our work provides further evidence that discretization is a powerful tool when solving shortest path-related problems in both Euclidean and weighted settings. We conjecture that the discretization methodology used here generalizes to any fixed dimension. Furthermore, our discretization scheme is independent of the source vertex and can be used with no changes to approximate paths from other source vertices. This feature makes it applicable for solving the all pairs shortest paths problem and for designing data structures to answer shortest path queries in weighted 3-d domains.

  • The complexity of our algorithm does not depend on the weights assigned to the tetrahedra composing \(\mathcal D \), but only depends on their geometry. We analyze and evaluate that dependence in detail. Geometric dependencies arise also in Euclidean settings and in most of the previous papers. For example, in Clarkson [11], the running time of the algorithm depends on the ratio of the longest edge to the distance between the source and the target vertex. Applying known techniques (see e.g., [1]), such dependency can often be removed. Here, this would be possible provided that an upper bound on the number of segments on weighted shortest paths in 3-d is known. However, the increase in the dependency on \(n\) in the time complexity that these techniques suffer from, which is of order \(\Omega (n^2)\), appears not to justify such an approach here. Moreover, in this case, the dependency on the ratio of weights may be required, at the expense of removing the dependency on geometric features. In our approach, the dependency on the geometry is proportional to the average of quantities related to aspect ratios of the tetrahedra composing \(\mathcal D \). Thus, when \(n\) is large, many tetrahedra would have to be fairly degenerate so that this average to play a major role. We therefore conjecture that in typical applications, the approach presented here would work well.

1.6 Organization of the Paper

In Sect. 2, we describe the model used throughout this paper, formulate the problem, present some properties of shortest paths in 3-d, and derive a key result on additive Voronoi diagrams in refractive media. In Sect. 3, we describe our discretization scheme which is a generalization of the 2-d scheme introduced in [3]. In Sect. 4, we construct a weighted graph, estimate the number of its nodes and edges, and prove that shortest paths in \(\mathcal D \) can be approximated by paths in the graph so constructed. In Sect. 5, we present our algorithm for the WSP3D problem. In Sect. 6, we conclude this paper.

2 Problem Formulation and Preliminaries

2.1 Model

Let \(\mathcal{D }\) be a connected polyhedral domain in 3-d Euclidean space. We assume that \(\mathcal{D }\) is partitioned into \(n\) tetrahedra \(T_1, \ldots , T_n\), such that \(\mathcal{D }=\cup _{i=1}^n T_i\) and the intersection of any pair of different tetrahedra is either empty or a common element (a face, an edge, or a vertex) on their boundaries. We call these tetrahedra cells. A positive weight \(w_i\) is associated with each cell \(T_i\) representing the cost of traveling in it. The weight of boundary element of cell is the minimum of the weights of the cells incident to that boundary element. We consider paths (connected rectifiable curves) that stay in \(\mathcal{D }\). The cost of a path \(\pi \) in \(\mathcal{D }\) is defined by \( \Vert \pi \Vert =\sum _{i=1}^n w_i|\pi _i|\), where \(|\pi _i|\) denotes the Euclidean length of the intersection \(\pi _i=\pi \cap T_i\). Boundary edges and faces are assumed to be part of the cell from which they inherit their weight.

Given two distinct points \(u\) and \(v\) in \(\mathcal{D }\), we denote by \(\pi (u,v)\) any of the minimum cost paths between \(u\) and \(v\) that stays in \(\mathcal{D }\). We refer to the minimum cost paths as shortest paths. For a given approximation parameter \(\varepsilon >0\), a path \(\pi _\varepsilon =\pi _\varepsilon (u,v)\) is an \(\varepsilon \)-approximation of the shortest path \(\pi =\pi (u,v)\), if \(\Vert \pi _\varepsilon \Vert \le (1+\varepsilon )\Vert \pi \Vert \). In this paper, we present an algorithm that, for a given source vertex \(u\) and an approximation parameter \(\varepsilon \in (0,1)\), computes \(\varepsilon \)-approximate shortest paths from \(u\) to all other vertices of \(\mathcal D \).

In this setting, it is well known [26]2 that shortest paths are simple (non-self-intersecting) and consist of a sequence of segments, the end-points of which are on the cell boundaries. The intersection of a shortest path with the interior of a cell, a face, or an edge is a set of disjoint segments. More precisely, each segment on a shortest path is of one of the following three types:
  1. (i)

    Cell-crossing—a segment that crosses a cell joining two points on its boundary;

     
  2. (ii)

    Face-using—a segment lying along a face of a cell; or

     
  3. (iii)

    Edge-using—a segment along an edge of a cell.

     
We define linear paths to be paths consisting of cell-crossing, face-using, and edge-using segments exclusively. A linear path \(\pi (u,v)\) can be represented as the sequence of its segments \(\{s_1, \ldots , s_{l+1}\}\) or, equivalently, as the sequence of points \(\{a_0,\ldots ,a_{l+1}\}\), lying on the cell boundaries that are end-points of these segments, i.e., \(s_i=(a_{i-1},a_i),\,u=a_0\), and \(v=a_{l+1}\). The points \(a_i\) that are not vertices of cells are called bending points of the path.
The local behavior of a shortest path around a bending point \(a\), lying in the interior of a face \(f\), is fully described by the directions of the two segments of the shortest path, \(s^-\) and \(s^+\), that are incident to \(a\). The direction of each of these two segments is described by a pair of angles, which we denote by \((\varphi ^-, \theta ^-)\) and \((\varphi ^+, \theta ^+)\), respectively. The in-angle \(\varphi ^-\) is defined to be the acute angle between the direction normal to \(f\) and the segment \(s^-\). Similarly, the out-angle \(\varphi ^+\) is the acute angle between the normal and the segment \(s^+\). The angles \(\theta ^-\) and \(\theta ^+\) are the acute angles between the orthogonal projections of \(s^-\) and \(s^+\) with a reference direction in the plane containing the face \(f\), respectively (see Fig. 1).
Fig. 1

The figure illustrates Snell’s law of refraction. Also, it shows the shortest path \(\bar{\pi }(v,\mathbf{x})=\{v,a,\mathbf{x}\}\) from a point \(v\) in the lower half-space to a point \(\mathbf{x}\) on line \({\ell }\) parallel to \(F\) and lying in the upper half-space

It is well known that when \(\pi \) is a shortest path then it is a linear path and the angles \((\varphi ^-, \theta ^-)\) and \((\varphi ^+, \theta ^+)\) are related by Snell’s law as follows:

Snell’s Law of Refraction

Let \(a\) be a bending point on a geodesic path \(\pi \) lying in the interior of a face \(f\) of \(D\). Let the segments preceding and succeeding \(a\) in \(\pi \) be \(s^-\) and \(s^+\), respectively. Let the weights of the cells containing \(s^-\) and \(s^+\) be \(w^-\) and \(w^+\), respectively. Then \(s^+\) belongs to the plane containing \(s^-\) and a perpendicular to \(f\) and the angles \(\varphi ^-\) and \(\varphi ^+\) are related by \(w^-\sin \varphi ^- =w^+\sin \varphi ^+\).

We refer to linear paths that are locally optimal (i.e., satisfy Snell’s law) as geodesic paths. The shortest path between pair of vertices \(u\) and \(v\) has to be a geodesic path, but there might be multiple geodesic paths joining \(u\) and \(v\). Hence the shortest path between pair of vertices \(u\) and \(v\) is the geodesic path of smallest cost joining them. Below, we discuss some of the implications of Snell’s law on the local behavior of geodesic paths.

We consider the case where \(w^-\ge w^+\). The case \(w^-\le w^+\) is symmetric. Let \(\varphi ^*\) be the acute or right angle for which \(\sin \varphi ^*=w^+/w^-\). We refer to this angle as the critical angle for the face \(f\). From Snell’s law, it follows that \(\varphi ^-\le \varphi ^*\). The case where \(\varphi ^-=\varphi ^*\) deserves a special attention. In this case, \(\varphi ^+\) must be a right angle and therefore the segment \(s^+\) is a face-using segment. Furthermore, if the second end-point, \(a_1\), of \(s^+\) is in the interior of \(f\), then the segment following \(s^+\) must be inside the tetrahedron containing \(s^-\), and the out-angle at \(a_1\) must be equal to \(\varphi ^*\) (see Fig. 2a). In summary, if \(s\) is a face-using segment, then it is preceded and followed by segments lying in the cell with the bigger weight and their corresponding in-angle and out-angles are equal to the critical angle \(\varphi ^*\).
Fig. 2

The diagram a shows the structure of the geodesic path \(\bar{\pi }(v,\mathbf{x})=\{v,a,a_1,\mathbf{x}\}\) in the case where \(\ell \) is in the lower half-space. In most of the cases \(a\) and \(a_1\) coincide and the path \(\{v,a=a_1,\hat{\mathbf{x}}\}\) is a segment. The diagram b illustrates how we eliminate considering the case when \(\ell \) is in \(F^-\) by assigning weight \(w\) to \(F\), such that \(w=min(w^-,w^+)\) if \(w^-\not =w^+\) and \(w\le w^-=w^+\) in the case where \(w^-=w^+\)

In the next subsection, we study the properties of simple geodesic paths between points in neighboring cells or in the same cell through a face-using segment. We consider a simplified situation, where the two neighboring cells are half-spaces separated by a single plane. We define a function related to the cost of these geodesic paths and prove a number of properties that it possesses. These properties are essential to the design and the analysis of our algorithm.

2.2 Weighted Distance Function

Let \(F\) be a plane in the three-dimensional Euclidean space. We denote the two open half-spaces defined by \(F\) by \(F^-\) and \(F^+\) and assume that positive weights \(w^-\) and \(w^+\) have been associated with them, respectively. We refer to \(F^-\) as the lower half-space and to \(F^+\) as the upper half-space. Let \(v\) be a point in \(F^-\) and let \(\ell \) be a line parallel to \(F\). In this section, we study paths between \(v\) and points \(\mathbf{x}\) on \(\ell \) that are required to cross (to have a non-empty intersection with) the plane \(F\). We study the structure and the behavior of shortest paths of this type as well as some properties of a function measuring the weighted distance defined by the cost of these paths.

In the case where \(\ell \) is in the upper half-space, any path joining \(v\) and \(\mathbf{x}\in \ell \) crosses \(F\) and the crossing requirement is not a restriction. There is a single geodesic path joining \(v\) and \(\mathbf{x}\) in this case, which we denote by \(\bar{\pi }(v,\mathbf{x})\), and hence the shortest path coincides with it. The structure of the path \(\bar{\pi }(v,\mathbf{x})\) is governed by Snell’s law and it consists of two segments \((v,a)\) and \((a,\mathbf{x})\). The bending point \(a\) is in \(F\) and its position is uniquely determined by Snell’s law (Fig. 1). In the case where \(\ell \) is in the lower half-space, the requirement on the paths to cross \(F\) is essential. In this case, the geodesic path \(\bar{\pi }(v,\mathbf{x})\) joining \(v\) and \(x\) is unique and the shortest path coincides with it. The path \(\bar{\pi }(v,\mathbf{x})\) is of the form \(\{v,a,a_1,\mathbf{x}\}\), where the bending points \(a\) and \(a_1\) are in \(F\) and their position is uniquely determined by Snell’s law. Namely, the path lies in the plane perpendicular to \(F\) that contains \(v\) and \(\mathbf{x}\) and the in-angle at \(a\) is equal to the out-angle at \(a_1\). In fact, in all cases except one, the bending points \(a\) and \(a_1\) coincide and lie at the intersection point of \(F\) and the line through \(v\) and the point \(\hat{x}\) symmetric to \(\mathbf{x}\) with respect to \(F\). The points \(a\) and \(a_1\) are different only in the case where \(w^->w^+\) and the acute angle between the line through \(v\) and \(\hat{\mathbf{x}}\) and the direction normal to \(F\) is greater than the critical angle \(\varphi ^*\) (defined by \(\sin \varphi ^*=w^+/w^-\)). In this case the path \(\bar{\pi }(v,\mathbf{x})\) consists of three segments as shown in Fig. 2a. We observe that the path \(\{v,a,a_1,\hat{\mathbf{x}}\}\) joining \(v\) to the point symmetric to \(\mathbf{x}\) with respect to \(F\) is simply the segment \((v,\hat{\mathbf{x}})\) in all cases except for the latter. So, it is possible and appropriate to model the case where \(\ell \) is in the lower half-space as follows. We assume that the weights assigned to the lower and upper half-spaces are equal to \(w^-\), but the plane \(F\) has its own weight \(w=\min (w^-,w^+)\). Then we consider geodesic paths joining \(v\) to points on the line in the upper half-space that is symmetric to \(\ell \) with respect to \(F\). Using this trick, we will avoid considering different cases, and simplify our arguments in this section.

Thus, throughout this section we slightly extend our model by assigning additional weight \(w\) to the plane \(F\), so that \(w=\min (w^-,w^+)\) if \(w^-\not =w^+\), and \(w\le w^-\) if \(w^-=w^+\). Then we do not need to consider the case where \(\ell \) is in \(F^-\) separately and can assume that \(\ell \) is always in \(F^+\) (Fig. 2b).

We assume that the distance from the point \(v\) to \(F\) is \(z^-\), the distance from the line \(\ell \) to \(F\) is \(z^+\), and the distance between projections of \(v\) and \(\ell \) in \(F\) is \(y\). Let \(O_{xyz}\) be a Cartesian coordinate system such that the plane \(O_{xy}\) coincides with \(F, v\) has coordinates \((0,y,-z^-)\), and the line \(\ell \) is described by \(\{\ell :\ y=0,\ z=z^+\}\). A point \(\mathbf{x}\) on \(\ell \) then has coordinates \(\mathbf{x}=(x,0,z^+)\). As discussed above the geodesic path \(\bar{\pi }(v,\mathbf{x})\) between \(v\) and \(\mathbf{x}\) is unique and coincides with the shortest path. We denote the cost of this path by \(c(v,x)\), where \(x\) is the \(x\)-coordinate of \(\mathbf{x}\). So, for fixed \(\ell , c(v,x)\) can be viewed as a function defined for any real \(x\). We call \(c\) the weighted distance function from \(v\) to \(\ell \) (Fig. 3).
Fig. 3

The geodesic path \(\bar{\pi }(v,\mathbf{x})\) joining \(v\) and \(x\) is illustrated. The weighted distance function \(c(v,x)\) equals to the cost of \(\bar{\pi }(v,\mathbf{x})\), i.e. \(c(v,x)=\Vert \bar{\pi }(v,\mathbf{x})\Vert =w^-|va|+w^+|a\mathbf{x}|\)

Recall that in the case where \(w^-\not =w^+, w=\min (w^-,w^+)\) the path \(\bar{\pi }(v,\mathbf{x})\) consists of two segments \((v,a)\) and \((a,\mathbf{x})\), where the bending point \(a\) is uniquely determined by Snell’s law (Fig. 2a). In the case where \(w\le w^-=w^+\), the path \(\bar{\pi }(v,\mathbf{x})\) is a single segment \((v,\mathbf{x})\), provided that the angle \(\varphi \) between \((v,\mathbf{x})\) and the direction normal to the plane \(F\) is smaller than or equal to the critical angle \(\varphi ^*\). Or, if \(\varphi >\varphi ^*\), it is in the plane perpendicular to \(F\) containing \(v\) and \(\mathbf{x}\) and consists of three segments \((v,a), (a,a_1)\) and \((a_1,\mathbf{x})\), where the acute angles between the segments \((v,a)\) and \((a_1,\mathbf{x})\), and the direction normal to the plane \(F\) are equal to the critical angle \(\varphi ^*\), and the segment \((a,a_1)\) is in \(F\) (Fig. 2b).

From these observations, it follows that, in all cases, weighted distance function can equivalently be defined by
$$\begin{aligned} c(v,x)=\Vert \bar{\pi }(v,\mathbf{x})\Vert =\min _{a,a_1\in F}(w^-|va| + w|aa_1| + w^+|a_1\mathbf{x}|). \end{aligned}$$
(1)
In the case where \(w^-\not =w^+\) the minimum is achieved when \(a\) and \(a_1\) coincide and lie on the segment joining the projections of the points \(v=(0,y,-z^-)\) and \(\mathbf{x}=(x,0,z^+)\) onto \(F\) (see Fig. 3). Hence \(a=a_1=(\tau x,(1-\tau )y,0)\) for some \(\tau \in (0,1)\). Then we have
$$\begin{aligned} \sin \varphi ^-=\frac{\tau \sqrt{x^2+y^2}}{\sqrt{\tau ^2(x^2+y^2)+(z^-)^2}} \quad \text{ and } \quad \sin \varphi ^+=\frac{(1-\tau )\sqrt{x^2+y^2}}{\sqrt{(1-\tau )^2(x^2+y^2)+(z^+)^2}}. \end{aligned}$$
Thus, from Snell’s law, it follows that \(\tau \) must be the unique solution of the equation in the interval \((0,1)\)
$$\begin{aligned} \frac{w^-\tau }{\sqrt{\tau ^2(x^2+y^2)+(z^-)^2}} =\frac{w^+(1-\tau )}{\sqrt{(1-\tau )^2(x^2+y^2)+(z^+)^2}}. \end{aligned}$$
(2)
The latter leads to an algebraic equation of degree four and it is infeasible to evaluate \(c(v,x)\) explicitly.3
The case where \(w^-=w^+\) is easier, as in that case the geodesic path is either a straight line, or a three segment path as described above and illustrated in Fig. 2b. The function \(c(v,x)\), in this case, equals either to \(w^-\sqrt{x^2+y^2+(z^-+z^+)^2}\) or to \(w(\sqrt{x^2+y^2}-(z^-+z^+)\tan \varphi ^*) + w^-(z^-+z^+)/\cos \varphi ^*\) depending on the form of the geodesic path, where \(\varphi ^*\) is the critical angle. Precisely, in the case \(w^-=w^+\ge w\) the function \(c(v,x)\) has the following explicit representation:
$$\begin{aligned} c(v,x)=\left\{ \begin{array}{lll} w^-\sqrt{x^2+y^2+\bar{z}^2} &{} \quad \mathrm{if} \quad &{} \bar{w}\sqrt{x^2+y^2}\le \bar{z},\\ w(\sqrt{x^2+y^2} + \bar{z}\bar{w} ) &{} \quad \mathrm{if} \quad &{} \bar{w}\sqrt{x^2+y^2} > \bar{z}, \end{array}\right. \end{aligned}$$
(3)
where \(\bar{z}=z^-+z^+\) and \(\bar{w}=\sqrt{(w^-/w)^2-1}=\cot \varphi ^*\). We refer to this case as the explicit case. In the next lemma we state and prove some useful properties of the function \(c(v,x)\).

Lemma 2.1

For a fixed \(v\), the weighted distance function \(c(v,x)\) has the following properties:
  1. (a)

    It is continuous and differentiable.

     
  2. (b)

    It is symmetric, i.e. \(c(v,x)=c(v,-x)\).

     
  3. (c)

    It is strictly increasing for \(x>0\).

     
  4. (d)

    It is convex.

     
  5. (e)
    It has asymptotes for \(x\rightarrow \pm \infty \) as follows:
    1. (e1)

      if \(w^+ < w^-\) then the asymptotes are \(w^+(z^-\cot \varphi ^* \pm x)\),

       
    2. (e2)

      if \(w^- < w^+\) then the asymptotes are \(w^-(z^+\cot \varphi ^* \pm x)\),

       
    3. (e3)

      in the explicit case \(w^+=w^-\ge w\) the asymptotes are \(\pm wx\),

       
     
where \(\varphi ^*\) is the critical angle.

Proof

In the explicit case (\(w^-=w^+\)), all these properties follow straightforwardly from the explicit representation (3). So, we consider the case \(w^-\not =w^+\)

From (1) and \(a_1=a=(\tau x, (1-\tau ) y, 0)\) it follows that \(c(v,x)=w^-\sqrt{\tau ^2(x^2+y^2)+(z^-)^2} + w^+\sqrt{(1-\tau )^2(x^2+y^2)+(z^+)^2}\), where \(\tau \) is the root of Eq. (2). The root \(\tau \) can be viewed as a function of \(x\), which by the implicit function theorem is continuous and differentiable. Hence property (a) holds.

Property (b) follows from the observation that the value of the function \(c(v,x)\) is determined by the distance between the projections of the points \(v\) and \(\mathbf{x}\) on \(F\), which is \(\sqrt{y^2+x^2}\) where \(y\) is fixed.

To prove (c), we consider a point \(\mathbf{x}^{\prime }=(x^{\prime },0,z^+)\) such that \(x^{\prime }>x\ge 0\) and denote by \(\tau ^{\prime }\) the corresponding root of (2). We have \(c(v,x^{\prime })=w^-\sqrt{\tau ^{\prime 2}(x^{\prime 2}+y^2)+(z^-)^2} + w^+\sqrt{(1-\tau ^{\prime })^2(x^{\prime 2}+y^2)+(z^+)^2}\). Using the fact that the function \(c(v,x)\) is defined as the cost of the shortest path joining \(v\) and \(\mathbf{x}\) we have
$$\begin{aligned} c(v,x)&\le w^-\sqrt{\tau ^{\prime 2}(x^2+y^2)+(z^-)^2} + w^+\sqrt{(1-\tau ^{\prime })^2(x^2+y^2)+(z^+)^2}\\&< w^-\sqrt{\tau ^{\prime 2}(x^{\prime 2}+y^2)+(z^-)^2} + w^+\sqrt{(1-\tau ^{\prime })^2(x^{\prime 2}+y^2)+(z^+)^2}\nonumber \\&= c(v,x^{\prime }). \end{aligned}$$
In order to prove (d), we show that for any three equidistant points \(\mathbf{x}_1<\mathbf{x}_0<\mathbf{x}_2\) on \({\ell }\), i.e., such that \(2x_0=x_1+x_2\), the quantity \(\triangle _2(c;x_1,x_0,x_2) = c(v,x_1) -2 c(v,x_0) +c(v,x_2)\) is positive. We denote by \(a_1\) and \(a_2\) the bending points of the shortest paths from \(v\) to \(\mathbf{x}_1\) and \(\mathbf{x}_2\), respectively. Let \(a^{\prime }_0\) be the middle point of the segment \((a_1,a_2)\). Then, using the definition of \(c(v,x_0)\) and the convexity of the Euclidean distance function we obtain \(2c(v,x_0)\le 2(w^-|va^{\prime }_0|+w^+|a^{\prime }\mathbf{x}_0|)<w^-(|va_1|+|va_2|)+w^+(|a_1\mathbf{x}_1|+|a_2\mathbf{x}_2|)=c(v,x_1)+c(v,x_2)\), which implies \(\triangle _2(c;x_1,x_0,x_2)>0\) and (d).
Finally, we prove (e). Let us assume that \(w^+<w^-\). In this case, using Snell’s law we observe that when \(x\rightarrow +\infty \) the bending point \(a(x)\) of the shortest path \(\bar{\pi }(v,\mathbf{x})\) converges to the point \((z^-\tan \varphi ^*,y,0)\) (see Fig. 3). Hence, we have \(\lim _{x\rightarrow +\infty }(w^+\sqrt{(x-z^-\tan \varphi ^*)^2 + y^2 + (z^+)^2}+w^-z^-/cos\varphi ^*-c(v,x))= 0\). On the other hand
$$\begin{aligned}&\lim _{x\rightarrow +\infty }\big (w^+\sqrt{(x-z^-\tan \varphi ^*)^2 \!+\! y^2 \!+\! (z^+)^2}\!+\!w^-z^-/\cos \varphi ^* -w^+(z^-\cot \varphi ^* \!+\! x)\big )\\&\quad =w^+\lim _{x\rightarrow +\infty }\big (\sqrt{(x-z^-\tan \varphi ^*)^2 + y^2 + (z^+)^2}-(x-z^-\tan \varphi ^*)\big )\\&\quad =w^+\lim _{x\rightarrow +\infty }\frac{y^2+(z^+)^2}{(\sqrt{(x-z^-\tan \varphi ^*)^2 + y^2 + (z^+)^2}+(x-z^-\tan \varphi ^*)}=0. \end{aligned}$$
Combining these two limits we obtain \(\lim _{x\rightarrow +\infty }(c(v,x)-w^+(z^-\cot \varphi ^* + x))= 0\) and thus (e1) is valid for \(x\rightarrow +\infty \). The case where \(x\rightarrow -\infty \) is treated analogously.

In the case where \(w^-<w^+\) we use Snell’s law and observe that the bending point \(a(x)\) of the shortest path \(\bar{\pi }(v,\mathbf{x})\) converges to \(x-z^+\tan \varphi ^*\), that is \(\lim _{x\rightarrow +\infty }(a(x)-x-z^+\tan \varphi ^*)=0\). Then (e2) is established analogously to (e1). \(\square \)

2.3 Refractive Additive Voronoi Diagram

Next we study Voronoi diagrams under the weighted distance metric defined above. Given a set \(S\) of \(k\) points \(v_1,\ldots ,v_k\) in \(F^-\), called sites, and non-negative real numbers \(C_1, \ldots ,C_k\), called additive weights, the additive Voronoi diagram for \(S\) is a subdivision of \(F^+\) space into regions \(\mathcal{V }(v_i, F^+)=\{x\in F^+ |\mathrm dist (x,v_i)+C_i\le \mathrm dist (x,v_j) + C_j \text{ for } j\ne i\}\), where ties are resolved in favor of the site with smaller additive weight, or if even in favor of the site with smaller index. The regions \(\mathcal{V }(v_i,F^+)\) are called Voronoi cells. In the classic case, \(\mathrm dist (\cdot ,\cdot )\) has been defined as the Euclidean distance. Here, for \(\mathrm dist (\cdot ,\cdot )\), we use the weighted distance function \(c(v,x)\).

Let \(v\) and \(v^{\prime }\) be two points in \(F^-\). We wish to study the intersection of the additive Voronoi diagram of \(v\) and \(v^{\prime }\) with \(\ell \) with respect to the weighted distance function. Without loss of generality, we assume that \(C^{\prime }=0\) and \(C\ge 0\), where \(C\) and \(C^{\prime }\) are the additive weights assigned to \(v\) and \(v^{\prime }\), respectively. We denote the intersection of the Voronoi cell of \(v\) with \({\ell }\) by \(\mathcal{V }(v,v^{\prime },{\ell };C)\), or simply by \(\mathcal{V }(v)\) when no ambiguity arises. We have
$$\begin{aligned} \mathcal{V }(v,v^{\prime },{\ell };C)=\mathcal{V }(v)=\big \{ \mathbf{x}\in {\ell }\ :\ c(v,x) + C < c(v^{\prime },x)\big \}. \end{aligned}$$
In Theorem 2.1, we will show that if \(v\) and \(v^{\prime }\) are at the same distance to \(F\), then the Voronoi cell \(\mathcal{V }(v)\) restricted to the line \({\ell }\) has a very nice structure (i.e., it is an interval). Furthermore, in Remark 2.1, we will show that if \(v\) and \(v^{\prime }\) are not at the same distance to \(F\) then Theorem 2.1 does not hold. In our algorithm, presented in Sect. 5, we use the information about the shape of \(\mathcal{V }(v)\) in order to propagate approximate shortest paths in \(\mathcal D \) and it turns out that we need only to consider the sites that are restricted to be within a half-space of \(F\) and at the same distance to \(F\). As we will see, this case by itself is mathematically challenging and provides valuable insights into the combinatorial structure of these diagrams.

Theorem 2.1

If the points \(v\) and \(v^{\prime }\) in \(F^-\) are at the same distance from \(F\), then the Voronoi cell \(\mathcal{V }(v,v^{\prime },{\ell };C)\) is an interval on \({\ell }\)—possibly empty, finite or infinite.

Proof

First, consider the case when \(C=0\). We denote the set of points \(\mathbf{x}\) in \(F^+\) such that \(c(v,\mathbf{x})=c(v^{\prime },\mathbf{x})\) by \(B(v,v^{\prime })\) and observe that it is a half-plane perpendicular to \(F\). Therefore, the set of points \(\mathbf{x}\) on \({\ell }\) for which \(c(v,x)=c(v^{\prime },x)\) is either a single point, the whole line \({\ell }\), or empty. Correspondingly, the Voronoi cell \(\mathcal{V }(v,v^{\prime },{\ell };0)\) is either a half-line, empty, or the whole line \({\ell }\) and the theorem holds for \(C=0\).

So, we assume that \(C>0\). We consider the equation \(c(v^{\prime },x)-c(v,x)=C\) and claim that it cannot have more than two solutions. Before we prove that claim (Claim 2.1 below), we argue that it implies the theorem.

Assume that the equation \(c(v^{\prime },x)-c(v,x)=C\) has at most two solutions. If it does not have any or has just one solution, then the theorem follows straightforwardly. In the case where it has exactly two solutions, the cell \(\mathcal{V }(v,v^{\prime },{\ell };C)\) has to be either a finite interval on \({\ell }\), or a complement of a finite interval on \({\ell }\). From the definition of the Voronoi cell \(\mathcal{V }(v,v^{\prime },{\ell };C)\) and \(C>0\) it follows that \(\mathcal{V }(v,v^{\prime },{\ell };C)\subset \mathcal{V }(v,v^{\prime },{\ell };0)\). We know that \(\mathcal{V }(v,v^{\prime },{\ell };0)\) is either empty, a half-line, or the whole line. If it is either empty or a half-line then \(\mathcal{V }(v,v^{\prime },{\ell };C)\) must be either empty or a finite interval and the theorem holds.

It remains to consider the case where \(\mathcal{V }(v,v^{\prime },{\ell };0)\) is the whole line \({\ell }\). We argue that \(\mathcal{V }(v,v^{\prime },{\ell };C)\) cannot be a complement to a finite interval. We have \(\mathcal{V }(v,v^{\prime },{\ell };0)={\ell }\) and therefore the line \({\ell }\) must be parallel to the half-plane \(B(v,v^{\prime })\). Furthermore, the plane containing \(B(v,v^{\prime })\) is a perpendicular bisector of the segment \((v,v^{\prime })\) and thus the point \(v^{\prime }\) must have coordinates \((0,y^{\prime },z^-)\) (Fig. 3). In this setting, using Lemma 2.1(e), we observe that \(c(v,x)\) and \(c(v^{\prime },x)\) have same asymptotes at infinity and thus \(\lim _{x\rightarrow \pm \infty }(c(v^{\prime },x)-c(v,x))=0\). Therefore, the cell \(\mathcal{V }(v,v^{\prime },{\ell };C)\) must be finite. The theorem follows.\(\square \)

Next we establish the validity of the claim used in the proof of Theorem 2.1.

Claim 2.1

The equation \(c(v^{\prime },x)-c(v,x)=C\) has at most two solutions.

We will prove the claim by showing that the function \(g(x)=c(v^{\prime },x)-c(v,x)\) is unimodal, i.e., it has at most one local extrema. We establish this property in two steps. First, we prove a characterization property of a local extremum of \(g\) (Proposition 2.1). Then, we show that at most one point can possess that property.

We focus our discussion on the case \(w^-\not =w^+\), since the other case is either simpler or can be treated analogously. Furthermore, we assume that \(w^+\le w^-\) and denote the ratio \(w^+/w^-\) by \(\kappa \), i.e. \(\kappa =w^+/w^-\le 1\). The case \(w^+\ge w^-\) is symmetric. Let \(a(x)\) and \(a^{\prime }(x)\) be the bending points defining the shortest paths from \(v\) and \(v^{\prime }\) to \(\mathbf{x}\), respectively. We assume that \({\ell }\) is oriented and denote by \(\overrightarrow{e_1}\) the positive direction unit vector on \({\ell }\). Furthermore, let \(\alpha (x)\) and \(\alpha ^{\prime }(x)\) be the angles between vectors \(\overrightarrow{va(x)}, \overrightarrow{v^{\prime }a^{\prime }(x)}\) and \(\overrightarrow{e_1}\), respectively (see Fig. 4).
Fig. 4

If the function \(g(x)\) has a local extremum at the point \(x_0\) then the angles \(\alpha (x_0)\) and \(\alpha ^{\prime }(x_0)\) must be equal

These angles are completely defined by the angles \(\varphi \) and \(\theta \) defining the corresponding shortest paths at the bending points \(a(x)\) and \(a^{\prime }(x)\). By observing Fig. 3, we have \(|a\mathbf y ^+|=|va|\cos \alpha \) and on the other hand \(|a\mathbf y ^+|=|a\mathbf y |\cos \theta =|va|\sin \varphi \cos \theta \) and hence \(\cos \alpha = \sin \varphi \cos \theta \). Next, we prove that the angles \(\alpha (x_0)\) and \(\alpha ^{\prime }(x_0)\) must be equal at any local extremum \(x_0\).

Proposition 2.1

If \(x_0\) is a local extremum of the function \(g\), then \(\alpha (x_0)=\alpha ^{\prime }(x_0)\).

Proof

The proof is by contradiction. Let us assume that \(\alpha (x_0) \not = \alpha ^{\prime }(x_0)\). We denote by \(\alpha _{\kappa }(x_0)\) the angle between vectors \(\overrightarrow{a(x_0)\mathbf{x}_0}\) and \(\overrightarrow{e_1}\). Similarly, \(\alpha ^{\prime }_{\kappa }(x_0)\) denotes the angle between vectors \(\overrightarrow{a^{\prime }(x_0)\mathbf{x}_0}\) and \(\overrightarrow{e_1}\) (Fig. 4). The relation \(\cos \alpha =\cos \theta \sin \varphi \) and Snell’s law readily imply that \(\kappa \cos \alpha _\kappa (x_0)=\cos \alpha (x_0)\) and \(\kappa \cos \alpha ^{\prime }_\kappa (x_0)=\cos \alpha ^{\prime }(x_0)\), where \(\kappa =w^+/w^-\). Thus, we have that \(\alpha _\kappa (x_0)\not =\alpha ^{\prime }_\kappa (x_0)\). Without loss of generality, we assume that \(\alpha _\kappa (x_0)<\alpha ^{\prime }_\kappa (x_0)\). Under these assumptions, we show the existence of two points on \(\mathbf{x}_1\) and \(\mathbf{x}_2\) on \(\ell \), such that:
$$\begin{aligned}&x_1<x_0<x_2,\quad g(x_1) = g(x_2), \nonumber \\&\mathrm{and} \quad |a(x_2)\mathbf{x}_2|+|a^{\prime }(x_1)\mathbf{x}_1| > |a(x_2)\mathbf{x}_1|+|a^{\prime }(x_1)\mathbf{x}_2|. \end{aligned}$$
(4)
By the assumption that \(x_0\) is a local extremum of \(g\), it follows that, for any positive real number \(\delta >0\) inside the interval \((x_0-\delta ,x_0+\delta )\), there are reals \(x_1^\delta \) and \(x_2^\delta \), such that
$$\begin{aligned} x_0-\delta <x_1^\delta <x_0<x_2^\delta <x_0+\delta \quad \text{ and }\quad g(x_1^\delta )=g(x_2^\delta ). \end{aligned}$$
On the other hand, if \(\delta \) converges to zero, then \(a(x_2^\delta )\) converges to \(a(x_0)\), and \(a^{\prime }(x_1^\delta )\) converges to \(a^{\prime }(x_0)\). Therefore, the inequality \(\alpha _\kappa (x_0)<\alpha ^{\prime }_\kappa (x_0)\) implies that for a small enough \(\delta _0\), the inequalities
$$\begin{aligned} \alpha _\kappa (x_1^{\delta _0})<\alpha ^{\prime }_\kappa (x_1^{\delta _0})\;\text{ and }\; \alpha _\kappa (x_2^{\delta _0})<\alpha ^{\prime }_\kappa (x_2^{\delta _0}) \end{aligned}$$
hold. From these inequalities, it follows that if we make the quadrilateral \(a(x_2^\delta )a^{\prime }(x_1^\delta )x_2^\delta x_1^\delta \) planar by rotation of the point \(a(x_2^\delta )\) around \(\ell \), then the obtained planar quadrilateral will be convex (Fig. 5). Therefore we have
$$\begin{aligned} |a(x_2^{\delta _0})\mathbf{x}_2^{\delta _0}|+|a^{\prime }(x_1^{\delta _0})\mathbf{x}_1^{\delta _0}|> |a(x_2^{\delta _0})\mathbf{x}_1^{\delta _0}|+|a^{\prime }(x_1^{\delta _0})\mathbf{x}_2^{\delta _0}|, \end{aligned}$$
(5)
which proves (4) for \(\mathbf{x}_1=\mathbf{x}_1^{\delta _0}\) and \(\mathbf{x}_2=\mathbf{x}_2^{\delta _0}\).
Fig. 5

Illustration of the proof of inequality (5)

Next, we estimate the sum \(c(v,x_1)+c(v^{\prime },x_2)\). We show that there may be no more than one point possessing that property. We use (4) and obtain
$$\begin{aligned} c(v,x_1)+c(v^{\prime },x_2)&= c(v,x_2)+c(v^{\prime },x_1)\\&= w^-|va(x_2)| +w^+ |a(x_2)\mathbf{x}_2| + w^-|v^{\prime }a^{\prime }(x_1)| + w^+|a^{\prime }(x_1)\mathbf{x}_1|\\&= w^-(|va(x_2)|+|v^{\prime }a^{\prime }(x_1)|) + w^+(|a(x_2)\mathbf{x}_2| + |a^{\prime }(x_1)\mathbf{x}_1|)\\&> w^-(|va(x_2)|+|v^{\prime }a^{\prime }(x_1)|) + w^+(|a(x_2)\mathbf{x}_1| + |a^{\prime }(x_1)\mathbf{x}_2|)\\&= w^-|va(x_2)|+w^+|a(x_2)\mathbf{x}_1| + w^-|v^{\prime }a^{\prime }(x_1)| + w^+|a^{\prime }(x_1)\mathbf{x}_2|. \end{aligned}$$
On the other hand, by the definition of the weighted distance function (1), we have the inequalities
$$\begin{aligned} c(v,x_1)\le w^-|va(x_2)|+w^+|a(x_2)\mathbf{x}_1|\,\text{ and }\, c(v^{\prime },x_2)\le w^-|v^{\prime }a^{\prime }(x_1)| + w^+|a^{\prime }(x_1)\mathbf{x}_2|, \end{aligned}$$
that contradict the previous strict inequality. Therefore, the angles \(\alpha _\kappa (x_0)\) and \(\alpha ^{\prime }_\kappa (x_0)\) and consequently \(\alpha (x_0)\) and \(\alpha ^{\prime }(x_0)\) must be equal. \(\square \)

Our next step is to show that there cannot be two points on \({\ell }\) satisfying Proposition 2.1. To do that, we study in more detail the relationship between the position of points \(v\) and \(\mathbf{x}\), and the angle \(\alpha (x)\). We observe that, for any fixed \(y\) (the \(y\)-coordinate of \(v\)), there is a one-to-one correspondence between the real numbers \(x\) and the angles \(\alpha \). That is, for a fixed \(v\), there is a one-to-one correspondence between the points \(\mathbf{x}\) on \(\ell \) and the angle between the shortest path \(\bar{\pi }(v,\mathbf{x})\) and the positive direction on \(\ell \). Hence, we may consider and study the well defined function \(x=x(y,\alpha )\). We prove the following:

Proposition 2.2

The second mixed derivative of the function \(x=x(y,\alpha )\) exists and is negative, i.e., \(x_{y\alpha }<0\).

Let us first show that Proposition 2.2 implies Claim 2.1.

Proof of Claim 2.1

We assume that Proposition 2.2 holds and will show that the function \(g(x)\) has at most one local extremum. Recall that the point \(v\) has coordinates \((0,y,-z^-)\) and let us denote the coordinates of the point \(v^{\prime }\) by \((x^{\prime },y^{\prime },-z^-)\).

We first consider the case where \(y=y^{\prime }\). In this case, we observe that \(\alpha ^{\prime }(x+x^{\prime })=\alpha (x)\). In addition, the function \(\alpha (x)\) is strictly monotone and, therefore, for any \(x\), the angles \(\alpha (x)\) and \(\alpha ^{\prime }(x)\) are different. From Proposition 2.1 it follows that in this case the function \(g(x)\) has no local extremum.

Next, we consider the case \(y\not =y^{\prime }\). We assume, for the sake of contradiction, that \(g(x)\) has two local extrema, say \(x_1\) and \(x_2\). By Proposition 2.1, \(\alpha (x_1)=\alpha ^{\prime }(x_1)\) and \(\alpha (x_2)=\alpha ^{\prime }(x_2)\). We denote \(\alpha _1=\alpha (x_1)=\alpha ^{\prime }(x_1)\) and \(\alpha _2=\alpha (x_2)=\alpha ^{\prime }(x_2)\). Then, the difference \(x_2-x_1\) can be represented, using the function \(x(y,\alpha )\), in two ways
$$\begin{aligned} x_2-x_1=\int _{\alpha _1}^{\alpha _2}x_\alpha (y,\alpha ){\text{ d }}\alpha \quad \text{ and } \quad x_2-x_1=\int _{\alpha _1}^{\alpha _2}x_\alpha (y^{\prime },\alpha ){\text{ d }}\alpha . \end{aligned}$$
(6)
Subtracting the last two equalities, we get
$$\begin{aligned} 0=\int _{\alpha _1}^{\alpha _2}x_\alpha (y,\alpha ){\text{ d }}\alpha - \int _{\alpha _1}^{\alpha _2}x_\alpha (y^{\prime },\alpha ){\text{ d }}\alpha = \int _{y^{\prime }}^y\int _{\alpha _1}^{\alpha _2}x_{y\alpha }(y,\alpha ){\text{ d }}\alpha {\text{ d }}y. \end{aligned}$$
(7)
The integral on the right side is negative since by Proposition 2.2, the derivative \(x_{y\alpha }\) is negative, \(\alpha _1\ne \alpha _2\), and \(y\ne y^{\prime }\). Hence, we have a contradiction and Claim 2.1 follows. \(\square \)

The proof of Proposition 2.2 is rather long and uses elaborate mathematical techniques and manipulations. On the other hand, the rest of the paper is independent of the details in that proof. So, we present the full proof for the interested readers in Appendix A.1.

Corollary 2.1

Consider a plane \(F_1\) in \(F^+\) parallel to \(F\) and two points \(v\) and \(v^{\prime }\) in \(F^-\) lying at the same distance from \(F\). For any non-negative constant \(C\), the Voronoi cell \(\mathcal{V }(v,v^{\prime },F_1;C)=\{x\in F_1: c(v,x)+C < c(v^{\prime },x)\}\) is convex.

What can we say about the Voronoi cell of \(v\) in \(F^+\)? The above corollary implies that the intersection between the Voronoi cell and any plane, parallel to \(F\), is convex. This, as such, is not sufficient to conclude that the cell is convex. We close this section with the following conjecture.

Conjecture 2.1

In the above setting, the Voronoi cell of \(v\) in \(F^+, \mathcal{V }(v,v^{\prime },F^+;C)=\{x\in F^+: c(v,x)+C < c(v^{\prime },x)\}\), is convex.

Remark 2.1

Examples showing that equal distance of the points \(v\) and \(v^{\prime }\) from the bending plane \(F\) is a necessary condition for \(c(v^{\prime },x)-c(v,x)\) to be unimodal in Theorem 2.1 are not difficult to construct. In fact, if we take arbitrary points \(v\) and \(v^{\prime }\) in \(F^-\) at different distances from \(F\), it is very likely that \(c(v^{\prime },x)-c(v,x)\) will have more than one local extrema and hence, for a proper choice of \(C\), the equation \(c(v^{\prime }, x) - c(v,x)= C\) will have more than two solutions. Such examples can be constructed by choosing arbitrary points \(v\) in \(F^-\) and \(x_1, x_2\) on \(\ell \) and then computing a point \(v^{\prime } \in F^-\) so that \(\alpha (v, x_i)=\alpha (v^{\prime }, x_i)\), for \(i= 1, 2\), where \(\alpha \)’s are the angles between the line \(\ell \) and the shortest paths coming from \(v\) and \(v^{\prime }\), respectively. As a result \(c(v^{\prime },x)-c(v,x)\) will have local extrema at \(x_1\) and \(x_2\).

3 Discretization of \(\mathcal D \)

In this section, we describe the construction of a carefully chosen set of additional points placed in \(\mathcal{D }\), called Steiner points. These Steiner points collectively form a discretization of \(\mathcal{D }\), which is later used to approximate geodesic paths in \(\mathcal{D }\). Steiner points are placed on the edges of \(\mathcal{D }\) and on the bisectors of the dihedral angles of the tetrahedra in \(\mathcal{D }\). While it may seem more natural to place the Steiner points on the faces of the tetrahedra, placing them on the bisectors proves to be more efficient, leading to a speed up of approximately \(\varepsilon ^{-1}\) compared to the alternate placement. Recall that \(\varepsilon \) is an approximation parameter in \((0,1)\). We provide a precise estimate on the number of Steiner points which depends on \(\varepsilon \) and aspect ratios of tetrahedra of \(\mathcal{D }\).

3.1 Placement of Steiner Points

We use the following definitions:

Definition 3.1

  1. (a)

    For a point \(x\in \mathcal{D }\), we define \(D(x)\) to be the union of the tetrahedra containing \(x\). We denote by \(\partial D(x)\) the set of faces on the boundary of \(D(x)\) that are not incident to \(x\).

     
  2. (b)

    We define \(d(x)\) to be the minimum Euclidean distance from \(x\) to any point on \(\partial D(x)\).

     
  3. (c)

    For each vertex \(v\in \mathcal{D }\), we define a radius \(r(v)=d(v)/14\).

     
  4. (d)

    For any internal point \(x\) on an edge in \(\mathcal{D }\), we define a radius \(r(x)=d(x)/24\). The radius of an edge \(e\in \mathcal{D }\) is \(r(e)=\max _{x\in e} r(x)\).

     

Using radii \(r(v)\) and \(r(x)\) and our approximation parameter \(\varepsilon \), we define “small” regions around vertices and edges of \(\mathcal{D }\), called vertex and edge vicinities, respectively.

Definition 3.2

  1. (a)

    The convex hull of the intersection points of the ball \(B(v,\varepsilon r(v))\) having center \(v\) and radius \(\varepsilon r(v)\) with the edges incident to \(v\) is called the vertex–vicinity of \(v\) and is denoted by \(D_\varepsilon (v)\).

     
  2. (b)

    The convex hull of the intersections between the “spindle” \(\cup _{x\in e}B(x,\varepsilon r(x))\) and the faces incident to \(e\) is called the edge vicinity of \(e\) and is denoted by \(D_\varepsilon (e)\).

     
On each edge \(e=AB\) of \(\mathcal{D }\), we define a set of Steiner points as follows. Denote by \(AA^{\prime }\) and \(BB^{\prime }\) the intersections of \(e\) with vertex vicinities \({D_\varepsilon }(A)\) and \({D_\varepsilon }(B)\), respectively. Points \(A^{\prime }\) and \(B^{\prime }\) are Steiner points. All other Steiner points on \(e\) are placed between \(A^{\prime }\) and \(B^{\prime }\). Let \(M_e\) be the point on \(e\), such that \(d(M_e)=\max _{x\in e} d(x)\). The point \(M_e\) is defined to be a Steiner point. Next, we define a sequence of points \(M_i\), for \(i=0,1,\ldots \) on \(M_eA^{\prime }\), by
$$\begin{aligned} M_0 = M_e \quad \mathrm{and}\quad |M_{i-1}M_i| = \varepsilon r(M_i) \quad \mathrm{for}\quad i=1,2,\ldots \end{aligned}$$
(8)
All such points \(M_i\) between \(M_e\) and \(A^{\prime }\) are defined as Steiner points. Let us denote the number of these points by \(i_A\). To estimate this number we first observe that their definition implies \(|AM_i|=\lambda _A^{-i}|AM_e|\), where \(\lambda _A=1+\varepsilon r(e)/|AM_e|\). Then we use \(|AM_{i_0}|\ge |AA^{\prime }|=\varepsilon r(A)\) and obtain \(i_A\le \log _{\lambda _A}\frac{|AM_e|}{\varepsilon r(A)}\).
Analogously, we define a set of \(i_B\) Steiner points between \(M_e\) and \(B^{\prime }\). The number \(i_B\) is analogously estimated by \(i_B\le \log _{\lambda _B}\frac{|BM_e|}{\varepsilon r(B)}\). So, the total number of Steiner points defined on \(e\) is \(i_A+i_B+3\). We sum the bounds on \(i_A\) and \(i_B\), use the properties of the logarithm function and obtain that the total number of Steiner points defined on \(e\) is bounded by
$$\begin{aligned} C_e\frac{1}{\varepsilon }\log \frac{2}{\varepsilon }, \end{aligned}$$
(9)
where4
$$\begin{aligned} C_e<\frac{3|AB|}{2r(e)}\log \frac{|AB|}{\sqrt{r(A)r(B)}}. \end{aligned}$$
The remaining Steiner points lie on the bisectors of the dihedral angles of tetrahedra in \(\mathcal{D }\). Steiner points in any tetrahedron \(T\) of \(\mathcal{D }\) are defined to lie on the six bisectors of the dihedral angles of \(T\). Let the vertices of \(T\) be \(A, B, C\), and \(D\) and let us consider one of the bisectors \(\mathbf{b}\) of the dihedral angles of \(T\), say \(\mathbf{b}=ABP\) (see Fig. 6a). Next, we describe the placement of Steiner points in the triangle \(ABP\).
Let the dihedral angle at \(AB\) of \(T\) be \(\gamma \) and let \(PH\) be the height (altitude) of \(ABP\) (see Fig. 6b).
Fig. 6

a A tetrahedron \(ABCD\) and one of its bisectors \(\mathbf{b}=ABP\). b Placement of Steiner points on \(ABP\)

First, we define an infinite sequence of points \(P_0,P_1, \ldots \) on \(PH\) by
$$\begin{aligned} P_0=P, \quad |P_{i-1}P_i| = \sqrt{\varepsilon /8} |HP_i|\sin (\gamma /2),\quad \mathrm{for}\ i=1,2,\ldots \end{aligned}$$
(10)
Then, we consider the sequence of lines \(L_i\) in the plane \(ABP\), parallel to \(AB\), and containing \(P_i\), for \(i=1,2,\ldots \). Let the intersection points of these lines with \(AP\) and \(BP\) be \(A_i\) and \(B_i\), respectively. Points \(A_i\) and \(B_i\) lying outside of the vertex vicinities \({D_\varepsilon }(A)\) and \({D_\varepsilon }(B)\) are defined to be Steiner points, respectively. The intersection points of these lines with the boundary of the union of the edge vicinity \({D_\varepsilon }(AB)\) and vertex vicinities \({D_\varepsilon }(A)\) and \({D_\varepsilon }(B)\), are defined to be Steiner points. On each of the segments \(A_iB_i\), we define a set of \(k_i\) equidistantly placed Steiner points \(P_{i,j}, j=1,\ldots ,k_i\), where
$$\begin{aligned} k_i=\bigg \lfloor \frac{|A_iB_i|}{|P_iP_{i+1}|}\bigg \rfloor \quad \text{ and } \quad |P_{i,j}P_{i,j+1}|= \frac{|A_iB_i|}{k_i+1}, \quad \text{ for }\quad j=0,1,\ldots , k_i. \end{aligned}$$
(11)
In the above expression, we have assumed that \(P_{i,0}=A_i\) and \(P_{i,k_i+1}=B_i\).

Definition 3.3

The set of Steiner points in the bisector \(\mathbf{b}=ABP\) consists of
  1. (a)

    all points \(P_{i,j}\) outside the union \({D_\varepsilon }(AB)\cup {D_\varepsilon }(A)\cup {D_\varepsilon }(B)\),

     
  2. (b)

    the intersection points of the lines \(L_i\) with the boundary of that union.

     
Next, we estimate the number of Steiner points placed in the triangle \(ABP\). We denote \(h=p_0=|PH|\) and \(p_i=|P_iH|\) for \(i=1,2,\ldots \) In this notation, we have \(p_{i-1}-p_i= |P_iP_{i-1}|\) and \(|P_iP_{i-1}| = p_i\sqrt{\varepsilon /8} \sin (\gamma /2)\), which implies
$$\begin{aligned} p_i=h\lambda ^i,\quad \mathrm{where}\quad \lambda =(1+\sqrt{\varepsilon /8} \sin (\gamma /2))^{-1}. \end{aligned}$$
(12)
Let \(i_1\) be the smallest index such that the line \(L_{i_1}\) is at distance smaller than \(\varepsilon r(e)\) from \(AB\). We denote by \(K_1\) the number of Steiner points lying on lines \(L_i\), with \(i<i_1\), and by \(K_2\) the number of the remaining Steiner points in \(ABP\). Let us estimate the number \(K_1\) first. The number of Steiner points on a line \(L_i\), with \(i<i_1\), is \(k_i+2\). Using (11) and (12), we have
$$\begin{aligned} k_i = \bigg \lfloor \frac{|A_iB_i|}{|P_iP_{i+1}|}\bigg \rfloor =\bigg \lfloor \frac{(h-p_i)|AB|}{h(p_i-p_{i+1})}\bigg \rfloor =\bigg \lfloor \frac{(1-\lambda ^i)|AB|}{h\lambda ^i(1-\lambda )}\bigg \rfloor . \end{aligned}$$
Thus, for the number \(K_1\), we obtain
$$\begin{aligned} K_1&= \sum _{i=1}^{i_1-1}(2+k_i) \le 2(i_1-1) + \frac{|AB|}{h(1-\lambda )} \sum _{i=1}^{i_1-1}\frac{1-\lambda ^i}{\lambda ^i}\nonumber \\&= 2(i_1-1) + \frac{|AB|}{h(1-\lambda )} \big (\frac{1-\lambda ^{i_1}}{(1-\lambda )\lambda ^{i_1-1}}-i_1\big )\nonumber \\&\le 2(i_1-1)+\frac{|AB|}{h(1-\lambda )^2} \frac{1-\lambda ^{i_1-1}}{\lambda ^{i_1-1}}. \end{aligned}$$
(13)
From the definition of \(i_1\) and (12), we have \(h\lambda ^{i_1}<\varepsilon r(e)\le h\lambda ^{i_1-1}\). Therefore,
$$\begin{aligned} i_1 - 1 = \big \lfloor \log _{\lambda } \frac{\varepsilon r(e)}{h}\big \rfloor . \end{aligned}$$
(14)
From (13) and (14), we obtain
$$\begin{aligned} K_1<\frac{|AB|}{\varepsilon r(e)(1-\lambda )^2} + 2\log _{\lambda ^{-1}}\frac{h}{\varepsilon r(e)}. \end{aligned}$$
(15)
Next, we estimate \(K_2\), that is the number of Steiner points lying on segments \(A_iB_i\) with \(i\ge i_1\). By our definition, on the segment \(A_{i_1}B_{i_1}\) there is a point \(M_1\), such that the triangle \(ABM_1\) lies entirely inside the edge vicinity. Let \(M_2^{\prime }\) be the intersection point of the boundaries of the edge vicinity \({D_\varepsilon }(AB)\) and the vertex vicinity \({D_\varepsilon }(A)\) that lies in the triangle \(ABP\). Similarly, let \(M_2^{\prime \prime }\) be the intersection point of the boundaries of the edge vicinity \({D_\varepsilon }(AB)\), the vertex vicinity \({D_\varepsilon }(B)\), and the triangle \(ABP\). Furthermore, let \(i^{\prime }_2\) be the smallest index such that the segment \(A_{i_2^{\prime }}B_{i_2^{\prime }}\) is closer to \(AB\) than \(M^{\prime }_2\) and similarly, let \(i^{\prime \prime }_2\) be the smallest index so that the segment \(A_{i_2^{\prime \prime }}B_{i_2^{\prime \prime }}\) is closer to \(AB\) than \(M^{\prime \prime }_2\). All Steiner points on segments \(A_iB_i\), with \(i\ge i_1\), lie in the quadrilaterals \(A_{i_1}A_{i_2^{\prime }}M_2^{\prime }M_1\) and \(B_{i_1}B_{i_2^{\prime \prime }}M_2^{\prime \prime }M_1\). We denote the number of Steiner points in these two quadrilaterals by \(K^{\prime }_2\) and \(K_2^{\prime \prime }\), respectively.
To estimate \(K_2^{\prime }\), we show an upper bound on the number of Steiner points on \(A_iB_i, i_1\le i < i_2^{\prime }\) that lie inside the quadrilateral \(A_{i_1}A_{i_2^{\prime }}M_2^{\prime }M_1\). Namely, if we denote this number by \(k^{\prime }_i\) and by \(M_i\) the intersection point between \(A_iB_i\) and \(AM_1\), we have
$$\begin{aligned} k^{\prime }_i\le 2 + \frac{|A_iM_i|}{p_i-p_{i+1}}= 2 + \frac{|A_{i_1}M_1|p_i}{p_{i_1}(p_i-p_{i+1})}= 2 +\frac{|A_{i_1}M_1|}{h\lambda ^{i_1}(1-\lambda )}. \end{aligned}$$
Thus, the number of Steiner points inside the quadrilateral \(A_{i_1}A_{i_2^{\prime }}M_2^{\prime }M_1\) is bounded by
$$\begin{aligned} K_2^{\prime }\le (i_2^{\prime }-i_1)\big (2 + \frac{|A_{i_1}M_1|}{h\lambda ^{i_1}(1-\lambda )}\big ). \end{aligned}$$
Analogously, for the number of Steiner points inside the quadrilateral \(B_{i_1}B_{i_2^{\prime \prime }}M_2^{\prime \prime }M_1\), we obtain
$$\begin{aligned} K_2^{\prime \prime }\le (i_2^{\prime \prime }-i_1)\big (2 + \frac{|B_{i_1}M_1|}{h\lambda ^{i_1}(1-\lambda )}\big ). \end{aligned}$$
We sum the estimates on \(K_2^{\prime }\) and \(K_2^{\prime \prime }\), use (12), (14) and obtain
$$\begin{aligned} K_2&= K_2^{\prime }+K_2^{\prime \prime } \le (i_2^{\prime }+i_2^{\prime \prime }-2 i_1)\big (2\!+\!\frac{|A_{i_1}B_{i_1}|}{h\lambda ^{i_1}(1-\lambda )}\big )\nonumber \\&\le (i_2^{\prime }+i_2^{\prime \prime }-2i_1)\big (2\!+\!\frac{|AB|(1-\lambda ^{i_1})}{h\lambda ^{i_1}(1-\lambda )}\big )< (i_2^{\prime }+i_2^{\prime \prime }-2 i_1) \big (2\!+\!\frac{|AB|}{\varepsilon r(e)\lambda (1-\lambda )}\big ).\nonumber \\ \end{aligned}$$
(16)
From the definitions of the indices \(i_2^{\prime }, i_2^{\prime \prime }\), we easily derive that
$$\begin{aligned} p_{i_2^{\prime }-1}>\frac{\varepsilon r(e) |AM_2^{\prime }|}{|AM_e|}\ge \frac{\varepsilon ^2 r(e)\bar{r}(A)}{|AM_e|}, \quad p_{i_2^{\prime \prime }-1} > \frac{\varepsilon r(e) |BM_2^{\prime \prime }|}{|BM_e|}\ge \frac{\varepsilon ^2 r(e)\bar{r}(B)}{|BM_e|}, \end{aligned}$$
where \(M_e\) is the point on \(AB\) where the radius \(r(e)\) is achieved, \(\varepsilon \bar{r}(A)\) is the distance from \(A\) to the boundary of \(D_\varepsilon (A)\), and similarly \(\varepsilon \bar{r}(B)\) is the distance from \(B\) to the boundary of \(D_\varepsilon (B)\). Equivalently, \(\varepsilon \bar{r}(A)\) and \(\varepsilon \bar{r}(B)\) are the maximum radii of a spheres centered at \(A\) and \(B\) and inscribed in \(D_\varepsilon (A)\) and \(D_\varepsilon (B)\), respectively.
These inequalities and (12) imply
$$\begin{aligned} i_2^{\prime }\le 1+\log _{\lambda ^{-1}}\frac{h|AM_e|}{\varepsilon ^2 r(e) \bar{r}(A)}\quad \text{ and } \quad i_2^{\prime \prime }\le 1+\log _{\lambda ^{-1}}\frac{h|M_eB|}{\varepsilon ^2 r(e) \bar{r}(B)}. \end{aligned}$$
Then, we use (14) and obtain
$$\begin{aligned} i_2^{\prime }+i_2^{\prime \prime }-2 i_1&\le 2 + 2\log _{\lambda ^{-1}}\frac{h\sqrt{|AM_e||M_eB|}}{\varepsilon ^2 r(e)\sqrt{\bar{r}(A)\bar{r}(B)}} - 2 \log _{\lambda ^{-1}}\frac{h}{\varepsilon r(e)}\nonumber \\&\le 2 + 2\log _{\lambda ^{-1}}\frac{|AB|}{2\varepsilon \sqrt{\bar{r}(A)\bar{r}(B)}}= 2\log _{\lambda ^{-1}}\frac{|AB|}{2\varepsilon \lambda \sqrt{\bar{r}(A)\bar{r}(B)}}. \end{aligned}$$
(17)
Combining (15), (16) and (17), we obtain
$$\begin{aligned} K_1+K_2&< 2\frac{|AB|}{\varepsilon r(e)\lambda (1-\lambda )} \log _{\lambda ^{-1}}\frac{|AB|}{2\varepsilon \lambda \sqrt{\bar{r}(A)\bar{r}(B)}} + \frac{|AB|}{\varepsilon r(e)(1-\lambda )^2}\nonumber \\&+ 2\log _{\lambda ^{-1}}\frac{h}{\varepsilon r(e)} + 4\log _{\lambda ^{-1}}\frac{|AB|}{2\varepsilon \lambda \sqrt{\bar{r}(A)\bar{r}(B)}}. \end{aligned}$$
(18)
From the last equation, we derive that
$$\begin{aligned} K_1+K_2 = C_{ABP}(T)\frac{1}{\varepsilon ^2}\log \frac{2}{\varepsilon }, \end{aligned}$$
(19)
where the constant \(C_\mathbf{b}=C_{ABP}(T)\) depends on the geometry of the tetrahedron \(T\) and is bounded by (see Appendix A. 2 for details)
$$\begin{aligned} C_\mathbf{b}=C_{ABP}(T) < 14 \frac{|AB|}{r(e)\sin ^2(\gamma /2)}\log \frac{|AB|^2 h}{r(e)\bar{r}(A)\bar{r}(B)}. \end{aligned}$$
(20)
The total number of Steiner points defined in \(\mathcal{D }\) is equal to the sum of the number of points placed on all bisectors, plus the Steiner points placed on the edges of \(\mathcal{D }\), and plus the number of vertices \(\mathcal{D }\). From estimates (19), (9), and the fact that the number vertices in \(\mathcal{D }\) is less than \(4n\), it follows that the total number of Steiner points can be represented by \(C(\mathcal{D })\frac{n}{\varepsilon ^2}\log \frac{2}{\varepsilon }\), where \(C(\mathcal{D })=\frac{1}{n}(\sum _\mathbf{b}C_\mathbf{b}+\varepsilon \sum _eC_e + |V(\mathcal{D })|\varepsilon ^2/\log \frac{2}{\varepsilon })\)—the first sum is taken over all bisectors in \(\mathcal{D }\), the second is over all edges in \(\mathcal{D }\) and \(V(\mathcal{D })\) denotes the set vertices in \(\mathcal{D }\). It can be easily seen that \(C(\mathcal{D })=O(\frac{1}{6n}\sum _\mathbf{b}C_\mathbf{b})\) and so it is bounded by the average of the constants \(C_\mathbf{b}\) (as given in (20)) over all \(6n\) bisectors of the tetrahedra in \(\mathcal{D }\).

Our discussion is summarized in the following lemma.

Lemma 3.1

  1. (a)
    The number of Steiner points placed on a bisector \(\mathbf{b}=ABP\) of a dihedral angle \(\gamma \) in a tetrahedron \(T\), is bounded by \(C_\mathbf{b}\frac{1}{\varepsilon ^2}\log \frac{2}{\varepsilon }\), where the constant \(C_\mathbf{b}\) depends on the geometric features of \(\mathcal{D }\) around the edge \(AB\) and is bounded by
    $$\begin{aligned} \frac{14|AB|}{r(e)\sin ^2(\gamma /2)}\log \frac{|AB|^2 h}{r(e)\bar{r}(A)\bar{r}(B)}. \end{aligned}$$
     
  2. (b)
    The number of segments that are parallel to \(AB\) on a bisector \(\mathbf{b}=ABP\), containing Steiner points, is bounded by \(C^1_{ABP}(T)\frac{1}{\sqrt{\varepsilon }}\log \frac{2}{\varepsilon }\), where
    $$\begin{aligned} C^1_{ABP}(T)<\frac{8}{\sin (\gamma /2)}\log \frac{|AB|^2 h}{8r(e)\bar{r}(A)\bar{r}(B)}. \end{aligned}$$
     
  3. (c)

    The total number of Steiner points is bounded by \(C(\mathcal{D })\frac{n}{\varepsilon ^2}\log \frac{2}{\varepsilon }\), where \(n\) is the number of tetrahedra in \(\mathcal{D }\) and \(C(\mathcal{D })\) is bounded by an absolute constant times the average of the constants \(C_\mathbf{b}\) for all bisectors \(\mathbf{b}\) in \(\mathcal{D }\).

     

By placing Steiner points in this way, in the next lemma, we show that it is possible to approximate the cell-crossing segments that have their end-points outside the vertex and the edge vicinities.

Lemma 3.2

Let \(ABP\) be the bisector of a dihedral angle \(\gamma \) formed by the faces \(ABC\) and \(ABD\) of a tetrahedron \(ABCD\). Let \(x_1\) and \(x_2\) be points on the faces \(ABC\) and \(ABD\), respectively, that lie outside of the union \({D_\varepsilon }(AB)\cup {D_\varepsilon }(A)\cup {D_\varepsilon }(B)\). Then there exists a Steiner point \(q\) on \(ABP\), such that \(\max (\angle x_2x_1q, \angle x_1x_2q) \le \sqrt{\frac{\varepsilon }{2}}\) and \(|x_1q|+|qx_2|\le (1+\varepsilon /2)|x_1x_2|\).

Proof

Clearly, the segment \(x_1x_2\) intersects the bisector triangle \(ABP\) in a point \(x_0\) lying outside the vertex vicinities \({D_\varepsilon }(A),{D_\varepsilon }(B)\), and the edge vicinity \({D_\varepsilon }(AB)\). Recall that Steiner points in \(ABP\) are placed on a set of lines \(L_i\) parallel to \(AB\) and passing through the sequence of points \(P_i\) on the altitude \(PH\) of \(ABP\). Let \(i_0\) be the maximum index such that the line \(L_{i_0}\) is farther away from \(AB\) than \(x_0\). We define \(q\) to be the closest Steiner point to \(x_0\) on the line \(L_{i_0}\).

First, we estimate the angles \(\angle x_2x_1q = \angle x_0x_1q\) and \(\angle x_1x_2q = \angle x_0x_2q\). By our definition of the Steiner points and Pythagorean theorem, it follows that
$$\begin{aligned} |x_0q|\le \frac{\sqrt{5}}{4}h\lambda ^{i_0} \sqrt{\frac{\varepsilon }{2}}\sin \frac{\gamma }{2}, \end{aligned}$$
(21)
where \(h\) and \(\lambda \) are as defined above (see (12)). Let \(\rho \) be the radius of the smallest sphere containing \(x_0\) and \(q\) and touching the face \(ABC\). It is easily observed that
$$\begin{aligned} 2\rho >\big (h\lambda ^{i_0}-\frac{|x_0q|}{2}\big )\sin \frac{\gamma }{2} >\frac{8\sqrt{2}-\sqrt{5}}{8\sqrt{2}} h\lambda ^{i_0}\sin \frac{\gamma }{2}. \end{aligned}$$
(22)
If we denote the angle \(\angle x_0x_1q\) by \(\theta _1\), then \(\sin \theta _1 \le \frac{|x_0q|}{2\rho }\), and using (21) and (22), we obtain
$$\begin{aligned} \sin \theta _1 \le \frac{|x_0q|}{2\rho }<\sqrt{\frac{\varepsilon }{2}} . \end{aligned}$$
(23)
The same estimate applies to angle \(\angle x_0x_2q\). Hence, the first inequality of the lemma holds. Next, we prove the second inequality. We denote by \(\theta ,\,\theta _1\), and \(\theta _2\) the angles of the triangle \(qx_1x_2\) at \(q,\,x_1\) and \(x_2\), respectively (Fig. 7). By a trigonometric equality valid in any triangle, we have
$$\begin{aligned} |x_1q|+|qx_2|=\big (1+\frac{2\sin (\theta _1/2)\sin (\theta _2/2)}{\sin (\theta /2)}\big )|x_1x_2|. \end{aligned}$$
Thus, it suffices to prove that
$$\begin{aligned} \frac{2\sin (\theta _1/2)\sin (\theta _2/2)}{\sin (\theta /2)}\le \frac{\varepsilon }{2}. \end{aligned}$$
By (23), it follows that \(\sin \theta _1\) and \(\sin \theta _2\) are smaller than \(\sqrt{\varepsilon /2}\) and from \(\varepsilon \le 1\) we have \(\theta \ge \pi /2\). Therefore, we obtain
$$\begin{aligned} \frac{2\sin (\theta _1/2)\sin (\theta _2/2)}{\sin (\theta /2)}&= \frac{\sin \theta _1\sin \theta _2}{2\sin (\theta /2)\cos (\theta _1/2)\cos (\theta _2/2)}\nonumber \\&\le \frac{\varepsilon }{4\sin (\theta /2)\cos (\theta _1/2)\cos (\theta _2/2)}\\&= \frac{\varepsilon }{4\sin (\theta /2)(\sin (\theta /2)+\sin (\theta _1/2)\sin (\theta _2/2))}\nonumber \\&\le \frac{\varepsilon }{4\sin ^2(\theta /2)} \le \frac{\varepsilon }{2}.\square \end{aligned}$$
Fig. 7

Illustrates Lemma 3.2

4 Discrete Paths

In this section, we use the Steiner points introduced above for the construction of a weighted graph \(G_{\varepsilon }=(V(G_{\varepsilon }),E(G_{\varepsilon }))\). We estimate the number of its nodes and edges and then establish that shortest paths in \(\mathcal D \) can be approximated by paths in \(G_\varepsilon \). We follow the approach laid out in [3], but the details are substantially different, as we have to handle both the vertex and edge vicinities, as well as the bisectors in 3-d space.

The set of nodes \(V(G_\varepsilon )\) consists of the vertices of \(\mathcal D \), the Steiner points placed on the edges of \(\mathcal D \) and the Steiner points placed on the bisectors. The edges of the graph \(G_\varepsilon \) join nodes lying on neighboring bisectors as defined below. A bisector is a neighbor to itself. Two different bisectors are neighbors if the dihedral angles they split share a common face. We say that a pair of bisectors sharing a face \(f\) are neighbors with respect to \(f\). (So, a single bisector \(\mathbf{b}\) is a neighbor to itself with respect to both faces forming the dihedral angle it splits.)

First, we define edges joining pairs of Steiner points on neighboring bisectors. Let \(p\) and \(q\) be nodes corresponding to Steiner points lying on neighboring bisectors \(\mathbf{b}\) and \({\mathbf{b}_\mathbf{1}}\), respectively, that share a common face \(f\). We consider the shortest weighted path between \(p\) and \(q\) of the type \(\{p,x,y,q\}\), where \(x\) and \(y\) belong to \(f\) (points \(x\) and \(y\) are not necessarily different). We refer to this shortest path as a local shortest path between \(p\) and \(q\) crossing \(f\) and denote it by \(\hat{\pi }(p,q;f)\). Nodes \(p\) and \(q\) are joined by an edge in \(G_\varepsilon \) if none of the points \(x\) or \(y\) are on an edge of \(f\). Such an edge is said to cross the face \(f\). In the case where \(p\) and \(q\) lie on the same bisector, say \(\mathbf{b}\), splitting an angle between faces \(f_1\) and \(f_2\), we define two parallel edges in \(G_\varepsilon \) joining \(p\) and \(q\)—one crossing \(f_1\) and another crossing \(f_2\).

The cost of an edge \((p,q)\) in \(G_\varepsilon \) that crosses a face \(f\) is defined as the cost of the local shortest path \(\hat{\pi }(p,q;f)\) and is denoted by \(c(p,q;f)\), or simply by \(c(p,q)\) when no ambiguity arises. Formally, we have
$$\begin{aligned} c(p,q)=c(p,q;f)= \Vert \hat{\pi }(p,q;f)\Vert = \min _{x,y\in f}(\Vert px\Vert +\Vert xy\Vert +\Vert yq\Vert ). \end{aligned}$$
(24)
Next, we consider a node \(p\) of \(G_\varepsilon \) lying on an edge \(e\) of \(\mathcal D \). The node \(p\) can be either a Steiner point on \(e\) or a vertex of \(\mathcal D \) incident to \(e\). It is adjacent to nodes lying in tetrahedra in \(D(e)\). The edges of \(G_\varepsilon \) incident to \(p\) are associated with pairs of neighboring bisectors as follows. We consider a tetrahedron \(t\) in \(D(e)\), and describe edges incident to \(p\) in \(t\). Let \(f_1\) and \(f_2\) be the two faces of \(t\) incident to \(e\), and let \(\mathbf{b}\) be the bisector of the dihedral angle formed by \(f_1\) and \(f_2\). We define edges between \(p\) and nodes lying on bisectors in \(t\) that are neighbors of \(\mathbf{b}\). There are four such bisectors—two with respect to \(f_1\) and two with respect to \(f_2\). For a node \(q\) on a neighboring bisector \({\mathbf{b}_\mathbf{1}}\) sharing, say, the face \(f_1\) with \(\mathbf{b}\), we consider the local shortest path \(\hat{\pi }(p,q;f_1)\). By definition, \(\hat{\pi }(p,q;f_1)=\{p,x,q\}\), where \(x\in f_1\). We define an edge between \(p\) and \(q\) if and only if the point \(x\) defining the local shortest path is in the interior of \(f_1\). The cost of the edge \((p,q)\) equals the cost of the local shortest path \(\hat{\pi }(p,q;f_1)\), i.e.,
$$\begin{aligned} c(p,q)=c(p,q;f_1)=\Vert \hat{\pi }(p,q;f_1)\Vert =\min _{x\in f_1}(\Vert px\Vert +\Vert xq\Vert ). \end{aligned}$$
We associate the edge \((p,q)\) to \(\mathbf{b},\,{\mathbf{b}_\mathbf{1}}\) and \(f_1\) and say that it crosses \(f_1\). Furthermore, \(p\) is joined to nodes on \(\mathbf{b}\) by pair of parallel edges, provided that the corresponding local shortest paths do not touch the edges of \(\mathcal D \)—one crossing \(f_1\) and the other crossing \(f_2\).

Lemma 4.1

We have \(|V(G_\varepsilon )|=O(\frac{n}{\varepsilon ^2}\log \frac{1}{\varepsilon })\) and \(|E(G_\varepsilon )|=O(\frac{n}{\varepsilon ^4}\log ^2\frac{1}{\varepsilon })\).

Proof

The estimate on the number of nodes follows directly from Lemma 3.1 and the fact that \(\mathcal D \) has \(O(n)\) vertices. The number of edges in \(G_\varepsilon \) can be estimated as follows. There are \(O(n)\) faces in \(\mathcal D \) and at most 21 pairs of neighbor bisectors with respect to a fixed face in \(\mathcal D \). By Lemma 3.1(a), there are \(O(\frac{1}{\varepsilon ^4}\log ^2\frac{1}{\varepsilon })\) pairs of nodes lying on two fixed neighboring bisectors. When combined, these three facts prove the estimate on the number of edges of \(G_\varepsilon \). \(\square \)

Paths in \(G_\varepsilon \) are called discrete paths. The cost, \(c(\pi )\), of a discrete path \(\pi \) is the sum of the costs of its edges. Note that if we replace each of the edges in a discrete path \(\pi \) by the corresponding (at most three) segments forming the shortest path used to compute its cost we obtain a path in \(\mathcal D \) with cost \(c(\pi )\). Next, we state the main theorem of this section.

Theorem 4.1

Let \(\tilde{\pi }(v_0,v)\) be a shortest path between two different vertices \(v_0\) and \(v\) in \(\mathcal D \). There exists a discrete path \(\pi (v_0,v)\), such that \( c(\pi (v_0,v)) \le (1+\varepsilon )\Vert \tilde{\pi }(v_0,v)\Vert \).

Proof

We prove the theorem by constructing a discrete path \(\pi (v_0,v)\) the cost of which is as required. Recall that the shortest path \(\tilde{\pi }(v_0,v)\) is a linear path consisting of cell-crossing, face-using, and edge-using segments that satisfy Snell’s law at each bending point. We construct the discrete path \(\pi \) by successive modifications of \(\tilde{\pi }\) described below as steps.

Step 1: In this step, we replace each of the cell-crossing segments of \(\tilde{\pi }\), which satisfy the conditions of Lemma 3.2, by a two-segment path through a Steiner point. Precisely, let \(s=(x_1,x_2)\) be a cell-crossing segment in \(\tilde{\pi }\) (Fig. 8a). Let \(f_1\) and \(f_2\) be the faces containing \(x_1\) and \(x_2\), respectively. Let \(e=(A,B)\) be the common edge between \(f_1\) and \(f_2\). Recall that \(s\) is outside of the union of the edge and vertex vicinities \(D_\varepsilon (e)\cup D_\varepsilon (A)\cup D_\varepsilon (B)\). We refer to such segment as vicinity-free.5 Then, according to Lemma 3.2, there is a Steiner point \(p\) on the bisector \(b\) splitting the dihedral angle formed by \(f_1\) and \(f_2\) such that \(|x_1p|+|px_2|\le (1+\varepsilon /2)|x_1x_2|\). So, in this step, each cell-crossing and vicinity-free segment \(s=(x_1,x_2)\) is replaced by two-segment path \(\{x_1,p,x_2\}\), where \(p\) is the approximating Steiner point as described above. Clearly, after this step, we obtain a path joining \(v_0\) and \(v\), the cost of which does not exceed \((1+\varepsilon /2)\Vert \tilde{\pi }\Vert \). We denote this path by \(\tilde{\pi }_1\) (see Fig. 8b).
Fig. 8

a Replacement of a cell-crossing segment \(s=(x_1,x_2)\) by a two-segment path \(\{x_1,p,x_2\}\). b Replacement of \(\tilde{\pi }_1\) by a path \(\tilde{\pi }_2\) joining Steiner points \(p_i\). Note that edges \((p_ip_{i+1})\) denote local shortest paths, rather than straight-line segments

Step 2: In this step, we consider the sequence of Steiner points added as new bending points along \(\tilde{\pi }_1\) in Step 1. In the case where two consecutive Steiner points are split by a single bending point or a face-using segment on \(\tilde{\pi }_1\), we replace the subpath between them by the corresponding local shortest path. Precisely, assume that \(p_1\) and \(p_2\) are consecutive Steiner points along \(\tilde{\pi }_1\) and the subpath between them is either \(\{p_1, \tilde{x}, p_2\}\) or \(\{p_1,\tilde{x},\tilde{y},p_2\},\,\tilde{x}\) and \(\tilde{y}\) are bending points on the face \(f\), shared by the two neighboring tetrahedra containing \(p_1\) and \(p_2\), respectively. So, in Step 2, we replace all such subpaths by the local shortest paths \(\hat{\pi }(p_1,p_2;f)=\{p_1,x,y,p_2\}\), using (24). We denote the obtained path by \(\tilde{\pi }_2\) (Fig. 8b). Clearly, \(\tilde{\pi }_2\) is a path joining \(v_0\) and \(v\), the cost of which does not exceed that of \(\tilde{\pi }_1\). Hence,
$$\begin{aligned} \Vert \tilde{\pi }_2\Vert \le \Vert \tilde{\pi }_1\Vert \le (1+\varepsilon /2)\Vert \tilde{\pi }\Vert . \end{aligned}$$
(25)
In the following two steps, we identify the portions of \(\tilde{\pi }_2\) that lie inside the vertex and edge vicinities and replace them with discrete paths using the corresponding vertices and edges.
Step 3: Follow \(\tilde{\pi }_2\) from \(v_0\) to \(v\) and let \(a_0\) be the last bending point on \(\tilde{\pi }_2\) that lies inside the vertex vicinity \({D_{\varepsilon }}(v_0)\). Next, let \(b_1\) be the first bending point after \(a_0\) that is in some other vertex vicinity, say \({D_{\varepsilon }}(v_1)\). Likewise, let \(a_1\) be the last bending point in \({D_{\varepsilon }}(v_1)\). Continuing in this way, we define a sequence of, say \(k+1\) for some \(k\ge 1\), different vertices \(v_0,v_1,\ldots , v_k=v\) and a sequence of bending points \(a_0,b_1,a_1,\ldots , a_{k-1},b_k\) on \(\tilde{\pi }_2\), such that for \(i=0,\ldots ,k\), points \(b_i, a_i\) are in \({D_{\varepsilon }}(v_i)\) (we assume \(b_0=v_0,\,a_k=v\)). Furthermore, by our definition, portions of \(\tilde{\pi }_2\) between \(a_i\) and \(b_{i+1}\) do not intersect any vertex vicinities. We partition \(\tilde{\pi }_2\) into portions
$$\begin{aligned} \tilde{\pi }_2(v_0,a_0),\tilde{\pi }_2(a_0,b_1),\tilde{\pi }_2(b_1,a_1),\ldots ,\tilde{\pi }_2(b_k,v). \end{aligned}$$
(26)
The portions \(\tilde{\pi }_2(a_i,b_{i+1})\), for \(i=0,\ldots , k-1\), are called the between-vertex–vicinities portions, while the portions \(\tilde{\pi }_2(b_i,a_i)\), for \(i=0,\ldots , k\), are called the vertex–vicinity portions.
We define path \(\tilde{\pi }_3\) by replacing each of the vertex–vicinities portions by a two-segment path trough the corresponding vertex and show that the cost of \(\tilde{\pi }_3\) is bounded by \((1+\varepsilon /6)\Vert \tilde{\pi }_2\Vert \). Consider a between-vertex–vicinities portion \(\tilde{\pi }_2(a_i,b_{i+1})\) for some \(0 \le i < k-1\). If this portion consists of a single segment \((a_i,b_{i+1})\), then the vertices \(v_i\) and \(v_{i+1}\) must be adjacent in \(\mathcal D \) and we define \(\tilde{\pi }_3(v_i,v_{i+1})\) to be the segment \((v_i,v_{i+1})\). The length of \((v_i,v_{i+1})\) is estimated by using the triangle inequality and the definition of the vertex–vicinities as follows:
$$\begin{aligned} |v_iv_{i+1}|&\le |v_ia_i|+|a_ib_{i+1}|+|b_{i+1}v_{i+1}|\le |a_ib_{i+1}| + \varepsilon (r(v_i)+r(v_{i+1}))\nonumber \\&\le |a_ib_{i+1}| + \frac{\varepsilon }{14}(d(v_i)+d(v_{i+1}))\le |a_ib_{i+1}| + \frac{\varepsilon }{7}|v_iv_{i+1}|. \end{aligned}$$
(27)
To estimate the cost of the segment \((v_i,v_{i+1})\), we observe that \((a_i,b_{i+1})\) lies inside a tetrahedron incident to \((v_i,v_{i+1})\). Thus, the weight of \((v_i,v_{i+1})\) is at most the weight of \((a_i,b_{i+1})\). This observation and (27) readily imply
$$\begin{aligned} \Vert \tilde{\pi }_3(v_i,v_{i+1})\Vert = \Vert v_iv_{i+1}\Vert \le (1+\frac{\varepsilon }{6}) \Vert a_ib_{i+1}\Vert = \big (1+\frac{\varepsilon }{6}\big ) \Vert \tilde{\pi }_2(a_i,b_{i+1})\Vert . \end{aligned}$$
(28)
In the general case, where \(\tilde{\pi }_2(a_i,b_{i+1})\) contains at least two segments, we follow the bending points along \(\tilde{\pi }_2(a_i,b_{i+1})\) and define \(X\) to be the first bending point on the boundary \(\partial D(v_i)\) (see Definition 3.1). If the path \(\tilde{\pi }_2(a_i,b_{i+1})\) lies entirely in \(D(v_i)\), then we set \(X=b_{i+1}\). Thus, the bending points on the path \(\tilde{\pi }_2\) between \(a_i\) and \(X\) lie in the tetrahedra incident to \(v_i\). Let \(\dot{w}_i\) be the minimum weight among the segments of the path \(\tilde{\pi }_2(a_i,X)\) and let \(x\) be the first bending point after \(a_i\) incident to a segment, the weight of which is \(\dot{w}_i\). Note that \(x\) may coincide with \(a_i\). Analogously, define the bending points \(Y\) and \(y\), by following the bending points of the backward path \(\tilde{\pi }_2(b_{i+1},a_i)\) from \(b_{i+1}\). Note that \(x\) precedes \(y\) on the path \(\tilde{\pi }_2(a_i,b_{i+1})\). We define the path \(\tilde{\pi }_3(v_i,v_{i+1})\) as the concatenation of the segments \((v_i,x),\,(y,v_{i+1})\) and the portion \(\tilde{\pi }_2(x,y)\), i.e.,
$$\begin{aligned} \tilde{\pi }_3(v_i,v_{i+1})=\{(v_i,x),\tilde{\pi }_2(x,y),(y,v_{i+1})\}. \end{aligned}$$
Next, we estimate the cost of \(\tilde{\pi }_3(v_i,v_{i+1})\). First, we observe that \(x\not =X\) and \(x\) is on a face or edge incident to \(v_i\). Then it follows that the weight of the segment \((v_i,x)\) cannot exceed \(\dot{w}_i\). We use the triangle inequality and the fact that \(a_i\) is inside the vertex vicinity \({D_{\varepsilon }}(v_i)\), to obtain
$$\begin{aligned} \Vert v_ix\Vert&\le \dot{w}_i|v_ia_i| + \dot{w}_i|\tilde{\pi }_2(a_i,x)|\le \dot{w}_i|v_ia_i| + \Vert \tilde{\pi }_2(a_i,x)\Vert \\&\le \dot{w}_i\varepsilon r(v_i) + \Vert \tilde{\pi }_2(a_i,x)\Vert \le \dot{w}_i\frac{\varepsilon }{14} d(v_i) + \Vert \tilde{\pi }_2(a_i,x)\Vert . \end{aligned}$$
Analogously, for the cost of the segment \((y,v_{i+1})\), we have
$$\begin{aligned} \Vert yv_{i+1}\Vert \le \dot{w}_{i+1}\frac{\varepsilon }{14} d(v_{i+1}) + \Vert \tilde{\pi }_2(y,b_{i+1})\Vert . \end{aligned}$$
Using these estimates, and the way we defined the path \(\tilde{\pi }_3(v_i,v_{i+1})\), the weights \(\dot{w}_i,\dot{w}_{i+1}\), the distances \(d(v_i),\,d(v_{i+1})\), and the points \(X,Y\), we obtain
$$\begin{aligned} \Vert \tilde{\pi }_3(v_i,v_{i+1})\Vert&\le \Vert \tilde{\pi }_2(a_i,b_{i+1})\Vert + \frac{\varepsilon }{14}(\dot{w}_i d(v_i) + \dot{w}_{i+1} d(v_{i+1})) \nonumber \\&\le \Vert \tilde{\pi }_2(a_i,b_{i+1})\Vert + \frac{\varepsilon }{14}(\Vert \tilde{\pi }_3(v_i,X)\Vert + \Vert \tilde{\pi }_3(Y,v_{i+1})\Vert )\nonumber \\&\le \Vert \tilde{\pi }_2(a_i,b_{i+1})\Vert + \frac{\varepsilon }{7}\Vert \tilde{\pi }_3(v_i,v_{i+1})\Vert , \end{aligned}$$
(29)
which implies the estimate (28) in the general case. Applying the above construction to each pair of consecutive vertices in the sequence \(v_0,v_1,\ldots ,v_k=v\), we obtain a linear path
$$\begin{aligned} \tilde{\pi }_3(v_0,v)=\big \{ \tilde{\pi }_3(v_0,v_1), \tilde{\pi }_3(v_1,v_2), \ldots , \tilde{\pi }_3(v_{k-1},v)\big \}, \end{aligned}$$
that has no bending points inside vertex vicinities except for the vertices \(v_0,v_1,\ldots ,v_k=v\). We estimate the cost of this path by summing up (28), for \(i=0,\ldots , k-1\), and obtain
$$\begin{aligned} \Vert \tilde{\pi }_3(v_0,v)\Vert \le (1+\frac{\varepsilon }{6})\sum _{i=0}^{k-1}\Vert \tilde{\pi }_2(a_i,b_{i+1})\Vert \le (1+\frac{\varepsilon }{6})\Vert \tilde{\pi }_2(v_0,v)\Vert . \end{aligned}$$
(30)
Observe that the path \(\tilde{\pi }_3\) constructed above may contain self intersections (e.g., if one and the same vertex vicinity is visited twice by \(\tilde{\pi }_2\)). It is also possible that \(\tilde{\pi }_3\) may contain consecutive face-using segments. Hence, at the end of Step 3, we traverse the obtained path and compress it. That is, we remove the loops in case of self-intersections. We replace the consecutive face-using segments (which obviously lie in the same face) by the single face-using segment joining their free end-points. We denote the compressed path again by \(\tilde{\pi }_3\). Clearly, compressing reduces the cost of the path and hence the estimate (30) remains true for \(\tilde{\pi }_3\).

Next, in Step 4, using a similar approach as above, we further partition each subpath \(\tilde{\pi }_3(v_i,v_{i+1})\) into between-edge vicinities portions and edge vicinity portions. Then, we replace each edge vicinity portion by an edge-using segment plus 2 additional segments and estimate the cost of the resulting path \(\tilde{\pi }_4\).

Step 4: Let \((v_i,a)\) be the first segment of the path \(\tilde{\pi }_3(v_i,v_{i+1})\). If \(a\) is not inside an edge vicinity, we define \(a_{i,0}=v_i\). Otherwise, if \(a\) is inside an edge vicinity, say \({D_{\varepsilon }}(e_0)\), we consider the union \(D(e_0)\) of tetrahedra incident to the edge \(e_0\) and denote by \(\partial D(e_0)\) the set of faces on the boundary of \(D(e_0)\) that are not incident to \(e_0\). Then, let \(a^{\prime }\) be the first bending point on the path \(\tilde{\pi }_3(v_i,v_{i+1})\) after \(v_i\) lying on \(\partial D(e_0)\). We define \(a_{i,0}\) to be the last bending point on \(\tilde{\pi }_3(v_i,a^{\prime })\) that is inside \({D_{\varepsilon }}(e_0)\). Next, let \(b_{i,1}\) be the first bending point on \(\tilde{\pi }_3(a_{i,0},v_{i+1})\) that is inside an edge vicinity, say \(D_\varepsilon (e_1)\) and let \(a^{\prime \prime }\) be the first bending point on \(\tilde{\pi }_3(b_{i,1},v_{i+1})\) that is on \(\partial D(e_1)\). We define \(a_{i,1}\) as the last bending point on \(\tilde{\pi }_3(b_{i,1},a^{\prime \prime })\) that is in the same edge vicinity as \(b_{i,1}\). Assume that, following this approach, the sequence of bending points \(a_{i,0}, b_{i,1}, a_{i,1},\ldots , a_{i,k_i-1}, b_{i,k_i}\) has been defined. They partition the portion \(\tilde{\pi }_3(v_i,v_{i+1})\) into subportions \(\tilde{\pi }_3(v_i,v_{i+1})=\big \{ \tilde{\pi }_3(v_i,a_{i,0}),\ldots ,\tilde{\pi }_3(a_{i,j-1},b_{i,j}), \tilde{\pi }_3(b_{i,j},a_{i,j}), \ldots , \tilde{\pi }_3(b_{i,k_i},v_{i+1})\big \}\). Portions between \(a_{i,j}\) and \(b_{i,j+1}\), for \(j=0, \ldots ,k_i-1\), are called the between-edge vicinity portions. Portions between \(b_{i,j}\) and \(a_{i,j}\), for \(j=0,\ldots ,k_i\), are called the edge vicinity portions (\(b_{i,0}=v_i\) and \(a_{i,k_i}=v_{i+1}\)).

According to our construction, the bending points \(a_{i,0}, b_{i,1}, a_{i,1},\ldots , a_{i,k_i-1}, b_{i,k_i}\), defining the above partition lie inside edge vicinities. Moreover, consecutive points \(b_{i,j}\) and \(a_{i,j}\), for \(j=0,\ldots ,k_i\), are in one and the same edge vicinity \(D_\varepsilon (e_j)\).

For \(j=0,\ldots ,k_i\), let \(b^{\prime }_{i,j}\) and \(a^{\prime }_{i,j}\) be the orthogonal projections of the points \(b_{i,j}\) and \(a_{i,j}\) onto the edge \(e_j\), respectively (Fig. 9). Let \(p_{i,j}\) and \(q_{i,j}\) be the Steiner points on \(e_j\) defining the largest sub-interval of the interval \((a^{\prime }_{i,j},b^{\prime }_{i,j})\) on \(e_j\) and assume that \(p_{i,j}\) is between \(a^{\prime }_{i,j}\) and \(q_{i,j}\). In the case where the interval \((a^{\prime }_{i,j},b^{\prime }_{i,j})\) contains no Steiner points, we define \(p_{i,j}=q_{i,j}\) to be the closest Steiner point to \(a^{\prime }_{i,j}\) on \(e_j\).
Fig. 9

Replacement of subpath \(\tilde{\pi }_3(b_{i,j},a_{i,j})\) by the edge-using segment \((q_{i,j}p_{i,j})\)

In \(\tilde{\pi }_4\), the edge-using segment \((q_{i,j}p_{i,j})\) will replace the edge vicinity portion \(\tilde{\pi }_3(b_{i,j},a_{i,j})\) in \(\tilde{\pi }_3\). Below we estimate the resulting error. From the definition of the edge vicinity \(D_\varepsilon (e_j)\), the Steiner points on \(e_j\), and the radii \(r(p_{i,j})\) and \(r(q_{i,j})\), it is easy to derive that
$$\begin{aligned} |p_{i,j}a_{i,j}|\le \frac{3}{2}\varepsilon r(p_{i,j}) \quad \mathrm{and} \quad |b_{i,j}q_{i,j}|\le \frac{3}{2}\varepsilon r(q_{i,j}). \end{aligned}$$
(31)
Furthermore, by our construction and the fact that \((q_{i,j},p_{i,j})\) is an edge-using segment, it follows that
$$\begin{aligned} \Vert q_{i,j}p_{i,j}\Vert \le \Vert \tilde{\pi }_3(b_{i,j},a_{i,j})\Vert . \end{aligned}$$
(32)

Next, we modify between-edge vicinities portions \(\tilde{\pi }_3(a_{i,j},b_{i,j+1})\), into paths \(\tilde{\pi }_4(p_{i,j},q_{i,j+1})\), joining Steiner points \(p_{i,j}\) and \(q_{i,j+1}\), and not intersecting any vertex or edge vicinities. We apply a construction analogous to the one used in Step 3 to define the paths \(\tilde{\pi }_3(v_i,v_{i+1})\).

We fix \(j\) and consider the between-edge vicinities portion \(\tilde{\pi }_3(a_{i,j},b_{i,j+1})\). First, we consider the special case where \(\tilde{\pi }_3(a_{i,j},b_{i,j+1})\) is the segment \((a_{i,j},b_{i,j+1})\). In this case, we observe that \(e_j\) and \(e_{j+1}\) must be edges of the tetrahedron containing the segment \((a_{i,j},b_{i,j+1})\) and define \(\tilde{\pi }_4(p_{i,j},q_{i,j+1})=(p_{i,j},q_{i,j+1})\). We estimate the length of this segment using the triangle inequality, the estimates (31) and Definition 3.1 as follows:
$$\begin{aligned} |p_{i,j}q_{i,j+1}|&\le |p_{i,j}a_{i,j}| + |a_{i,j}b_{i,j+1}| +|b_{i,j+1}q_{i,j+1}| \nonumber \\&\le \frac{3\varepsilon }{2} (r(p_{i,j})+r(q_{i,j+1}))+ |a_{i,j}b_{i,j+1}|\nonumber \\&\le \frac{\varepsilon }{16}(d(p_{i,j})+d(q_{i,j+1})) + |a_{i,j}b_{i,j+1}| \nonumber \\&\le \frac{\varepsilon }{8}|p_{i,j}q_{i,j+1}| + |a_{i,j}b_{i,j+1}|. \end{aligned}$$
Using this estimate and the observation that the weight of the segment \((p_{i,j},q_{i,j+1})\) cannot exceed the weight of \((a_{i,j},b_{i,j+1})\), we obtain
$$\begin{aligned} \Vert \tilde{\pi }_4(p_{i,j},q_{i,j+1})\Vert&= \Vert p_{i,j}q_{i,j+1}\Vert \nonumber \\&\le \big (1+\frac{\varepsilon }{7}\big )\Vert a_{i,j}b_{i,j+1}\Vert \nonumber \\&= \big (1+\frac{\varepsilon }{7}\big ) \Vert \tilde{\pi }_3(a_{i,j},b_{i,j+1})\Vert . \end{aligned}$$
(33)
Next, we consider the general case, where \(\Vert \tilde{\pi }_3(a_{i,j},b_{i,j+1})\Vert \) consists of at least two segments. Let \(X\) be the first bending point after \(a_{i,j}\) that is on the boundary \(\partial D(e_j)\). If the path \(\tilde{\pi }_3(a_{i,j},b_{i,j+1})\) is entirely inside \(D(e_j)\), then we set \(X=b_{i,j+1}\). Furthermore, let \(\dot{w}^{\prime }_j\) be the minimum weight among the segments in \(\tilde{\pi }_3(a_{i,j},X)\), and let \(x\) be the first bending point after \(a_{i,j}\) that is an end-point of a segment the weight of which is \(\dot{w}^{\prime }_j\). Analogously, we define the weight \(\dot{w}^{\prime }_{j+1}\), and the bending points \(Y\), and \(y\), by following the bending points of the backward path \(\tilde{\pi }_3(b_{i,j+1},a_{i,j})\) from \(b_{i,j+1}\) and with respect to the edge vicinity \({D_{\varepsilon }}(e_{j+1})\). It follows that the point \(x\) precedes \(y\) along \(\tilde{\pi }_3(a_{i,j},b_{i,j+1})\). We define the portion of the path \(\tilde{\pi }_4\) joining \(p_{i,j}\) and \(q_{i,j+1}\) by \(\tilde{\pi }_4(p_{i,j},q_{i,j+1})=\{(p_{i,j},x),\tilde{\pi }_3(x,y),(y,q_{i,j+1})\}\) and estimate its cost. Let us first estimate the cost of the segment \((p_{i,j},x)\). We observe that \(\Vert p_{i,j}x\Vert \le \dot{w}^{\prime }_j|p_{i,j}x|\), that \(|p_{i,j}x|\le |p_{i,j}a_{i,j}| + |\tilde{\pi }_3(a_{i,j},x)|\) (by triangle inequality), and that the segments on the path \(\tilde{\pi }_3(a_{i,j},x)\) have weight greater than or equal to \(\dot{w}^{\prime }_j\). Using these observations, (31), and Definition 3.1, we obtain
$$\begin{aligned} \Vert p_{i,j}x\Vert&\le \dot{w}^{\prime }_j|p_{i,j}a_{i,j}| + \dot{w}^{\prime }_j|\tilde{\pi }_3(a_{i,j},x)|\le \dot{w}^{\prime }_j|p_{i,j}a_{i,j}| + \Vert \tilde{\pi }_3(a_{i,j},x)\Vert \nonumber \\&\le \frac{3\varepsilon }{2}\dot{w}^{\prime }_j r(p_{i,j}) + \Vert \tilde{\pi }_3(a_{i,j},x)\Vert =\frac{\varepsilon }{16} \dot{w}^{\prime }_j d(p_{i,j}) + \Vert \tilde{\pi }_3(a_{i,j},x)\Vert . \end{aligned}$$
(34)
Analogously, we have
$$\begin{aligned} \Vert yq_{i,j+1}\Vert \le \frac{\varepsilon }{16} \dot{w}^{\prime }_{j+1} d(q_{i,j+1}) + \Vert \tilde{\pi }_3(y,b_{i,j+1})\Vert . \end{aligned}$$
(35)
Using the definition of the path \(\tilde{\pi }_4(p_{i,j},q_{i,j+1})\), the estimates (34) and (35), and the definition of the distances \(d(p_{i,j})\) and \(d(q_{i,j+1})\), the weights \(\dot{w}^{\prime }_j\) and \(\dot{w}^{\prime }_{j+1}\), and the points \(X\) and \(Y\), we obtain
$$\begin{aligned} \Vert \tilde{\pi }_4(p_{i,j},q_{i,j+1})\Vert&\le \Vert \}tp_3(a_{i,j},b_{i,j+1})\Vert +\frac{\varepsilon }{16}(\dot{w}^{\prime }_j d(p_{i,j}) + \dot{w}^{\prime }_{j+1} d(q_{i,j+1}))\nonumber \\&\le \Vert \tilde{\pi }_3(a_{i,j},b_{i,j+1})\Vert +\frac{\varepsilon }{16}(\Vert \tilde{\pi }_4(p_{i,j},X)\Vert + \Vert \tilde{\pi }_4(Y,q_{i,j+1})\Vert )\nonumber \\&\le \Vert \tilde{\pi }_3(a_{i,j},b_{i,j+1})\Vert +\frac{\varepsilon }{8}\Vert \tilde{\pi }_4(p_{i,j},q_{i,j+1})\Vert , \end{aligned}$$
(36)
which implies estimate (33), in the general case. Finally, combining segments \((q_{i,j},p_{i,j})\) and paths \(\tilde{\pi }_4(p_{i,j},q_{i,j+1})\), for \(j=0,\ldots , k_i\), we construct a path
$$\begin{aligned} \tilde{\pi }_4(v_i,v_{i+1})&= \big \{ (v_i,p_{i,0}), \tilde{\pi }_4(p_{i,0},q_{i,1}),(q_{i,1},p_{i,1}), \tilde{\pi }_4(p_{i,1},q_{i,2}),\ldots , \nonumber \\&\quad \tilde{\pi }_4(p_{i,k_i-1},q_{i,k_i}), (q_{i,k_i},v_{i+1})\big \}. \end{aligned}$$
This path has no bending points in any of the edge or vertex vicinities. Its cost can be bounded using (32) and (33) as follows;
$$\begin{aligned} \Vert \tilde{\pi }_4(v_i,v_{i+1})\Vert&= \sum _{j=0}^{k_i}\Vert q_{i,j},p_{i,j}\Vert + \sum _{j=0}^{k_i-1}\Vert \tilde{\pi }_4(p_{i,j},q_{i,j+1})\Vert \nonumber \\&\le \sum _{j=0}^{k_i} \Vert \tilde{\pi }_3(b_{i,j},a_{i,j})\Vert + \sum _{j=0}^{k_i-1} \big (1+\frac{\varepsilon }{7}\big )\Vert \tilde{\pi }_3(a_{i,j},b_{i,j+1})\Vert \nonumber \\&\le \big (1+\frac{\varepsilon }{7}\big )\Vert \tilde{\pi }_3(v_i,v_{i+1})\Vert , \end{aligned}$$
(37)
where we assume \(v_i=b_{i,0}=q_{i,0}\) and \(v_{i+1}=a_{i,k_i}=p_{i,k_i}\).
The paths \(\tilde{\pi }_4(v_i,v_{i+1})\), for \(i=0,\ldots , k-1\), form a linear path \(\tilde{\pi }_4(v_0,v)\), the cost of which is estimated using (37), (28), and (25) by
$$\begin{aligned} \tilde{\pi }_4(v_0,v)&\le \sum _{i=0}^{k-1}(1+\frac{\varepsilon }{7})\Vert \tilde{\pi }_3(v_i,v_{i+1})\Vert \nonumber \\&= (1+\frac{\varepsilon }{7})\Vert \tilde{\pi }_3(v_0,v)\Vert \le (1+\frac{\varepsilon }{3})\Vert \tilde{\pi }_2(v_0,v)\Vert \nonumber \\&\le (1+\varepsilon )\Vert \tilde{\pi }(v_0,v)\Vert . \end{aligned}$$
(38)
As in Step 3, it is possible for \(\tilde{\pi }_4\) to contain self-intersections and consecutive face-using segments. Hence, we traverse \(\tilde{\pi }_4\) and compress it by removing loops and by replacing consecutive face-using segments. The obtained path is denoted again by \(\tilde{\pi }_4\), and estimate (38) is valid.

The bending points defining \(\tilde{\pi }_4\) can be partitioned into two groups. The first group consists of bending points corresponding to nodes of the graph \(G_\varepsilon \), i.e., Steiner points on bisectors, Steiner points on edges, and vertices of \(\mathcal D \). The second group consists of the remaining bending points of \(\tilde{\pi }_4\), which are bending points inside the faces of \(\mathcal D \). We complete the proof of the theorem by showing that the sequence of the nodes in the first group defines a discrete path \(\pi (v_0,v)\) the cost of which \(c(\pi (v_0,v))\le \Vert \tilde{\pi }_4(v_0,v)\Vert \). It suffices to show that any two consecutive nodes (bending points in the first group) along the path \(\tilde{\pi }_4\) are adjacent in the approximation graph \(G_\varepsilon \).

To show this, we review closely the structure of the path \(\tilde{\pi }_4\). In Step 3, portions of \(\tilde{\pi }_2\) related to vertex vicinities have been replaced by two segment portions through-vertices of \(\mathcal D \). Furthermore, we observe that the segments \((v_i,x)\) created in Step 3 are either a face-using segments or join \(v_i\) to a Steiner point on a bisector. The same applies to segments \((y,v_{i+1})\). Similarly, in Step 4, portions related to edge vicinities have been replaced by three segment portions visiting corresponding edges. Again segments \((p_{i,j},x)\) are either face-using segments or join \(p_{i,j}\) to a node on a bisector, that is a neighbor of the bisector incident to the edge containing \(p_{i,j}\). The same applies to the segments \((y,q_{i,j+1})\). In summary, the segments created in Steps 3 and 4 are of one of the following two types:
  1. 1.

    A face-using segment with one of its end-point being a (node) vertex of \(\mathcal D \) or a Steiner point on an edge of \(\mathcal D \).

     
  2. 2.

    A segment joining two nodes, at least one of them being a Steiner point on an edge of \(\mathcal D \) or a vertex of \(\mathcal D \).

     
The remaining segments in \(\tilde{\pi }_4\) are cell-crossing and face-using segments, the end-points of which are outside any vertex or edge vicinity. All the cell-crossing segments in \(\tilde{\pi }_4\) were created during Steps 1 and 2. Hence, one of their end-points is a (node) Steiner point on a bisector of a tetrahedron. Finally, due to the compressing, there are no consecutive face-using segments in \(\tilde{\pi }_4\).

Now, let \(p\) and \(q\) be two consecutive nodes along the path \(\tilde{\pi }_4\). We show that \(p\) and \(q\) are adjacent in \(G_\varepsilon \). We consider, first, the case where at least one of the nodes, say \(p\), is a vertex of \(\mathcal D \). Let \(x\) be the bending point following \(p\) along the path \(\tilde{\pi }_4\). By the definition of bending points adjacent to the vertices (in Step 3), we know that \((p,x)\) is a face-using segment followed by a cell-crossing segment \((x,x_1)\), joining \(x\) to a (node) Steiner point on a bisector lying in one of the tetrahedra incident to the face that contains \((p,x)\). So, \(q=x_1\) and \(q\) is inside a tetrahedron incident to \(p\). Thus, \(p\) and \(q\) are adjacent in \(G_\varepsilon \). The case where at least one of the nodes \(p\) or \(q\) is a Steiner point on an edge of \(\mathcal D \) can be treated analogously.

Assume now that both \(p\) and \(q\) are Steiner points on bisectors. Let \(x\) and \(x_1\) be the bending points following \(p\) along \(\tilde{\pi }_4\). The point \(x\) has to be a bending point on a face of the tetrahedron containing \(p\). The segment \((x,x_1)\) is either a cell-crossing or a face-using segment. In the first case, \(q\) must coincide with \(x_1\) and is adjacent to \(p\) in \(G_\varepsilon \), since it lies in a tetrahedron that is a neighbor to the one containing \(p\). In the second case, where \((x,x_1)\) is a face-using segment, we consider the bending point \(x_2\) that follows \(x_1\) along the path \(\tilde{\pi }_4\). The segment \((x_1,x_2)\) must be a cell-crossing segment. Thus, in this case, \(q=x_2\) is adjacent to \(p\), because the tetrahedra containing \(p\) and \(q\) are neighbors.

We have shown that any pair \(p\) and \(q\) of consecutive nodes on the path \(\tilde{\pi }_4\) are adjacent in \(G_\varepsilon \). Hence, we define a discrete path \(\pi (v_0,v)\) to be the path in \(G_\varepsilon \) following the sequence of nodes along \(\tilde{\pi }_4\). Finally, we observe that the subpaths of \(\tilde{\pi }_4(p,q)\) joining pairs of consecutive nodes stay in the union of the tetrahedra containing these nodes and cross faces shared by the bisectors containing them. Hence, by the definition of the cost of the edges in \(G_\varepsilon \), we have \(c(p,q)\le \Vert \tilde{\pi }_4(p,q)\Vert \). Summing these estimates, for all edges of \(\pi (v_0,v)\), and using (38), we obtain \( c(\pi (v_0,v))\le \Vert \tilde{\pi }_4(v_0,v)\Vert \le (1+\varepsilon )\Vert \tilde{\pi }(v_0,v)\Vert \). \(\square \)

5 An Algorithm for Computing SSSP in \(G_\varepsilon \)

In this section, we present our algorithm for solving the Single Source Shortest Paths (SSSP) problem in the approximation graph \(G_\varepsilon =(V(G_\varepsilon ),E(G_\varepsilon ))\). Straightforwardly, one can apply Dijkstra’s algorithm, which runs in \(O(|E(G_\varepsilon )| + |V(G_\varepsilon )|\log |V(G_\varepsilon )|)\) time. By Lemma 4.1, we have \(|V(G_\varepsilon )|=O(\frac{n}{\varepsilon ^2}\log \frac{1}{\varepsilon })\) and \(|E(G_\varepsilon )|=O(\frac{n}{\varepsilon ^4}\log ^2 \frac{1}{\varepsilon })\). Thus, the SSSP problem in \(G_\varepsilon \) can be solved in \(O(\frac{n}{\varepsilon ^4}\log \frac{n}{\varepsilon }\log \frac{1}{\varepsilon })\) time.

In the remainder of this section, we demonstrate how geometric properties of our model can be used to obtain a more efficient algorithm for solving the SSSP problem. More precisely, we present an algorithm that runs in \(O(|V_\varepsilon |(\log |V_\varepsilon |+\frac{1}{\sqrt{\varepsilon }}\log ^3\frac{1}{\varepsilon }))= O(\frac{n}{\varepsilon ^{2.5}}\log \frac{n}{\varepsilon }\log ^3 \frac{1}{\varepsilon })\) time.

Informally, the idea is to avoid consideration of large portions of the edges of the graph \(G_\varepsilon \) when searching for shortest paths. We achieve that by applying the strategy proposed first in [31, 32] and developed further in [3] and by using the properties of the weighted distance function and additive Voronoi diagrams studied in Sect. 2.2. We maintain a priority queue containing candidate shortest paths. At each iteration of the algorithm, a shortest path from the source \(s\) to some node \(u\) of \(G_\varepsilon \) is found. Then, the algorithm constructs edges adjacent to \(u\) that can be continuations of the shortest path from \(s\) to \(u\) and inserts them in the priority queue as new candidate shortest paths. In general, one needs to consider all edges adjacent to \(u\) as possible continuations. In our case, we divide the edges adjacent to \(u\) into \(O(\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\) groups related to the segments containing Steiner points in the neighboring bisectors and demonstrate that we can consider just a constant number of edges in each group. The latter is possible due to the structure of the Voronoi cell \(\mathcal{V }(u)\) of the node \(u\) in the additive Voronoi diagram related to a fixed group (see Theorem 2.1).

This section consists of two subsections. In the first one we describe the general structure of the algorithm. Section 5.2 is divided into four parts. In the first part we show how the general strategy can be applied in our case and present an outline of the algorithm. In the next two parts we provide details of the implementation of the algorithm and analyze its complexity. Finally, in part four we establish the main result of the paper.

5.1 General Structure of the Algorithm

Let \(G(V,E)\) be a directed graph with positive costs (lengths) assigned to its edges and \(s\) be a fixed node of \(G\), called the source. A standard greedy approach for solving the SSSP problem works as follows: a subset, \(S\), of nodes to which the shortest path has already been found and a set, \(E(S)\), of edges connecting \(S\) with \(S^a\subset V\setminus S\) are maintained. The set \(S^a\) consists of nodes not in \(S\) but adjacent to \(S\). In each iteration, an optimal edge \(e(S)=(u,v)\) in \(E(S)\) is selected, with source \(u\) in \(S\) and target \(v\) in \(S^a\) (see Fig. 10). The target vertex \(v\) is added to \(S\) and \(E(S)\) is updated correspondingly. An edge \(e=e(S)\) is optimal if it minimizes the value \(\delta (u) + c(e)\), where \(\delta (u)\) is the distance from \(s\) to \(u\) and \(c(e)\) is the cost of \(e\).
Fig. 10

The sets \(S,\,S^a\), and an optimal edge \(e(S)=(u,v)\) in \(E(S)\) are illustrated. A shortest path from \(s\) to \(u\) is illustrated by a dashed curve

Different strategies for maintaining information about \(E(S)\) and finding an optimal edge \(e(S)\) during each iteration result in different algorithms for computing SSSP. For example, Dijkstra’s algorithm maintains only a subset \(Q(S)\) of \(E(S)\), which, however, always contains an optimal edge. Alternatively, as in [3], one may maintain a subset of \(E(S)\) containing one edge per node \(u\) in \(S\). The target node of this edge is called the representative of \(u\) and is denoted by \(\rho (u)\). The node \(u\) itself is called predecessor of its representative. The representative \(\rho (u)\) is defined to be the target of the minimum cost edge in the propagation set \(I(u)\) of \(u\), where \(I(u)\subset E(S)\) consists of all edges \((u,v)\) such that \(\delta (u)+c(u,v) < \delta (u^{\prime }) + c(u^{\prime },v)\) for all nodes \(u^{\prime }\in S\) that have entered \(S\) before \(u\). The union of propagation sets forms a subset \(Q(S)\) of \(E(S)\) that always contains an optimal edge. Propagation sets \(I(u)\), for \(u\in S\), form a partition of \(Q(S)\), which is called propagation diagram, and is denoted by \(\mathcal{I }(S)\).

The set of representatives \(R\subset S^a\) can be organized in a priority queue, where the key of the node \(\rho (u)\) in \(R\) is defined to be \(\delta (u) + c(u,\rho (u))\). Observe that the edge corresponding to the minimum in \(R\) is an optimal edge for \(S\). In each iteration, the minimum key node \(v\) in \(R\) is selected and the following three steps are carried:

Step 1. The node \(v\) is moved from \(R\) into \(S\). Then, the propagation set \(I(v)\) is computed and the propagation diagram \(\mathcal{I }(S)\) is updated accordingly.

Step 2. Representative \(\rho (v)\) of \(v\) and a new representative, \(\rho (u)\), for the predecessor \(u\) of \(v\) are computed.

Step 3. The new representatives, \(\rho (u)\) and \(\rho (v)\), are either inserted into \(R\) together with their corresponding keys, or (if they are already in \(R\)) their keys are updated.

Clearly, this leads to a correct algorithm for solving the SSSP problem in \(G\). The total time for the priority queue operations6 is \(O(|V|\log |V|)\). Therefore, the efficiency of this strategy depends on the maintenance of the propagation diagram, the complexity of the propagation sets, and the efficient updates of the new representatives. In the next subsection, we address these issues and provide necessary details.

5.2 Implementation Details and Analysis

5.2.1 Notation and Algorithm Outline

Our algorithm follows the general strategy as described in the previous subsection. It takes as input a weighted tetrahedralization \(\mathcal D \), an approximation parameter \(\varepsilon \) and a fixed vertex \(s\) of \(\mathcal D \). The algorithm first computes the set of nodes \(V_\varepsilon \), consisting of the vertices of \(\mathcal D \) and all Steiner points as described in Sect. 3.1. This computation takes time proportional to \(|V_\varepsilon |\). We view the graph \(G_\varepsilon \) as a directed graph where each of its original edges is replaced by a pair of oppositely oriented edges with cost equal to the cost of the original edge. Following our main idea the edges of the graph \(G_\varepsilon \) are not computed in advance. Only these of the edges of \(G_\varepsilon \) that eventually participate in a shortest path to some vertex will be explicitly computed during the course of the algorithm.

Let, as above, \(S\) be the set of the nodes to which the shortest path has already been found and \(E(S)\) be the set of the edges joining \(S\) with \(S^a\subset V\setminus S\). We partition the edges of \(G_\varepsilon \) (and respectively \(E(S)\)) into groups so that the propagation sets and the corresponding propagation diagrams, when restricted to a fixed group, have a simple structure and can be updated efficiently. Then, for each node \(u\) in \(S\), we will keep multiple representatives in \(R\). For each group where edges incident to \(u\) participate and where its propagation set is non-empty, the number of such representatives is, on average, constant. A node in \(S^a\) will have multiple predecessors—at most as many as the number of the groups where edges incident to it participate. We will show that the number of groups, where edges incident to \(u\) can participate, is bounded by \(O(\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\) times the number of bisectors incident to \(u\). In a fixed group, we will be able to compute new representatives in \(O(\log \frac{1}{\varepsilon })\) time and update propagation diagrams in \(O(\log ^2\frac{1}{\varepsilon })\) time.

Edges of \(G_\varepsilon \) joining pairs of Steiner points on bisectors are naturally partitioned into groups corresponding to ordered triples \((\mathbf{b},{\mathbf{b}_\mathbf{1}},f)\), where \(\mathbf{b}\) and \({\mathbf{b}_\mathbf{1}}\) are neighboring bisectors with respect to the face \(f\) (see Sect. 4 for the definitions). The edges of the initial tetrahedralization \(\mathcal D \) are assumed to belong to the bisectors incident to them. In this way an edge of the initial tetrahedralization will contribute to each of the groups defined by the bisectors incident to it. So, the group of edges corresponding to an ordered triple \((\mathbf{b},{\mathbf{b}_\mathbf{1}},f)\) consists of all edges from a node on \(\mathbf{b}\) to a node on \({\mathbf{b}_\mathbf{1}}\) that cross \(f\). Recall that the nodes (Steiner points) on any bisector \(\mathbf{b}\) were placed on a set of segments parallel to the edge of \(\mathcal D \) incident to \(\mathbf{b}\). In our discussion below, we refer to these segments as Steiner segments. An edge of the initial tetrahedralization \(\mathcal D \) is viewed as contributing multiple Steiner segments one per each bisector incident to it. We further partition the group of edges associated with the triple \((\mathbf{b},{\mathbf{b}_\mathbf{1}},f)\) into subgroups corresponding to pairs of Steiner segments \((\ell ,\ell _1)\) on \(\mathbf{b}\) and \({\mathbf{b}_\mathbf{1}}\), respectively, see Fig. 11. In this way, the edges of \(G_\varepsilon \) are partitioned into groups corresponding to ordered triples \((\ell ,\ell _1, f)\), where \(\ell \) and \(\ell _1\) are Steiner segments parallel to \(f\) on two neighboring bisectors sharing \(f\). The group corresponding to \((\ell ,\ell _1, f)\) is denoted by \(E(\ell ,\ell _1, f)\) and consists of all oriented edges from a node on \(\ell \) to a node on \(\ell _1\) that cross \(f\).
Fig. 11

Two Steiner segments \(\ell \) and \(\ell _1\) lying on neighboring bisectors \(\mathbf{b}=\triangle ABP\) and \({\mathbf{b}_\mathbf{1}}=\triangle ACP_1\) respectively, that share a face \(f=\triangle ABC\) are illustrated. Steiner segments on \(\mathbf{b}\) and \({\mathbf{b}_\mathbf{1}}\) are parallel to the shared face \(f\). The edges joining nodes on \(\ell \) and \(\ell _1\) form the group of edges corresponding to the triple \((\ell ,\ell _1, f)\)

A fixed bisector \(\mathbf{b}\) has either three or six neighboring bisectors (\(\mathbf{b}\) itself and two or five others, respectively) with respect to each of the two faces forming the dihedral angle bisected by \(\mathbf{b}\). Hence, the total number of ordered triples \((\mathbf{b},{\mathbf{b}_\mathbf{1}}, f)\) does not exceed \(36n\). By Lemma 3.1(b), the number of Steiner segments on any bisector is \(O(\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\) and thus the number of subgroups of a group corresponding to a triple \((\mathbf{b},{\mathbf{b}_\mathbf{1}},f)\) is \(O(\frac{1}{\varepsilon }\log ^2\frac{1}{\varepsilon })\). In total, the number of groups \(E(\ell ,\ell _1,f)\) is \(O(\frac{n}{\varepsilon }\log ^2\frac{1}{\varepsilon })\).

A node \(u\) lying on a Steiner segment \(\ell \) will have a set of representatives for each group \(E(\ell ,\ell _1, f)\) corresponding to a triple, where \(\ell \) is the first element and where its propagation set is non-empty. We denote this set by \(\varvec{\rho }(u,\ell _1, f)\). The set of representatives \(\varvec{\rho }(u,\ell _1, f)\) will correspond to the structure of the propagation set \(I(u;\ell ,\ell _1, f)\), as we will detail in the next subsection.

Consider an iteration of our algorithm. Let \(v\) be the node extracted from priority queue \(R\), containing all representatives. Let \(\mathcal{T }(v)\) be the set of triples \((\ell ,\ell _1, f)\) such that \(v\) lies on \(\ell \). First, we need to move \(v\) from \(S^a\) to \(S\), since the distance from \(v\) to the source \(s\) has been found. We store the nodes in \(S\) in dynamic doubly linked lists related to Steiner segments \({\ell }\) and organized in a binary-search tree with respect to their positions on \({\ell }\). These lists are denoted by \(S({\ell })\). Instead of maintaining the set \(S^a\) explicitly, for each Steiner segment \({\ell }\) we maintain a complimentary doubly linked list \(\bar{S}({\ell })\) containing the nodes on \({\ell }\) that are not in \(S({\ell })\). These lists are also organized to allow binary-search with respect to the positions of the nodes on \({\ell }\). Combined with the data structures called Adjacency diagrams the lists \(\bar{S}({\ell })\) describe \(S^a\) completely. The computation and usage of adjacency diagrams are discussed in detail later in this section. We assume that in a preprocessing step the lists and \(S({\ell })\) and \(\bar{S}({\ell })\) are initiated for all Steiner segments \({\ell }\) so that \(S({\ell })\) are empty and \(\bar{S}({\ell })\) contains all nodes on \({\ell }\). By Lemma 3.1(a) this preprocessing takes \(O(V_\varepsilon \log \frac{1}{\varepsilon })\) time.

So, we delete the node \(v\) from \(\bar{S}({\ell })\) and insert it \(S({\ell })\). Then, we need to compute representatives of \(v\) for each group of edges, where edges originating at \(v\) participate and where its propagation set is non-empty. Finally, we need to compute new representatives for all nodes in the set of predecessors of \(v\), which we denote by \(R^{-1}(v)\). The outline of our algorithm is as follows.
In the remainder of this section, we address the implementation of this algorithm and analyze its complexity. First, we observe that the number of iterations is \(|V_\varepsilon |\). The total number of representatives cannot exceed the number of oriented edges in \(G_\varepsilon \), which is less than \(|V_\varepsilon |^2\) and so, the size of the priority queue \(R\) is bounded by \(|V_\varepsilon |^2\) (later we show that it is actually \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log ^2\frac{1}{\varepsilon })\)). Therefore, a single priority queue operation takes \(O(\log |V_\varepsilon |)\) time and the total time for Step 1 is \(O(|V_\varepsilon |\log |V_\varepsilon |)\). The total time for Step 2 is \(O(|V_\varepsilon |\log \frac{1}{\varepsilon })\).

In Sect. 5.2.2, we describe the structure and maintenance of the data structures related to the propagation diagrams \(\mathcal{I }(\ell ,\ell _1, f)\). Computation and updates of the sets of representatives are described in Sect. 5.2.3. We conclude our discussion in Sect. 5.2.4 by summarizing the time complexity of the algorithm and by establishing our main result.

5.2.2 Implementation of Step 3.1

We consider a fixed triple \(({\ell },{\ell }_1, f)\), where \(\ell \) and \(\ell _1\) are Steiner segments on neighboring bisectors \(\mathbf{b}\) and \({\mathbf{b}_\mathbf{1}}\) sharing \(f\). The propagation diagram \(\mathcal{I }({\ell },{\ell }_1,f)\) was defined as the set consisting of the propagation sets of the active nodes on \(\ell \). Instead of explicitly computing the propagation diagram, we construct and maintain a number of data structures that allow efficient computation and updates of representatives.

Consider an iteration of our algorithm. Denote the currently active nodes on \(\ell \) by \(u_1,\ldots ,u_k\), and assume that they are listed by their order of entering \(S\). We denote this set by \(S(\ell )\) and assume that it is stored and maintained as a doubly linked list ordered according to the positions of the nodes on \(\ell \). In Step 3.1, we update the data structures related to the propagation diagram \(\mathcal{I }({\ell },{\ell }_1, f)\). According to our definition, the propagation set \(I(u)=I(u;\ell ,\ell _1, f)\) of a node \(u\in \ell \) consists of all edges \((u,v_1)\) in \(E(\ell ,\ell _1, f)\) such that \(\delta (u)+c(u,v_1) < \delta (u_i)+c(u_i,v_1)\), for \(i=1,\ldots ,k\). Clearly, the set \(I(u)\) can be viewed and described as a subset of the set of nodes \(v_1\) on \(\ell _1\) that satisfy the following three conditions:
  1. C1.

    The nodes \(u\) and \(v_1\) are adjacent in \(G_\varepsilon \) by an edge that crosses \(f\);

     
  2. C2.

    \(\delta (u)+c(u,v_1) < \delta (u_i)+c(u_i,v_1)\), for \(i=1,\ldots ,k\);

     
  3. C3.

    The node \(v_1\) is in \(\bar{S}({\ell }_1)\).

     
We construct and maintain separate data structures for the nodes on \(\ell _1\) satisfying each of these three conditions: The data structure related to C1 is called Adjacency Diagram and is denoted by \(\mathcal{A }(\ell ,\ell _1, f)\). It consists of sets \(A(u,\ell _1)\), for all nodes \(u\) on \(\ell \), where the set \(A(u,\ell _1)\) consists of the nodes on \(\ell _1\) that satisfy C1. This data structure is static. The data structure related to C2 is, in fact, a dynamic additive Voronoi diagram on \(\ell _1\) for the active nodes on \(\ell \) with respect to the weighted distance function \(c(u,x)\) defined and studied in Sect. 2, see (1). Finally, as we mentioned above the nodes on \({\ell }_1\) that are not in \(S\) are stored in a dynamic doubly linked list \(\bar{S}({\ell }_1)\) and organized in a binary-search tree with respect to their positions on \(\ell _1\). The lists \(S(\ell )\) and \(\bar{S}({\ell }_1)\) are readily maintained throughout the algorithm in logarithmic time per operation. Next, we describe in detail the construction and maintenance of these data structures.

Adjacency Diagram: The Adjacency Diagram \(\mathcal{A }(\ell ,\ell _1, f)\) consists of sets \(A(u,\ell _1)\), for all nodes \(u\) on \(\ell \). We assume that the nodes on \(\ell _1\) are stored in an ordered list \(V(\ell _1)\) according to their position on that segment. For any fixed node \(u\in \ell \), the adjacency set \(A(u,\ell _1)\) will be computed and stored as a sublist of the list \(V(\ell _1)\). We denote this sublist by \(\bar{A}(u,\ell _1)\).

We reduce the size of \(\bar{A}(u,\ell _1)\) by replacing each portion of consecutive nodes in them by a pair of pointers to the first and to the last node in that portion. (Isolated nodes are treated as portions of length one.) Hence, each sublist \(\bar{A}(u,\ell _1)\) is an ordered list of pairs of pointers identifying portions of consecutive nodes in the underlying list \(V(\ell _1)\). The size of the sublists implemented in this way is proportional to the number of the consecutive portions they contain. Next, we discuss the structure of the lists \(\bar{A}(u,\ell _1)\) and show that their size is bounded by a small constant.

According to our definitions (Sect. 4), an edge \((u,u_1)\) is present in \(A(u,{\ell }_1)\) if the local shortest path \(\hat{\pi }(u,u_1;f)\) does not touch the boundary of \(f\), where the path \(\hat{\pi }(u,u_1;f)\) was defined in (24). We refer to intervals on \(\ell _1\) with both of their end-points being Steiner points as Steiner intervals. Furthermore, we say that a Steiner interval is covered by the set \(A(u,\ell _1)\) if all Steiner points, including its end-points, are in \(A(u,\ell _1)\). Clearly, each maximal interval covered by \(A(u,\ell _1)\) corresponds to and defines a portion of consecutive nodes on \(\ell _1\) that are adjacent to \(u\). Moreover, by our definition, the list \(\bar{A}(u,\ell _1)\) consists of the pairs of pointers to the end-points of the maximal intervals covered by \(A(u,\ell _1)\). In the next lemma, we show that there are at most seven maximal Steiner intervals covered by \(A(u,\ell _1)\).

Lemma 5.1

The number of the maximal intervals covered by \(A(u,{\ell }_1)\) is at most seven. The corresponding ordered list \(\bar{A}(u,\ell _1)\) can be computed in \(O(\log K(\ell _1))\) time, where \(K(\ell _1)\) denotes the number of Steiner points on \(\ell _1\).

Proof

Presented in Appendix A. 3. \(\square \)

We assume that the nodes which are end-points of the maximal Steiner intervals covered by the sets \(A(u,\ell _1)\), for all nodes \(u\in \ell _1\), are pre-computed in a preprocessing step and stored in the lists \(\bar{A}(u,\ell _1)\) as discussed above. Lemma 5.1 implies that this preprocessing related to the group \((\ell ,\ell _1,f)\) takes \(O(K(\ell )\log K(\ell _1))\) time, where \(K(\ell )\) and \(K(\ell _1)\) denote the number of nodes on \(\ell \) and \(\ell _1\), respectively. Next, we discuss the Voronoi diagram data structure related to condition C2.

Dynamic Additive Voronoi Diagram: We assumed that the currently active nodes, \(u_1,\ldots ,u_k\) on \(\ell \), are listed by order of their insertion into \(S\). So, for the distances of these nodes to the source, we have \(\delta (u_1)\le \dots \le \delta (u_k)\). We view the distance \(\delta (u_i)\) as an additive weight assigned to the node \(u_i\), and consider the additive Voronoi diagram of \(u_1,\ldots ,u_k\) on \(\ell _1\) with respect to the weighted distance function, introduced and studied in Sect. 2 and defined by (1). From the definition (see (1)), the weighted distance \(c(u,x)\) for a node \(u\) on \(\ell \) and a point \(x\in \ell _1\) is given by
$$\begin{aligned} c(u,x)=c(u,x; f)=\min _{a,a_1\in F}\{w|ua|+w_f|aa_1|+w_1|a_1x|\}, \end{aligned}$$
where \(F\) is the plane containing the face \(f\); \(w,\,w_1\) are the weights of the cells containing \(\ell \) and \(\ell _1\), respectively, and \(w_f\) is the weight associated to the face \(f\). An important observation for our discussion here is that if \(x\) is a node on \(\ell _1\) adjacent to \(u\), then the cost of the edge \((u,x)\) is \(c(u,x)\).
We denote the end-points of the segment \(\ell _1\) by \(A_1\) and \(B_1\) and assume that it is oriented so that \(A_1<B_1\). For \(i=1,\ldots ,k\), the Voronoi cell \(\mathcal{V }(u_i)\) is defined as the set of points on \(\ell _1\)
$$\begin{aligned} \mathcal{V }(u_i)=\big \{x\in (A_1,B_1)\ :\ \delta (u_i) + c(u_i,x)\le \delta (u_j)+c(u_j,x)\, \mathrm{for}\ j\not =i\big \}, \end{aligned}$$
where ties are resolved in favor of the node that has entered \(S\) earlier. Clearly, the Voronoi diagram \(\mathcal{V } (u_1,\ldots ,u_k)\) is a partitioning of \((A_1,B_1)\) into a set of intervals, where each interval belongs to exactly one of the Voronoi cells. Hence, \(\mathcal{V } (u_1,\ldots ,u_k)\) is completely described by a set of points \(A_1=x_0<x_1<\dots <x_m<x_{m+1}=B_1\) and an assignment between the intervals \((x_j,x_{j+1})\), for \(j=0,\ldots , m\), and the cells of the diagram.

We assume that \(\mathcal{V }(u_1, \ldots ,u_k)\) is known and stored. We further assume that a node \(v\) on \(\ell \) has been extracted by the extract-min operation in Step 1 of our algorithm. In Step 3.1, we need to add the new site \(v\) and to compute the Voronoi diagram \(\mathcal{V }(u_1, \ldots , u_k,v)\). Next we show how this can be achieved in \(O(\log ^2 \frac{1}{\varepsilon })\) time. First, the following lemma shows that the Voronoi cell of \(v\) has a simple structure.

Lemma 5.2

Let \(u_1,\ldots , u_k\) be the active nodes on \(\ell \) and let \(v\) be the last node inserted in \(S\). Then the Voronoi cell \(\mathcal{V }(v)\), in the Voronoi diagram \(\mathcal{V }(u_1, \ldots , u_k, v)\), is either empty or consists of a single interval on \(\ell _1\).

Proof

By our assumptions \(\delta (u_i)\le \delta (v)\), for \(i=1,\ldots ,k\). The Voronoi cell \(\mathcal{V }(v)\) can be represented as an intersection \(\mathcal{V }(v)=\cap _{i=1}^k\mathcal{V }_i(v)\), where the sets \(\mathcal{V }_i(v)\) are defined by \(\mathcal{V }_i(v)=\{x\in \ell _1\ :\ \delta (v)-\delta (u_i) +c(v,x)<c(u_i,x)\}\). By Theorem 2.1, each of \(\mathcal{V }_i(v)\) is either empty or is an interval on \(\ell _1\), and thus the same is true for their intersection. \(\square \)

Using the above lemma, we easily obtain a bound on the size of the Voronoi diagrams.

Corollary 5.1

The number of the intervals comprising the diagram \(\mathcal{V }(u_1,\ldots ,u_k)\) does not exceed \(2k-1\).

Next, we present and analyze an efficient procedure which, given the Voronoi diagram \(\mathcal{V }(u_1,\ldots ,u_k)\) and a new node \(v\) inserted in \(S\), determines the Voronoi diagram \(\mathcal{V }(u_1,\ldots ,u_k, v)\). This includes computation of the Voronoi cell \(\mathcal{V }(v)\), update of the set of points \(x_1,\ldots ,x_m\) describing \(\mathcal{V }(u_1,\ldots ,u_k)\) to another set describing \(\mathcal{V }(u_1,\ldots ,u_k,v)\) and update of the assignment information between intervals and Voronoi cells.

According to Lemma 5.2, the Voronoi cell \(\mathcal{V }(v)\) is an interval, which we denote by \((x^-,x^+)\). Let \(M\) be any of the points \(x_1,\ldots ,x_m\) characterizing the diagram \(\mathcal{V }(u_1,\ldots ,u_k)\). The following claim shows that the relative position of \(M\) with respect to the interval \((x^-,x^+)\) can be determined in constant time.

Claim 5.1

The relative position of \(M\) with respect to the interval \((x^-,x^+)\) can be determined in \(O(1)\) time.

Proof

By the definition of point \(M\), it follows that there are two nodes \(u_{i_1}\) and \(u_{i_2}\) such that \(\delta (u_{i_1})+c(u_{i_1},M)=\delta (u_{i_2})+c(u_{i_2},M)\). We denote the latter value by \(d(M)\) and note that \(d(M)\le \delta (u_i)+c(u_i,M)\), for \(i=1,\ldots ,k\). Then we compute the value \(d(v,M)=\delta (v)+c(v,M)\) and compare it with \(d(M)\).

If \(d(v,M)<d(M)\), then we have \(M\in (x^-,x^+)\) and thus \(x^-<M<x^+\). In the case where \(d(v,M)\ge d(M)\), we compute the Voronoi cell \(\triangle (v)\) of \(v\) in the three cites diagram \(\mathcal{V }(u_{i_1},u_{i_2},v)\). By Lemma 5.2, the cell \(\triangle (v)\) is an interval on \(\ell _1\). Since \(M\) must be outside \(\triangle (v)\) and \((x^-,x^+)\subset \triangle (v)\), it follows that the relative position between \(M\) and \((x^-,x^+)\) is the same as the relative position between \(M\) and \(\triangle (v)\).

The claimed time bound follows from the described procedure, which besides the constant number of simple computations, involves a constant number of evaluations of the function \(c(\cdot ,\cdot )\) and eventually solving of the equations \(c(u_i,x)-c(v,x)=\delta (v)-\delta (u_i)\), for \(i=i_1,i_2\). \(\square \)

We derive the following binary-search procedure, which computes the Voronoi cell \(\mathcal{V }(v)\).
Once the cell \(\mathcal{V }(v)=(x^-,x^+)\) has been computed, the update of diagram \(\mathcal{V }(u_1,\ldots ,u_k)\) to diagram \(\mathcal{V }(u_1,\ldots ,u_k,v)\) can be done in a natural way. The sorted sequence of points \(X(u_1,\ldots ,u_k,v)\) characterizing the diagram \(\mathcal{V }(u_1,\ldots ,u_k,v)\) is obtained from the sequence \(X(u_1,\ldots ,u_k)=\{x_0<\dots <x_{m+1}\}\) by inserting the points \(x^-\) and \(x^+\) at their positions and by deleting points (if any) \(x^-<x_{j^-+1}<\dots <x_{j^+-1}<x^+\) lying inside the interval \((x^-,x^+)\), where \(x_{j^-}\) and \(x_{j^+}\) are the left and the right neighbors of the points \(x^-\) and \(x^+\), respectively. We need to delete each of the intervals \((x_j,x_{j+1})\), for \(j=j^-, \ldots ,j^+-1\), from the cell that contains it and to add intervals \((x_{j^-},x^-)\) and \((x^+,x_{j^+})\) to the cells that have contained intervals \((x_{j^-},x_{j^-+1})\) and \((x_{j^+-1},x_{j^+})\), respectively. Indeed, if the cell of some nodes \(u_1,\ldots , u_k\) becomes empty then this node is removed from the set of active nodes in the group \(E(\ell ,\ell _1, f)\) (Fig. 12).
Fig. 12

The figure illustrates updates of the diagram \(\mathcal{V }\). The Voronoi diagram \(\mathcal{V }(u_1,u_2,u_3)\) for the nodes \(u_1,\,u_2\), and \(u_3\) is characterized by the sequence \(\{x_0<x_1<x_2<x_3<x_4\}\) and the assignment \(\mathcal{V }(u_1)=(x_0,x_1)\cup (x_3,x_4),\,\mathcal{V }(u_2)=(x_2,x_3),\,\mathcal{V }(u_3)=(x_1,x_2)\). After computation of the Voronoi cell \(\mathcal{V }(v)=(x^-,x^+)\) the Voronoi diagram \(\mathcal{V }(u_1,u_2,u_3,v)\) is characterized by the sequence \(\{x_0<x_1<x^-<x^+<x_3<x_4\}\) and the assignment \(\mathcal{V }(u_1)=(x_0,x_1)\cup (x_3,x_4),\,\mathcal{V }(u_2)=(x^+,x_3),\,\mathcal{V }(u_3)=(x_1,x^-),\,\mathcal{V }(v)=(x^-,x^+)\)

To implement all of these updates efficiently, we maintain the sequence \(X\) of points characterizing the Voronoi diagram of the currently active nodes on \(\ell \) in an order-statistics tree, allowing us to report order statistics as well as insertions and deletions in \(O(\log |X|)\) time. Based on this data structure, the computation of the interval \((x^-,x^+)\) takes \(O(\log ^2 |X|)\) time, since each of the \(O(\log |X|)\) iterations takes \(O(\log |X|)\) time. Updating the Voronoi diagram requires two insertions and \(j^+-j^-+1\) deletions in \(X\), where insertions take \(O(\log |X|)\) time and deletions are carried out in amortized \(O(1)\) time.

Let us estimate the time for the maintenance of the Voronoi diagram of the active nodes in the group \(E(\ell ,\ell _1,f)\). We denoted the total number of nodes on \(\ell \) by \(K(\ell )\). Each node on \(\ell \) becomes active once during the execution. Thus, each node on \(\ell \) becomes subject of procedure Voronoi cell exactly once. According to Corollary 5.1, the sizes of the sequences \(X\) characterizing Voronoi diagrams in the group \(E(\ell ,\ell _1,f)\) are bounded by \(2K(\ell )+1\). Therefore, the total time spent by procedure Voronoi cell in the group \(E(\ell ,\ell _1,f)\) is \(O(K(\ell )\log ^2K(\ell ))\). In total, there are \(O(K(\ell ))\) insertions in the sequence \(X\), and, clearly, the total number of deletions is bounded by the number of insertions. Hence, the total time spent for insertions and deletions is \(O(K(\ell )\log K(\ell ))\). Thus, the time spent for the maintenance of the Voronoi diagram in a fixed group \(E(\ell , \ell _1,f)\) is \(O(K(\ell )\log ^2 K(\ell ))\). Next, we discuss the computation and maintenance of a data structure that combines the adjacency diagram and the Voronoi diagram.

Propagation Diagram: As discussed above, the propagation set \(I(u)\) of an active node \(u\) on \(\ell \) is described completely by the set of nodes on \(\ell _1\) satisfying conditions C1, C2, and C3. We denote the set of nodes on \(\ell _1\) satisfying C1 and C2 with respect to \(u\) by \(I^{\prime }(u)\). Slightly abusing our terminology, we refer to this set again as propagation set of \(u\). Similarly, we refer to the set consisting of the sets \(I^{\prime }(u)\) for all currently active nodes as propagation diagram and denote it by \(\mathcal{I }^{\prime }(u_1,\ldots ,u_k)\), where, as above, \(u_1,\ldots ,u_k\) are the currently active nodes on \(\ell _1\).

The difference between the originally defined propagation set \(I(u)\) and the set \(I^{\prime }(u)\) is that the elements of \(I(u)\) are the edges joining \(u\) to the nodes on \(\ell _1\) satisfying C1, C2, and C3, whereas the elements of \(I^{\prime }(u)\) are the nodes on \(\ell _1\) that satisfy C1 and C2, but not necessarily C3. Indeed, the set \(I^{\prime }(u)\) is closely related to \(I(u)\) and when combined with the list \(\bar{S}({\ell }_1)\) describes it completely. Based on this observation, we compute and maintain the propagation diagram \(\mathcal{I }^{\prime }(u_1,\ldots ,u_k)\) instead of the originally defined diagram.

We describe the sets \(I^{\prime }(u_i)\) by specifying the maximal Steiner intervals they cover. We implement these sets as ordered lists of pairs of pointers to the end-points of these intervals in the underlying list \(V(\ell _1)\). The propagation sets of different active nodes do not intersect, and hence, the end-points of the maximal Steiner intervals of the propagation sets \(I^{\prime }(u_1), \ldots , I^{\prime }(u_k)\) form a sequence, \(\mathcal{I }^{\prime }=\{A_1\le y_1 \le z_1\le \dots \le y_{m_1}\le z_{m_1} \le B_1\}\), where \(\ell _1=(A_1,B_1)\). The points \(y_j\) and \(z_j\), for \(j=1,\ldots ,m_1\), are Steiner points (nodes) on \(\ell _1\). Any of the Steiner intervals \((y_j,z_j)\) is a maximal Steiner interval covered by one of the sets \(I^{\prime }(u_1),\ldots ,I^{\prime }(u_k)\), whereas the Steiner points inside the intervals \((z_j,y_{j+1})\) do not belong to any of the sets \(I^{\prime }(u_i)\). Clearly, the sequence \(\mathcal{I }^{\prime }\) plus the assignment of the intervals \((y_j,z_j)\) to the sets \(I^{\prime }(u_i)\) covering them determine the diagram \(\mathcal{I }^{\prime }(u_1,\ldots ,u_k)\). We implement sequence \(\mathcal{I }^{\prime }\) as an ordered list of pointers to the underlying list \(V(\ell _1)\). In addition, we associate with it a binary-search tree based on the position of the Steiner points on the segment \(\ell _1\). The diagram \(\mathcal{I }^{\prime }(u_1,\ldots ,u_k)\) is maintained in Step 3.1 and details are as follows.

Let, as above, \(v\) be the node extracted by the extract-min operation in Step 1 in the current iteration of the algorithm. We assume that the diagram \(\mathcal{I }^{\prime }(u_1,\ldots ,u_k)\) is known—i.e., we know the sequence \(\mathcal{I }^{\prime }\) as well as the assignment of the intervals \((y_j,z_j)\) to the propagation sets \(I^{\prime }(u_i)\). Next, we describe the update of \(\mathcal{I }^{\prime }\) and the assignment information specifying \(\mathcal{I }^{\prime }(u_1,\ldots ,u_k,v)\). By definition, \(I^{\prime }(v)\) consists of the nodes on \(\ell _1\) that lie in the Voronoi cell \(\mathcal{V }(v)\) and belong to the adjacency set \(A(v,\ell _1)\). By Lemma 5.2, \(\mathcal{V }(v)\) is either empty or a single interval, which we have denoted by \((x^-,x^+)\). We denote by \((v^-,v^+)\), the largest Steiner interval inside the interval \((x^-,x^+)\). The interval \((v^-,v^+)\) is easily found using binary-search in \(O(\log K(\ell _1))\) time, where as above \(K(\ell _1)\) denotes the number of Steiner points on \(\ell _1\). On the other hand (see Lemma 5.1), the adjacency set \(A(v,\ell _1)\) consists of the nodes lying inside a constant number (at most seven) of Steiner intervals, which were computed and stored as the list \(\bar{A}(v,\ell _1)\). Hence, the maximal Steiner intervals specifying the propagation set \(I^{\prime }(v)\) can be obtained as the intersection of intervals in \(\bar{A}(v,\ell _1)\) with \((v^-,v^+)\). This is done in constant time by identifying the position of the points \(v^-\) and \(v^+\) with respect to the elements of the list \(\bar{A}(v,\ell _1)\). Clearly, the so-computed maximal Steiner intervals covered by \(I^{\prime }(v)\) are at most seven. We update the sequence \(\mathcal{I }^{\prime }\) by inserting each maximal Steiner interval covered by \(I^{\prime }(v)\) in the same way as we inserted the interval \((x^-,x^+)\) into the sequence \(X\) describing the Voronoi diagram. More precisely, let \((y,z)\) be any of the maximal Steiner intervals covered by \(I^{\prime }(v)\). We insert the points \(y\) and \(z\) at their positions in the ordered sequence \(\mathcal{I }^{\prime }\), and then we delete the points of \(\mathcal{I }^{\prime }\) between \(y\) and \(z\). If the interval containing \(y\) is \((y_j,z_j)\), we set new \(z_j\) to be the Steiner point preceding \(y\) on \(\ell _1\). Similarly, if the interval containing \(z\) is \((y_j,z_j)\), then we call, \(y_j\), the Steiner point following \(z\) on \(\ell _1\).

At each iteration of the algorithm, the end-points of the (at most seven) intervals are inserted into the sequence \(\mathcal{I }^{\prime }\). Hence, the size of the sequence \(\mathcal{I }^{\prime }\) is bounded by \(14K(\ell )\) and insertions in \(\mathcal{I }^{\prime }\) are implemented in \(O(\log K(\ell ))\) time. Deletions are implemented in \(O(1)\) time. The total number of insertions is \(O(K(\ell ))\) and the total number of deletions is at most the number of insertions. Therefore, the total time spent for the maintenance of \(\mathcal{I }^{\prime }\) and the propagation diagram is \(O(K(\ell )(\log K(\ell )+K(\ell _1)))\).

Finally, we summarize our discussion on the implementation of Step 3.1. The computations and times related to a fixed triple \((\ell ,\ell _1,f)\) are as follows. First, in a preprocessing step the lists \(\bar{A}(u,\ell _1)\), for all nodes \(u\) on \(\ell \), are computed in \(O(K(\ell )\log K(\ell _1))\) time (Lemma 5.1). Times spent for the maintenance of the lists \(S(\ell )\) and \(\bar{S}(\ell _1)\) are \(O(K(\ell )\log K(\ell ))\) and \(O(K(\ell _1)\log K(\ell _1))\), respectively. The time spent for maintenance of the Voronoi diagram for the active nodes on \(\ell \) requires \(O(K(\ell )\log ^2K(\ell ))\) time. The time for the maintenance of the Propagation Diagram is \(O(K(\ell )(\log K(\ell ) +\log K(\ell _1)))\). Therefore, the total time for the implementation of Step 3.1 is bounded by
$$\begin{aligned}&\sum _{(\ell ,\ell _1, f)}\big (O(K(\ell )(\log ^2K(\ell )+\log K(\ell _1))+O(K(\ell _1)\log K(\ell _1))\big )\\&\quad \le O\big (\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon }\big ) \big (\sum _{\ell }K(\ell )(\log ^2K(\ell )+\log K(\ell _1))+ \sum _{\ell _1}K(\ell _1)\log K(\ell _1)\big )\\&\quad \le O\big (\frac{1}{\sqrt{\varepsilon }}\log ^3\frac{1}{\varepsilon }\big ) \big (\sum _{\ell }K(\ell )+\sum _{\ell _1}K(\ell _1)\big )= O\big (\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log ^3\frac{1}{\varepsilon }\big ), \end{aligned}$$
where we have used Lemma 3.1(b) to estimate that the number of triples \((\ell ,\ell _1,f)\) with a fixed first or second element is \(O(\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\), and (a) of the same lemma to see that \(\log K(\ell )\) and \(\log K(\ell _1)\) are \(O(\log \frac{1}{\varepsilon })\) .

Lemma 5.3

The total time spent by the algorithm implementing Step 3.1 is \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log ^3\frac{1}{\varepsilon })\).

5.2.3 Computation and Updates of Set of Representatives

Next, we concentrate on the computation of representatives in Steps 3.2, 3.3 and 3.4. The set of representatives \(\varvec{\rho }(v;\ell ,\ell _1,f)\) of an active node \(v\) on \(\ell \) in a group \(E(\ell ,\ell _1,f)\) contains one representative for each interval \((y_j,z_j)\) in the propagation set \(I^{\prime }(v)\). Recall that \(I^{\prime }(v)\) consists of a set of intervals \((y_j,z_j)\) stored in the sequence \(\mathcal{I }^{\prime }\), characterizing the propagation diagram of the currently active nodes on \(\ell \). The representative in \(\varvec{\rho }(v;\ell ,\ell _1,f)\), corresponding to \((y_j,z_j)\in I^{\prime }(v)\), is the target of the minimum cost edge from \(v\) to a node in \(\bar{S}\cap (y_j,z_j)\). By Lemma 2.1, the function \(c(v,x)\) is convex and thus has a single minimum in any interval. Let \(x^*(v)\) be the point on \(\ell _1\), where \(c(v,x)\) achieves its minimum. To efficiently compute the representatives, we compute in a preprocessing step the points \(x^*(v)\), for all nodes on \(\ell \). From the definition of the function \(c(v,x)\) and Snell’s law, it follows that \(x^*(v)\) is the point on \(\ell _1\) that is closest to \(v\). So, each of \(x^*(v)\) can be computed in constant time, which leads to \(O(K(\ell ))\) preprocessing time for the group \(E(\ell ,\ell _1,f)\), where \(K(\ell )\) is the number of nodes on \(\ell \). Thus, the total time for preprocessing in all groups is \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\).

Recall, that we maintain the nodes on a fixed Steiner segment \({\ell }_1\) that are still not in \(S\) in a doubly linked list \(\bar{S}({\ell }_1)\) and in a binary-search tree, with respect to their position on \(\ell _1\). We show that finding a representative \(\rho (v)\in \varvec{\rho }(v;\ell ,\ell _1,f)\) takes \(O(\log \frac{1}{\varepsilon })\) time. We need to compute or update \(\rho (v)\) in each of the following three situations:
  1. 1.

    New representatives \(\rho (v)\) are computed when \(v\) becomes active and its propagation set is non-empty. We need to compute one new representative for each maximal Steiner interval \((y,z)\) in the propagation set \(I^{\prime }(v)\). Recall that there are at most seven such intervals and they were computed and stored in the sequence \(\mathcal{I }^{\prime }\). To compute \(\rho (v)\) in the interval \((y,z)\), we determine the leftmost and rightmost nodes from \(\bar{S}\) inside the interval \((y,z)\). This is done by finding the positions of the points \(y\) and \(z\) in the sequence of nodes currently in \(\bar{S}\). Let the leftmost and the rightmost nodes from \(\bar{S}\) in \((y,z)\) be \(y^a\) and \(z^a\), respectively. Then, we determine the position of the point \(x^*(v)\) with respect to \(y^a\) and \(z^a\). If it is to the left of \(y^a\), then \(\rho (v)=y^a\). If it is to the right of \(z^a\), then \(\rho (v)=z^a\). If \(x^*(v)\) is inside \((y^a,z^a)\), we determine the two nodes in \(\bar{S}\) immediately to the left and to the right of \(x^*(v)\), and \(\rho (v)\) is one of these two nodes. Using the binary-search tree on \(\bar{S}\), the nodes \(y^a\) and \(z^a\) and eventually the nodes neighboring \(x^*(v)\) are determined in \(O(\log \frac{1}{\varepsilon })\) time.

     
  2. 2.

    When some representative \(\rho (v)\) is removed from \(\bar{S}\), a new representative for \(v\) is one of the neighbors of \(\rho (v)\) in the doubly linked list \(\bar{S}\) that lie in the same interval \((y,z)\) as \(\rho (v)\). This is carried out in \(O(1)\) time.

     
  3. 3.

    When some interval of the propagation set \(I^{\prime }(v)\) shrinks and the current representative \(\rho (v)\) is no longer inside this interval, then \(\rho (v)\) is updated as follows. Let, as above, \(y^a\) and \(z^a\) be the leftmost and the rightmost nodes from \(\bar{S}\), respectively, in the updated interval. Then, if \(\rho (v)\) lies to the left of \(y^a\), we set \(\rho (v)=y^a\). If \(\rho (v)\) is to the right of \(z^a\), we set \(\rho (v)=z^a\). As above, determination of the nodes \(y^a\) and \(z^a\) is done in \(O(\log \frac{1}{\varepsilon })\) time.

     
To complete our analysis, we need to estimate the total number of representatives which are computed by our algorithm. Each pair (representative, predecessor) relates to the edge joining them. Since such a pair can be computed at most once by the algorithm, the total number of representatives related to nodes that are vertices of \(\mathcal D \) is bounded by the total number of edges incident to these nodes, which is \(O(|V_\varepsilon |)\). It remains to estimate the number of representatives which are related to nodes that are Steiner points. Consider an iteration for a node \(v\) that is a Steiner point. There are \(O(\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\) triples in \(\mathcal{T }(v)\), and at most nine new representatives are computed in Step 3.2. For each predecessor in \(R^{-1}(v)\) that is a Steiner point, a single representative is computed. The number of predecessors \(|R^{-1}(v)|\) is \(O(\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\). Hence, in a single iteration, \(O(\frac{1}{\sqrt{\varepsilon }}\log \frac{1}{\varepsilon })\) representatives related to Steiner points are computed. Since the number of iterations is \(O(|V_\varepsilon |)\) and the computation of a single representatives takes \(O(\log \frac{1}{\varepsilon })\) time, we obtain that the total time for the execution of Steps 3.2 and 3.3 is \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log ^2\frac{1}{\varepsilon })\).

Finally, the number of priority queue operations executed in Step 3.4 is bounded by the number of computed representatives. Thus, the total time for Step 3.4 is \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log \frac{n}{\varepsilon }\log \frac{1}{\varepsilon })\).

5.2.4 Complexity of the Algorithm and the Main Result

Here, we summarize our discussion from the previous three subsections and state our main result. Step 1 of our algorithm takes \(O(|V_\varepsilon |\log \frac{n}{\varepsilon })\) time. Step 2 requires \(O(|V_\varepsilon |\log \frac{1}{\varepsilon })\) time. By Lemma 5.3, Step 3.1 takes in total \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log ^3\frac{1}{\varepsilon })\) time. The total time for implementation of Steps 3.2 and 3.3 is \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log ^2\frac{1}{\varepsilon })\) and the total time for Step 3.4 is \(O(\frac{|V_\varepsilon |}{\sqrt{\varepsilon }}\log \frac{n}{\varepsilon }\log \frac{1}{\varepsilon })\). By Lemma 3.1, we obtain \(|V_\varepsilon |=O(\frac{n}{\varepsilon ^2}\log \frac{1}{\varepsilon })\). We have thus established the following:

Theorem 5.1

The SSSP problem in the approximation graph \(G_\varepsilon \) can be solved in \(O(\frac{n}{\varepsilon ^{2.5}}\log \frac{n}{\varepsilon }\log ^3\frac{1}{\varepsilon })\) time.

Consider the polyhedral domain \(\mathcal D \). Starting from a vertex \(v_0\) of \(\mathcal D \), our algorithm solves the SSSP problem in the corresponding graph \(G_\varepsilon \) and constructs a shortest paths tree rooted at \(v_0\). According to Theorem 4.1, the computed distances from \(v_0\) to all other vertices of \(\mathcal D \) (and to all Steiner points) are within a factor of \(1+\varepsilon \) of the cost of the corresponding shortest paths. Using the definition of edges of \(G_\varepsilon \), an approximate shortest path can be output by simply replacing the edges in the discrete path with the corresponding local shortest paths used to define their costs. This can be done in time proportional to the number of segments in this path, because computation of the local shortest paths takes \(O(1)\) time. The approximate shortest paths tree rooted at \(v_0\) and containing all Steiner points and vertices of \(\mathcal D \) can be output in \(O(|V_\varepsilon |)\) time. Thus, the algorithm we described solves the WSP3D problem and the following theorem states the result.

Theorem 5.2

Let \(\mathcal D \) be a weighted polyhedral domain consisting of \(n\) tetrahedra and \(\varepsilon \in (0,1)\). The weighted shortest path problem in three dimensions (WSP3D), requiring the computation of approximate weighted shortest paths from a source vertex to all other vertices of \(\mathcal D \), can be solved in \(O(\frac{n}{\varepsilon ^{2.5}}\log \frac{n}{\varepsilon }\log ^3\frac{1}{\varepsilon })\) time.

6 Conclusions

This paper generalizes the weighted region problem, originally studied in 1991 by Mitchell and Papadimitriou [26] for the planar setting, to 3-d weighted domains. We present an approximation scheme for the WSP3D problem. The complexity of our algorithm is independent of the weights, but depends upon the geometric features of the given tetrahedra as stated in Lemma 3.1.

There are some fairly standard techniques which can be employed here to remove the dependence on geometry (cf., [1]), provided that an estimate is known on the maximum number of segments (i.e., the combinatorial complexity) in weighted shortest paths in three dimensions. It has been shown that the combinatorial complexity of weighted shortest paths in planar case is \(\Theta (n^2)\) [26]. We conjecture that the similar bound holds in three dimensions, but the proof techniques in [26] do not seem to apply here, since they use planarity. If the combinatorial complexity of these paths in three dimensions is a polynomial in \(n\), then we can remove the dependence on the geometry by increasing the run-time by a polynomial factor in \(n\). This, however, will introduce a dependence on the weights. It remains an open question even in the planar weighted case whether there is a polynomial time shortest path algorithm independent on both geometry and weights.

This paper also investigated additive Voronoi diagrams in heterogeneous media. We studied a fairly simple scenario and already the analysis of that was very technical and cumbersome. It is desirable to find simpler and more elegant ways to understand the combinatorics of these diagrams. Nevertheless, we believe that the discretization scheme and the algorithms presented here can be used successfully for efficient computation of approximate Voronoi diagrams in heterogeneous media.

Our algorithm does not require any complex data structures or primitives and as such should be implementable and even practical. Its structure allows Steiner points to be generated “on the fly” as the shortest path wavefront propagates though the weighted domain. This feature allows the design of more compact and adaptive implementation schemes that can be of high practical value. In the planar case (and in terrains), in an experimental study [22], it was shown that a constant number of Steiner points suffice to produce high-quality paths. We believe that the same holds here and this merits further investigation.

One of the classical problems that motivated this study is the unweighted version of this problem, namely the ESP3D problem. There, we need to find a shortest path between a source and a target point, lying completely in the free space, avoiding three-dimensional polyhedral obstacles. We can use our techniques to solve this problem, though this will require triangulating (i.e., tetrahedralization) the free space. As outlined above, the complexity of our algorithm depends upon the geometry of these tetrahedra; so it is natural to ask whether the free space can be partitioned into nice tetrahedra? Unfortunately, there is no simple answer to this question which has been an important topic of study in computational and combinatorial geometry for several decades. Nevertheless, our algorithm provides a much simpler and so far the fastest method for solving the ESP3D problem, provided the free space is already partitioned into non-degenerate tetrahedra.

Combining the techniques of answering weighted shortest path queries on polyhedral surfaces [4] and the existence of nice separators for well-shaped meshes [25], we believe that our construction presented in this paper can be used for answering (approximate) weighted shortest path queries in 3-d.

Footnotes

  1. 1.

    See Lemma 3.1 for details on the value of \(\mathcal{C }(\mathcal D )\).

  2. 2.

    The 2-d case was treated there, but the arguments readily apply to the 3-d model considered in this paper.

  3. 3.

    Although the roots of a quartic can be expressed as a rational function of radicals over its coefficients, they are too complex to be analytically manipulated and used here.

  4. 4.

    Throughout the paper logarithms with unspecified base are assumed to be base \(2\).

  5. 5.

    Note that such a segment still can have an end-point in a vertex or edge vicinity related to other vertices or edges incident to \(f_1\) and \(f_2\).

  6. 6.

    Note that we do not need a priority queue based on elaborated data structures such as Fibonacci heaps. Any priority queue with logarithmic time per operation suffices.

Notes

Acknowledgments

This research supported by NSERC and the U.S. Department of Energy through the LANL/LDRD Program.

References

  1. 1.
    Agarwal, P.K., Sharathkumar, R., Yu, H.: Approximate Euclidean shortest paths amid convex obstacles. In C. Mathieu (ed.) SODA, pp. 283–292. SIAM, New York (2009)Google Scholar
  2. 2.
    Aleksandrov, L., Maheshwari, A., Sack, J.-R.: Approximation algorithms for geometric shortest path problems. In: Yao, F.F., Luks, E.M. (eds.) STOC, pp. 286–295. ACM, New York (2000)CrossRefGoogle Scholar
  3. 3.
    Aleksandrov, L., Maheshwari, A., Sack, J.-R.: Determining approximate shortest paths on weighted polyhedral surfaces. J. ACM 52(1), 25–53 (2005)MathSciNetzbMATHCrossRefGoogle Scholar
  4. 4.
    Aleksandrov, L., Djidjev, H., Guo, H., Maheshwari, A., Nussbaum, D., Sack, J.-R.: Algorithms for approximate shortest path queries on weighted polyhedral surfaces. Discrete Comput. Geom. 44(4), 762–801 (2010)MathSciNetzbMATHCrossRefGoogle Scholar
  5. 5.
    Asano, T., Kirkpatrick, D., Yap, C.: Pseudo approximation algorithms with applications to optimal motion planning. Discrete Comput. Geom. 31(1), 139–171 (2004)MathSciNetzbMATHCrossRefGoogle Scholar
  6. 6.
    Aurenhammer, F., Klein, R.: Handbook of Computational Geometry. Chapter Voronoi Diagrams. North Holland, Amsterdam (2000)Google Scholar
  7. 7.
    Balaji, C.L.: The algebraic degree of geometric optimization problems. Discrete Comput. Geom. 3, 177–191 (1988)MathSciNetCrossRefGoogle Scholar
  8. 8.
    Canny, J.F., Reif, J.H.: New lower bound techniques for robot motion planning problems. In: FOCS, pp. 49–60. IEEE Computer Society, Los Alamitos (1987)Google Scholar
  9. 9.
    Choi, J., Sellen, J., Yap, C.-K.: Approximate Euclidean shortest paths in 3-space. Int. J. Comput. Geom. Appl. 7(4), 271–295 (1997)MathSciNetCrossRefGoogle Scholar
  10. 10.
    Choi, J., Sellen, J., Yap, C.-K.: Precision-sensitive Euclidean shortest path in 3-space. SIAM J. Comput. 29(5), 1577–1595 (2000)MathSciNetzbMATHCrossRefGoogle Scholar
  11. 11.
    Clarkson, K.L.: Approximation algorithms for shortest path motion planning (extended abstract). In: Aho, A.V. (ed.) STOC, pp. 56–65. ACM, New York (1987)Google Scholar
  12. 12.
    Cox, B., Treeby, B.: Artifact trapping during time reversal photoacoustic imaging for acoustically heterogeneous media. IEEE Trans. Med. Imaging 29(2), 387–396 (2010)CrossRefGoogle Scholar
  13. 13.
    Har-Peled, S.: Constructing approximate shortest path maps in three dimensions. SIAM J. Comput. 28(4), 1182–1197 (1999)MathSciNetzbMATHCrossRefGoogle Scholar
  14. 14.
    Hilaga, M., Shinagawa, Y., Komura, T., Kunii, T.L.: Topology matching for fully automatic similarity estimation of 3d shapes. In: SIGGRAPH, pp. 203–212 (2001)Google Scholar
  15. 15.
    Im, K., Jo, H.J., Mangin, J.-F., Evans, A.C., Kim, S.I., Lee, J.-M.: Spatial distribution of deep sulcal landmarks and hemispherical asymmetry on the cortical surface. Cereb. Cortex 20(3), 602–611 (2010)CrossRefGoogle Scholar
  16. 16.
    Inderwiesen, P.L., Lo, T.-W.: Fundamentals of Seismic Tomography. Geophysical Monograph Series, vol. 6. Society of Exploration Geophysicists, Tarnaka (1994)Google Scholar
  17. 17.
    Kanai, T., Suzuki, H., Mitani, J., Kimura, F.: Interactive mesh fusion based on local 3d metamorphosis. In: MacKenzie, I.S., Stewart, J. (eds.) Graphics Interface, pp. 148–156. Canadian Human–Computer Communications Society, St. John’s (1999)Google Scholar
  18. 18.
    Kanai, T., Suzuki, H., Kimura, F.: Metamorphosis of arbitrary triangular meshes. IEEE Comput. Graph. Appl. 20(2), 62–75 (2000)CrossRefGoogle Scholar
  19. 19.
    Klein, R.: Concrete and Abstract Voronoi Diagrams. Lecture Notes in Computer Science, vol. 400. Springer, Berlin (1989)CrossRefGoogle Scholar
  20. 20.
    Klein, R., Langetepe, E., Nilforoushan, Z.: Abstract Voronoi diagrams revisited. Comput. Geom. 42(9), 885–902 (2009)MathSciNetzbMATHCrossRefGoogle Scholar
  21. 21.
    Krozel, J., Penny, S., Prete, J., Mitchell, J.S.B.: Comparison of algorithms for synthesizing weather avoidance routes in transition airspace. In Collection of Technical Papers—AIAA Guidance, Navigation, and Control Conference, vol. 1, pp. 446–461 (2004)Google Scholar
  22. 22.
    Lanthier, M., Maheshwari, A., Sack, J.-R.: Approximating shortest paths on weighted polyhedral surfaces. Algorithmica 30(4), 527–562 (2001)MathSciNetzbMATHCrossRefGoogle Scholar
  23. 23.
    Lê, N.-M.: Abstract Voronoi diagram in 3-space. J. Comput. Syst. Sci. 68(1), 41–79 (2004)zbMATHCrossRefGoogle Scholar
  24. 24.
    Lee, A., Dobkin, D., Sweldens, W., Schröder, P.: Multiresolution mesh morphing. In: Proceedings of SIGGRAPH 99, pp. 343–350, August 1999Google Scholar
  25. 25.
    Miller, G.L., Teng, S.-H., Thurston, W., Vavasis, S.A.: Automatic mesh partitioning. In: Alan, G., John, G., Joseph, L. (eds.) Graphs Theory and Sparse Matrix Computation. The IMA Volumes in Mathematics and Its Application, vol. 56, pp. 57–84. Springer, Berlin (1993)CrossRefGoogle Scholar
  26. 26.
    Mitchell, J.S.B., Papadimitriou, C.H.: The weighted region problem: finding shortest paths through a weighted planar subdivision. J. ACM 38(1), 18–73 (1991)MathSciNetzbMATHCrossRefGoogle Scholar
  27. 27.
    Mitchell, J.S.B., Sharir, M.: New results on shortest paths in three dimensions. In: Snoeyink, J., Boissonnat, J.-D. (eds.) Symposium on Computational Geometry, pp. 124–133. ACM, New York (2004)Google Scholar
  28. 28.
    Ozmen, C., Balcisoy, S.: A framework for working with digitized cultural heritage artifacts. In: Levi, A., Savas, E., Yenigün, H., Balcisoy, S., Saygin, Y. (eds.) ISCIS. Lecture Notes in Computer Science, vol. 4263, pp. 394–400. Springer, Berlin (2006)Google Scholar
  29. 29.
    Papadimitriou, C.H.: An algorithm for shortest-path motion in three dimensions. Inf. Process. Lett. 20(5), 259–263 (1985)MathSciNetzbMATHCrossRefGoogle Scholar
  30. 30.
    Reif, J.H., Sun, Z.: Movement planning in the presence of flows. Algorithmica (New York) 39(2), 127–153 (2004)MathSciNetzbMATHCrossRefGoogle Scholar
  31. 31.
    Sun, Z., Reif, J.: Bushwhack: an approximation algorithm for minimal paths through pseudo-Euclidean spaces. In: Eades, P., Takaoka, T. (eds.) Algorithms and Computation. Lecture Notes in Computer Science, vol. 2223, pp. 160–171. Springer, Berlin (2001). doi: 10.1007/3-540-45678-3_15
  32. 32.
    Sun, Z., Reif, J.H.: On finding approximate optimal paths in weighted regions. J. Algorithms 58(1), 1–32 (2006)MathSciNetzbMATHCrossRefGoogle Scholar
  33. 33.
    Varslot, T., Taralsen, G.: Computer simulation of forward wave propagation in soft tissue. IEEE Trans. Ultrason. Ferroelectr. Freq. Control 52(9), 1473–1482 (2005)CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media New York 2013

Authors and Affiliations

  • Lyudmil Aleksandrov
    • 1
  • Hristo Djidjev
    • 2
  • Anil Maheshwari
    • 3
  • Jörg-Rüdiger Sack
    • 3
  1. 1.Bulgarian Academy of Sciences, IPPSofiaBulgaria
  2. 2.Los Alamos National LaboratoryLos AlamosUSA
  3. 3.School of Computer ScienceCarleton UniversityOttawaCanada

Personalised recommendations