簡體   English   中英

從此遞歸公式中減去時間復雜度?

[英]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 = ib = T(0)

現在求和:

在此處輸入圖片說明

總結一下,您將獲得:

在此處輸入圖片說明

所以現在很清楚T(n)O(2^n)而沒有任何n


對於仍對數學持懷疑態度的人:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM