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

相關問題