T(n)=3T(n/3)+nlogn時(shí)間復(fù)雜度的計(jì)算
- 教育綜合
- 2024-08-21 12:59:53
請問遞歸算法的時(shí)間復(fù)雜度如何計(jì)算呢?
遞歸算法的時(shí)間復(fù)雜度在算法中,當(dāng)一個(gè)算法中包含遞歸調(diào)用時(shí),其時(shí)間復(fù)雜度的分析會(huì)轉(zhuǎn)化為一個(gè)遞歸方程求解,常用以下四種方法:
1.代入法(Substitution Method)
代入法的基本步驟是先推測遞歸方程的顯式解,然后用數(shù)學(xué)歸納法來驗(yàn)證該解是否合理。
2.迭代法(Iteration Method)
迭代法的基本步驟是迭代地展開遞歸方程的右端,使之成為一個(gè)非遞歸的和式,然后通過對(duì)和式的估計(jì)來達(dá)到對(duì)方程左端即方程的解的估計(jì)。
3.套用公式法(Master Method)
這個(gè)方法針對(duì)形如“T(n) = aT(n/b) + f(n)”的遞歸方程。這種遞歸方程是分治法的時(shí)間復(fù)雜性所滿足的遞歸關(guān)系。
即一個(gè)規(guī)模為n的問題被分成規(guī)模均為n/b的a個(gè)子問題,遞歸地求解這a個(gè)子問題,然后通過對(duì)這a個(gè)子間題的解的綜合,得到原問題的解。
4.差分方程法(Difference Formula Method)
可以將某些遞歸方程看成差分方程,通過解差分方程的方法來解遞歸方程,然后對(duì)解作出漸近階估計(jì)。
擴(kuò)展資料:
1.遞歸是指對(duì)一個(gè)問題的求解,可以通過同一問題的更簡單的形式的求解來表示,并通過問題的簡單形式的解求出復(fù)雜形式的解,是解決一類問題的重要方法。
2.遞歸程序設(shè)計(jì)是程序設(shè)計(jì)中常用的一種方法,它可以解決所有有遞歸屬性的問題,并且是行之有效的.
3.但對(duì)于遞歸程序運(yùn)行的效率比較低,無論是時(shí)間還是空間都比非遞歸程序更費(fèi),若在程序中消除遞歸調(diào)用,則其運(yùn)行時(shí)間可大為節(jié)省.
怎么估算一個(gè)算法的時(shí)間復(fù)雜度
遞歸算法的時(shí)間復(fù)雜度分析 收藏 在算法分析中,當(dāng)一個(gè)算法中包含遞歸調(diào)用時(shí),其時(shí)間復(fù)雜度的分析會(huì)轉(zhuǎn)化為一個(gè)遞歸方程求解。實(shí)際上,這個(gè)問題是數(shù)學(xué)上求解漸近階的問題,而遞歸方程的形式多種多樣,其求解方法也是不一而足,比較常用的有以下四種方法: (1)代入法(Substitution Method) 代入法的基本步驟是先推測遞歸方程的顯式解,然后用數(shù)學(xué)歸納法來驗(yàn)證該解是否合理。 (2)迭代法(Iteration Method) 迭代法的基本步驟是迭代地展開遞歸方程的右端,使之成為一個(gè)非遞歸的和式,然后通過對(duì)和式的估計(jì)來達(dá)到對(duì)方程左端即方程的解的估計(jì)。 (3)套用公式法(Master Method) 這數(shù)據(jù)結(jié)構(gòu)中 時(shí)間復(fù)雜度是如何計(jì)算的(詳細(xì)點(diǎn)啊……)
時(shí)間復(fù)雜度:基本操作重復(fù)執(zhí)行的次數(shù)的階數(shù) T(n)=o(f(n)) 以下六種計(jì)算算法時(shí)間的多項(xiàng)式是最常用的。其關(guān)系為: O(1)1、先找出算法的基本操作,然后根據(jù)相應(yīng)的各語句確定它的執(zhí)行次數(shù),再找出T(n)的同數(shù)量級(jí)(它的同數(shù)量級(jí)有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n?。?,找出后,f(n)=該數(shù)量級(jí),若T(n)/f(n)求極限可得到一常數(shù)c,則時(shí)間復(fù)雜度T(n)=O(f(n))。
2、舉例
for(i=1;i<=n;++i)
{for(j=1;j<=n;++j)
{c[ i ][ j ]=0; //該步驟屬于基本操作 執(zhí)行次數(shù):n的平方次
for(k=1;k<=n;++k)
c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //該步驟屬于基本操作 執(zhí)行次數(shù):n的三次方次}}
則有 T(n)= n的平方+n的三次方,根據(jù)上面括號(hào)里的同數(shù)量級(jí),我們可以確定 n的三次方為T(n)的同數(shù)量級(jí)
則有f(n)= n的三次方,然后根據(jù)T(n)/f(n)求極限可得到常數(shù)c
則該算法的 時(shí)間復(fù)雜度:T(n)=O(n的三次方)
擴(kuò)展資料
分類
按數(shù)量級(jí)遞增排列,常見的時(shí)間復(fù)雜度有:常數(shù)階O(1),對(duì)數(shù)階O(),線性階O(n),線性對(duì)數(shù)階O(nlog2n),平方階O(n^2),立方階O(n^3),...,
k次方階O(n^k),指數(shù)階O(2^n)。隨著問題規(guī)模n的不斷增大,上述時(shí)間復(fù)雜度不斷增大,算法的執(zhí)行效率越低。
關(guān)于對(duì)其的理解
《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 ------嚴(yán)蔚敏 吳偉民編著 第15頁有句話“整個(gè)算法的執(zhí)行時(shí)間與基本操作重復(fù)執(zhí)行的次數(shù)成正比?!?/p>
基本操作重復(fù)執(zhí)行的次數(shù)是問題規(guī)模n的某個(gè)函數(shù)f(n),于是算法的時(shí)間量度可以記為:T(n) = O(f(n))
如果按照這么推斷,T(n)應(yīng)該表示的是算法的時(shí)間量度,也就是算法執(zhí)行的時(shí)間。
而該頁對(duì)“語句頻度”也有定義:指的是該語句重復(fù)執(zhí)行的次數(shù)。
如果是基本操作所在語句重復(fù)執(zhí)行的次數(shù),那么就該是f(n)。
上邊的n都表示的問題規(guī)模。
參考資料:百度百科-時(shí)間復(fù)雜度
時(shí)間復(fù)雜度怎么計(jì)算?
1. 一般情況下,算法的基本操作重復(fù)執(zhí)行的次數(shù)是模塊n的某一個(gè)函數(shù)f(n),因此,算法的時(shí)間復(fù)雜度記做:T(n)=O(f(n)) 分析:隨著模塊n的增大,算法執(zhí)行的時(shí)間的增長率和f(n)的增長率成正比,所以f(n)越小,算法的時(shí)間復(fù)雜度越低,算法的效率越高。 2. 在計(jì)算時(shí)間復(fù)雜度的時(shí)候,先找出算法的基本操作,然后根據(jù)相應(yīng)的各語句確定它的執(zhí)行次數(shù),再找出T(n)的同數(shù)量級(jí)(它的同數(shù)量級(jí)有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n?。?,找出后,f(n)=該數(shù)量級(jí),若T(n)/f(n)求極限可得到一常數(shù)c,則時(shí)間復(fù)雜度T(n)=O(f(n)) 例:算法: f上一篇
煙氣脫硫是什么意思?
下一篇
返回列表