Linear Time Succinct Indexable Dictionary Construction with Applications

Indexable dictionaries, supporting rank and select queries, are used as building blocks for many algorithms. For a universe U = {0, ..., |U| - 1} and an ordered set S = {s0, ..., sn-1} ⊆ U, an indexable dictionary supports rank and select queries in addition to membership queries, Select(j) query is used to get the j'th ranked element, and Rank(x) is used to retrieve the rank of x among all elements in S. In this work, we give two time-linear, one-pass practical constructions of static succinct indexable dictionaries, both are deterministic in query time, but they differ by construction method and Rank(x) query time. The first supports Rank and Select queries in constant time and has expected linear construction time. The second supports Select queries in constant time, and Rank(x) queries in O(log log |U|/n) time, has worst-case linear construction time, and uses only o(n) additional bits during construction. The latter one is fully indexable dictionary supporting Rank(x) queries on arbitrary x. These indexable dictionaries can be used where construction bounds matter, as in a dynamic algorithm that uses them as a building block, we exemplify this by showing how to utilize them to improve the query time of a dynamic dictionary matching algorithm.

[1]  Torben Hagerup,et al.  Efficient Minimal Perfect Hashing in Nearly Minimal Space , 2001, STACS.

[2]  Wing-Kai Hon,et al.  Compressing Dictionary Matching Index via Sparsification Technique , 2013, Algorithmica.

[3]  Milan Ruzic Making deterministic signatures quickly , 2007, SODA '07.

[4]  Sebastiano Vigna,et al.  Monotone minimal perfect hashing: searching a sorted table with O(1) accesses , 2009, SODA.

[5]  John L. Smith Tables , 1969, Neuromuscular Disorders.

[6]  Rajeev Raman,et al.  More Haste, Less Waste: Lowering the Redundancy in Fully Indexable Dictionaries , 2009, STACS.

[7]  Rajeev Raman,et al.  Succinct indexable dictionaries with applications to encoding k-ary trees, prefix sums and multisets , 2007, ACM Trans. Algorithms.

[8]  Wing-Kai Hon,et al.  Compressed data structures: dictionaries and data-aware measures , 2006, Data Compression Conference (DCC'06).

[9]  Ely Porat,et al.  An Optimal Bloom Filter Replacement Based on Matrix Solving , 2008, CSR.

[10]  Peter Elias,et al.  Efficient Storage and Retrieval by Content and Address of Static Files , 1974, JACM.

[11]  David Richard Clark,et al.  Compact pat trees , 1998 .

[12]  S. Srinivasa Rao,et al.  Static Dictionaries Supporting Rank , 1999, ISAAC.

[13]  Rasmus Pagh,et al.  Simple and Space-Efficient Minimal Perfect Hash Functions , 2007, WADS.

[14]  Rossano Venturini,et al.  Compressed static functions with applications , 2013, SODA.

[15]  Ely Porat,et al.  A Grouping Approach for Succinct Dynamic Dictionary Matching , 2015, Algorithmica.

[16]  Djamal Belazzougui Succinct Dictionary Matching with No Slowdown , 2010, CPM.

[17]  Alfred V. Aho,et al.  Efficient string matching , 1975, Commun. ACM.

[18]  Donald E. Knuth,et al.  Fast Pattern Matching in Strings , 1977, SIAM J. Comput..