中文

高效计算到 Dyck 语言的编辑距离

数据结构与算法 2013-11-13 v2 形式语言与自动机理论

摘要

给定字母表 Σ 上的字符串 σ 和定义在同一字母表上的文法 G,需要最少多少次修复(插入、删除和替换)才能将 σ 映射为 G 的有效成员?本文针对 Dyck(s) 研究了这个基本问题。Dyck(s) 是一种基本的上下文无关文法,表示具有 s 种不同类型括号的平衡括号语言,在上下文无关语言理论的发展中发挥了关键作用。计算到 Dyck(s) 的编辑距离显著推广了字符串编辑距离问题,并具有众多应用,从修复半结构化文档(如 XML)到内存检查、自动编译器优化、自然语言处理等。在本文中,我们给出了第一个近线性时间算法,用于计算到 Dyck(s) 的编辑距离,该算法在 O(n^{1+ε} log n) 时间内实现了 O((1/ε) log OPT (log n)^{1/ε}) 的非平凡近似因子。事实上,给定一个算法,在输入大小为 n 时以 α(n) 时间和 β(n) 近似因子计算字符串编辑距离,我们可以设计一个算法,用于到 Dyck(s) 的编辑距离问题,运行时间为 Õ(n^{1+ε} + α(n)),并实现 O((1/ε) β(n) log OPT) 的近似因子。我们展示了高效近似到 Dyck(s) 的编辑距离的框架可以应用于许多其他语言。我们通过考虑各种内存检查语言来说明这一点,这些语言包括栈、队列、优先队列、双端队列等的有效转录。因此,任何可以被这些数据结构识别的语言,都可以通过我们的算法高效修复。

关键词

引用

@article{arxiv.1311.2557,
  title  = {Efficiently Computing Edit Distance to Dyck Language},
  author = {Barna Saha},
  journal= {arXiv preprint arXiv:1311.2557},
  year   = {2013}
}

备注

29 pages