繁体   English   中英

算法运行时间上限的缩放告诉您什么?

[英]What does scaling of the upper bound of your algorithm's runtime tell you?

假设您唯一知道的是您的算法在最坏情况下的运行时间为O(n^2) 从这个事实你知道上限看起来像Cn^2对于一些C > 0 因此,您知道算法的上限是如何缩放的,也就是说,如果将输入大小加倍,则上限会增加四倍。

问题:如果您知道上限的缩放方式,您可以回答什么实际问题? 我只是不明白这种特殊知识在某种程度上是否有帮助。

如果您对算法性能的了解只是它在 O(n 2 ) 中,那么实际上,您所知道的是:

如果系统随着时间的推移变慢了,并且数据库的大小是以前的 10 倍,那么问题很可能是您的算法花费了 100 倍的时间。

如果您知道不在O(²) 中的替代算法,那么您可能会得出结论,存在某个最小输入大小,超过该值您的算法将优于替代算法。

这是因为如果 () 不在 O(²) 中,那么就不存在N ,这样对于每个 > 我们都会有 () < ²。 所以你也不会找到 () < 或 () < log, ...等。 所以 () 不会是 O(1), O(), O(log), ... 因为它不是 O(²)。

尽管如此,您的算法优于替代算法的输入大小可能在天文数字上如此之大,以至于不实用,您仍然会更喜欢替代算法。


还请注意,当编码人员谈到最坏情况的时间复杂度时,他们通常意味着这是最坏情况的严格界限。 例如,如果有人提出一种最坏情况下时间复杂度为 O(²) 的排序算法,则意味着它不具有更高效排序算法所具有的最坏情况下时间复杂度 O(log)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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