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