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



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

确实是这样的情况,如果一个函数的运行时是 O(mn(,并且你知道 m ≤ n,那么函数的运行时是 O(n2(。

但是,这可能不是表征运行时的最佳方式。如果 m 是一个可调参数,范围可以从 0 到 n,那么 O(mn( 可能是表征运行时的"更好"方法。例如,假设这是一种从 n 元素数组中查找 m 个最小元素的算法。如果要使用此算法从 1000 万个元素 (n = 106( 中找到前五个元素 (m = 5(,那么将运行时描述为 O(n2( 将大大高估实际完成的工作量,而 O(mn( 将给出更好的运行时界限。

在字符串搜索的情况下,两个字符串可以具有截然不同的长度这一事实是将运行时描述为 O(mn( 的一个很好的理由,因为它向您展示了运行时如何随两个输入字符串的运行时而扩展,而不仅仅是其中一个字符串。

希望这有帮助!

相关内容

最新更新