ビッグオー記法は、定義域における関数のおおよその大きさを表す数学的記法です。ビッグオー記法は、ドイツの数学者パウル・バッハマン[ 1 ]とエドムント・ランダウ[ 2 ]によって考案され、後に他の人々によって拡張された記法のファミリーに属し、総称してバッハマン・ランダウ記法と呼ばれています。文字OはOrdnung、つまり近似次数を表します。
コンピュータサイエンスでは、ビッグオー記法は、アルゴリズムの実行時間や空間要件が入力とともにどのように増加するかによってアルゴリズムを分類するために使用されます。 [ 3 ]解析的整数論では、ビッグオー記法は、素数定理の剰余項のように、算術関数の増加の上限を表します。[ 4 ]微積分を含む数学解析 では、ビッグオー記法は、べき級数を打ち切るときの誤差の上限を表し、実数値または複素数値関数をより単純な関数で近似する品質を表します。
多くの場合、ビッグオー記法は、変数が大きくなるにつれて関数がどれだけ増加するかに応じて関数を特徴づけます。漸近的な増加率が同じ異なる関数でも、同じオー記法で表すことができます。文字オーが使われるのは、関数の増加率が関数の次数とも呼ばれるためです。ビッグオー記法による関数の記述は、関数の増加率の上限のみを示します。
ビッグオー記法には、記号を用いたいくつかの関連記法があります。、、、、、、、 そして成長率の他の種類の制約を説明するため。[ 5 ] [ 6 ] [ 7 ] [ 8 ]
バッハマンは1894年にこの記法を提案し、ランダウは1909年にそれを拡張した。それ以前の記法は、1870年にポール・デュ・ボワ=レイモンによって提案された。 [ 9 ]
させて推定対象関数は、定義域上で定義された実数値関数または複素数値関数のいずれかである。そして比較関数は、同じ集合上で定義された非負の実数値関数とする。定義域としてよく用いられるのは、有界または無界の実数区間、正の整数の集合、複素数の集合、実数と複素数の組などである。定義域を明示的に記述するか暗黙的に理解するかによって、以下のように記述する。
これは「大きいの「正の実数が存在する場合そのため
もし(つまり、gは決してゼロにならない)定義域全体にわたって同等の定義は、比率である。は有界である、すなわち正の実数が存在するとなることによってすべての人々のためにこれらはビッグのすべての用途を網羅していますコンピュータ科学や数学において、有限、無限、実数、複素数、一変数、多変数の領域における使用を含めて。ほとんどのアプリケーションでは、関数を選択します。議論の中に現れる定数因子と低次の項を省略し、できるだけ単純な形式にする。通常は指定されないため、暗黙の定数と呼ばれます。記法において重要なのは、有限の存在そのものであって、その具体的な値ではない。これにより、多くの解析的不等式の表現が簡略化される。
正の実数または正の整数で定義された関数については、より制限的でやや矛盾する定義が依然として一般的に使用されています[ 3 ] [ 10 ] 。特にコンピュータサイエンスでは。最終的に正となる関数に限定すると、表記法は
ある実数に対してドメインにおいてここで、表現これは限界を示すものではなく、十分に大きい場合に不等式が成り立つという考え方である。その表現しばしば省略される。[ 3 ]
同様に、実数の場合表記法
ある定数に対してインターバル中につまり、小さな近隣地域で さらに、表記法 手段より複雑な表現も可能です。
等号(=)が書かれているにもかかわらず、式は等式ではなく、不等式を指す。そして
1930年代、[ 6 ]ロシアの数論学者IMヴィノグラドフは記法を導入した。これは数論[ 4 ] [ 11 ] [ 12 ]やその他の数学の分野で、表記法。
同じ作品の中で両方の表記法が使われることもよくあります。
コンピュータサイエンス[ 3 ]では、ビッグを定義するのが一般的ですまた、一連の関数も定義します。正(または非負)関数指定された、解釈するすべての関数の集合を表すものとして満足するすると、同様に次のように書ける。「関数」と読みます次数が最大であるすべての関数の集合に含まれる。「
一般的な使用法ではこの表記法は、無限に広がる実数の範囲に適用されます。そして、非常に大きな値に対する関数の挙動を捉えるこのような状況では、「最も急速に」増加する項の寄与が、最終的には他の項を無関係なものにするでしょう。その結果、以下の簡略化ルールを適用できます。
例えば、そして、この関数を次のように簡略化したいとします。表記法、大規模な成長率を記述するこの関数は、次の3つの項の合計です。、、 そしてこれら3つの項のうち、成長率が最も高いのは、の関数としての指数が最も大きい項である。すなわちさあ、ここで第二のルールを適用してみましょう。はそして最初の要因はこの要素を省略すると、簡略化された形式になります。したがって、私たちは次のように言います。は「大きなO」です数学的には、次のように書くことができます。すべての人々のために正式な定義を用いてこの計算を確認することができる。そして上記の形式的な定義を適用すると、次の記述が得られます。それはその拡張に相当し、 適切な正の実数の選択そしてすべてのこれを証明するために、そして、すべての: それで 同じ論法によれば、 これは関数の精度が低い近似値です一方、声明は偽である、なぜならその用語は原因 制限がない。
関数が入力を伴うアルゴリズムに必要なステップ数を表します、次のような表現 暗黙のドメインが正の整数の集合である場合、アルゴリズムのオーダーは最大で時間計算量。
ビッグオー記法は、有限区間における数学関数の近似における誤差項を記述するためにも使用できます。最も重要な項は明示的に記述され、次に最も重要でない項が単一のビッグオー記法にまとめられます。たとえば、指数級数と、次の場合に有効なその2つの表現を考えてみましょう。小さいです: 真ん中 の表現(「「)は誤差の絶対値を意味します 最大で定数倍いつは小さい。これはテイラーの定理の使用例である。
与えられた関数の挙動は、有限領域と無限領域では大きく異なる場合がある。例えば、 その間
ここでは、2 つの変数の複雑な変数関数があります。一般に、任意の有界関数は。
最後の例は、異なる変数において有限領域と無限領域が混在している様子を示している。
これらの例すべてにおいて、境界は両方の変数で均一です。多変数式では、ある変数が他の変数よりも重要になる場合があり、暗黙の定数を次のように表現することができます。ビッグオー記号の添え字を使用する1つ以上の変数に依存します。記号。たとえば、次の式を考えてみましょう。
これは、各実数に対して一定のこれは、、したがってすべての、 この特定の記述は、一般二項定理から導かれる。
テイラー級数の理論でよく見られる別の例は、 ここで暗黙の定数は、領域のサイズに依存します。
下付き文字の表記規則は、このページ内の他のすべての表記にも適用されます。
もしそしてそれからならばそしてそれから。
kをゼロでない定数とする。するとつまり、、 それから
もしそしてそれから 。
関数が正の整数の 他の関数の有限和として書くことができ、最も速く成長するものが次数を決定する。 例えば、
無限大への成長に関するいくつかの一般的な規則。以下の2番目と3番目の性質は、ロピタルの定理を用いて厳密に証明できる。
のために、 それから として。
ポジティブなものなら何でも どんなに大きくてもはどれくらい小さいか ここで、暗黙の定数は両方に依存します。そして。
ポジティブなものなら何でも どんなに大きくてもはどれくらい小さいか は。
より速く成長する関数いかなる場合でもはスーパー多項式と呼ばれます。 の形のどの指数関数よりもゆっくりと増加する関数です。とこれは準指数関数的と呼ばれます。アルゴリズムによっては、超多項式的かつ準指数関数的な時間を必要とする場合があります。その例としては、整数因数分解の最速アルゴリズムや関数などがあります。。
私たちは、対数の内部。任意の正の値に対して表記法全く同じ意味です、 以来同様に、底が異なる定数の対数は、ビッグオー記法に関して同等です。一方、底が異なる指数関数は同じオーダーではありません。たとえば、そして同じ順序ではない。
より複雑な使い方では、は方程式のさまざまな場所に現れることがあり、両辺に複数回現れることもあります。たとえば、次の式は に当てはまります。正の整数: このような記述の意味は次のとおりです。各条件を満たす任意の関数について左側には、それぞれを満たす関数がいくつかあります。右辺に、これらの関数をすべて方程式に代入すると両辺が等しくなるようにする。たとえば、上記の3番目の方程式は、次のことを意味する。「任意の関数が何らかの機能がありますそのため「。この文に暗黙的に含まれる定数は「式中の暗黙の定数に依存する可能性がある」「。
その他の例:
いつ両方とも正の関数であり、Vinogradov [ 6 ]は表記法を導入した。これは、ヴィノグラドフの2つの表記法は、正の関数と同様に、視覚的に対称性を持っている。、 我々は持っています
1976年、ドナルド・クヌース[ 8 ] は次のように定義した。
これはヴィノグラドフのと同じ意味です。
しかし、それよりずっと以前に、ハーディとリトルウッド[ 7 ]は定義していた。異なる方法で、その記法は今日、解析的整数論で広く使用されている 。[ 13 ] [ 11 ] [ 12 ]-記号はより強い特性を表すために、[ 8 ]クヌースは次のように書いています。「私がこれまでコンピュータサイエンスで見てきたすべてのアプリケーションでは、より強い要件の方がはるかに適切です」。クヌースはさらに次のように書いています。「ハーディとリトルウッドの定義を変更しましたが、彼らの定義は決して広く使われているわけではないし、彼らの定義が適用される比較的まれなケースでは、彼らが言いたいことを別の言い方で表現できるから、そうするのは正当だと感じている。」[ 8 ]クヌースの大きなコンピュータサイエンスや組み合わせ論において、今日では広く利用されている。
解析的整数論では、[ 12 ]表記法両方を意味する そしてこの表記法は元々ハーディによるものです。[ 5 ]同じ概念に対するクヌースの表記法は次のとおりです。[ 8 ]大まかに言えば、これらの記述は次のように主張している。そして同じ順序を持つ。これらの表記は、正の定数が存在することを意味する。 となることによって すべての人々のために共通領域において 関数がビッグオー記法のように正の整数または正の実数で定義されている場合、著者はしばしばステートメントを解釈します。 そして十分に大きいすべての場合において成り立つつまり、すべてのある時点を超えて. 時には、これを付加することで示されます。その声明に対して。例えば、 ドメインについては真であるただし、定義域がすべての正の整数である場合は、関数がゼロになるため、偽となる。。
表記法
正の定数が存在することを意味する となることによってすべての人々のために対照的に、 正の定数が存在することを意味する となることによってすべての人々のためにそして 正の定数が存在することを意味する となることによってすべての人々のために。
あらゆるドメイン、 各声明はすべての人に向けられていますで。
アルゴリズムの実行時間を分析する際によく遭遇する関数のクラスを以下に示します。いずれの場合も、cは正の定数であり、nは無限に増加します。一般的に、増加率の低い関数が最初に記載されています。
声明時には弱体化して漸近的複雑性に関するより単純な公式を導出するため。これらの例の多くでは、実行時間は実際にはより正確な情報を伝える。
実変数の実数値関数または複素数値関数 と十分に大きいと書いてある [ 2 ]
もし つまり、すべての正の定数εに対して定数が存在する。そのため
直感的に言えば、これはよりはるかに速く成長するまたは同等によりずっとゆっくりと成長する 例えば、
関数の大きな値に対する挙動に興味がある場合、小文字の o 表記は、対応する大文字の O 表記よりも強い意味を持ちます。小文字の o で表されるすべての関数は、はビッグオーでもあるある間隔で、ただし、ビッグオーがは、。 例えば、しかしのために。
Little-o は、いくつかの算術演算を尊重します。たとえば、
また、推移律も満たしている。
リトルオーは有限の場合にも一般化できます: [ 2 ]もし 言い換えると、 一部の人にとってと。
この定義は、テイラー級数を用いた極限の計算において特に有用です。例えば:
、 それで
リトルオーに関連する関係として漸近記法 がある。実数値関数の場合表現 手段 これを小文字のoと結びつけるには、次の点を観察すればよい。 また、 。 ここゼロに近づく関数を指すこれは次のように読みます。漸近的に同じ(有限または無限)領域上の非ゼロ関数については、同値関係を形成する 。
記法を用いた最も有名な定理の1つ スターリングの公式は 数論において、有名な素数定理は次のように述べている。 どこは、最大で の素数の数です。そしては、の自然対数です 。。
リトルオーと同様に、有限の限界(両側または片側)を持つバージョンもあります。たとえば、
その他の例: 最後の漸近形は、 リーマンゼータ関数の基本的な性質です。
最終的に正となる実数値関数表記法 手段 言い換えると、大まかに言えば、これは よりはるかに速く成長する。
1914年、GHハーディとJEリトルウッドは新しいシンボルを導入した。[ 7 ]これは次のように定義されます。
したがっては否定である
1916年に同じ著者らが2つの新しい記号を導入したそして定義: [ 15 ]
これらの記号は、1924年にE.ランダウによって同じ意味で使用されました。[ 16 ]しかし、ランダウに続く著者たちは、同じ定義に対して異なる表記法を使用しています。[ 11 ]記号現在の表記法に置き換えられました同じ定義で、になった
これら3つのシンボル同様に(つまり、そして(両方とも満たされている)は現在解析的整数論で使用されている。[ 11 ] [ 12 ]
我々は持っています
さらに正確には
どこ左側は両方ともそして、
我々は持っています
さらに正確には
しかし
正式な定義を理解するには、 数学で使用される論理記号の一覧を参照してください。
極限の定義はのために 極限の近傍で、極限がつまり、十分に大きい。
コンピュータ科学と組み合わせ論はビッグデータを使用する大きなシータ、 少し小さなオメガそしてクヌースの大きなオメガ表記法。 [ 3 ] 解析的整数論では、しばしば大きな、 小さいハーディーズハーディ・リトルウッドのビッグオメガ(添え字+、−、±の有無にかかわらず)ヴィノグラドフのそして表記法と表記法。 [ 11 ] [ 4 ] [ 12 ] 小さなオメガ解析学や数論では、この記法はあまり使われない。 [ 19 ]
非公式には、特にコンピュータサイエンスでは、ビッグ表記法は、大きな Theta を使用する漸近的なタイトな境界を記述するために、しばしば少し異なる方法で使用されることがあります。特定の文脈では、表記法の方が事実上適切である可能性がある。[ 20 ] 例えば、関数を考える場合一般的には、以下のすべてが許容されますが、より厳しい境界(以下の番号 2、3、4 など)は、より緩い境界(以下の番号 1 など)よりも強く推奨されます。
3つの記述はすべて正しいが、それぞれに含まれる情報量は段階的に増えていく。ただし、分野によっては、ビッグオー記法(上記のリストの2番目)がビッグシータ記法(上記のリストの3番目)よりも一般的に使用される。例えば、入力サイズに対する新開発アルゴリズムの実行時間を表すそのため、アルゴリズムの発明者や使用者は、実行にかかる時間の上限を設定することに、下限や漸近的な挙動について明示的な記述をしない傾向があるかもしれない。
コンピュータサイエンスで時々使われる別の表記法は(ソフトOと読みます)は、多対数因子を隠蔽します。使用されている定義は2つあります。一部の著者は略語として一部の人にとって他の人はそれを略語として使うが [ 21 ] いつは多項式である違いはないが、後者の定義では、例えば次のように言うことができる。前者の定義では任意の定数に対して。一部の著者は、後者の定義と同じ目的でO *と表記します。 [ 22 ]本質的には、これはビッグO表記の精度が低いバージョンであり、関数の成長率における対数因子を無視しています。 任意の定数に対してそしてどんな 対数因子は、べき乗よりもはるかに重要ではない。そして指数関数に比べればさらに取るに足らない。
また、L表記は次のように定義されます。
任意のノルムベクトル空間の値をとる関数への一般化は簡単である(絶対値をノルムに置き換える)。そしてそれらの値は同じ空間にある必要はない。関数への一般化任意の位相群の値を取ることも可能です。「極限プロセス」任意のフィルタ基底を導入することによって、すなわち有向ネットに一般化することもできる。そして.この表記法は、かなり一般的な空間における導関数と微分可能性、および関数の(漸近的な)等価性を定義するために使用できます。
これは同値関係であり、関係よりも制限的な概念である。は上から。(それはもしそして(正の実数値関数です。)例えば、そうですが、 。
1870年、ポール・デュ・ボワ=レイモンド[ 9 ] は次のように定義した。、そして それぞれ、 これらは広く採用されず、現在では使用されていません。1番目と3番目は対称です。意味は同じですランダウは後に採用したより狭い定義では、1に等しい。
記号 O は、1894 年に数論学者のパウル・バッハマンが著書『解析的数論』の第 2 巻で初めて導入しました。[ 1 ]数論学者のエドムント・ランダウはこれを採用し、1909 年に記号 o を導入するきっかけとなりました。[ 2 ]そのため、現在では両方ともランダウ記号と呼ばれています。これらの記号は 、1950 年代に漸近解析などの応用数学で使用されました。[ 23 ](「is not little o of」という意味で)は、1914年にハーディとリトルウッドによって導入された。[ 7 ]ハーディとリトルウッドは1916年に左と右も導入した。シンボル、(現在では一般的に) [ 15 ]これ記法は1950年代から数論で一般的に使われてきた。[ 13 ]
ハーディはシンボルを導入したそしてボワ=レイモンの(既に述べた他の記号と同様に)1910年の論文「無限の秩序」[ 5 ]で使用したが、1910年から1913年までの3つの論文でのみ使用した。残りの約400の論文と書籍では、一貫してランダウの記号Oとoを使用した。[ 24 ] ハーディの記号そしてそれらはもう使われていません。
シンボル以前は異なる意味で使われていたものの、[ 9 ] 1909年にランダウ[ 2 ]、1910年にハーディ[ 5 ]によって現代的な定義が与えられた。同じページでハーディは記号を定義した。、 どこ両方ともそして満足している。この表記法は解析的整数論で今でも使われている。[ 25 ] [ 12 ] ハーディもこの記号を提案した。、 どこつまりある定数に対して(これはボワ=レイモンの記法に対応する))
1930年代に、ヴィノグラドフ[ 6 ]は記法を普及させた。 そしてどちらも この表記法は解析的整数論において標準となった。[ 4 ]
1970年代、ドナルド・クヌースによってコンピュータ科学でビッグオー記法が普及し、彼は異なる記法を提案した。ハーディーズのためにハーディとリトルウッドのオメガ表記法について、別の定義を提案した。[ 8 ]
数学では、次のような表現限界が存在することを示します。ビッグオー記法および関連する記法では , there is no implied limit, in contrast with little-o, and notations. Notation such as can be considered an abuse of notation.
Some consider to also be an abuse of notation, since the use of the equals sign could be misleading as it suggests a symmetry that this statement does not have. As de Bruijn says, is true but is not.[26]Knuth describes such statements as "one-way equalities", since if the sides could be reversed, "we could deduce ridiculous things like from the identities and .[27] In another letter, Knuth also pointed out that[28]
the equality sign is not symmetric with respect to such notations [as, in this notation,] mathematicians customarily use the '=' sign as they use the word 'is' in English: Aristotle is a man, but a man isn't necessarily Aristotle.
For these reasons, some advocate for using set notation and write , read as "is an element of", or " is in the set " – thinking of as the class of all functions such that .[27] However, the use of the equals sign is customary.[26][27] and is more convenient in more complex expressions of the form
The Vinogradov notations and , which are widely used in number theory [11][4][12] do not suffer from this defect, as they more clearly indicate that big-O indicates an inequality rather than an equality. They also enjoy a symmetry that big-O notation lacks: means the same as . In combinatorics and computer science, these notations are rarely seen.[3]
Big O is typeset as an italicized uppercase "O", as in the following example: .[29][30] In TeX, it is produced by simply typing 'O' inside math mode. Unlike Greek-named Bachmann–Landau notations, it needs no special symbol. However, some authors use the calligraphic variant instead.[31][32]
大文字の O は元々「順序」(「Ordnung」、バッハマン 1894)の略で、ラテン文字です。バッハマンもランダウも、これを「オミクロン」とは呼んでいません。この記号は、ずっと後になって(1976 年)、クヌートによって大文字のオミクロンと見なされました[ 8 ]。これはおそらく、彼が定義した記号Omegaに関連していると思われます。数字のゼロは使用すべきではありません。
{{cite book}}: ISBN / 日付の不一致 (ヘルプ)。{{cite book}}ISBN /日付の不一致(ヘルプ)