TCS Journal 2018 Journal Article
Encoding nearest larger values
- Michael Hoffmann
- John Iacono
- Patrick K. Nicholson
- Rajeev Raman
In nearest larger value (NLV) problems, we are given an array A [ 1. . n ] of distinct numbers, and need to preprocess A to answer queries of the following form: given any index i ∈ [ 1, n ], return a “nearest” index j such that A [ j ] > A [ i ]. We consider the variant where the values in A are distinct, and we wish to return an index j such that A [ j ] > A [ i ] and | j − i | is minimized, the nondirectional NLV (NNLV) problem. We consider NNLV in the encoding model, where the array A is deleted after preprocessing. The NNLV encoding problem turns out to have an unexpectedly rich structure: the effective entropy (optimal space usage) of the problem depends crucially on details in the definition of the problem. Of particular interest is the tiebreaking rule: if there exist two nearest indices j 1, j 2 such that A [ j 1 ] > A [ i ] and A [ j 2 ] > A [ i ] and | j 1 − i | = | j 2 − i |, then which index should be returned? For the tiebreaking rule where the rightmost (i. e. , largest) index is returned, we encode a path-compressed representation of the Cartesian tree that can answer all NNLV queries in 1. 89997 n + o ( n ) bits, and can answer queries in O ( 1 ) time. An alternative approach, based on forbidden patterns, achieves a very similar space bound for two tiebreaking rules (including the one where ties are broken to the right), and (for a more flexible tiebreaking rule) achieves 1. 81211 n + o ( n ) bits. Finally, we develop a fast method of counting distinguishable configurations for NNLV queries. Using this method, we prove a lower bound of 1. 62309 n − Θ ( 1 ) bits of space for NNLV encodings for the tiebreaking rule where the rightmost index is returned.