2014-08-28 76 views
-3
  1. T(n) = 8*T(n/2) + n*n大O符号中下列代码的时间复杂度是多少?

  2. T(n) = 3*T(n/4) + n

我想计算大O符号的时间复杂度。什么是答案(不使用主定理)

+4

答案是应用大师定理 – Sneftel 2014-08-28 10:39:11

+0

请问大师定理是如何工作的? – Shankar 2014-08-28 11:55:19

+0

有没有人知道我为什么得到4票加入这个问题的回应? – Shankar 2014-08-29 20:53:42

回答

4

主定理适用于形式T(n) = a*T(n/b) + n^c的任何重现。它着眼于和复发的两个部分进行比较:在此级别(C) 2)的递归调用(的数量和尺寸

1)的恒定工作的大小和b)

从这里,我们比较log_b(a)和c。有三种可能性

  1. log_b (a) > c - >T(n)O(n^log_b (a))
  2. log_b (a) < c - >T(n)O(n^c)
  3. log_b (a) = c - >T(n)O(n^c log(n))

因此,对于你的两个例子...

  1. T(n) = 8*T(n/2) + n*n,因此a = 8, b = 2, c = 2log_2 (8) > 2,因此T(n)O(n^(log_2 (8)) = O(n^3)
  2. T(n) = 3 * T(n/4) + n,因此a = 3, b = 4, c = 1log_4 (3) < 1,因此T(n)O(n^c) = O(n)

A fuller explanation on Wikipedia

2

对于第一个关系,你可以做这个:

enter image description here

相关问题