アルゴリズムの複雑

(1)理論的には時間のかかるアルゴリズムの実行時間の周波数は、アウトカウントすることができない、マシンが知っているテストを実行している必要があります。しかし、我々はできませんし、テストマシン上のすべてのアルゴリズムのために必要ではない、ただそれは、アルゴリズムがそれにかかる時間を短縮するアルゴリズム、時間以上かかることを知っています。そして、アルゴリズム実行アルゴリズムの数と一緒に過ごした時間は、アルゴリズムがより頻繁に、それは時間とより多くを要し、文が実行されたステートメントに比例しています。実行アルゴリズム文の数は、ステートメントの周波数または時間周波数と呼ばれます。T(N)と呼びます。

Nを変更する場合(2)の時間計算量だけ述べ周波数の時、nは問題の規模と呼ばれ、時間T(N)の周波数が変化し続けます。しかし、時には我々はそれが法律の変更をレンダリング何時間かを知りたいです。この目的のために、我々は時間の複雑さの概念を導入します。一般的に、基本的な算術演算の数は、場合nが無限大に近づくようにT(n)を表し、補助関数F(N)であれば、T(で、問題のサイズnの機能を繰り返し実行されますN)/ F(n)が一定のゼロ限界と呼ばれるF(n)がTに等しくない(N)と同じ次数の関数です。T(N)= O(F(N))で表される、O(F(N))は、前記アルゴリズムの進行時間複雑であり、時間の複雑性と呼びます。

(3)時間計算最悪時の複雑さと、最悪の場合の複雑下平均時間は、最悪時の複雑さは言いました。一般的には指定されていない、時間計算量は最悪の場合の時間複雑性を議論しています。この理由は次のとおりです。最悪の場合には、時間の複雑なアルゴリズムの実行中の時間が、もはやそれ以上ではありません保証する、時間の任意の入力インスタンス上で実行されているアルゴリズムの上限です。
       Tの最悪の場合の時間複雑度(N)内の任意の入力、例えば、アルゴリズムの実行時間(n)が0よりも大きくされていないことを意味し、= 0(N)。複雑さ等、すべての可能な入力の場合を意味する平均時間は、アルゴリズムの実行時間を予想確率の一例です。
(4)時間計算量を求めるための方法を
  • 第1の演算の基本的な操作を見つけます
  • 各実行のそれに対応する数を決定する文、及び同程度の大きさT(n)を見つけます。
  • O(N)の時間だけ複雑にしながら、二重O(N ^ 2)と比較して、いくつかの重ループを参照など、そのような高速半電源としてO(LOGN)と比較して、2つの点が、存在する場合、ループの半分を設定した場合、バイナリサーチは、次いで、時間複雑性O(nlogn)でした。

(5)例:

  • O(1)

 

コードをコピー
/ *このプログラムは、1100回ループの実行の合計を少し怖い見えますが、私たちにはnは見られませんか?
いいえ。このプログラムを実行し、nは無関係です、
それは万年をリサイクルした場合でも、我々は関係なく、単に定数次関数* /です
X = 91。
Y = 100。
一方、(Y> 0) 
    IF(X> 100){
        X = X-10。
        and--;
    }他 
        X ++;          

//またはこの例の下に、時間の複雑さが一定の順序である:アルゴリズムの実行時間をnと成長の大型化の問題ではありません場合は、ステートメントのアルゴリズムの実行時間の何千があっても、大きな定数以外の何ものでもありません。このようなアルゴリズムの時間計算量はO(1)です。
 I = TEMP;
I = J;
J = TEMP。    
コードをコピー
  • O(N 2
合計= 0;                 
用(i = 1; iが<= N; iは++)       
   (; J <= N; J ++ J = 1)のために   
       合計++; //実行ステップ数は、基本的な操作に属し:N2回 
  • O(n)
コードをコピー
= 0;  
B = 1。                      
用(i = 1; iが<= N; iは++){    
     S = A + B; //実行ステップの数は、基本的な操作に属する:N
     B =; //実行ステップの数は、基本的な動作に属する:N
     =秒; //実行ステップ数が、基本的な操作に属している:N  
 }  
コードをコピー
  • O(ログ2 Nを
しながら、式(I = N <)  
    私は=私は2 *; //実行ステップ数は、基本的な操作に属します。
  • O(N 3) 
用(i = 0; iがn <; iは++){    
      用(J = 0; J <I、J ++){  
         以下のために(; K <J、K = 0 ++ K)  
            X = X + 2; //実行ステップ数は、基本的な操作に属し:N3
}} 

 

参考ます。http://blog.csdn.net/lovewaterman/article/details/37974745

参考ます。http://blog.csdn.net/booirror/article/details/7707551/

参考ます。http://blog.csdn.net/xiaoxiaopengbo/article/details/51583386

参考ます。http://www.cnblogs.com/xiaxianfei/p/5385081.html

 

おすすめ

転載: www.cnblogs.com/cmybky/p/11773366.html