big-O表記で係数を議論する方法


10

関数の係数をbig-O表記で説明するためにどの表記が使用されていますか?

私には2つの機能があります。

  • f(バツ)=7バツ2+4バツ+2
  • g(x)=3x2+5x+4

明らかに、どちらの関数もO(x2)、確かにΘ(x2)ですが、それ以上の比較はできません。係数7と3の説明方法を教えてください。係数を3に減らしても、漸近的な複雑さは変わりませんが、それでもランタイム/メモリの使用量に大きな違いがあります。

fがO (7 x 2)で、gがO (3 x 2)であると言うのは間違っていますか?係数を考慮に入れる他の表記法はありますか?またはこれを議論する最良の方法は何でしょうか?fO(7x2)gO(3x2)


であるため、それは間違いではなく、冗長です。O(7x2)=O(x2)

参照用の質問もご覧ください。
— ラファエル

回答:


9

Big- およびbig- Θ表記は、先行する項の係数を非表示にするため、両方がΘ (n 2)の 2つの関数がある場合、関数自体を確認せずにそれらの絶対値を比較することはできません。7 x 2 + 4 x + 2 = Θ (7 x 2)と言ってもそれ自体は間違っていませんが、7 x 2 + 4 x + 2 = Θ (3 x 2)であるため、有益ではありませんOΘΘ(n2)7x2+4x+2=Θ(7x2)7x2+4x+2=Θ(3x2)も真です(そして、実際には、任意の正の定数kに対してです)。Θ(kバツ2)k

代わりに使用したい他の表記法があります。たとえば、表記はbig- Θよりもはるかに強力な主張です。〜Θ

f(バツ)〜g(バツ)⟺リムバツ→∞f(バツ)g(バツ)=1

例えば、が、請求7バツ2+4バツ+2〜7バツ2偽であろう。ティルデ表記は、主要な係数を保持する Θ表記と考えることができます。これは、主要な成長項の主要な係数に注意する場合に探しているようです。7バツ2+4バツ+2〜3バツ2Θ


チルダ記法は私が探しているものです。私はそれが何と呼ばれていたか思い出せない何かがあったことを確信しており、検索は役に立たないことが判明しました。ありがとう!

6

チルダは1つのアプローチです。を使い続けたい場合は、O

およびf(バツ)=7バツ2+O(バツ)

。g(バツ)=3バツ2+O(バツ)


さらに良い:f(x)= 7x ^ 2 + o(x ^ 2)と言って、少しo表記を使用して、残っているものがx ^ 2より漸近的に小さいことを明確にします。
— templatetypedef

2
O(x)はo(x ^ 2)よりも厳密に小さいため、それを使用することはbig-Oを使用するよりも明確ではありません。一方、次の用語について心配する必要がないため、適切な最初の用語があると言いたい場合は、little-oを使用する方が間違いなく一般的です。(私たちは完全に明らかになりたいと思いいるのであれば、その後、我々はそれが正確に正しいですので、我々だけで、最初の場所で7倍^ 2 + 4X + 2を書き留めていない理由を説明する必要があります。

あなたは絶対に正しいです...私の謝罪!
— templatetypedef

f(バツ)=7バツ2+g(バツ)g(バツ)∈O(バツ)f(バツ)=7バツ2+4バツ+O(1)〜
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.