Ankur Gupta 2026-11-05
Ankur Gupta is the coauthor named with Roberto Grossi and Jeffrey Scott Vitter on their 2003 entropy-compressed text-index paper. Its wavelet tree represents a sequence through alphabet partitions and bitvectors. Navigating a symbol uses rank queries to map positions between successive partitions, supporting operations on a compressed index. This contribution concerns searchable sequence representations; it does not identify this author with unrelated people sharing the same name.[ref]
Jeffrey Scott Vitter 2026-11-05
Jeffrey Scott Vitter coauthored the 2003 work on entropy-compressed text indexes with Roberto Grossi and Ankur Gupta. It develops compressed suffix-array representations and introduces a wavelet tree representation for symbol sequences. Bitvectors route a position through alphabet partitions, with rank queries translating that position into the selected subsequence. This connects compressed storage to efficient indexing rather than requiring full decompression for every query.[ref]
Roberto Grossi 2026-11-05
Roberto Grossi coauthored the 2003 entropy-compressed text-index paper with Ankur Gupta and Jeffrey Scott Vitter. The paper combines compressed suffix-array techniques with a wavelet tree, routing sequence positions through bitvectors that partition the alphabet. Its indexing bounds relate stored space to empirical entropy while retaining pattern-search functionality. The mathematical aim is both compression and access, rather than simply making a file small.[ref]
Wavelet tree Created 2026-10-20 Updated 2026-11-05
A wavelet tree stores a sequence over an ordered alphabet by repeatedly splitting the alphabet into two parts. At an internal node, a bit vector records zero or one according to each element's part; the children receive the corresponding stable subsequences. The original wavelet-tree construction uses such relative position encodings to support compact indexed access.[ref]
To answer a rank query for character in the first positions, follow the branch containing . Replace by the number of that branch's bits among the current bit vector's first positions. At the leaf, the resulting is the answer. Stable filtering proves the invariant: it is the number of original-prefix elements reaching the current node.
For example, split as and . The string cadaba gives root bit vector 101000 and left subsequence aaba. In its first five characters there are three left-part elements. The left bit vector 0010 contains two zeros among those first three positions, so the number of a occurrences is two. With constant-time bit rank queries and a balanced alphabet split, character rank queries take time.