アルゴリズムの漸進的シンボリック解決

プログレッシブ記号(O、Ω、Θ)

プログレッシブシンボルをデザインする理由

プログラムを実行すると、メモリやディスクなどのコンピュータリソース(これらを空間と総称します)を消費するほか、判定やループなどのロジックを実行する必要があり、一定の時間がかかります。これら 2 つの次元を使用して、アルゴリズムの効率、つまり空間と時間を測定できます。プログレッシブシンボルの概念を抽象化して、複雑さがどの程度複雑であるかを定量化する方法

  • 漸近記号: Ο
    f(n) と g(n) が定義域 n が自然数の集合である関数であり、f(n) の次数が g(n) の次数以下であるとします。**(存在の問題)**2 つの定数 c と n0 があるため、すべての n>n0 に対して、0<=f(n)<=c×g(n) が存在し、その場合、g(n) も呼び出されます。 f(n) の漸近上限。私の個人的な理解では、計算規模が十分に大きい場合、f(n) 関数は関数 g(n) に近く、f(n) 関数のイメージは g(n) 関数のイメージより下にあり、存在c の g(n) 関数イメージを削除します。n の最高項の係数)

  • 漸近記号: Ω
    f(n) と g(n) が n 個の自然数の集合を定義域とする関数であり、f(n) の次数が g(n) の次数以上であり、定数 c が 2 つあるとします。したがって、すべての n>n0 は 0<=c×g(n)<=f(n) になります。これは、f(n) の漸近上限として g(n) とも呼ばれます。個人的な理解は、計算規模が十分に大きい場合、f(n) 関数は関数 g(n) に近く、f(n) 関数のイメージは常に g(n) 関数のイメージより上にあり、 c の存在も消去される g(n) の最高項の係数

  • 漸近表記: θ
    f(n) と g(n) を n 個の自然数の集合である関数とし、すべての n について f(n)==g(n) とし、g(n) を f と呼びます。 (n) の正確な境界


一般に、漸近シンボルはタイト境界 θ、上限 O、非タイト上限 o、下限 Ω、非タイト下限 ω の 5 種類が設計されます。上限と上限 簡単に理解すると、上限がタイトではない場合、g(n) の関数イメージは f(n) より大きくなければなりませんが、上限については、g(n) の関数イメージは次のようになります。 f(n) と比較すると一致します。

複雑さを決定する必要がある f(n) に直面した場合、最初に行うべきことは計算スケール、つまり n0 を決定することです。実際の運用では、時間と空間を考慮すると、問題のサイズが異なると問題も異なる可能性があるためです。さまざまな選択をするには、特定の問題の規模に応じて最適なアルゴリズムとデータ構造を見つける必要があります。定義によれば、各 f(n) について、次の例のように、Ω または O の条件を満たす非一意の g(n) を見つけることが実際に可能です。

n>10、f(n)=3×n+2 の場合、g(n)=4×n、または g(n)=n^2 がすべて f(n) 境界よりも優れていると結論付けるのは難しくありません。つまり、通常 f(n)=O(4×n) を取る場合、f(n)=O(4×n) は f(n)=O( n^ 2) ともなります。 ( n^2) では、問題の複雑さの分析が不正確で、両者の間の距離が大きすぎるため、ほとんど意味がありません。

おすすめ

転載: blog.csdn.net/qq_52696089/article/details/125297468