【问题标题】:Difference between constant time and effective constant time complexity恒定时间和有效恒定时间复杂度之间的差异
【发布时间】:2016-10-12 15:29:22
【问题描述】:

我理解“恒定时间复杂度 O(1)”,但是当我遇到有效恒定时间复杂度这个术语时,我非常困惑。我从 Scala 烹饪书中得到以下关于有效常数时间的句子。

该操作实际上需要恒定的时间,但这可能取决于 在某些假设上,例如向量的最大长度,或 散列键的分布。

但我认为上面的例子不是有效的常数时间,而是摊销常数时间。

请您明确区分恒定时间和有效恒定时间。这将非常有帮助。谢谢!

【问题讨论】:

  • 不,它没有。在同一页上,作者清楚地区分了有效常数时间和摊销常数时间。

标签: algorithm time-complexity


【解决方案1】:

它的意思与引文所说的差不多:它不是恒定时间,但在一些合理的假设下,它只比恒定时间差一点,不足以引起注意。

因此,它不是恒定时间,但它是如此接近以至于差异并不重要,这实际上使其(几乎)恒定时间,

例如,将数组数据结构实现为 32 路树在技术上使其 O(log n) 而不是 O(1)。但是一个有 40 亿个条目的数组只有 6.4 级深,所以它基本上比传统的可变连续数组慢了不到 7 倍。

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多