當前位置:首頁 » 操作系統 » 遞歸演算法時間復雜度

遞歸演算法時間復雜度

發布時間: 2022-02-04 04:36:39

『壹』 全排列遞歸演算法的時間復雜度怎麼算

復雜度就是排列組合總數:n!

『貳』 漢諾塔遞歸演算法的時間復雜度怎麼用Big-O表示

如果你直接要答案的話,設T(n) 為移動 n 層漢諾塔所需要的最少步數,T(n) = 2^n - 1 ,可以表示為O(2^n)

『叄』 【請教】遞歸演算法 的時間復雜度。。。非常感謝各位!

可以說說具體的操作嗎? 我很白的。。

『肆』 請問遞歸演算法的時間復雜度如何計算呢

遞歸演算法的時間復雜度在演算法中,當一個演算法中包含遞歸調用時,其時間復雜度的分析會轉化為一個遞歸方程求解,常用以下四種方法:

1.代入法(Substitution Method)

代入法的基本步驟是先推測遞歸方程的顯式解,然後用數學歸納法來驗證該解是否合理。

2.遞歸程序設計是程序設計中常用的一種方法,它可以解決所有有遞歸屬性的問題,並且是行之有效的.

3.但對於遞歸程序運行的效率比較低,無論是時間還是空間都比非遞歸程序更費,若在程序中消除遞歸調用,則其運行時間可大為節省.

『伍』 遞歸演算法時間復雜度⑶ 遞歸函數 fact( int n ) { if (n<=1) return(1) ; else return( n*fact(n-1)) ; }

從入口n單向 到出口n =1,再回來,所以時間復雜度為O(n)

『陸』 [數據結構與演算法分析]斐波那契數列遞歸演算法時間復雜度為多少

longfab(longn)
{
if(n<2)return1;
returnfab(n-1)+fab(n-2);
}

簡單推斷一下,當n>2時,遞歸調用的次數call_fab(n) = 2*fab(n) - 1,再簡單證明一下。

用call_fab(n)代表遞歸調用的次數

n = 3時,調用fab(3),會遞歸調用fab(1)和fab(2),而fab(1)和fab(2)只需要調用一次,加上本身一次,一共調用3次,而fab(3) = 2,3 = 2 * 2 - 1,滿足推斷

n = 4時,fab(4) = fab(3) + fab(2),所以call_fab(4) = 1 + call_fab(3) + call_fab(2) = 5

fab(4) = 3,滿足5 = 3 * 2 - 1

同理n=5也可以簡單計算得出,這樣我有連續3個結果,作為歸納法證明的基礎

假設n = k(k >= 5)成立,即

fab(k) = fab(k-2) + fab(k - 1),有call_fab(k) = 2fab(k) - 1

那麼當n=k+1時,fab(k+1) = fab(k - 1) + fab(k),

call_fab(k+1) = 1 + call_fab(k - 1) + call_fab(k) = 1 + 2fab(k-1) - 1 + 2fab(k) - 1

= 2(fab(k-1) + fab(k)) - 1 = 2fab(k+1) - 1,歸納法得證。

所以,對於大於2的整數n,其斐波那契數列遞歸演算法的調用次數為2*n的斐波那契數列值 - 1,故答案是D,時間復雜度和該數列是一致的。

『柒』 遞歸演算法和非遞歸演算法在分析時間復雜度和空間復雜度上為什麼不同

在演算法分析中,當一個演算法中包含遞歸調用時,其時間復雜度的分析會轉化為一個遞歸方程求解。實際上,這個問題是數學上求解漸近階的問題,而遞歸方程的形式多種多樣,其求解方法也是不一而足,比較常用的有以下四種方法:
(1)代入法(Substitution Method)

代入法的基本步驟是先推測遞歸方程的顯式解,然後用數學歸納法來驗證該解是否合理。

(2)迭代法(Iteration Method)

迭代法的基本步驟是迭代地展開遞歸方程的右端,使之成為一個非遞歸的和式,然後通過對和式的估計來達到對方程左端即方程的解的估計。

(3)套用公式法(Master Method)

這個方法針對形如「T(n) = aT(n/b) + f(n)」的遞歸方程。這種遞歸方程是分治法的時間復雜性所滿足的遞歸關系,即一個規模為n的問題被分成規模均為n/b的a個子問題,遞歸地求解這a個子問題,然後通過對這a個子間題的解的綜合,得到原問題的解。

(4)差分方程法(Difference Formula Method)
可以將某些遞歸方程看成差分方程,通過解差分方程的方法來解遞歸方程,然後對解作出漸近階估計。

下面就以上方法給出一些例子說明。

一、代入法

大整數乘法計算時間的遞歸方程為:T(n) = 4T(n/2) + O(n),其中T(1) = O(1),我們猜測一個解T(n) = O(n2 ),根據符號O的定義,對n>n0,有T(n) < cn2 - eO(2n)(注意,這里減去O(2n),因其是低階項,不會影響到n足夠大時的漸近性),把這個解代入遞歸方程,得到:

T(n) = 4T(n/2) + O(n)
≤ 4c(n/2)2 - eO(2n/2)) + O(n)
= cn2 - eO(n) + O(n)
≤ cn2

