繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM