[英]Worst Case and Best Case Run-time Complexity of Recurrence Relation T(n) = 2T(n/2) + T(n-1) + constant
我正在尋找以下遞歸關系的最壞情況和最佳情況運行時分析:
T(n) = 2T(n/2) + T(n-1) + 1
我在 Stack Overflow 或 Web 上找不到完全相同的問題。
在這種情況下,我們有三個分支,並且我們知道T(n/2)
會比T(n-1)
更快地到達基本情況,所以根據我的理解,最長的葉子到根路徑代表最壞的情況復雜性和最短葉到根路徑代表最佳情況的復雜性。
因此,我們認為最好的案例復雜度是:
T(n) = log(n) * T(1)
假設T(1)=1
,那么我們有最佳情況復雜度
T(n) = O(logn)
如果我們看一下最壞情況的復雜性,我們有
T(n) = n * T(1)
因此,我們有(再次假設T(1)=1
):
T(n) = O(n)
我可能在這里誤解了一些東西,或者這個時序分析對於這種重復關系是否准確?
假設 T(1)=1,那么我們有最好的情況復雜度
您不能簡單地替換T(1)
並聲稱它是最佳情況復雜度。 特別是使用 Big-O 符號來表示
T(n) = O(logn)
正確地說,您將使用Ω(logn)
。
對於最佳情況復雜度,需要研究算法在增加大小時的行為,並分析算法是否存在可能導致不同場景的任何屬性。 例如,在最佳情況下,在 BST 中的搜索可能是恆定的,但您仍然使用輸入“n”來考慮它,而不是使用單個元素的最佳情況下。
在您的情況下,您沒有具體的算法,而是 function (表示為重復)。 因此,談論最好和最壞的情況是沒有意義的
在這種情況下,我們有三個分支,並且我們知道 T(n/2) 會比 T(n-1) 更快地到達基本情況,所以根據我的理解,最長的葉子到根路徑代表最壞的情況復雜
在計算遞歸時,不僅要考慮遞歸樹的高度,還要考慮分支的數量。 所以:
如果我們看一下最壞情況的復雜性,我們有
T(n) = n * T(1)
你的理性是不正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.