Performance 时间复杂性和运行时间之间的差异

Performance 时间复杂性和运行时间之间的差异,performance,algorithm,time-complexity,Performance,Algorithm,Time Complexity,只是想知道在一个问题中是否有关于算法运行时间的讨论,它是否意味着与时间复杂度相同,或者两者之间是否有任何区别?分析算法就是确定执行算法所需的资源量(如时间和存储)。大多数算法设计用于处理任意长度的输入。通常,算法的效率或运行时间表示为一个函数,该函数将输入长度与步数(时间复杂度)或存储位置(空间复杂度)联系起来。运行时间是指程序运行所需的时间。时间复杂性是当输入大小趋于无穷大时,运行时间的渐近行为的描述 你可以说运行时间“是”O(n^2)或者其他什么,因为这是描述复杂类和big-O表示法的惯用方

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

分析算法就是确定执行算法所需的资源量(如时间和存储)。大多数算法设计用于处理任意长度的输入。通常,算法的
效率或运行时间
表示为一个函数,该函数将输入长度与
步数(时间复杂度)
或存储位置(空间复杂度)联系起来。

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


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

时间复杂度和运行时间是两个完全不同的东西

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

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

算法在特定输入上的运行时间是数字 执行的基本操作或“步骤”的。去很方便 定义step的概念,使其与机器一样独立 可能

现在从

。。。算法的时间复杂度量化了算法运行所需的时间量,该时间量是字符串长度的函数 表示输入

时间复杂度通常通过计算 由算法执行的基本操作,其中 操作需要固定的时间来执行

请注意,这两种描述都强调了输入大小与基本/基本操作数的关系

我相信这清楚地表明,两者指的是同一个概念

但在实践中,您会发现enterprisey行话很少与学术术语相匹配,例如,很多人从事代码优化工作,但很少解决问题。

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

另一种算法可能能够以更快的速度渐进地解决相同的问题,也就是说,运行时间更短

另一方面,“时间复杂性”是所考虑的问题所固有的。 它被定义为求解上述问题的任何算法的最小运行时间

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


(布卢姆的加速定理表明,“最短”时间通常不可能达到……

它完全取决于使用该术语的上下文。当你的老板问为什么“运行时间”是3小时时,他并不是在谈论算法的复杂性。当你的教授问一个算法的“运行时间”是什么时,他可能并不是要你拿出秒表计时。“因为输入的大小趋于无穷大”,没错。他同意。然而,当我们对同一问题有两种不同的方法时,比较不同方法的运行时间以确保正确计算时间复杂度是否明智从初学者的角度?