是否可以估算图灵空间复杂性所需的RAM?

时间:2010-11-28 10:40:02

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

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

有PSPACE和EXPSPACE等类。

此外,我们可以提供绝对属于PSPACE的算法。

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

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

据推测,如果我编写PSPACE算法来解决问题X并使用EXPSPACE算法来解决同样的问题,那么EXPSPACE程序应该使用比PSPACE代码多得多的RAM。

根据起始算法的理论评级,有没有办法估算将涉及多少RAM?

2 个答案:

答案 0 :(得分:2)

  

据推测,如果我编写PSPACE算法来解决问题X并使用EXPSPACE算法来解决同样的问题,那么EXPSPACE程序应该使用比PSPACE代码多得多的RAM。

你认为错了。

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

基本上,对于某些大小的问题 n ,超过该大小EXPSPACE将使用比PSPACE更多的内存,但对于 n 以下的任何内容,您都无法真正说什么(就像O(n 2 )算法可能比小 n 的O(n)算法运行得更快。

答案 1 :(得分:1)

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

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

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

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