Encoding Two-Dimensional Range Top-k Queries

Abstract We consider the problem of encoding two-dimensional arrays, whose elements come from a total order, for answering $${\text{Top-}}{k}$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mtext>Top-</mml:mtext> <mml:mi>k</mml:mi> </mml:mrow> </mml:math> queries. The aim is to obtain encodings that use space close to the information-theoretic lower bound, which can be constructed efficiently. For an $$m \times n$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>m</mml:mi> <mml:mo>×</mml:mo> <mml:mi>n</mml:mi> </mml:mrow> </mml:math> array, with $$m \le n$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>m</mml:mi> <mml:mo>≤</mml:mo> <mml:mi>n</mml:mi> </mml:mrow> </mml:math> , we first propose an encoding for answering 1-sided $${\textsf {Top}}{\text {-}}k{}$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>Top</mml:mi> <mml:mtext>-</mml:mtext> <mml:mi>k</mml:mi> <mml:mrow /> </mml:mrow> </mml:math> queries, whose query range is restricted to $$[1 \dots m][1 \dots a]$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mo>[</mml:mo> <mml:mn>1</mml:mn> <mml:mo>⋯</mml:mo> <mml:mi>m</mml:mi> <mml:mo>]</mml:mo> <mml:mo>[</mml:mo> <mml:mn>1</mml:mn> <mml:mo>⋯</mml:mo> <mml:mi>a</mml:mi> <mml:mo>]</mml:mo> </mml:mrow> </mml:math> , for $$1 \le a \le n$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mn>1</mml:mn> <mml:mo>≤</mml:mo> <mml:mi>a</mml:mi> <mml:mo>≤</mml:mo> <mml:mi>n</mml:mi> </mml:mrow> </mml:math> . Next, we propose an encoding for answering for the general (4-sided) $${\textsf {Top}}{\text {-}}k{}$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>Top</mml:mi> <mml:mtext>-</mml:mtext> <mml:mi>k</mml:mi> <mml:mrow /> </mml:mrow> </mml:math> queries that takes $$(m\lg {{(k+1)n \atopwithdelims ()n}}+2nm(m-1)+o(n))$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mo>(</mml:mo> <mml:mi>m</mml:mi> <mml:mo>lg</mml:mo> <mml:mfenced> <mml:mfrac> <mml:mrow> <mml:mo>(</mml:mo> <mml:mi>k</mml:mi> <mml:mo>+</mml:mo> <mml:mn>1</mml:mn> <mml:mo>)</mml:mo> <mml:mi>n</mml:mi> </mml:mrow> <mml:mi>n</mml:mi> </mml:mfrac> </mml:mfenced> <mml:mo>+</mml:mo> <mml:mn>2</mml:mn> <mml:mi>n</mml:mi> <mml:mi>m</mml:mi> <mml:mrow> <mml:mo>(</mml:mo> <mml:mi>m</mml:mi> <mml:mo>-</mml:mo> <mml:mn>1</mml:mn> <mml:mo>)</mml:mo> </mml:mrow> <mml:mo>+</mml:mo> <mml:mi>o</mml:mi> <mml:mrow> <mml:mo>(</mml:mo> <mml:mi>n</mml:mi> <mml:mo>)</mml:mo> </mml:mrow> <mml:mo>)</mml:mo> </mml:mrow> </mml:math> bits, which generalizes the joint Cartesian tree of Golin et al. [TCS 2016]. Compared with trivial $$O(nm\lg {n})$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>O</mml:mi> <mml:mo>(</mml:mo> <mml:mi>n</mml:mi> <mml:mi>m</mml:mi> <mml:mo>lg</mml:mo> <mml:mi>n</mml:mi> <mml:mo>)</mml:mo> </mml:mrow> </mml:math> -bit encoding, our encoding takes less space when $$m = o(\lg {n})$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>m</mml:mi> <mml:mo>=</mml:mo> <mml:mi>o</mml:mi> <mml:mo>(</mml:mo> <mml:mo>lg</mml:mo> <mml:mi>n</mml:mi> <mml:mo>)</mml:mo> </mml:mrow> </mml:math> . In addition to the upper bound results for the encodings, we also give lower bounds on encodings for answering 1 and 4-sided $${\textsf {Top}}{\text {-}}k{}$$ <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:mi>Top</mml:mi> <mml:mtext>-</mml:mtext> <mml:mi>k</mml:mi> <mml:mrow /> </mml:mrow> </mml:math> queries, which show that our upper bound results are almost optimal.