中文

带游程的位向量与后继/前驱问题

数据结构与算法 2020-02-27 v1

摘要

后继和前驱问题包括在一个整数集合中取得大于/小于给定值的最接近值。该问题具有有趣的应用,例如倒排列表的交集。它可以容易地通过使用大小为nn的位向量及其rank和select操作来建模。然而,存在一种实用方法,在保持最佳理论界的同时,能更高效地解决后继和前驱问题。基于该技术,我们设计了一种用于具有kk个游程的位向量的新型紧凑数据结构,其通过消耗O(kn)O(\sqrt{kn})比特的空间,在O(1)O(1)时间内实现访问、rank以及后继/前驱操作。在实践中,当游程大于100100时,它获得0.04%26.33%0.04\%-26.33\%的压缩率,并成为在后继/前驱查询中考虑可压缩性的最快技术。此外,我们给出了该结构的递归变体,其趋向于O(k)O(k)比特并花费O(lognk)O(\log \frac{n}{k})时间。

关键词

引用

@article{arxiv.2002.11691,
  title  = {Bitvectors with runs and the successor/predecessor problem},
  author = {Adrián Gómez-Brandón},
  journal= {arXiv preprint arXiv:2002.11691},
  year   = {2020}
}

备注

This research has received funding from the European Union's Horizon 2020 research and innovation programme under the Marie Sk{\l}odowska-Curie Actions H2020-MSCA-RISE-2015 BIRDS GA No. 690941