【问题标题】:Is it possible to Estimate RAM needed from Turing space complexity?是否可以根据图灵空间复杂度估计所需的 RAM?
【发布时间】:2010-11-28 10:40:01
【问题描述】:

图灵机可以考虑空间(磁带上的内存空间)和时间的复杂性。

有 PSPACE 和 EXPSPACE 等类。

此外,我们可以展示 PSPACE 中的算法。

http://www.springerlink.com/content/3hqtq11mqjbqfj2g/

但是,当我实际编写程序时,有些程序的运行速度比其他程序快,有些程序的内存 (RAM) 占用空间比其他程序小。

如果我编写一个 PSPACE 算法来解决问题 X 和一个 EXPSPACE 算法来解决同样的问题,那么 EXPSPACE 程序应该比 PSPACE 代码使用更多的 RAM。

有没有什么方法可以根据起始算法的理论等级来估计会涉及多少 RAM?

【问题讨论】:

    标签: performance algorithm complexity-theory ram turing-machines


    【解决方案1】:

    如果我编写一个 PSPACE 算法来解决问题 X 和一个 EXPSPACE 算法来解决同样的问题,那么 EXPSPACE 程序应该比 PSPACE 代码使用更多的 RAM。

    你猜错了。

    这些复杂度类描述了执行算法所需的内存的渐近增长。他们完全没有告诉您实际所需的 RAM 数量。

    基本上,对于某些大小的问题n,超过该大小的 EXPSPACE 会比 PSPACE 使用更多的内存,但对于任何低于 n 的问题,你真的不能说什么(就像 O(n2) 算法对于小的 n 可能比 O(n) 算法运行得更快)。

    【讨论】:

      【解决方案2】:

      原则上没有。在实践中,有时。

      首先,您必须了解复杂性分析的实际含义(查看教科书中的定义)。 PSPACE 只是意味着所需的空间受输入大小的多项式函数的限制。它没有告诉你那个边界函数是什么,或者实际使用的空间是什么。因此,仅通过知道 PSPACE 中的算法,您无法计算出有关 RAM 的任何信息。

      如果您知道 PSPACE 中的算法,您可能会假设它使用的空间不只是由多项式界定,而是由多项式描述。这可能不是真的,但对于许多算法来说它是真的。然后,您可以计算(或测量)用于各种不同输入大小的空间,并尝试将多项式与数据匹配。

      一般来说这是徒劳的(因为在不知道多项式的阶数的情况下,有无数种可能的拟合)。但在实践中,如果你知道使用的空间是 O(n),并且你知道什么样的输入会产生最坏情况下的空间使用,那么你可以做出相当准确的预测。如果需要 10MB 的 RAM 来处理 1MB 的输入,而 20MB 的 RAM 来处理 2MB 的输入,那么通常需要大约 100MB 的 RAM 来处理 10MB 的输入。但是,您只能从更详细的算法知识中获得这种洞察力,而不仅仅是知道它具有多项式空间复杂度。

      【讨论】:

      • '然后您可以计算(或测量)用于各种不同输入大小的空间,并尝试将多项式与数据匹配。一般来说,这是徒劳的(因为在不知道多项式的阶数的情况下,有无数种可能的拟合)。但在实践中,如果你知道使用的空间是 O(n),并且你知道什么样的输入会产生最坏情况下的空间使用,那么你可以做出相当准确的预测。 . . .如果我让有问题的代码达到足够稳定的状态,那将是一个实际的行动方案。谢谢。
      猜你喜欢
      • 2011-10-31
      • 2020-03-31
      • 1970-01-01
      • 2020-03-25
      • 2018-05-21
      • 2011-05-25
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多