确定算法的运行时间

时间:2014-11-15 00:31:43

标签: performance algorithm recurrence

我一直在尝试确定以下编制算法的渐近运行时间。

算法Alg-1和Alg-2都作为输入并生成一个包含n个条目的数组。

Alg-1将是

ALG-1(A[1,...,n])
1: B= ALG-1(A[1,...,⎿n/2⏌])
2: C= ALG-2(A[⎿n/2⏌+1,...,n])
3: return ALG-2(B,C)

考虑到ALG-2的运行时间f(n)是Θ(√n),我想确定ALG-1的渐近运行时间。

我正在尝试为算法建立重复,然后通过Master定理解决它,但我甚至不知道如何开始。如果有人可以帮我解决一下,我会很高兴。

1 个答案:

答案 0 :(得分:1)

T_k表示在大小为ALG-1的输入上运行n = 2^k所需的时间。我将假设您的ALG-2(B, C)表示ALG-2BC的连接上运行,其长度为n。然后,看起来你有复发

T_k = T_{k - 1} + sqrt(n / 2) + sqrt(n) = T_{k - 1} + C * sqrt(2^k),

其中C是常量。如果您通过T_{k - 1}等方式撰写T_{k - 2}来继续扩展,那么

T_k = C * sqrt(2^k) + C * sqrt(2^{k - 1}) + C * sqrt(2^{k - 2}) + ...

这是一个几何序列,因此总和与主要术语的顺序相同(基本上,第一个术语与所有剩余术语的总和大致相同)。因此,T_k的顺序为sqrt(2^k)sqrt(n)