[英]Is time Complexity O(nm) equal to O(n^2) if m <= n
我正在研究算法的时间复杂度,以查找字符串n是否包含 substring m其中m <= n 。 分析的结果是时间复杂度为O(nm) 。 因此,以这个时间复杂度为起点并知道m <= n ,因此mn <= n^2 。 我们可以说大 O 表示法的时间复杂度是O(n^2) 。
确实如此,如果 function 的运行时间为 O(mn),并且您知道 m ≤ n,那么 function 的运行时间为 O(n 2 )。
但是,这可能不是表征运行时的最佳方式。 如果 m 是一个可调参数,范围可以从 0 到 n,那么 O(mn) 可能是表征运行时的“更好”方式。 例如,假设这是一个从 n 元素数组中找到 m 个最小元素的算法。 如果您想使用此算法从一千万 (n = 10 6 ) 中找出前五个元素 (m = 5),那么将运行时间描述为 O(n 2 ) 将大大高估实际完成的工作量,而O(mn) 会在运行时给出更好的界限。
在字符串搜索的情况下,两个字符串的长度可能大不相同,这是将运行时间描述为 O(mn) 的一个很好的理由,因为它向您展示了运行时间如何随两个输入字符串的运行时间扩展,不只是其中一根弦。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.