如何确定算法函数的复杂性?

时间:2010-09-09 03:31:33

标签: algorithm time complexity-theory big-o

如何知道算法函数是否需要特定操作的线性/常数/对数时间?它取决于cpu周期吗?

3 个答案:

答案 0 :(得分:2)

有三种方法可以做到(至少)。

  1. 在网上查找算法,看看它的时间复杂度。

  2. 根据输入大小,自己检查算法以查看嵌套循环和递归条件,以及每个循环运行或每次递归的频率。对此的扩展是严格的数学分析。

  3. 试验。改变输入变量,看看它需要多长时间。计算一个方程式,根据变量给出所说的运行时间(联立方程求解是O(n c ) - 类型函数的一种可能性。

  4. 其中,第一个对于外行人来说可能是最简单的,因为它几乎肯定是由一个更有知识的人做出的第二个: - )

答案 1 :(得分:0)

首先,该功能可能需要任何时间来执行算法。它也可以是非线性的,甚至是无限的。

如果您有算法,那么很快就会使用名为图灵机的抽象。它用于测量在停止之前执行算法所需的许多操作。

您可以在此处获得更准确的信息WIKI::Computational complexity theory

答案 2 :(得分:0)

关于对CPU的依赖: 答案是否定的 - 时间复杂度完全独立于cpu。这是因为复杂性显示 - 算法对cpu资源的需求如何随着算法输入数据大小的增加而增加。换句话说,它是一个功能。并且功能在任何地方都是相同的 - 无论是在不同的机器上还是在不同的星球上:)