时间复杂性与运行时间的区别

时间:2011-02-06 20:21:21

标签: performance algorithm time-complexity

只是想知道在一个问题中是否有关于算法运行时间的讨论,它是否与时间复杂性相同或两者之间有什么区别?

5 个答案:

答案 0 :(得分:12)

运行时间是程序运行所需的时间。时间复杂度是对运行时间的渐近行为的描述,因为输入大小趋于无穷大。

你可以说运行时间“是”O(n ^ 2)或其他什么,因为这是描述复杂性类和big-O表示法的惯用方法。实际上,运行时间不是复杂性类,它可以是持续时间,也可以是给出持续时间的函数。 “作为O(n ^ 2)”是该函数的数学性质,而不是它的完整表征。确切的运行时间可能是2036 * n ^ 2 + 17453 * n + 18464 CPU周期,或者其他什么。并不是说你经常需要在那么多细节上知道它,无论如何它很可能取决于实际的输入和输入的大小。

答案 1 :(得分:2)

时间复杂度和运行时间完全是两件事。

时间复杂度是一个与算法相关的完整理论概念,而运行时间是代码运行所需的时间,而不是理论上的。

两种算法可能具有相同的时间复杂度,比如说O(n ^ 2),但运行时间可能是另一种算法的两倍。

答案 2 :(得分:1)

"运行时间"是指正在考虑的算法:

另一个算法可能能够以更快的速度解决相同问题,即运行时间更短。

"时间复杂度"另一方面,正在考虑的问题是所固有的。 它被定义为解决所述问题的任何算法的最短运行时间

同样的区别适用于其他算法成本测量,如内存,#处理器,通信量等。

(Blum的加速定理表明,"至少"时间通常不可能实现......)

答案 3 :(得分:0)

分析算法是为了确定执行它所需的资源量(例如时间和存储量)。大多数算法都设计为使用任意长度的输入。通常,efficiency or running time of an algorithm被声明为将输入长度与number of steps (time complexity)或存储位置(空间复杂度)相关联的函数。

答案 4 :(得分:0)

来自CLRS 2.2 pg. 25

  

算法对特定输入的运行时间是数字   执行原始操作或“步骤”。很方便   定义步骤的概念,使其与机器无关   可能的。

现在来自Wikipedia

  

...算法的时间复杂度量化算法作为字符串长度函数运行所花费的时间量   代表输入。

     

时间复杂度通常通过计算数量来估算   由算法执行的基本操作,其中是基本的   操作需要一定的时间来执行。

请注意,这两个描述都强调了输入大小与原始/基本操作数量之间的关系。

我相信这清楚地表明两者都是相同的概念。

在实践中,虽然你会发现企业术语很少与学术术语相匹配,例如,很多人都在做代码优化但很少解决optimization problems