データ構造の時間複雑

ランダウの記号:時間複雑性は= O(F(N))T [N]として定義され、通常、大きなO記法です。Fへの関数T(n)は(n)が知られている、またはf(N)に制限され、T(n)が有界であることを特徴とします。問題は、nの大きさ、時間T(n)が必要この問題を解決するためのアルゴリズムである場合。T(n)は、このアルゴリズムの「時間計算」と呼ばれます。入力N徐々にアルゴリズムの時間複雑度が呼び出される限界増やす場合、「時間の漸近複雑さ」を

反復手順

  • トピック:
int i=1;
while(i<=n) {
    i=i*2;
}
  • 思考:
    と仮定k回ループが実行され、その後、\(2 ^ k個の\) ≤n、k≤lognので、時間計算量はT(n)が= O(LOGN )

再帰的な手順

Mainメソッド

  • マスター定理を分割統治:T [N]は、[N / B] + F(N)=nは、問題の大きさ≧1及びBが> 1で一定となる。、および、F(n)は進行性の正の関数でありますすなわち、再帰的な計算時間以外に、このマスター定理を使用するためには、次の3つの場合を考えてみます。
    • もしF(N)= O(\(^ N-log_ba- [イプシロン] {} \) )即ち、F(n)は指数未満の\(log_ba} {\) )、いくつかの定数εため> 0成立する(すなわち、F( N)\(N ^ {log_ba} \ ) 無限下位の)、次いで、T(N)= O(\(N ^ {log_ba} \ ) )(即ち、時間複雑さが依存する高次無限大
    • もしF(N)= O(\(N ^ {log_ba} \) )即ち、F(n)はインデックスに等しい({log_baを} \ \) )(即ち、のF(N)\(N ^ {log_ba} \ )無限同じオーダーの)、次いで、T(N)= O(\(^ {N-logN個のlog_ba} \)

    • もしF(N)= O(\(N-log_ba +、ε^ {} \) )即ち、F(n)のインデックスがでより大きい\(log_ba} {\))0が成立>いくつかの定数ε、及びため、AF( (N-)N- / B)≤cfいくつかについて、定数C <。1(十分大きなN-)(すなわち、確立されたのF(N)\(N ^ {log_ba} \ ) 高次無限大)、次いで、T(n)が= O(F(N))

  • タイトル:
    T(N)= 3T(N / 2)^ 2 + N-
  • アイデア:
    1. もしメイン方法、使用できる場合= Aを3、B = 2、F(N)= ^ N-2条件を満たし
    2. 以来、これに満足し、参照\(log_23 \) <2、および(3N /で^ 2。4 <CN ^ 2 \)\(C <1) 第三のケースを満たすために、= O T(N) (N ^ 2)

反復法

  • トピック:
//汉诺塔问题,假定move()的时间复杂度为O(1)
void hanoi(int n, char x, char y, char z) {
    if(n == 1) {
        move(x, 1, z);
    }else {
        hanoi(n-1, x, z, y);
        move(x, n, z);
        hanoi(n-1, y, x, z);
    }
}
  • アイデア:
    1. 最初の式の書き込み:T(n)を= 2T(N-1)+ O(1)(すなわち、質問2のn-1の規模に分解あなたの問題の大きさに加え、移動の基本的な操作の実装()
    2. あなたがメインメソッドを使用することができれば、我々は、(N)= O(1)、B> 1つの条件を満たさない場合に使用することができない= 2、B = 1、Fを発見しました
    3. データサイズを小さくするための反復によって、各反復n 1は、即ちN == 1、最後まで最後に存在しなければなりません。


      T(N)= 2T(1-N-)+ +1の
      T = 2T(N - 2)(1-n-は)+ +1
      同時所与の
      T(N)= 4T(N -2)+ 1 + 2
      によって数学的帰納方法得るために
      (N)Tが= 2 ^(
      N-1)T(1)+ 1 + 2 + 4 + 8 + ... + 2 ^(N-2) および終了条件∵T(1)。1 =
      ∴時間計算量はO(2 ^ N)

おすすめ

転載: www.cnblogs.com/blknemo/p/11365724.html