簡體   English   中英

使用主定理的二分搜索的時間復雜度及其遞歸關系

[英]time complexity of binary search using master theorem and also the recurrence relation of the same

什么是主定理? 使用該定理得出的二分查找的時間復雜度如何? 我想知道這個話題的確切解釋。 先感謝您!

主定理提供了一種明確的方法來確定各種具有大θ符號的分而治之算法的運行時間(給出最壞情況運行時間的嚴格上限和下限)。 許多分治算法在大小為 n 的輸入上的運行時間可以用遞歸方程 T(n) 來表示。 假設我們有:

  • 對於足夠小的輸入,T(n) 是常數。
  • 對於足夠大的輸入,T(n) = a*T(n/b) + f(n),其中a是遞歸調用算法的子問題的數量,每個子問題的大小為n/b ,總非遞歸開銷的數量為f(n) 非遞歸開銷是算法在划分步驟和征服步驟中花費的。

現在,還考慮一個關鍵的 function:n^(log_b(a)),即 n 的 a 的 log base b 的冪。 給定遞歸方程,您可以計算出這是什么,因為您知道 a 和 b 是什么。

主定理本質上說:

  1. 如果 f(n) 在多項式上小於 n^(log_b(a)),則算法運行時間與 n^(log_b(a)) 成正比。
  2. 如果 f(n)=n^(log_b(a)),則算法運行時間與 n^(log_b(a))*log(n) 成正比
  3. 如果 f(n) 在多項式上大於 n^(log_b(a)),則算法運行時間與 f(n) 成正比。

請注意,並非所有分治算法都有運行時間,對於某些abf(n) ,它們可以以這種形式放置,但其中很多都可以 - 包括二進制搜索。

二進制搜索接受大小為 n 的輸入,花費恆定數量的非遞歸開銷來比較中間元素和搜索到的元素,將原始輸入分成兩半,並且僅在數組的一半上遞歸。 現在將其插入主定理,a=1,大小為 n/b 的子問題,其中 b=2,非遞歸開銷 f(n)=1。 計算臨界 function n^(log_b(a))= n^(log_2(1)) = n^0 = 1。所以,現在我們將 f(n)=1 與臨界 function n^(log_b(a) )=1。 它們是相等的,所以我們是主定理的情況 2。 因此,總運行時間與 n^(log_b(a))*logn=logn 成正比。

暫無
暫無

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

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