2013-03-31 32 views
2

對於主定理T(n) = a*T(n/b) + f(n)我使用三種情況:碩士和f(n)的定理=日誌N

  1. 如果a*f(n/b) = c*f(n)對於某一常數c > 1然後T(n) = (n^log(b) a)
  2. 如果a*f(n/b) = f(n)然後T(n) = (f(n) log(b) n)
  3. 如果a*f(n/b) = c*f(n)爲一些常數c < 1然後T(n) = (f(n))

但是,當f(n) = log nn*log nc的值取決於n的值。如何使用主定理解決遞歸函數?

回答

2

你可能會從the Wikipedia article on the Master theorem發現這三種情況下多一點有用:

  • 案例1:F(N)= Θ(N Ç),其中c <日誌 b一個
  • 情況2:F(N)= Θ(N ç日誌ķ n),其中C =登錄 b一個
  • 情況3:F(N)= Θ(N Ç),其中c>登錄 b一個

現在沒有對n的選擇直接依賴了 - 所有重要的是長f的長期增長率以及它與常數a和b的關係。沒有看到你試圖解決的特定復發的更多細節,我無法提供更具體的建議。

希望這會有所幫助!

+0

因此,對於f(n)= log n和a!= b的情況,它不適合第二種情況,因爲c和k必須是1,但它會給出函數n *日誌那麼我該如何檢查這個功能適合哪裏?對不起,有很多問題。 –

+0

請注意,對於任何常數c,log n都不是Theta(n^c)。這裏唯一可行的情況是中間情況,如果你有a = b,這可能會起作用。如果!= b,那麼你不能直接應用主定理來解決復發問題,並且必須找到一種替代方法。 – templatetypedef

+0

這正是我想聽到的!非常感謝! –

6

通常,f(n)必須是主定理適用的多項式 - 它不適用於所有函數。但是,對於主定理,有一個有限的「第四種情況」,它允許它適用於多對數函數。

如果 F(N)= O(N 日誌 b一個日誌ķ n)時,然後 T(N)= O(N 日誌 b一個日誌ķ +1 n)。

換句話說,假設你有T(n)= 2T(n/2)+ n log n。 f(n)不是一個多項式,而是f(n)= n log n,且k = 1.因此,T(n)= O(n log n)

信息:http://cse.unl.edu/~choueiry/S06-235/files/MasterTheorem-HandoutNoNotes.pdf