如果m <= n,时间复杂度O(nm)是否等于O(n ^ 2)

时间:2020-05-26 19:29:58

标签: algorithm time-complexity big-o string-search

我正在研究一种算法的时间复杂度,以发现字符串 n 是否包含子字符串 m ,其中 m <= n 。分析的结果是时间复杂度为 O(nm)。因此,以时间复杂度为起点,知道 m <= n ,因此知道 mn <= n ^ 2 。我们可以说大O表示法的时间复杂度是 O(n ^ 2)

1 个答案:

答案 0 :(得分:2)

确实是这样的情况:如果函数的运行时间为O(mn),并且您知道m≤n,则函数的运行时间为O(n 2

但是,这可能不是表征运行时的最佳方法。如果m是范围从0到n的可调参数,则O(mn)可能是表征运行时的“更好”方式。例如,假设这是一种从n元素数组中找到m个最小元素的算法。如果要使用此算法从一千万个(n = 10 6 )中找到前五个元素(m = 5),则将运行时表征为O(n 2 )会大大高估实际完成的工作量,而O(mn)会更好地限制运行时。

在字符串搜索的情况下,两个字符串的长度可能存在截然不同的事实,这是将运行时表征为O(mn)的充分理由,因为它向您展示了运行时如何随两个运行时的扩展而扩展输入字符串,而不仅仅是字符串之一。

希望这会有所帮助!