其中,c為正常數,e取1,上式符合 T(n)≤cn2 的定義,則可認為O(n2 )是T(n)的一個解,再用數學歸納法加以證明。

二、迭代法
某演算法的計算時間為:T(n) = 3T(n/4) + O(n),其中T(1) = O(1),迭代兩次可將右端展開為:

T(n) = 3T(n/4) + O(n)
= O(n) + 3( O(n/4) + 3T(n/42 ) )
= O(n) + 3( O(n/4) + 3( O(n/42 ) + 3T(n/43 ) ) )

從上式可以看出,這是一個遞歸方程,我們可以寫出迭代i次後的方程:

T(n) = O(n) + 3( O(n/4) + 3( O(n/42 ) + ... + 3( n/4i + 3T(n/4i+1 ) ) ) )

當n/4i+1 =1時,T(n/4i+1 )=1,則

T(n) = n + (3/4) + (32 /42 )n + ... + (3i /4i )n + (3i+1 )T(1)
< 4n + 3i+1

而由n/4i+1 =1可知,i<log4 n,從而

3i+1 ≤ 3log4 n+1 = 3log3 n*log4 3 +1 = 3nlog4 3

代入得:

T(n) < 4n + 3nlog4 3,即T(n) = O(n)。

三、套用公式法

這個方法為估計形如:
T(n) = aT(n/b) + f(n)
其中,a≥1和b≥1,均為常數,f(n)是一個確定的正函數。在f(n)的三類情況下,我們有T(n)的漸近估計式:
1.若對於某常數ε>0,有f(n) = O(nlogb a-ε ),則T(n) = O(nlogb a )

2.若f(n) = O(nlogb a ),則T(n) = O(nlogb a *logn)

3.若f(n) = O(nlogb a+ε ),且對於某常數c>1和所有充分大的正整數n,有af(n/b)≤cf(n),則T(n)=O(f(n))。

設T(n) = 4T(n/2) + n,則a = 4,b = 2,f(n) = n,計算得出nlogb a = nlog2 4 = n2 ,而f(n) = n = O(n2-ε ),此時ε= 1,根據第1種情況,我們得到T(n) = O(n2 )。

這里涉及的三類情況,都是拿f(n)與nlogb a 作比較,而遞歸方程解的漸近階由這兩個函數中的較大者決定。在第一類情況下,函數nlogb a 較大,則T(n)=O(nlogb a );在第三類情況下,函數f(n)較大,則T(n)=O(f (n));在第二類情況下,兩個函數一樣大,則T(n)=O(nlogb a *logn),即以n的對數作為因子乘上f(n)與T(n)的同階。

但上述三類情況並沒有覆蓋所有可能的f(n)。在第一類情況和第二類情況之間有一個間隙:f(n)小於但不是多項式地小於nlogb a ,第二類與第三類之間也存在這種情況,此時公式法不適用。

『捌』 請問遞歸演算法的時間復雜度如何計算

你也沒說一個具體的問題,問題不同復雜度也不同啊!

反正一般遞歸演算法的復雜度都不低,要消耗大量的內存空間。

『玖』 遞歸演算法的時間復雜度

因為都是要遍歷每一個節點,所以時空復雜度是一樣的。 時間復雜度O(n); 空間復雜度O(n); (n為節點數)

『拾』 由遞歸方式求的N的階乘(即N,),時間復雜度是多少

每次遞歸內部計算時間是常數,故O(n)。

用遞歸方法計算階乘,函數表達式為f(n)=1 若n=0 f(n)=n*f(n-1),若n>0,如果n=0,就調用1次階乘函數,如果n=1,就調用2次階乘函數,如果n=2,就調用3次階乘函數,如果n=3,就調用4次階乘函數。

(10)遞歸演算法時間復雜度擴展閱讀:

注意事項:

利用遞歸樹方法求演算法復雜度,其實是提供了一個好的猜測,簡單而直觀。在遞歸樹中每一個結點表示一個單一問題的代價,子問題對應某次遞歸函數調用,將樹中每層中的代價求和,得到每層代價,然後將所有層的代價求和,得到所有層次的遞歸調用總代價。

遞歸樹最適合用來生成好的猜測,然後可用代入法來驗證猜測是否正確。當使用遞歸樹來生成好的猜測時,常常要忍受一點兒不精確,因為關注的是如何尋找解的一個上界。

熱點內容
php判斷字元開頭 發布:2024-11-15 00:35:33 瀏覽:507
網易蘋果游戲怎麼轉移到安卓 發布:2024-11-15 00:07:52 瀏覽:270
win7php環境搭建 發布:2024-11-15 00:06:55 瀏覽:17
erpjava 發布:2024-11-14 23:52:23 瀏覽:253
電腦版地平線四怎麼連上伺服器 發布:2024-11-14 23:46:42 瀏覽:472
ios怎麼變安卓 發布:2024-11-14 23:46:36 瀏覽:333
win7共享xp列印機拒絕訪問 發布:2024-11-14 23:45:29 瀏覽:750
引起資源配置失效的原因有哪些 發布:2024-11-14 23:35:22 瀏覽:15
c語言打字 發布:2024-11-14 23:11:06 瀏覽:893
存儲程序和程序控制的原理 發布:2024-11-14 22:53:23 瀏覽:323