English

Tiny Pointers

Data Structures and Algorithms 2021-11-29 v1

Abstract

This paper introduces a new data-structural object that we call the tiny pointer. In many applications, traditional logn\log n -bit pointers can be replaced with o(logn)o (\log n )-bit tiny pointers at the cost of only a constant-factor time overhead. We develop a comprehensive theory of tiny pointers, and give optimal constructions for both fixed-size tiny pointers (i.e., settings in which all of the tiny pointers must be the same size) and variable-size tiny pointers (i.e., settings in which the average tiny-pointer size must be small, but some tiny pointers can be larger). If a tiny pointer references an element in an array filled to load factor 11/k1 - 1 / k, then the optimal tiny-pointer size is Θ(logloglogn+logk)\Theta(\log \log \log n + \log k) bits in the fixed-size case, and Θ(logk) \Theta (\log k) expected bits in the variable-size case. Our tiny-pointer constructions also require us to revisit several classic problems having to do with balls and bins; these results may be of independent interest. Using tiny pointers, we revisit five classic data-structure problems: the data-retrieval problem, succinct dynamic binary search trees, space-efficient stable dictionaries, space-efficient dictionaries with variable-size keys, and the internal-memory stash problem. These are all well-studied problems, and in each case tiny pointers allow for us to take a natural space-inefficient solution that uses pointers and make it space-efficient for free.

Keywords

Cite

@article{arxiv.2111.12800,
  title  = {Tiny Pointers},
  author = {Michael A. Bender and Alex Conway and Martín Farach-Colton and William Kuszmaul and Guido Tagliavini},
  journal= {arXiv preprint arXiv:2111.12800},
  year   = {2021}
}
R2 v1 2026-06-24T07:51:22.398Z