算法的时间复杂度

时间:2013-08-31 09:49:01

标签: algorithm time-complexity

这是我们必须计算给定函数的时间复杂度的问题

f(i) = 2*f(i+1) + 3*f(i+2)
For (int i=0; i < n; i++)
F[i] = 2*f[i+1] 

我认为这种算法的复杂性是O(2 ^ n)+ O(n),最终是O(2 ^ n)。 如果我错了,请纠正我?

1 个答案:

答案 0 :(得分:0)

首先,您将来需要处理这些信息的所有信息都是here

回答你的问题。因为你没有根据我自己提供f(i)的定义,所以不可能从你上面所写的内容中确定实际的复杂性。但是,通常用于像

这样的循环
for (i = 0; i < N; i++) {
    sequence of statements
}

执行N次,因此语句序列也执行N次。如果我们假设语句是O(1),则for循环的总时间是N * O(1),总体上是O(N)。在你的情况下,如果我冒昧重写它

f(0) = 0;
f(1) = 1;
f(i+2) = 2*f(i+1) + 3*f(i)
for (int i=0; i < n; i++)
    f[i] = 2*f[i+2] 

然后我们有一个明确定义的操作序列,应该清楚n操作的复杂性,就像我上面给出的例子,n * O(1),即O(n)。

我希望这会有所帮助。