簡體   English   中英

為什么這個簡單算法T(n / 2)+1的最壞情況時間復雜度與n ^ 2 + T(n-1)相反?

[英]Why is the worst case time complexity of this simple algorithm T(n/2) +1 as opposed to n^2+T(n-1)?

在此輸入圖像描述

以下問題是關於大學最近的任務。 我原以為答案是n ^ 2 + T(n-1)因為我認為n ^ 2會使它漸近時間復雜度為O(n ^ 2)。 與T(n / 2)+1一樣,其漸近時間復雜度為O(log2(n))。

答案被返回,結果是正確的答案是T(n / 2)+1然而我無法理解為什么會這樣。

有人可能會向我解釋為什么這個算法的最壞情況時間復雜度? 我對時間復雜性的理解可能是錯誤的。

漸近時間復雜度正在n大。 在您的示例中,由於問題指定k是固定的,因此唯一相關的復雜性是最后一個。 請參閱Wikipedia正式定義 ,具體如下:

在此輸入圖像描述

n增長到無窮大時,主導T(n) = T(n / 2) + 1的遞歸。 您也可以使用形式定義證明這一點,基本上選擇x_0 = 10 * k並顯示使用前兩種情況可以找到有限M 應該清楚log(n)n^2滿足定義,因此更緊密的約束是漸近復雜度。

O(f(n))是什么意思? 這意味着時間最多為c * f(n),對於某些未知且可能很大的c。

kevmo聲稱O(log2 n)的復雜性。 那么,你可以檢查n≤10k的所有值,並讓T(n)的最大值為X.X可能相當大(在這種情況下約為167 k ^ 3,我認為,但它實際上並不重要)。 對於較大的n,所需時間最多為X + log2(n)。 選擇c = X,這總是小於c * log2(n)。

當然,人們通常認為O(log n)算法會很快,而且如果k = 10,000,這個算法肯定不會。 所以你也學會了O符號必須小心處理。

暫無
暫無

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

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