3D Dominance Range Reporting

In the problem of 3D dominance reporting, we are given a set P of n points in 3D. The query is given by a query point q, and we want to report all points pP such that p is ''dominated'' by q, i.e., the x,y,z coordinates of p are all at most those of q. This problem can be solved in O(logn+k) time using O(n) space [A'08]. In this post, let us see how it is done.

2D Dominance Range Reporting

We first solve the 2D version. We sort P in terms of their x coordinates and build a binary search tree on top of it. Given a query point q, we use the binary search tree to reduce the problem to O(logn) 1D dominance range reporting problems. Note that this is equivalent to a concurrent point location problem. Then by the famous result of Fractional Cascading [CG'86], we can solve all the O(logn) problems in O(n) space and O(logn+k) time.

A Sub-optimal 3D Dominance Reporting Solution

Now we apply the same idea to 3D. This time by building a binary search tree, we decompose a query into O(logn) 2D dominance reporting problems. Using the 2D solution, we get a O(n) space, O(log2n+k) time solution, which has the optimal space, but the query time is off by a factor of logn

A Optimal 3D Dominance Reporting Solution

To get rid of the logn factor above, we use shallow-cuttings. We first present several definitions.

Definition 1. Let r be a point in 3D, we define the level of r (w.r.t. P) to be the number of points in P dominated by r. The (k)-level of P is defined to be the set of all points in 3D with level at most k.

Definition 2 (k-shallow cuttings). A k-shallow cutting for P is a set S of points such that the level of each point sS is O(k) and any point in the (k)-level is dominated by some point in S.

The following two lemmas show some nice features of shallow cuttings.

Lemma 1[A'08]. The size of a k-shallow cutting S, i.e., |S|, is O(n/k).

Lemma 2[AAL'10, MT'98]. Given a k-shallow cutting S, we can build a structure of size |S| such that given any point q in 3D, we can in O(logn) time find the point sS which dominates q or report no such point exists.

With these tools in place, now we are ready ro solve the 3D dominance reporting problem.

We first build a log2n-cutting S. Then for each point sS, we collect all the points dominated by s and build the sub-optimal 3D dominance reporting structure for them. Then we build a data structure for S using Lemma 2. Finally, we build the sub-optimal 3D dominance reporting structure for P.

The space usage is clearly linear: each sub-optimal 3D built a point in S takes O(k) space and the size of S is O(n/k) by Lemma 1. The space for the data structure in Lemma 2 is also O(n).

Given a query point q, we first query the data structure built using Lemma 2 for S to try to find a point sS that dominates q, which takes O(logn) time. If we can find such a point s, we use the sub-optimal structure built for it, which takes O(log2log2n+k)=o(logn)+O(k) time. On the other hand, the output size is Ω(log2n), and so the query time will be O(k). So the total query time is O(logn+k).


References:

[A'08] Afshani, Peyman. "On dominance reporting in 3D." European Symposium on Algorithms. Springer, Berlin, Heidelberg, 2008.

[AAL'10] Afshani, Peyman, Lars Arge, and Kasper Dalgaard Larsen. "Orthogonal range reporting: query lower bounds, optimal structures in 3-d, and higher-dimensional improvements." Proceedings of the twenty-sixth annual symposium on Computational geometry. 2010.

[CG'86] Chazelle, Bernard, and Leonidas J. Guibas. "Fractional cascading: I. A data structuring technique." Algorithmica 1.1 (1986): 133-162.

[MT'98] Makris, Christos, and Athanasios Tsakalidis. "Algorithms for three-dimensional dominance searching in linear space." Information Processing Letters 66.6 (1998): 277-283.


Comments

Popular Posts