O(n)の関数もo(n)の関数もすべてΘ(n)にありますか?


7

私の講義の1つは次のように述べています。

f=Ofof=Θ

たぶん私は、定義の中で何かが欠けているんだけど、例えばバブルソートは、とではないそれもありませんそれが最良の場合の実行時間ですので、。O2o2θ2Ω

ここで何が欠けていますか?

回答:


10

欠けているのは非常に重要な点です。通常、アルゴリズムは実数値の関数でさえないため、アルゴリズムは決してではありません。O

バブルソートがであると言うとき、私たちが意味するのは、バブルソートの最悪の実行時間を表す関数でです。O(n2)fO(n2)

この場合、この関数は確かに。最悪の場合、ランタイムは、関連する定数に対して、によって上下から制限されます。θ(n2)cn2c

より正確に言うと、アルゴリズム最悪のランタイムと呼ばれる関数は、 そして、最悪のケースのランタイムについて分析するのはこの関数です。A

fA(n)=maxx:|x|=n{runtime of A on input x}

もちろん、最良のケースのランタイムも分析できます。あなたが示唆しているように、バブルソートの最良の実行時間はではなく、です。θ(n2)θ(n


したがって、この表記法を適用する場合、常に最悪のケースまたは最良のケースに個別に適用しますか?具体的には、一般的にランタイムの制限について話しているのではなく、通常、最悪の場合のランタイムの制限について話しているのですか?
ロバートS.バーンズ

4
これらの表記を関数に適用します。最高、最悪、平均実行時間など、必要な機能にそれらを適用できます。多くの場合、最良の実行時間に関心があり、それを分析することもできます。「一般的に」実行時間の上限を指定する場合、上限は最悪の場合の実行時間であり、下限は最良の場合です。通常、学部課程では、最悪のケースのランタイム(場合によっては平均)にも関心があります。
Shaull

問題のステートメントが真実であれば、この答えは良いでしょう。
ラファエル

1
確かに。ただし、OPを混乱させたのは、OPが真実であるという事実ではなく、最悪/最良の場合の実行時間の問題であることは明らかです。
Shaull

14

彼らが間違っていると講師に伝えてください。関数取り この関数はが、ももありません。

f={ でも1 奇妙です
OoΘ

これは、より説得力のあるモノトーンの例です:

g=expexplnln

1
私はこれをランダウ漸近症のデフォルトの落とし穴と見なすようになり、望ましい関係をもたらす素晴らしい代替手段があったらいいのにと思っています。
ラファエル

対数指数関数(から構成される関数 expログ、フィールド演算と定数)は、 f=og順序(ハーディの「無限の順序」を参照)なので、これらの関数では、このような問題は発生しません。したがって、floor関数は対数指数ではありません。
Yuval Filmus 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.