[英]Deduct time complexity from this Recurrence formula?
我正在閱讀有關SO的時間復雜度計算相關問題,但我無法在此處發表評論(代表人數不足)。 此回文式分割算法的時間復雜度是多少?
我有一個關於從第一方程式轉到第二方程式的問題:
現在,您可以為H(n-1)編寫相同的表達式,然后代回以簡化操作:
H(n)= 2 H(n-1)+ O(n)=========>等式1
這解決了
H(n)= O(n * 2 ^ n)=========>等式2
有人可以說明他是如何從等式1得到等式2的嗎? 謝謝。
等式1.是一個遞歸關系 。 請參閱該鏈接以獲取有關如何求解這些類型的方程式的教程,但我們可以通過以下擴展進行求解:
H(n) = 2H(n-1) + O(n)
H(n) = 2*2H(n-2) + 2O(n-1) + O(n)
H(n) = 2*2*2H(n-3) + 2*2O(n-2) + 2O(n-1) + O(n)
...
H(n) = 2^n*H(1) + 2^(n-1)*O(1) + ... + 2O(n-1) + O(n)
since H(1) = O(n) (see the original question)
H(n) = 2^n*O(n) + 2^(n-1)*O(1) + ... + 2O(n-1) + O(n)
H(n) = O(n * 2^n)
在這種簡單的情況下,只需將常數添加到每一側,就需要使方程均勻化。 首先,指定O(n)= K,以避免在此階段使用O表示法:
H(n)= 2 H(n-1)+ K
然后在每邊加一個K:
H(n)+ K = 2(H(n-1)+ K)
令G(n)= H(n)+ K,則
G(n)= 2 G(n-1)
這是眾所周知的齊次一階遞歸
G(n)= G(0)×2 n = G(1)×2 n-1
由於H(1)= O(n),所以G(1)= H(1)+ K = O(n)+ O(n)= O(n),
G(n)= O(n)×2 n-1 = O(n×2 n-1 )= O(n×2 n )
和
H(n)= G(n)-K = O(n×2 n )-O(n)= O(n×2 n )
他們錯了。
假設O表示一個緊邊界,並用c * n
替換O(n)
某個常數c
。 展開遞歸,您將獲得:
完成展開遞歸后, n = i
和b = T(0)
。
現在求和:
總結一下,您將獲得:
所以現在很清楚T(n)
是O(2^n)
而沒有任何n
對於仍對數學持懷疑態度的人:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.