In the problem of 3D dominance reporting, we are given a set of points in 3D. The query is given by a query point , and we want to report all points such that is ''dominated'' by , i.e., the coordinates of are all at most those of . This problem can be solved in time using 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 in terms of their coordinates and build a binary search tree on top of it. Given a query point , we use the binary search tree to reduce the problem to 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 problems in space and 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 2D dominance reporting problems. Using the 2D solution, we get a space, time solution, which has the optimal space, but the query time is off by a factor of .
A Optimal 3D Dominance Reporting Solution
To get rid of the factor above, we use shallow-cuttings. We first present several definitions.
Definition 1. Let be a point in 3D, we define the level of (w.r.t. ) to be the number of points in dominated by . The -level of is defined to be the set of all points in 3D with level at most .
Definition 2 (-shallow cuttings). A -shallow cutting for is a set of points such that the level of each point is and any point in the -level is dominated by some point in .
The following two lemmas show some nice features of shallow cuttings.
Lemma 1[A'08]. The size of a -shallow cutting , i.e., , is .
Lemma 2[AAL'10, MT'98]. Given a -shallow cutting , we can build a structure of size such that given any point in 3D, we can in time find the point which dominates 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 -cutting . Then for each point , we collect all the points dominated by and build the sub-optimal 3D dominance reporting structure for them. Then we build a data structure for using Lemma 2. Finally, we build the sub-optimal 3D dominance reporting structure for .
The space usage is clearly linear: each sub-optimal 3D built a point in takes space and the size of is by Lemma 1. The space for the data structure in Lemma 2 is also .
Given a query point , we first query the data structure built using Lemma 2 for to try to find a point that dominates , which takes time. If we can find such a point , we use the sub-optimal structure built for it, which takes time. On the other hand, the output size is , and so the query time will be . So the total query time is .
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
Post a Comment