複雑性分析 - 再帰的な複雑さ

再帰的解析の複雑さの重要な点は:カットオフ状態、列挙された再帰式を見つけ、そして最終的に単純化により簡略化の数学的単純化を策定します。

/ * 
キー再帰計算の複雑性- >境界を見つける
時間を基本的な操作をCに設定されている
コメント内のすべてについて、テキストの話-私は言葉で書いて申し訳ありませんが面倒です。
時間T(n)が消費する機能を実行する
* / 

//は再帰階乗通常演算
INT FUNC(INT N-){
     IF(!N-)戻り 0 ; // 基本的な動作は、
    戻り * FUNC(N-N- 1 ); 
} 
// 時間計算
 // T(N)== C + T(N - 1)== C +(C + T(N-2-))
 // ... == CN + T(0)== C( + N-1) 
 // 丸め定数==> O(N)の単純なルールによって

// 空間的複雑
 // ために(N-1)の場合FUNC(n-1)が決定されていないn個の*のFUNC、それは空間が必要ですこれは、記録機能を保存することである(N-1)まで決定される
 // 毎に必要な収納スペースとして設けられ
// ==> S(N)== *再帰の数==
 // 丸め定数==> Oの単純な規則によって(N)




INT FUNC(INT N-){
     IF(N!)リターン 1。 ; / / 基本的な動作は
    戻り FUNC(N- 1)+ FUNC(N- 1 ); 
} 
// T(N)== 2T(N - 1)== 2(2T(N - 2))...
 //          = * T ^ N-2 =(0)== * 2 ^ N-C 
 // 定数を丸めるの単純なルールから==> O(N-2 ^)



のint SUM、
 ボイド FUNC(INT N-){
     IF(!{N-)
        SUM + = 1。 ;   // 基本的な操作
        返す ; // 基本操作 
    } {
         のためにint型私は= 1。 ;; I <N- ++ I){ 
            FUNC(N- - 1。;)
        } 
    } リターン ; // 基本操作
}
 // 時間の複雑さO(N!) 
 // T(N-)== nTの(N - 1)== N- T(N - 2)(1-N-。)...のn - !== * C
 // シンプルな正則化定数から破棄==> O(N!)


のint SUM、
 無効 FUNC(INT のN-){
     IF(N - == 1 ){ 
        SUM + = 1 ; 
    }{
         ためINT I = 1 ; I <N - 、I * = 2 ){ 
            FUNC(N - 1 ); 
        } 
    } リターン; 
} 
// うK N操作の数は、再帰2 ^ K ==であること、 LOGN = K
 // 次の層機能LOGN時間に再帰呼び出し、次の再帰
 // T(N)==ログ(N)T(N - 1)==ログ(N-)ログ(N- -1)T(N - 2)...
 // ?==> O()は、分析の主なアイデアで、どのように簡素化がああではないでしょう

 

おすすめ

転載: www.cnblogs.com/GorgeousBankarian/p/11543400.html