- 问题1:以下哪个是T 3 (n)的值,其中T 3 (n)定义为T 3 (n)= 5 * T 3 (n-1)– 4 * T 3 (n-2)
- C 1 * 5 n + C 2 * 4 n
- C 1 + C 2 * 4 n
- C 1 * 2 n + C 2 * 4 n
- C 1 * 5 n + C 2 *(-4) n
答: 2
说明:递归函数(方程式)似乎有一个奇怪的形式。让我们更改变量T 2 (n)以获得熟悉形式的方程;因此,我们让A(n)= T 3 (n);那么我们有:
我们新的微分方程的特征方程为:
因此,该方程的齐次解应为:
正如我们定义的A(n)= T 3 (n),最后的答案是:
- 问题2:以可以使F(n)=(n + 2)的方式确定初始条件F(1)的值!作为以下给定递归函数的解决方案:
F(n) = (n+1) * F(n-1) + (n+1)!
- 3
- 4
- 6
- 2个
答: 3
说明:通过使用迭代技术来求解给定的递归函数,我们将具有:
如果继续进行这些推导,我们可以很容易地猜到答案应该是以下形式:
迭代方法的最后一步(停止点)是当我们达到初始条件F(1)时;因此,我们令k = n-1,并且非递归形式为:
根据给定的函数F(n)以及到现在为止我们得出的结果是:
最后,我们将看到,F(1)的值为:
- 问题3: T(n)= 4 * T(n / 2)+ n * log(n!)的时间复杂度是多少。
- θ(n *对数n)
- θ(n 2 )
- θ(n 2 *对数n)
- θ(n 2 * log 2 n)
答: 4
说明:我们知道log(n!)∈ θ(n * log n) 。
现在,等效的问题是分析新递归函数的顺序:
我们可以通过母定理解决这个问题。为了在这里应用主定理,我们有f(n)= n 2 * log(n) ,参数a (子问题的数量), b (约简因子)和C等于4、2 ,和2;因此,θ(n log b a )为θ(n 2 ),属于相同的复杂度类别θ(n C = 2 );因此,给定的递归函数属于主定理的情况2。
根据主定理,T(n)将具有以下顺序:
- 问题4:哪一个可以最好地估计T(n)的复杂度?
T(n)= * T(N / 2)+ N 2√N + 1。
- θ(n 2 *√ n * log n)
- O(n 2 *√ n + 1 * log n)
- θ( )
- θ( )
- O(n 2 *√ n )。
答: 3
说明:我们知道 , 和 ;因此,我们可以简化递归函数,如下所示:
它属于母定理的情况3;因此, T(n)的渐近复杂度为:
- 问题5:对于T(n)= T(n / 4)+ T(3n / 4)+ n,哪个渐近边界不正确?
- O(n log 4/3 2 )
- Ω(n)
- O(n * log(n))
- 以上都不是
答: 4
说明:通过主定理,我们可以指定与前两个选项(A)和(B)中所示的边界相同的边界:
我们可以通过递归树方法找出第三种选择的正确性。我们画一棵树,我们很容易猜出T(n)的适当边界:
递归树的分支长度不能小于h r ,也不能大于h L ;因此可以推断出以下估计:
根据上述两个边界,我们还有T(n)∈。 θ(n * log(n)) 。
我们知道如果T(n)∈ O(n * log(n)) ,也必须是O(n log 4/3 n ) ;因此,如果我们首先评估了第三个选项,那么实际上我们也会推断出选项(A)的正确性。但是,递归树仅提供有关如何猜测适当边界的想法。由于有人可能会做出错误的猜测,因此此方法还需要验证或证明它不会违反所使用符号的定义。在考虑符号定义的同时,可以通过迭代替换为T(n)来归纳地获得该验证(证明)。