【问题标题】:Are Time Complexity and Space Complexity inversely proportional?时间复杂度和空间复杂度成反比吗?
【发布时间】:2020-07-01 03:09:56
【问题描述】:

我研究了很多算法,看来,为了使算法达到操作的峰值复杂度,他们必须牺牲其他复杂度。我想了解是什么阻止了它们成反比。

【问题讨论】:

  • 我认为这需要在 Stack Exchange 论坛上。
  • (1) “无论如何,我希望你尽快完成这项工作。”应该会很贵吧(2)“无论如何,我希望你尽可能便宜地完成这项工作。”应该会很慢吧。有什么东西迫使它们成反比吗?
  • 两种复杂度都在 O(1) 以下,那么它们怎么可能成反比呢?

标签: algorithm time-complexity big-o space-complexity


【解决方案1】:

时间和空间复杂度当然不是成反比的。这只是一个简单的数学事实,您一次只能针对一个指标优化系统。

如果您针对时间优化算法,那么它在空间上不太可能是最优的。如果您针对空间进行优化,那么它在时间上不太可能是最佳的。如果您针对其他事物进行优化,那么它在时间或空间上都不太可能是最优的。

通常我们会选择一个实际的权衡取舍。填充空间需要时间这一事实对我们有所帮助,因此在很多情况下时间和空间复杂度实际上是正相关的。

【讨论】:

    【解决方案2】:

    夸大其词:经济学说它们成反比,但数学说它们不是。如果你绘制大量算法的时间和空间复杂度,所有的竞争算法都将位于一条帕累托曲线上,时间与空间的交易,因为一个算法比它的竞争者需要更多的时间和更多的空间是没有竞争力的。甚至还有少数称为时间记忆权衡的算法。但从长远来看,这两者在理论上是联系在一起的。使用 N 空间至少需要 N 时间,如果你只有 N 位空间用于有限状态机,它只有 2^N 可能的状态,所以它不可能使用超过 2^N 的时间而不进入一个无限循环。

    Blum (JACM 1967) 的“递归函数复杂性的机器无关理论”中有一个非常理论化的方法。定理 3 提供了任何两个复杂性度量之间联系的证明,但我认为它太松散以至于对于任何实际目的都完全无用。它确实说,“这意味着 Phi(n) 和 Phi'(n) 彼此之间没有太大差异”(我将表中的符号翻译为 Phi 和 Phi') - 但我认为同意“不要相差太大”,您必须接受 n 和 2^n 几乎是同一件事。

    【讨论】:

    • 这是迄今为止信息量最大的答案。理论上只有很少的联系。在实践中,我们只关心存在权衡的选项。 (否则我们会选择最好的答案。)
    【解决方案3】:

    确定的答案是,但更流畅的答案是不一定

    有时,当您解决问题时,您可能会想:“我可以通过蛮力来解决这个问题,这将花费我 O(n²) 的时间和 O(1) 的空间......但也许我可以构建整理这个数据结构并占用 O(n log(n)) 空间,但我可以在 O(log(n))" 中回答它。

    在很多情况下,时间和空间复杂度之间存在这些权衡。您负担得起自己使用更多空间、预处理输入、构建结构并且可以更快地回答,但有时您可以节省内存并直接运行算法。

    事实上,并非所有问题都有这种权衡。例如,如果我问你:“你能告诉我数组中所有元素的总和吗?” - 当然,您可以使用数组构建一棵树并对其执行遍历并返回总和,浪费 O(n) 空间和时间,但您不必这样做,您可以将所有内容相加并返回 O (n) 时间,不使用额外的空间。


    简而言之:在许多问题中,许多可能的解决方案是在时间和复杂性之间的不同权衡下开发出来的,但不是全部,而且由于它们在所有情况下都不是成反比的,所以它们也不是成反比的比例。

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 2014-04-29
      • 2016-02-13
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多