1.4アルゴリズムの複雑さの解析
漸近解析アルゴリズム:ランダウの記号
定義されたアルゴリズムの複雑さは、fは、関数gを定義している、場合NアルゴリズムはN0に等しくなった後、問題のサイズよりも大きい、cは正の数を存在するようにF(N)<= CG(N)
前記セットOにおけるF(N)(G(n))は、Fと呼ばれる(N)= O(G(N))
ランダウの記号:(順序のない複数g以下、より複雑なアルゴリズム、(N))産業の成長率に関数式
- 増殖速度の関数の上限は、複数であること、そして典型的には最小の上限を見つけることを期待することができます
漸近解析アルゴリズム:大Ω表記
定義されたアルゴリズムの複雑さは、fは、関数gを定義している、場合NアルゴリズムはN0に等しくなった後、問題のサイズよりも大きい、cは正の数を存在するようにF(N)> = CG(N)
前記セット中のF(n)はΩ(G(N))、F(N)=Ωと呼ば(G(N))
大きなΩ表記:表現機能の成長率が下限
- 増殖速度の関数の下限値は1以下であり、典型的には最大の下限を見つけることを期待することができます
注:上限と下限は場合を議論N N小さい場合特殊なケースを無視するように十分な大きさであり、そして係数cの特定の値を気にしません
アルゴリズムメトリック、最上位の点で思いやりF(N)、低次多項式を無視することができます
漸近解析アルゴリズム:θ大きな表現
上限値及び下限値が等しい場合、使用可能な表記θ
定義:
セットO(G(N))の両方で機能が再びΩ(G(n))が設定されている場合θ(G(N))と呼ばれています
ほとんどの場合、大規模およびθは、大きなOとして表されます
ランダウの記号の単位時間:
- 単純な算術またはブールO(1)
シンプルなI / O:
入力出力機能例:配列操作からデータを読み込み、パラメータ渡し
ファイルには、キーボードなどの周辺I / Oが含まれていません。
関数の戻り
Oは、大規模なアルゴリズム方法を表します
追加ルール:F1(N)+ F2(N)= O(MAX(F1(N)、F2(N)))
シーケンシャル構造、構造ならば、構造を切り替えます...
乗算ルール:F1(N)F2(N)= O(F1(N) F2(N))
のために、一方で、一方、構造が行いますK値を見つけるために
最良の場合:配列の最初の要素は、(検索要素限り)Kであります
Oの複雑さ(1)
最悪の場合:K配列の最後の要素は、(n個の要素を検索)
アイソクロナス確率分布:1 / NのK発生確率
平均コスト:(1個の+ 2 + 3 + ... + N)/ N
等しくない確率:1/2の最初の要素の発生確率1/4秒、n番目の出現確率(1-1 / 2-1 / 4)/(N-2)= 1 / 4(N-2)
平均コスト:1/2 + 2/4 +(3 + 4 + ... + N)/ 4(N-2)= 1 +(N + 3)/ 5
範囲等しい確率は、アルゴリズムの平均コストはO(N)である場合、上記の
バイナリ検索パフォーマンス分析
ベストケース:O(1)
最悪:LOG2の最大長さ(N + 1)
取り出し数が順番にLOGNにドロップする必要があり、検索の平均コストは、O(LOGN)であります
時間/空間トレードオフ(また、空間的複雑性O、Ωおよびθ意味を用いて表されます)
時間コストを改善することがスペースのオーバーヘッドを増やします
保存スペースが、多くの場合、計算時間を増やす必要があります
多くの場合、アルゴリズムに優先して設計データ構造が、一目で多くの問題希望アルゴリズム