是否存在多种具有不同空间复杂度的KMP算法?有什么不同?

问题描述

我正在阅读有关Array.prototype.reduce()算法的信息,在网上发现的示例使用一维表来构建前缀信息表。
我还阅读了Sedgewick的解释,他使用2维数组构建表,并明确指出KMP的空间复杂度为O(RM),其中R是字母大小,M是字母大小。模式大小,而其他任何地方都指出空间复杂度仅为O(M + N),即要处理的文本和模式大小本身。
所以我对区别感到困惑。是否有多种KMP算法方法?他们有不同的范围吗?还是我想念什么?
如果一维也可以解决子串问题,为什么需要二维?

解决方法

我猜塞奇威克想证明KMP的一种变体,该变体以该术语的标准含义构造了确定性有限自动机。 (您观察到的)膨胀运行时间是一个很奇怪的选择,但是也许有一个令人信服的教学原因,我对此并不感激(然后我的博士学位是关于算法的,所以...)。我会发现另一个更符合原始说明的描述。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...