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