2011-07-14 23 views
2

これはおそらくビッグO表記についての初心者質問だと思います。たとえば、リスト全体を再帰的に分割して(O(n))、それをまとめて(O(n))配置するアルゴリズムがあります。これは、効率がO(n)+ O(n)であることを意味すると仮定します。これは2O(n)、O(2n)、またはO(n)に単純化されますか?私はこの表記について知っているから、それはO(2n)であり、漸近表記の規則を使用すると、O(n)の効率を与えて2を落とすことができます。ビッグOとビッグオメガについての質問

ただし、下限を見つけようとしていた場合でも、このルールは適用できますか? Ω(n)+Ω(n)=Ω(2n)ならば、まだ2を落とすことができますか?私はあなたが実際に下限を下げることになるからだと思います(n < 2n以降)。

答えて

2
が、これは(O(n)は、O(2N)、またはOに簡素化していN)?」

上記のすべてが、最初の二つは、過度に複雑である。O(n)は正規表記であろう。

2 *最大コストであるかのように、Nは、Nに比例しません十分に大きなN(O(2 * N))に対して2 * Nに比例する以上に、最大コストもまたN(O(N))が充分に大きい場合にはNに比例する。

ただし、下限を見つけようとしていたとしても、このルールは適用できますか?

ほとんど間違いなくはいです。

2 * NはNに比例するので、最小コストはN(Ω(2 * N))が十分に大きい場合に2 * Nに比例する以上であれば最小コストもNは十分大きなN(Ω(N))である。


例えば、実行には300 ms + 100 * N msかかるアルゴリズムがあります。その速度の下限はΘ(N)であり、従ってΩ(N)である。

アルゴリズムの実行に2倍の時間がかかる場合はどうなりますか?実行に600ms + 200 * Nmsかかっても、その速度の下限は依然としてΘ(N)であり、従ってΩ(N)である。


Θ(N)などを理解することが実現するために最も重要なことは、これらの表記がをスケーリングどれだけの何かを研究するために使用されていることです。その1つのアルゴリズムは、他のアルゴリズムがどれだけうまくスケーリングできるかについて何も言わないので、スピードの下限に対して同じΩ()を持つことは驚くべきではありません。

+0

@A D、追加された例。 – ikegami

0

これはしばらくお待ちしていますが、どちらの場合でも正しいと思います。

UPDATE

は、実際にはΩ(n)は+Ω(n)のようになります==Ω(n)は

+0

後者の場合、下限はΩ(2n)ですか? –

+0

いいえ、大きなオメガで定数を削除できるようです。参照:http://www.cs.odu.edu/~toida/nerzic/content/function/growth.html –

+0

したがって、Ω(n)+Ω(n)==Ω(n) –

1

通常はO(n)に簡略化されます。これは、問題解決に要する時間が問題のサイズに比例することを示しています。この場合、同じことを意味しますが、2O(n)を書く方が適切かもしれません。

0

Iビッグ-Oの定義に従うと信じ:

関数f(n)は、いくつかの定数c及びnの十分に大きな値に対して< = CG(N)である場合、それは言うことができますf(n)= O(g(n))。あなたの例では、g(n)= nです。

たとえば、f(n)が十分大きなnに対して< = cnになるcの値を選択することができれば、f(n)= O(n)と言うことができます。

Big Omegaも同様に定義されています。