← 最新论文
💻 computer science

Nearly Optimal Internal Dictionary Matching

本文引入了基础子串结构(Basic Substring Structure, BASS),这是一种大小为 O(n)O(n) 的数据结构,它在内部字典匹配问题上实现了近乎最优的查询和预处理时间,包括首个用于统计不同模式出现次数的 O~(1)\tilde{O}(1) 时间解法。

原作者: Jingbang Chen, Jiangqi Dai, Qiuyang Mang, Qingyu Shi, Tingqiang Xu

发布于 2026-07-02
📖 1 分钟阅读☕ 轻松阅读

原作者: Jingbang Chen, Jiangqi Dai, Qiuyang Mang, Qingyu Shi, Tingqiang Xu

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下你拥有一本巨大的、无穷无尽的书(我们称之为 文本 T)。在这本书内部,有一个特殊的单词或短语列表(字典 D),这些内容都隐藏在书中的某个地方。

这个问题所解决的,就像是一个“寻找华力多(Where's Waldo?)”的游戏,但带有一个转折:你不仅仅是想找到一个特定的单词。你还想针对书中的任何片段进行提问。例如:

  • “在第 50 页到第 100 页之间,我的特殊单词出现了多少次?”
  • “那个部分出现了多少个不同的特殊单词?”
  • “你能列出它们出现的每一个位置吗?”

在过去,回答这些问题非常缓慢,或者需要大量的内存,尤其是当你的字典是由书中的成千上万个微小片段组成时。这篇论文介绍了一种全新的、超高效的方式来组织这本书,让你能够几乎瞬间回答这些问题。

核心理念:基本子串结构 (BASS)

作者构建了一个名为 BASS 的新工具。把 BASS 想象成一个巨大的、神奇的 二维网格 或电子表格,它映射了书中所有可能的片段。

  • 网格: 想象一个电子表格,其行代表“单词从哪里开始”,列代表“单词在哪里结束”。这个网格中的每一个单元格都是书中的一段特定文本。
  • 着色: 作者并没有只是在单元格中写入文本,而是对单元格进行了“着色”。如果一段文本属于你的特殊字典,那么该单元格就会被涂上一种特殊的颜色。
  • 区块: 这里有一个神奇的技巧。作者发现,许多看起来不同的单元格实际上表现得完全一样。他们将这些单元格分组为“区块”,这些区块看起来像阶梯一样。同一个阶梯区块内的所有单元格都拥有相同的“个性”(它们在书中出现的出现位置完全相同)。

通过将书组织成这些阶梯状区块,计算机就不必检查每一页。它只需要检查“阶梯”来了解发生了什么。

这个工具能做什么?

论文声称,有了 BASS,他们可以比以往任何时候都更快、更省内存地回答五类问题:

  1. 计数出现次数 (Count): “我的单词在这个部分出现了多少次?”
    • 改进之处: 以前这需要一点时间。现在,它是近乎瞬时的。作者证明了这是此类问题中最快的速度。
  2. 统计唯一单词 (CountDistinct): “我的列表中有多少个不同的单词出现在这里?”
    • 突破点: 这是一个难题。以前,你必须进行猜测或使用缓慢的方法。作者彻底解决了这个问题,在经过快速设置后,几乎瞬间就能给出答案(在对数时间内)。
  3. 报告 (Report & ReportDistinct): “告诉我单词具体在哪里。”
    • 改进之处: 该工具现在能以计算机打印的速度列出位置,没有任何额外的等待时间。
  4. 存在性 (Exists): “这个部分是否存在我的任何一个单词?”
    • 改进之处: 这现在可以在瞬间得到回答。

它是如何工作的(类比)

想象你正在一个巨大的仓库(书)中寻找特定的原料。

  • 旧方法: 你必须走过每一个过道,检查每一个货架,并清点物品。如果你想了解不同的区域,你必须重新走遍整个仓库。
  • BASS 方法: 作者为仓库制作了一张地图
    • 他们意识到某些过道的排列方式总是相同的。他们将这些过道归类为“超级过道”(等价类/区块)。
    • 他们构建了一棵(就像家谱一样)来连接这些超级过道。如果你知道其中一个箱子的位置,这棵树就能准确告诉你相关的其他箱子的位置,而无需亲自走过去。
    • 他们还构建了第二棵树,从另一个方向观察仓库(从过道的末端而不是开头开始)。

通过将这两棵树与网格地图结合使用,计算机可以直达答案。它不需要走遍整个仓库;它只需要查看地图,沿着树的分支跳转,然后说:“这就是答案。”

为什么这很重要(根据论文所述)

论文强调,这是一个静态问题,意味着在提问过程中,书和字典列表都不会发生变化。

  • 速度: 他们实现了“近乎最优”的速度。这意味着对于这类问题,他们的速度已经达到了数学理论上的极限。
  • 内存: 他们构建的工具非常紧凑。它占用的空间仅与书的大小成正比,而不是由字典大小乘以书的大小。
  • 通用性: 虽然他们专注于字典匹配问题,但他们展示了这种“网格与树”的结构也可以解决其他字符串问题,比如寻找两本书之间最长的共有短语。

简而言之,作者通过将搜索文本这一复杂且混乱的问题,组织成一个整齐的、类似阶梯的网格并连接着家谱树,使得计算机能够几乎瞬间找到答案。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →