在执行时间和输入大小之间具有已知依赖性的函数的复杂度类

时间:2019-03-16 05:05:27

标签: time-complexity complexity-theory

假设我正在尝试查找函数的复杂性类。每次评估函数时,数据集都会加倍,并且每次发生时,执行函数所需的时间都会增加(X)倍。

如果我们知道(X),如何找到函数的复杂度类/ O符号?例如,如果X略大于2,则Big-O表示法为O(N log N)。

1 个答案:

答案 0 :(得分:0)

T(n)为您所讨论的函数的时间复杂度,其中n为输入数据的大小。我们可以为T(n)编写递归方程:

T(n) = X * T(n/2)

其中X是您的常数。让我们“展开”此递归:

T(n) = X * T(n/2) = X^2 * T(n/4) = X^3 * T(n/8) = ... = X^k * T(n/2^k)

当参数k变得足以满足以下条件时,该展开过程应结束:

n/2^k = 1

,表示n = 2^kk = log(n)(对数以2为底)。我们还可以假设:

T(1) = C

其中C是另一个常数。现在我们看一下展开的方程,用k代替log(n),用T(1)代替C

T(n) = X^log(n) * C

我们可以使用对数属性来简化此公式:

T(n) = C * n^log(X)