アルゴリズム解析を学んでいます。O、Ω、Θの違いがよくわかりません。
それらの定義方法は次のとおりです。
f(n) = O(g(n))c · g(n)は の上限を意味しf(n)ます。したがって、常に ≤で あるcような定数が存在します。f(n)c · g(n)nn ≥ n0n0f(n) = Ω(g(n))c · g(n)は の下限を意味しf(n)ます。したがって、すべての に対して常に ≥となる定数cが存在します。f(n)c · g(n)n ≥ n0f(n) = Θ(g(n))すべてのについて、 はc1 · g(n)の上限でf(n)あり、c2 · g(n)は の下限であることを意味します。 したがって、定数などが存在し、 およびが存在します。これは、 に対して適切でタイトな境界を提供することを意味します。f(n)n ≥ n0c1c2f(n) ≤ c1 ·g(n)f(n) ≥ c2 ·g(n)g(n)f(n)
私がこれを理解した方法は次のとおりです。
O(f(n))指定された関数/アルゴリズムの最悪の場合の複雑さを示します。Ω(f(n))与えられた関数/アルゴリズムの最良のケースの複雑さを示します。Θ(f(n))与えられた関数/アルゴリズムの平均的なケースの複雑さを示します。
間違っている場合は修正してください。その場合、各アルゴリズムの時間計算量は、3 つの表記法すべてで表現する必要があります。しかし、O、Ω、または Θ のいずれかで表されることがわかりました。なぜ3つすべてではないのですか?