估算遞迴問題的時間複雜度方法

2021-05-17 16:46:30 字數 392 閱讀 2489

設a和b為常數,a>=1,b>1,

t(n) = at(n/b) + f(n) 為遞迴問題的表示形式,

n為問題的規模,b為子問題的規模,a為子問題數,f(n)為劃分與合併的時間開銷。

令g(n) = at(n/b)。

按如下三種情況進行估算:

1、如果g(n)的時間複雜度大於f(n),則t(n) = o(nlogb a );

2、如果g(n)的時間複雜度大等於f(n),則t(n) = o(nlogb a lgn);

3、如果g(n)的時間複雜度小於f(n),則t(n) = o(f(n))。

也就是說,g(n)和f(n)誰的時間複雜度高,誰就起決定性作用;相同則再乘以lgn。

參考《演算法導論》中的master theorem。

剖析遞迴行為和遞迴行為時間複雜度的估算

乙個遞迴行為的例子 master公式的使用 t n a t n b o n d t n 是樣本量為n時的時間複雜度,n b是劃分成子問題的樣本量,子問題發生了a次,後面o n d 是除去呼叫子過程之外的時間複雜度。比如要求乙個陣列的最大值 public static int getmax int a...

剖析遞迴行為和遞迴行為時間複雜度的估算

乙個遞迴行為的例子 master公式的使用 t n a t n b o n d t n 是樣本量為n時的時間複雜度,n b是劃分成子問題的樣本量,子問題發生了a次,後面o n d 是除去呼叫子過程之外的時間複雜度。比如要求乙個陣列的最大值 public static int getmax int a...

遞迴演算法時間複雜度

開篇前言 為什麼寫這篇文章?筆者目前在學習各種各樣的演算法,在這個過程中,頻繁地碰到到遞迴思想和分治思想,驚訝於這兩種的思想的偉大與奇妙的同時,經常要面對的乙個問題就是,對於乙個給定的遞迴演算法或者用分治思想縮小問題規模的演算法,如何求解這個演算法的時間複雜度呢?在google過很多的博文後,感覺這...