[论文解读] Testing k-binomial equivalence
本文提出了两种多项式时间算法来测试两个单词的k-双项等价性:一种基于自动机理论的确定性但效率较低的算法,以及一种更高效的随机化蒙特卡洛算法。主要贡献是一种时间复杂度为O(nk² + k⁴)的随机化算法,该算法以高概率正确识别k-双项等价性(错误概率小于1/n),从而实现k-双项等价性下的高效模式匹配。
Two words $w_1$ and $w_2$ are said to be $k$-binomial equivalent if every non-empty word $x$ of length at most $k$ over the alphabet of $w_1$ and $w_2$ appears as a scattered factor of $w_1$ exactly as many times as it appears as a scattered factor of $w_2$. We give two different polynomial-time algorithms testing the $k$-binomial equivalence of two words. The first one is deterministic (but the degree of the corresponding polynomial is too high) and the second one is randomised (it is more direct and more efficient). These are the first known algorithms for the problem which run in polynomial time.
研究动机与目标
- 开发一种高效算法,用于测试两个单词是否为k-双项等价。
- 解决基于k-双项等价性(一种基于子序列计数的阿贝尔等价性推广)的算法复杂性问题。
- 为构造避免k-双项重复的无限单词等应用提供实际可计算的解决方案。
- 通过将模式匹配归约为等价性测试,支持在k-双项等价性下的模式匹配。
- 为组合词论中的大规模模拟提供具有可证明误差边界的解决方案。
提出的方法
- 基于在有限域F_p上对单变量多项式Q_k,w(x)进行求值的随机化方法,测试k-双项等价性。
- 选择一个大小至少为⌈k + 1 + 2 log n⌉比特的随机素数p,以降低误报概率。
- 通过动态规划在表T[i][j]上计算多项式Q_k,w(x),其中T[i][j]表示在w[i..n]中以j的二进制编码形式出现的子序列的计数。
- 利用Schwartz-Zippel引理,限制非零多项式在F_p中随机点处为零的概率。
- 利用差值多项式Q_{w1,w2}(x)的系数被n^k所限制的事实,以限制虚假素数除数的数量。
- 结合概率性素性测试与多项式求值,实现一种错误概率较低的蒙特卡洛算法。
实验结果
研究问题
- RQ1能否在多项式时间内测试两个单词之间的k-双项等价性?
- RQ2对于具有有界误差的k-双项等价性测试,最高效的随机化算法是什么?
- RQ3如何利用k-双项等价性实现长文本中的模式匹配?
- RQ4对于该问题,确定性方法与随机化方法的计算极限分别是什么?
- RQ5该算法能否被优化以避免在k-双项重复避免模拟中重复进行等价性检查?
主要发现
- 存在一种确定性的多项式时间算法用于k-双项等价性测试,尽管其度数较高且未明确给出。
- 提出了一种时间复杂度为O(nk² + k⁴)的随机化蒙特卡洛算法,该算法在n和k上均为多项式时间。
- 当单词为k-双项等价时,算法以确定性返回'YES';当它们不等价时,以至少1 - 1/n的概率返回'NO'。
- 错误概率由三个来源的总和所限制:合数素数的生成、模p下的虚假消失,以及坏的随机x,所有这些都被证明是o(1/n)。
- 该算法通过测试文本的所有因子是否与模式等价,实现了在k-双项等价性下的高效模式匹配。
- 结果表明,寻找与给定模式k-双项等价的所有子串可在多项式时间内完成。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。