コードの時間と空間の複雑

コードの複雑さを評価する方法

コードは、2つの方向の複雑さの測度、時間複雑性を有する、空間的複雑です

最初の時間複雑
定義:もしnの関数であり、問題の大きさ、T(n)のために必要な時間の問題を解決するためのアルゴリズムであり、N T(N)アルゴリズムと呼ばれます「時間の複雑さ。」

特性:
1、時間の漸近複雑:入力nは徐々に増加し、時間の複雑リミット。

T(N)= O(F(N))

T(0)は、時間複雑さとして表現されます

ランダウの記号は、関数が上限を有することを示します

F(n)は、nの大きさによって引き起こされる問題自体に費やされた時間の関数を表します

2、大O次の導出方法

すべての実行時定数は定数1で加えて置換されています。

唯一の最高次の項を保持修正後のランの数の関数で。

最高次の項が存在し、1でない場合は、このプロジェクトに定数を掛け外します。その結果、大きなO-ためです。

図3に示すように、特定の状況:

一定の順序:なし逐次実行サイクル

リニア順:サイクル、および関連する時間の複雑さのサイクルタイム
Iをint;

{(; I <N I ++ I = 0)するため

/ *時間計算量はO(1)プログラムステップのシーケンス* /

}
//ループn回、全体的な時間計算量はO(N)

注文の各カウントは近い距離n個の点で、2が乗算された後ため。換言すれば、数は、ループを終了し、2より大きい乗算N。得られた2 ^ X = N、X = LOGN。したがって、サイクルタイムの複雑さはO(LOGN)です。

int型のカウント= 1;

一方、(数<N){

カウント= 2 *数えます。

/ *時間計算量はO(1)プログラムステップのシーケンス* /

}

広場の順序:
外側のループが、この時間はO(n)文の内部の複雑さ、n回のリサイクルのために。したがって、このコードの時間複雑度はO(N ^ 2)です。アウターループMサイクルの数は、時間複雑になる場合はO(MXN)それは、我々は、サイクルタイムがサイクル動作の回数を乗じたループの複雑さの複雑さと同じであることが結論付けられました。

例1:
あなたのI、J。

{(; I <N I ++ I = 0)するため

  {(; J <N J ++ J = 0)のための

/ *時間計算量はO(1)プログラムステップのシーケンス* /

  }

} //独立した外部循環、内側と外側の時間計算量は乗算さ


実施例2:
INT I、J、

(I = 0、I <N - 、I ++)のために{

  ため(J = I; J <N-; J ++){/ *なお、J = iが0でない* /

  / *時間計算プログラムO(1)のための一連のステップである* /

  }

} //内側および外側円形の関係が一つずつ、派生関係などを追加する必要が大O導出、最終的な時間の複雑さ:

I = 0のとき以来、iは1 = n-1の時間は、...... iがn-1回実行されたとき=ときに実行された場合、ループは、n回実行されます。だから、実行の合計数は次のとおりです。

我々は最初に、無添加定数を無視しない、大規模な注文を導き出す方法によりO、保持(N ^ 2)このように、第二の、唯一の最高次の項を保持/ 2;第三、乗算することにより項目を削除1/2の定数、すなわち除去、時間複雑さの最終的なコードはO(N 2)です。

キュービック順:

INT I、Jは、

のために(I = 1; I <N-; I ++)

のための(J = 1; J <N-; J ++)

のための(J = 1; J <N-; J ++){

Oの/ *時間複雑さ( 1)プログラムステップのシーケンス* /

} //時間複雑度はO(N ^ 3です)

4、共通の時間複雑

共通テーブルの複雑さを尋ねられたとき:

小から大まで取られ、共通の時間計算時間は以下のとおりです。

5、最悪の場合、平均ケース

ワーストケースの時間を実行すると、実行時間が破られないことを保証するものです。特に指定がない限り、最も重要なニーズの一つであるアプリケーションでは、一般的に、我々が言及した実行時間が最悪の場合、実行時間です。

それは所望の動作時間であるため、平均実行時間は、すべての場合において最も重要です。

注:一般的なケースでは、特別な指示がない、最悪時間計算量を参照してください。


第二に、スペースの複雑さ

実装されたアルゴリズムの記憶空間によって必要とされる計算の空間の複雑さ、算出された空間複雑性アルゴリズムが示される:問題の、n型スケールは、Fであり、S(N)= O(F(N))、(N) n個の文の関数としてのストレージスペースを占有。

一般に、プログラムは、プログラム自体、定数、変数、入力データに格納された命令に加えて、マシン上で実行されるが、入力データが空間にのみ依存している場合にも、操作の記憶部に記憶されたデータを必要とされたときに問題自体によって占められ、アルゴリズム独立は、アルゴリズムの解析にのみ補助ユニットが必要とされるように実装されるとき。入力データの量の点で補助空間に対して実行される所望のアルゴリズムが一定であれば、このアルゴリズムは、作業場所と呼ばれる、空間複雑さはO(1)です。//すなわち補助空間アルゴリズムは、割り当てられたスペースが固定されていると判定されました。

第三に、計算規則の時間と空間の複雑

1、追加ルール

T(N、M)= T1(N)+ T2(M)= O(MAX {F(N)、G(M)})// 2時間添加複雑さ、および最大の方

2、乗算ルール

T(N、M)= T1(N)* T2(M)= O(MAX {F(N)* G(M)})//

3、経験

複雑さと効率的な時間の関係
!。C(定数)<logN個<N- <N-logN個* <^ N-2 N- <^ 3 <N-2 ^ <^ 3 N- <N-
L ---------- -------------------- L -------------------------- l-- ------------ Lは
、好ましくは、一般的に貧しいです


第四に、時間と空間の複雑さは、一般的に、アルゴリズムの複雑さを使用します

 

 

参考文章:https://www.cnblogs.com/silence-x/p/10544072.html

おすすめ

転載: www.cnblogs.com/yu-tang/p/12084618.html
おすすめ