中文

数据流中带见证的频繁元素检测

数据结构与算法 2021-02-16 v3

摘要

检测频繁元素是数据流领域中最古老且被研究最多的问题之一。给定 {1,2,,n}\{1, 2, \dots, n\}mm 个数据项组成的流,目标是输出出现至少 dd 次的项(对于某个阈值参数 dd),如今已有可证明最优的算法。然而,在许多应用中,仅知道频繁元素本身是不够的:例如,互联网路由器可能不仅需要知道被转发数据包中最频繁的目的 IP 地址,还需要知道这些数据包出现的时间戳或随数据包“到达”的任何其他元数据,例如其源 IP 地址。本文中,我们引入频繁元素问题的见证版本:给定期望近似保证 α1\alpha \ge 1 与期望频率 dΔd \le \Delta(其中 Δ\Delta 是最频繁项的频率),目标是报告一个项以及该流中该项出现时的至少 d/αd / \alpha 个时间戳(或随项到达的任何其他元数据)。我们针对仅插入流与插入-删除流两种设置均给出了可证明最优的算法:在仅插入流中,我们证明对每一个整数 1αlogn1 \le \alpha \le \log n,空间 O~(n+dn1α)\tilde{O}(n + d \cdot n^{\frac{1}{\alpha}}) 是必要且充分的。在插入-删除流中,我们证明对每一个 αn\alpha \le \sqrt{n},空间 O~(ndα2)\tilde{O}(\frac{n \cdot d}{\alpha^2}) 是必要且充分的。

关键词

引用

@article{arxiv.1911.08832,
  title  = {Frequent Elements with Witnesses in Data Streams},
  author = {Christian Konrad},
  journal= {arXiv preprint arXiv:1911.08832},
  year   = {2021}
}

备注

Fixed the statement of Lemma 5.1, introduction updated