string - 蛮力字符串匹配概念

标签 string algorithm search time-complexity brute-force

我在其中一本书中看到了这个问题。内容如下:

         Suppose we use brute-force string matching to search for a pattern of length     
         m in a string of length n. In which of these cases will the worst-case
         running time be MAXIMUM? (k>1 is 
         an integer constant.)

         A. m = n-k
         B. m = n/k
         C. m = (n)^(1/k)
         D. m = k

对我来说,如何确定我们从 4 个选项中的任何一个获得的模式没有任何意义 会给我们最坏情况下的时间复杂度。 由于 k 是常数,因此对于不同的 n 和 k 值,我们将得到不同长度的 m。 它如何影响搜索算法的复杂度?

PS:考虑到n很大且k = 1,我会选择第4个选项。

但对于那种情况,我也必须做出假设,而且这是一个错误的答案。

最佳答案

对于您的暴力字符串搜索,您必须执行的测试数量是:

m(n-m)

也就是说,您需要在每个可能从 (n-m) 开始的位置测试 m,并且对 m 的每个测试需要 m 个字符。

当梯度为零时,此函数处于最大值,因此,对 m 进行微分,您会得到:

n-2m=0

这是选项B。

关于string - 蛮力字符串匹配概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26570893/

相关文章:

python - 在 Python 中比较两个几乎相同的 CSV 的最有效方法?

c# - 为我的站点实现快速且相关的搜索 (C# ASP.net)

eclipse - 从 Eclipse 搜索中排除文件夹

Swift 将字符串转换为函数名 (#selector)

c - 如何将十六进制字符串解释为C中的字符串

java - 为什么我的多态父类从自身内部调用子类方法?

algorithm - 如何在 Scala 中使用后继者和前驱者进行乘法运算

algorithm - 线性搜索优化 - 减少计算次数

python - DNA 从字符串列表中找到所有匹配项 (python 2.7)

python - 区分 Textmate 中 Python 字符串与 Docstrings 的语法颜色?