我正在阅读 Wikipedia 上的Rabin-Karp算法,其中提到的时间复杂度为 O(n+m)。现在,根据我的理解,m 必然在 0 和 n 之间,所以在最好的情况下复杂度是 O(n),在最坏的情况下也是 O(2n)=O(n),那为什么不是只是 O(n)?
algorithm - 如果 m,O(n+m) 和 O(n) 符号是否等效
我正在阅读 Wikipedia 上的Rabin-Karp算法,其中提到的时间复杂度为 O(n+m)。现在,根据我的理解,m 必然在 0 和 n 之间,所以在最好的情况下复杂度是 O(n),在最坏的情况下
问问题
239 次
3 回答
4
基本上,Robin-Karp 将它的渐近符号表示O(m+n)
为一种表示它需要相对于m+n
而不只是线性时间这一事实的手段n
。本质上,每当您使用渐近符号时,变量m
和都必须有意义。n
对于 Robin-Karp 算法的情况,n
表示文本的长度,并m
表示文本和模式的组合长度。请注意,O(2n)
这与 的含义相同O(n)
,因为O(2n)
仍然是 的线性函数 n
。然而,在 Robin-Karp 的例子中,m+n
并不是真的只是 n
. 相反,它是两者的m
函数n
,它们是两个自变量。因此,O(m+n)
与O(n)
等同O(2n)
于O(n)
.
我希望这是有道理的。:-P
于 2019-01-24T06:57:01.780 回答
0
在某些情况下,以形式表示复杂性O(n+m)
比只说 . 更合适O(max(m,n))
。
场景:
考虑BFS(广度优先搜索)或DFS(深度优先搜索)作为场景。它会更直观,并且会传达更多信息来说明复杂性O(E+V)
比max{E,V}
. 前者与实际算法描述同步。
于 2019-01-24T07:32:38.080 回答
0
m
并n
测量输入数据的不同维度。长度文本和长度n
模式与长度m
文本和长度2n
模式不同0
。
O(m+n)
告诉我们复杂度与文本长度和模式长度成正比。
于 2019-01-24T06:52:20.410 回答
我正在阅读 Wikipedia 上的Rabin-Karp算法,其中提到的时间复杂度为 O(n+m)。现在,根据我的理解,m 必然在 0 和 n 之间,所以在最好的情况下复杂度是 O(n),在最坏的情况下
3 回答
基本上,Robin-Karp 将它的渐近符号表示O(m+n)
为一种表示它需要相对于m+n
而不只是线性时间这一事实的手段n
。本质上,每当您使用渐近符号时,变量m
和都必须有意义。n
对于 Robin-Karp 算法的情况,n
表示文本的长度,并m
表示文本和模式的组合长度。请注意,O(2n)
这与 的含义相同O(n)
,因为O(2n)
仍然是 的线性函数 n
。然而,在 Robin-Karp 的例子中,m+n
并不是真的只是 n
. 相反,它是两者的m
函数n
,它们是两个自变量。因此,O(m+n)
与O(n)
等同O(2n)
于O(n)
.
我希望这是有道理的。:-P
在某些情况下,以形式表示复杂性O(n+m)
比只说 . 更合适O(max(m,n))
。
场景:
考虑BFS(广度优先搜索)或DFS(深度优先搜索)作为场景。它会更直观,并且会传达更多信息来说明复杂性O(E+V)
比max{E,V}
. 前者与实际算法描述同步。
m
并n
测量输入数据的不同维度。长度文本和长度n
模式与长度m
文本和长度2n
模式不同0
。
O(m+n)
告诉我们复杂度与文本长度和模式长度成正比。