
ビッグオー表記法は、引数が特定の値または無限大に向かう関数の極限動作を記述する数学表記法である。ビッグオーは、ドイツの数学者ポール・バッハマン[1]、エドモンド・ランダウ[2]らによって発明された表記法ファミリーの一員であり、総称してバッハマン・ランダウ表記法または漸近表記法と呼ばれる。文字Oは、近似の順序を意味するOrdnungを表すためにバッハマンによって選ばれた。
コンピュータサイエンスでは、ビッグオー表記法は、入力サイズの増加に応じて実行時間やメモリ要件がどのように増加するかに基づいてアルゴリズムを分類するために使用されます。 [3]解析的整数論 では、ビッグオー表記法は算術関数とよりよく理解されている近似値との差の境界を表現するためによく使用されます。そのような差の有名な例としては、素数定理の剰余項があります。ビッグオー表記法は、他の多くの分野でも同様の推定値を提供するために使用されています。
ビッグ O 表記法は、関数をその成長率に応じて特徴付けます。つまり、同じ漸近的成長率を持つ異なる関数は、同じ O 表記法を使用して表すことができます。文字 O が使用されるのは、関数の成長率が関数の次数とも呼ばれるためです。ビッグ O 表記法による関数の記述は、通常、関数の成長率の 上限のみを提供します。
ビッグO表記法に関連して、 o、Ω、ω、Θなどの記号を使用して漸近的成長率の他の種類の境界を記述するいくつかの関連表記法があります。[3]
正式な定義
推定する関数を実数値または複素数値関数とし、比較関数を実数値関数とします。両方の関数が、正の実数の無制限なサブセット上で定義され、の十分に大きいすべての値に対して非ゼロ(多くの場合、厳密に正であるが、必ずしもそうではない)であるとします。 [4]と書き 、これは「は の大 O である」、またはより一般的には「は のオーダーである」 と読み、の絶対値が、 の十分に大きいすべての値に対しての絶対値の正の定数倍以下である場合に、つまり 、 となる正の実数および実数が存在する場合です。 多くの文脈では、変数が無限大またはゼロになるときの成長率に関心があるという仮定は明言されず、より単純に と書きます 。 表記法は、ある実数(多くの場合) の付近での の挙動を記述するためにも使用できます。で定義されるすべての に対して となる正の数およびが存在する場合、 と言い、 が 十分に大きい (または小さい) の値に対して が非ゼロである 場合に、 これら の定義は両方とも、の優れた極限を使用して統一できます。 つまり、 のあらゆる近傍には、無限に多くの共通点が存在することになります。さらに、 の下限と上限に関する記事で指摘したように、 は(少なくとも拡張された実数直線上では) 常に存在します。
コンピュータサイエンスでは、もう少し制限された定義が一般的です。との両方が、正の整数の無限集合から非負の実数への関数であることが要求されます。そして、すべての[5]に対して
例
通常の使用法では、O表記は漸近的であり、つまり非常に大きなxを指します。この設定では、「最も急速に」増加する項の寄与により、最終的には他の項が無関係になります。結果として、次の簡略化ルールを適用できます。
- f ( x )が複数の項の合計である場合、成長率が最も大きい項があればそれを保持し、他の項はすべて省略することができます。
- f ( x )が複数の因数の積である場合、定数 ( xに依存しない積の因数) は省略できます。
たとえば、f ( x ) = 6 x 4 − 2 x 3 + 5とし、 x が無限大に近づくにつれて増加率を表すために、 O表記法を使用してこの関数を簡略化するとします。 この関数は、 6 x 4、−2 x 3、および5の 3 つの項の合計です。 これら 3 つの項のうち、増加率が最も高いのは、 xの関数として最大の指数を持つ項、つまり6 x 4です。 ここで、2 番目の規則を適用できます。6 x 4 は、最初の因数がxに依存しない6とx 4の積です。 この因数を省略すると、簡略化された形式x 4になります。 したがって、 f ( x ) はx 4の「大きな O」であると言えます。 数学的には、 f ( x ) = O ( x 4 )と書くことができます。この計算は、正式な定義を使って確認することができます。f ( x ) = 6 x 4 − 2 x 3 + 5、g ( x ) = x 4とします。上記の正式な定義を適用すると、 f ( x ) = O ( x 4 )というステートメントは、 実数x 0と正の実数Mの適切な選択とすべてのx > x 0に対して、その展開と同等です 。これを証明するには、x 0 = 1、M = 13とします。すると、すべてのx > x 0に対して、 次のように なります。
使用
Big O 表記法には、主に 2 つの適用領域があります。
- 数学では、特に切断されたテイラー級数や漸近展開の場合に、有限級数が与えられた関数にどれだけ近似するかを説明するためによく使用されます。
- コンピュータサイエンスでは、アルゴリズムの分析に役立ちます。[3]
どちらのアプリケーションでも、 O (·)内に現れる関数g ( x )は、通常、定数因子と低次の項を省略して、可能な限り単純になるように選択されます。
この表記法には、形式的には近いが、著しく異なる 2 つの用法がある: [引用が必要]
ただし、この区別は適用上のものであり、原則上のものではありません。「big O」の正式な定義はどちらの場合も同じで、関数の引数の制限が異なるだけです。[独自の研究? ]
無限漸近

Big O 表記法は、アルゴリズムの効率性を分析するときに便利です。たとえば、サイズnの問題を完了するのにかかる時間 (またはステップ数) は、 T ( n ) = 4 n 2 − 2 n + 2であることがわかります。nが大きくなるにつれて、n 2 項が支配的になり、他のすべての項を無視できるようになります。たとえば、 n = 500の場合、項4 n 2は項2 nの 1000 倍の大きさになります。後者を無視しても、ほとんどの目的では式の値にほとんど影響はありません。さらに、項n 3またはn 4を含む式など、他の順序の式と比較する場合、係数は無関係になります。 T ( n ) = 1,000,000 n 2であっても、U ( n ) = n 3であれば、 n が1,000,000よりも大きくなると、後者は常に前者を超えます。T (1,000,000) = 1,000,000 3 = U (1,000,000)。さらに、ステップ数はアルゴリズムが実行されるマシンモデルの詳細に依存しますが、異なるタイプのマシンでは、通常、アルゴリズムを実行するために必要なステップ数は一定の係数だけ異なります。したがって、ビッグO表記法は残りの部分を表現します。
または
そして、アルゴリズムの時間計算量はn 2のオーダーであると言う。記号「=」は、通常の数学的な意味で「等しい」を表すのではなく、より口語的な「である」を表すため、2番目の表現の方が正確であると考えられることがある(以下の「等号」の説明を参照)。一方、1番目は表記法の乱用であると考える人もいる。[6]
無限小漸近
Big O は、数学関数の近似値における誤差項を記述するためにも使用できます。最も重要な項は明示的に記述され、最も重要でない項は 1 つの Big O 項にまとめられます。たとえば、 xが小さい 場合に有効な指数級数とその 2 つの式を考えてみましょう。
真ん中の式( O ( x 3 )のもの)は、 xが 0 に十分近い場合、誤差e x − (1 + x + x 2 /2) の絶対値が最大で定数倍 | x 3 |になることを意味します。
プロパティ
関数f が他の関数の有限和として表せる場合、最も速く増加する関数がf ( n )の次数を決定します。たとえば、
特に、関数がnの多項式で制限される場合、n が無限大に近づくにつれて、多項式の低次の項を無視することができます。集合O ( n c )とO ( c n )は非常に異なります。c が 1 より大きい場合、後者は非常に速く増加します。任意のcに対してn cよりも速く増加する関数は、超多項式 と呼ばれます。形式c nのどの指数関数よりも遅く増加する関数は、準指数と呼ばれます。アルゴリズムは、超多項式かつ準指数的な時間を必要とする場合があります。この例としては、整数因数分解の最も高速な既知のアルゴリズムや関数n log n などがあります。
対数内のnの累乗は無視できます。集合O (log n ) はO (log( n c ))とまったく同じです。対数は定数係数だけ異なるため ( log( n c ) = c log nであるため)、大きな O 表記ではそれが無視されます。同様に、異なる定数底を持つ対数は同等です。一方、異なる底を持つ指数は同じ順序ではありません。たとえば、2 nと3 n は同じ順序ではありません。
単位を変更すると、結果として得られるアルゴリズムの順序に影響する場合と、影響しない場合があります。単位を変更することは、適切な変数に、出現するすべての定数を掛けることと同じです。たとえば、アルゴリズムがn 2の順序で実行される場合、n をcnに置き換えることは、アルゴリズムがc 2 n 2の順序で実行されることを意味し、大文字の O 表記では定数c 2 は無視されます。これは、 c 2 n 2 = O( n 2 )と記述できます。ただし、アルゴリズムが2 nの順序で実行される場合、n をcnに置き換えると、 2 cn = (2 c ) nになります。これは、一般に2 nと同じではありません。変数を変更すると、結果として得られるアルゴリズムの順序にも影響する場合があります。たとえば、入力数xの桁数nで測定されたアルゴリズムの実行時間がO ( n )である場合、入力数x自体の関数として測定された実行時間はO (log x )です。これは、n = O (log x )であるためです。
製品
和
であれば、となります。したがって、であれば、 となります。言い換えると、この 2 番目のステートメントは、が凸錐であることを示しています。
定数による乗算
kを非ゼロの定数とします。すると となります。言い換えれば、 であれば、
複数の変数
大きなO(および小さなo、Ωなど)は、複数の変数にも使用できます。複数の変数に対する大きなOを正式に定義するには、とが のサブセット上で定義された2つの関数であるとします。
定数 と が存在し、すべての に対してであり、いくつかのに対してであるとき、かつその場合に限る[7]同様に、いくつかの に対して で ある条件はと書くことができ、ここで はチェビシェフノルムを表す。例えば、
定数CとMが存在し、
またはのいずれかが成り立つときはいつでも。この定義により、 のすべての座標が無限大まで増加することが許される。特に、次の文は
(すなわち、)は、
(すなわち、)。
この定義では、関数が定義されているサブセットは、一変量設定から多変量設定にステートメントを一般化するときに重要です。たとえば、およびの場合、およびを に制限すると、になりますが、 上で定義されている場合はそうではありません。
これはビッグOを多変数関数に一般化した唯一の例ではなく、実際には定義の選択に矛盾がある。[8]
表記に関する事項
等号
上で定義した「 f ( x ) はO [ g ( x ) ] である」という文は、通常f ( x ) = O [ g ( x ) ] と表記されます。これは表記法の乱用であると考える人もいます。等号の使用は、この文にはない対称性を示唆するため誤解を招く可能性があるからです。de Bruijn が言うように、O [ x ] = O [ x 2 ] は真ですが、O [ x 2 ] = O [ x ] は真ではありません。[9] Knuth は、このような文を「一方向の等式」と表現しています。なぜなら、もし両側を逆にできるなら、「n = O [ n 2 ] とn 2 = O [ n 2 ] という恒等式からn = n 2のようなばかげたことを推論できる」からです。[10] Knuth は別の手紙でも、
- 「等号はそのような表記法に関して対称的ではない」[この表記法では]「数学者は英語で「is」という単語を使用するのと同じように「=」記号を慣例的に使用する。アリストテレスは人間であるが、人間は必ずしもアリストテレスではない」[11]
これらの理由から、 O [ g ( x ) ] を、ある正の実数 C に対して| h ( x ) | ≤ C | g ( x ) | となるすべての関数 h ( x )のクラスと 考え、集合記法を使用してf ( x ) ∈ O [ g ( x ) ] (「 f ( x ) は O [ g ( x ) ] の要素である」または「f ( x ) は集合O [ g ( x ) ]に含まれる」と読む )と書く方が正確である。[ 10 ]ただし、等号 の使用は慣例となっている。[ 9] [ 10]
その他の算術演算子
ビッグオー記法は、より複雑な方程式で他の算術演算子と組み合わせて使用することもできます。たとえば、h ( x ) + O ( f ( x )) は、 h ( x )の増加と、増加がf ( x )に制限される部分を持つ関数の集合を表します。したがって、
同じことを表す
例
n個の要素のセットを操作するアルゴリズムが開発されているとします。開発者は、入力セットの要素数に基づいて、アルゴリズムの実行にかかる時間 (任意の時間測定単位) を表す関数T ( n ) を見つけたいと考えています。アルゴリズムは、最初にサブルーチンを呼び出してセット内の要素をソートし、次に独自の操作を実行することで機能します。ソートには既知の時間計算量O ( n 2 ) があり、サブルーチンの実行後、アルゴリズムは終了するまでにさらに55 n 3 + 2 n + 10ステップを実行する必要があります。したがって、アルゴリズムの全体的な時間計算量は、 T ( n ) = 55 n 3 + O ( n 2 )と表すことができます。ここで、 2 n + 10という項は、より速く増加するO ( n 2 ) に含まれます。この場合も、この使用法では "=" 記号の正式な意味の一部が無視されますが、大きな O 表記を一種の便利なプレースホルダーとして使用できるようになります。
多用途
より複雑な用法では、O (·) は方程式の異なる場所に現れ、各辺に複数回現れることもあります。たとえば、次が について当てはまります。 このようなステートメントの意味は次のとおりです。左辺の各O (·)を満たす任意の関数に対して、右辺の各O (·) を満たすいくつかの関数が存在し、これらすべての関数を方程式に代入すると、両辺が等しくなります。たとえば、上記の 3 番目の方程式は、「任意の関数f ( n ) = O (1) に対して、 n f ( n ) = g ( n )となる関数g ( n ) = O ( e n )が存在する」ことを意味します。上記の「集合表記法」では、左辺で表される関数のクラスが右辺で表される関数のクラスのサブセットであることを意味します。この用法では、「=」は正式な記号であり、通常の「=」の使用とは異なり、対称関係ではありません。したがって、例えばn O (1) = O ( e n )は、誤った命題O ( e n ) = n O (1)を意味しません。
組版
ビッグオーは、次の例のように、斜体大文字の「O」としてタイプセットされます。[12] [13] TeX では、数式モードでOと入力するだけで生成されます。ギリシャ語でバッハマン・ランダウ記法と呼ばれる表記法とは異なり、特別な記号は必要ありません。ただし、一部の著者は代わりにカリグラフィの変種を使用しています。[14] [15]
一般的な関数の順序
以下は、アルゴリズムの実行時間を分析するときによく遭遇する関数のクラスのリストです。いずれの場合も、c は正の定数で、n は無制限に増加します。一般的に、増加が遅い関数が最初にリストされます。
このステートメントは、漸近的複雑さのより単純な式を導くために、 に弱められることがあります。任意の および に対して、は任意の に対してのサブセットであるため、はより大きな次数を持つ多項式と見なすことができます。
関連する漸近記法
Big Oはコンピュータサイエンスで広く使用されています。他の関連する表記法とともに、バッハマン-ランダウ表記法のファミリーを形成します。[引用が必要]
小文字のo表記
直感的には、「 f ( x )はo ( g ( x ))である」という主張(「f ( x )はg ( x )の o より小さい」または「f ( x )はg ( x )より劣る」と読む)は、g ( x ) がf ( x )よりはるかに速く増加する、または同等に、f ( x ) がg ( x )よりはるかに遅く増加することを意味します。前と同様に、f を実数値または複素数値関数、g を実数値関数とし、両方とも正の実数の無制限のサブセット上で定義され、 xの十分に大きい値すべてに対してg ( x ) が厳密に正であるとします。次のように書きます。
あらゆる正 の定数εに対して、
- [16]
例えば、
- そして 両方とも
ビッグオー記法の定義とリトルオー記法の定義の違いは、前者は少なくとも1つの定数Mに対して成り立つ必要があるのに対し、後者はどんなに小さくてもすべての正の定数εに対して成り立つ必要があることです。 [17]このように、リトルオー記法は対応するビッグオー記法よりも強い主張をします。つまり、 gのリトルオーであるすべての関数はgのビッグオーでもありますが、 gのビッグオーであるすべての関数がgのリトルオーであるとは限りません。たとえば、しかし。
g ( x ) がゼロでない場合、または少なくともある点を超えるとゼロでなくなる場合、関係式は次の式と等しくなります。
- (実際、これはLandau [16]が元々little-o表記を定義した方法です)。
Little-o はいくつかの算術演算を尊重します。たとえば、
- cが非ゼロの定数であり、かつ
- もし、そして
これは推移関係も満たします:
- もし、そして
大きなオメガ表記
もう一つの漸近的記法は であり、「ビッグオメガ」と読む。[18]この命題には2つの広く普及した、矛盾する定義がある。
- として、
ここで、aは実数、、または であり、fとg はaの近傍で定義された実関数であり、g はこの近傍で正です。
ハーディ・リトルウッドの定義は主に解析的数論で使用され、クヌースの定義は主に計算複雑性理論で使用されますが、これらの定義は同等ではありません。
ハーディ・リトルウッドの定義
1914年にGHハーディとJEリトルウッドは次のように定義される新しい記号[19]を導入しました。
- まるで
つまり、
1916年に同じ著者らは2つの新しい記号を導入し、次のように定義した。[20]
- まるで
- まるで
これらの記号は、1924年にE. Landauによって同じ意味で使用されました。 [21] Landauに続く著者は、同じ定義に対して異なる表記法を使用しています。[要出典]この記号は、同じ定義を持つ現在の表記法に置き換えられ、
これら3つの記号と(とが両方とも満たされることを意味する)は、現在では解析的整数論で使用されている。[22] [23]
簡単な例
我々は持っています
- として
そしてより正確には
- として
我々は持っています
- として
そしてより正確には
- として
しかし
- として
クヌースの定義
1976年にドナルド・クヌースは、より強い特性を表すために - 記号を使用することを正当化する論文を発表しました。 [24]クヌースは次のように書いています。「私がこれまでコンピュータサイエンスで見てきたすべてのアプリケーションでは、より強い要件の方がはるかに適切です」。彼は次のように定義しました。
コメント:「私はハーディとリトルウッドの の定義を変更しましたが、彼らの定義が広く使用されているわけではなく、彼らの定義が適用される比較的まれなケースでは、彼らが言いたいことを他の方法で表現できるため、変更することは正当だと感じています。」[24]
バッハマン・ランダウ記法の族
極限定義では、十分に大きい に対して を仮定しています。表は、関数 上の(のクヌース版) が実数直線上のに対応するという意味で、(部分的に) 最小から最大の順に並べられています[27] (ただし、 のハーディ–リトルウッド版は、そのような記述のいずれにも対応していません)。
コンピュータサイエンスでは、大、大シータ、小、小オメガ、クヌースの大オメガ表記法が用いられる。[28]解析的数論では、大、小、ハーディの、[29]ハーディ・リトルウッドの大オメガ(+、-、±の添え字の有無にかかわらず)表記法がよく用いられる。[22]小オメガ表記法は解析学ではそれほど頻繁には用いられない。[30]
コンピュータサイエンスでの使用
非公式には、特にコンピュータサイエンスの分野では、大きなO表記法は、特定の状況では大きなTheta Θ表記法を使用する方が事実上適切である可能性がある漸近的な厳密な境界を記述するために、多少異なる方法で使用されることがよくあります。 [31]たとえば、関数T ( n ) = 73 n 3 + 22 n 2 + 58を考えるとき、次のすべては一般に受け入れられますが、より厳しい境界(以下の番号2と3など)は、より緩い境界(以下の番号1など)よりも通常強く好まれます。
- T ( n ) = O ( n 100 )
- T ( n ) = O ( n 3 )
- T ( n ) = Θ( n 3 )
同等の英語の文はそれぞれ次のようになります。
- T ( n ) は漸近的にn 100より速く増加しない
- T ( n ) は漸近的にn 3より速く増加しない
- T ( n )はn3と同じ速さで漸近的に増加します。
したがって、3 つの記述はすべて正しいものの、それぞれに含まれる情報は徐々に増えていきます。ただし、分野によっては、大きな O 表記 (上記のリストの 2 番目) の方が、大きな Theta 表記 (上記のリストの 3 番目の項目) よりも一般的に使用されます。たとえば、T ( n ) が入力サイズnに対して新しく開発されたアルゴリズムの実行時間を表す場合、アルゴリズムの発明者とユーザーは、下限漸近境界について明示的に記述せずに、実行にかかる時間の上限漸近境界を設定する傾向があります。
その他の表記
コーメン、レイザーソン、リベスト、スタインは、著書『アルゴリズム入門』の中で、次を満たす 関数fの集合を考察している。
正しい表記では、この集合は例えばO ( g )と呼ばれる。ここで
[32]
著者らは、集合の所属を表すのに集合の所属演算子 (∈) ではなく等号演算子 (=) を使用するのは表記法の乱用だが、そうすることには利点もあると述べている。[6]方程式や不等式の中で漸近表記法を使用すると、集合O ( g )内の無名関数を表し、低次の項が排除され、方程式の不要な混乱を減らすのに役立つ。例えば、次のようになる。[33]
バッハマン・ランダウ記法の拡張
コンピュータサイエンスで時々使用される別の表記法はÕ (ソフトOと読む)であり、これは多対数因子を隠す。使用されている定義は2つあり、あるkに対してf ( n ) = Õ ( g ( n ))をf ( n ) = O ( g ( n ) log k n )の省略形として使用する著者もいれば、f ( n ) = O ( g ( n ) log k g ( n ))の省略形として使用する著者もいる。[34] g ( n )がnの多項式の場合、違いはない。ただし、後者の定義では、例えば、前者の定義では任意の定数kに対してが可能であるのに対し、 が可能であると言える。一部の著者は、後者の定義と同じ目的でO *と書く。[35]本質的には、これは大きなO表記であり、対数係数を無視しています。これは、他の超対数関数の成長率効果が、大きなサイズの入力パラメータの成長率爆発を示しているためです。これは、対数成長係数によってもたらされる細かい点の影響よりも、悪い実行時パフォーマンスを予測する上で重要です。この表記は、手元の問題に対して制限が厳しすぎると述べられている成長率内の「細かい点にこだわる」ことを避けるためによく使用されます (log k n は、任意の定数kと任意のε > 0に対して常にo ( n ε ) であるため)。
また、L表記は次のように定義される。
一般化と関連する用法
任意のノルムベクトル空間で値を取る関数への一般化は簡単である(絶対値をノルムに置き換える)。ここで、fとg は同じ空間で値を取る必要はない。任意の位相群で値を取る関数gへの一般化も可能である[引用が必要]。「極限過程」x → x oは、任意のフィルタ基数を導入することによって、つまり有向ネットfと gに一般化することもできる。o表記法は、非常に一般的な空間での導関数と微分可能性、および関数の(漸近的)同値性を 定義するために使用できる。
これは同値関係であり、上記の「 fは Θ( g )」という関係よりも制限的な概念です。( fとg が正の実数値関数の場合、 lim f / g = 1になります。) たとえば、 2 xは Θ( x ) ですが、2 x − xはo ( x )ではありません。
歴史(バッハマン・ランダウ、ハーディ、ヴィノグラードフ表記)
記号 O は、数論学者ポール・バッハマンが1894 年に著書Analytische Zahlentheorie (解析数論) の第 2 巻で初めて導入しました。[1]数論学者エドモンド・ランダウがこれを採用し、1909 年に o という表記法を導入しました。[2]そのため、現在では両方ともランダウ記号と呼ばれています。これらの表記法は、1950 年代に応用数学で漸近解析に使用されました。[36] 記号(「のoではない」という意味) は、1914 年にハーディとリトルウッドによって導入されました。[19]ハーディとリトルウッドは、1916 年に(「右」) と(「左」) という記号も導入しました。[20] これらは、現代の記号(「の小さな o より小さくない」と(「の小さな o より大きくない」) の前身です。したがって、オメガ記号 (本来の意味) は「ランダウ記号」と呼ばれることもあります。この表記法は少なくとも1950年代以降、数論で一般的に使われるようになった。[37]
記号 は、以前にも異なる意味で使用されていましたが、[27]現代的な定義は、1909年にランダウによって[38]、1910年にハーディによって与えられました。 [39]ハーディは、論文の同じページで、記号 を定義しました。ここで、は と の両方が満たされることを意味します。この表記法は現在でも解析的整数論で使用されています。[40] [29]ハーディは論文の中で、記号 も提案しました。ここで、 は、ある定数 に対して であることを意味します。
1970年代にビッグオーはドナルド・クヌースによってコンピュータサイエンスの分野で普及した。クヌースはハーディのオメガ表記法に別の表記法を提案し、ハーディとリトルウッドのオメガ表記法に別の定義を提案した。[24]
ハーディが作った他の2つの記号は(現代のO表記法で言えば)
- そして
(しかしハーディは、時々報告されているように、 や という表記法を定義したり使用したりしたことはありません)。ハーディは、記号および(およびすでに述べた他の記号) を 1910 年の小冊子「無限大の秩序」で導入し、3 つの論文 (1910 ~ 1913 年) でのみ使用しました。残りの 400 近くの論文と本では、一貫してランダウ記号 O と o を使用しました。
ハーディの記号と(および)は、現在では使われていない。一方、1930年代に[41]ロシアの数論学者 イヴァン・マトヴェイエヴィチ・ヴィノグラードフが という表記法を導入し 、数論では という表記法に代わって使用されるようになった。
そして、同じ論文の中で両方の表記法が使用されることもよくあります。
ビッグオーはもともと「秩序」(「Ordnung」、バッハマン 1894)を意味し、ラテン文字である。バッハマンもランドーもこれを「オミクロン」と呼ぶことはない。この記号はずっと後になって(1976年)、クヌースによって大文字のオミクロンとみなされたが、[24]おそらく彼の記号オメガの定義に関連していると思われる。数字のゼロは使用すべきではない。
参照
- 漸近的計算複雑性
- 漸近展開:テイラーの公式を一般化した関数の近似
- 漸近的最適アルゴリズム: 問題の下限値の定数内に漸近的に上限値を持つアルゴリズムを説明するためによく使用されるフレーズ。
- 確率表記におけるビッグ O : O p、o p
- 下限と上限: この記事で使用されているいくつかの限界表記法の説明
- マスター定理(アルゴリズムの解析):Big O表記法を用いた分割統治再帰アルゴリズムの解析
- ナハビンの定理:積分変換の収束領域を明示できるように、複素解析関数を限定する正確な方法
- 近似の順序
- 数学演算の計算複雑性
参考文献と注記
- ^ ab バックマン、ポール(1894)。 Analytische Zahlentheorie [解析的整数論] (ドイツ語)。 Vol. 2. ライプツィヒ:トイブナー。
- ^ ab ランドー、エドマンド(1909)。 Handbuch der Lehre von der Verreilung der Primzahlen [素数の分布理論に関するハンドブック] (ドイツ語)。 Vol. 1. ライプツィヒ:BGトイブナー。 p. 61.また、本書第 2 巻の 883 ページも参照してください (指定されたリンクからは入手できません)。
- ^ abc Cormen, Thomas H. ; Leiserson, Charles E. ; Rivest, Ronald L. (1990). 「関数の成長」.アルゴリズム入門(第 1 版). MIT Press および McGraw-Hill. pp. 23–41. ISBN 978-0-262-53091-0。
- ^ エドマンド・ランダウ(1909)。 Handbuch der Lehre von der Verreilung der Primzahlen [素数の分布理論に関するハンドブック] (ドイツ語)。ライプツィヒ:BG・トイブナー。 p. 31.
- ^ Sipser, Michael (1997).計算理論入門. ボストン、マサチューセッツ州: PWS Publishing. p. 227, 定義 7.2.
- ^ ab コーメン、トーマス H.;チャールズ・E・ライザーソン;リベスト、ロナルド L. (2009)。アルゴリズム入門(第 3 版)。ケンブリッジ/マサチューセッツ州: MIT プレス。 p. 45.ISBN 978-0-262-53305-8
θ
(
g
(
n
)) は集合な
ので
、f
(
n ) が
θ
(
g
(
n
))のメンバーであること
を示すために、 「
f
(
n
) ∈
θ
(
g
(
n ))」と書くことができます。 代わりに、通常は同じ概念を表現するために
f
(
n
) =
θ
(
g
(
n
))と書きます
。 このように等式を乱用するため混乱するかもしれませんが、このセクションの後半で、そうすることには利点があることがわかります。
- ^ コーメン他 (2009)、53ページ
- ^ Howell, Rodney. 「複数変数の漸近表記について」(PDF) 。 2015年4月24日時点のオリジナルよりアーカイブ(PDF) 。2015年4月23日閲覧。
- ^ アブ・ デ・ブルーイン、NG (1958)。分析における漸近的手法。アムステルダム: 北オランダ。 5~7ページ。ISBN 978-0-486-64221-5. 2023年1月17日時点のオリジナルよりアーカイブ。2021年9月15日閲覧。
- ^ abc グラハム、ロナルド;クヌース、ドナルド;パタシュニック、オーレン(1994)。コンクリート数学 (第2版)。マサチューセッツ州レディング:アディソンウェスレー。p. 446。ISBN 978-0-201-55802-9. 2023年1月17日時点のオリジナルよりアーカイブ。2016年9月23日閲覧。
- ^ Donald Knuth (1998年6月~7月). 「Big Oで微積分を教える」(PDF) .アメリカ数学会通知. 45 (6): 687. 2021年10月14日時点のオリジナルよりアーカイブ(PDF) . 2021年9月5日閲覧。(完全版は2008年5月13日にWayback Machineにアーカイブされています)
- ^ Donald E. Knuth、The art of computer programming、第 1 巻、Fundamental algorithms、第 3 版、Addison Wesley Longman、1997 年、セクション 1.2.11.1。
- ^ Ronald L. Graham、Donald E. Knuth、Oren Patashnik、「Concrete Mathematics: A Foundation for Computer Science (2nd ed.)」、Addison-Wesley、1994年。セクション9.2、p.443。
- ^ Sivaram Ambikasaran および Eric Darve、「部分階層的半分離行列の高速直接ソルバー」、J. Scientific Computing 57 (2013)、第 3 号、477–501 ページ。
- ^ Saket SaurabhとMeirav Zehavi、「-Max-Cut: -Timeアルゴリズムと多項式カーネル」、Algorithmica 80 (2018)、第12号、3844–3860。
- ^ ab ランドー、エドマンド(1909)。 Handbuch der Lehre von der Verreilung der Primzahlen [素数の分布理論に関するハンドブック] (ドイツ語)。ライプツィヒ:BG・トイブナー。 p. 61.
- ^ Thomas H. Cormen 他著、2001 年、アルゴリズム入門、第 2 版、第 3.1 章、2009 年 1 月 16 日にWayback Machineにアーカイブ
- ^ コーメン TH、ライザーソン CE、リベスト RL、スタイン C (2009)。アルゴリズム入門 (第 3 版)。マサチューセッツ州ケンブリッジ:MIT Press。 p. 48.ISBN 978-0-262-27083-0. OCLC 676697295.
- ^ abc Hardy, GH ; Littlewood, JE (1914). 「ディオファントス近似のいくつかの問題: パート II. 楕円 θ 関数に関連する三角級数」. Acta Mathematica . 37 : 225. doi : 10.1007/BF02401834 . 2018-12-12 にオリジナルからアーカイブ。2017-03-14に取得。
- ^ ab Hardy, GH ; Littlewood, JE (1916). 「リーマンゼータ関数の理論と素数分布の理論への貢献」Acta Mathematica 41 : 119–196. doi : 10.1007/BF02422942.
- ^ E. ランダウ(1924)。 「Über die Anzahl der Gitterpunkte in gewissen Bereichen. IV」[既知の領域の格子点の数について]。ナクル。ゲゼル。ウィス。ゴット。数学物理学。 (ドイツ語): 137–150。
- ^ ab Ivić, A. (1985).リーマンゼータ関数. John Wiley & Sons. 第9章.
- ^ Tenenbaum, G. (2015).解析的および確率的数論入門. プロビデンス、ロードアイランド州:アメリカ数学会. § I.5.
- ^ abcdefクヌース、ドナルド(1976年 4月〜 6月)。「ビッグオミクロンとビッグオメガとビッグシータ」。SIGACTニュース。8 (2) : 18〜24。doi :10.1145 / 1008328.1008329。S2CID 5230246。
- ^ バルカサル、ホセ L.ガバロ、ホアキン。 「下限と上限によって指定される不均一な複雑さのクラス」(PDF)。RAIRO – 理論情報学とアプリケーション – Informatique Théorique et Applications。23 (2): 180。ISSN 0988-3754 。2017 年 3 月 14 日のオリジナルからアーカイブ(PDF) 。2017 年3 月 14 日に取得– Numdam 経由。
- ^ Cucker, Felipe; Bürgisser, Peter (2013). 「A.1 Big Oh、Little Oh、およびその他の比較」。Condition: The Geometry of Numerical Algorithms。 ベルリン、ハイデルベルク: Springer。 pp. 467–468。doi :10.1007/978-3-642-38896-5。ISBN 978-3-642-38896-5。
- ^ abc ヴィタニ、ポール;ランバート・メルテンス(1985年4月)。 「ビッグオメガ対野生機能」(PDF)。ACM SIGACT ニュース。16 (4):56-59。CiteSeerX 10.1.1.694.3072。土井: 10.1145/382242.382835。S2CID 11700420。2016 年 3 月 10 日にオリジナルからアーカイブ(PDF)されました。2017 年 3 月 14 日に取得。
- ^ コーメン、トーマス H. ;レイソン、チャールズ E. ;リベスト、ロナルド L. ;スタイン、クリフォード(2001) [1990]。アルゴリズム入門(第 2 版)。MIT プレスおよび McGraw-Hill。pp. 41–50。ISBN 0-262-03293-7。
- ^ ab Gérald Tenenbaum、「解析的および確率的数論入門」、「表記法」、xxiii ページ。アメリカ数学会、プロビデンス RI、2015 年。
- ^ たとえば、次の文書では省略されています: Hildebrand, AJ "Asymptotic Notations" (PDF)。Department of Mathematics. Asymptotic Methods in Analysis。Math 595、2009 年秋。Urbana、IL: University of Illinois。2017年 3 月 14 日時点のオリジナルからアーカイブ(PDF) 。2017年3 月 14 日閲覧。
- ^ Cormen et al. (2009)、p. 64:「 Θ表記法の方が技術的に正確であるにもかかわらず、多くの人はO表記法を使い続けています。」
- ^ コーメン、トーマス H.チャールズ・E・ライザーソン;リベスト、ロナルド L. (2009)。アルゴリズム入門(第 3 版)。ケンブリッジ/マサチューセッツ州: MIT プレス。 p. 47.ISBN 978-0-262-53305-8
漸近的な上限しかない場合は、O 表記法を使用します。与えられた関数 g ( n ) に対して
、関数
の
集合
O
(
g
(
n
)
)
= {
f
(
n
) : 0
≤
f
(
n
)
≤
cg
(
n
)
と
なる
正
の
定数
c
と
n
0
が
存在
し
、
すべて
の
n
≥
n
0
に対して
}
- ^ コーメン、トーマス H.チャールズ・E・ライザーソン;リベスト、ロナルド L. (2009)。アルゴリズム入門(第 3 版)。ケンブリッジ/マサチューセッツ州: MIT プレス。 p. 49.ISBN 978-0-262-53305-8漸近表記がn = O(n
2
)のように方程式 (または不等式) の右辺で単独で (つまり、より大きな式の中になく) 存在する場合、等号は集合のメンバーシップを意味すると既に定義されています: n ∈ O(n 2 )。ただし、一般に、式に漸近表記が現れる場合は、名前を付ける必要のない匿名の関数を表すと解釈します。たとえば、式 2 n 2 + 3 n + 1 = 2 n 2 + θ ( n ) は、 2 n 2 + 3 n + 1 = 2 n 2 + f ( n )を意味します。ここで、f ( n ) は集合θ ( n )内の何らかの関数です。この場合、f ( n ) = 3 n + 1 としますが、これは確かにθ ( n )内にあります。このように漸近表記を使用すると、方程式内の重要でない詳細や混乱を排除するのに役立ちます。
- ^ コーメン、トーマス H.; レイソン、チャールズ E.; リベスト、ロナルド L.; スタイン、クリフォード (2022)。アルゴリズム入門 (第 4 版)。マサチューセッツ州ケンブリッジ: MIT プレス。pp. 74–75。ISBN 9780262046305。
- ^ Andreas Björklund、Thore Husfeldt、Mikko Koivisto (2009)。「包含-除外によるセット分割」(PDF)。SIAM Journal on Computing。39 ( 2): 546–563。doi :10.1137/070683933。2022年2月3日にオリジナルからアーカイブ( PDF ) 。2022年2月3日に取得。セクション2.3、p.551を参照してください。
- ^ Erdelyi, A. (1956).漸近展開. Courier Corporation. ISBN 978-0-486-60318-6。。
- ^ EC ティッチマーシュ『リーマンゼータ関数の理論』(オックスフォード、クラレンドン出版、1951年)
- ^ エドマンド・ランダウ(1909)。 Handbuch der Lehre von der Verreilung der Primzahlen [素数の分布理論に関するハンドブック] (ドイツ語)。ライプツィヒ:BG・トイブナー。 p. 62.
- ^ ハーディ、GH(1910)。無限の秩序:ポール・デュ・ボワ=レイモンドの「無限計算」。ケンブリッジ大学出版局。2ページ。
- ^ ハーディ、GH;ライト、EM (2008) [第1版。1938年]。「1.6. いくつかの表記法」。数論入門。DRヒースブラウンとJHシルバーマンによる改訂、アンドリュー・ワイルズによる序文付き(第6版)。オックスフォード:オックスフォード大学出版局。ISBN 978-0-19-921985-8。
- ^ たとえば、「ウォーリング問題におけるG ( n ) の新しい推定値」(ロシア語) を参照。Doklady Akademii Nauk SSSR 5、No 5-6 (1934)、249–253。英語に翻訳: Selected works / Ivan Matveevič Vinogradov。ソ連科学アカデミーのステクロフ数学研究所が彼の 90 歳の誕生日を記念して作成。Springer-Verlag、1985 年。
さらに読む
- ハーディ、GH(1910)。無限の秩序:ポール・デュ・ボワ=レーモンの「無限計算」。ケンブリッジ大学出版局。
- Knuth, Donald (1997)。「1.2.11: 漸近的表現」。基本アルゴリズム。コンピュータプログラミングの技法。第 1 巻 (第 3 版)。Addison- Wesley。ISBN 978-0-201-89683-1。
- Cormen, Thomas H. ; Leiserson, Charles E. ; Rivest, Ronald L. ; Stein, Clifford (2001)。「3.1: 漸近記法」アルゴリズム入門(第 2 版)。MIT Press および McGraw- Hill。ISBN 978-0-262-03293-3。
- シプサー、マイケル(1997)。計算理論入門。PWS 出版。pp. 226–228。ISBN 978-0-534-94728-6。
- Avigad, Jeremy; Donnelly, Kevin (2004). Isabelle/HOL での O 表記の形式化(PDF) . 自動推論に関する国際合同会議。doi : 10.1007 /978-3-540-25984-8_27。
- Black, Paul E. (2005 年 3 月 11 日)。Black, Paul E. (編)。「big-O 表記法」。アルゴリズムとデータ構造の辞書。米国国立標準技術研究所。2006年12 月 16 日閲覧。
- Black, Paul E. (2004 年 12 月 17 日)。Black, Paul E. (編)。「little-o 表記法」。アルゴリズムとデータ構造の辞書。米国国立標準技術研究所。2006年12 月 16 日閲覧。
- Black, Paul E. (2004 年 12 月 17 日)。Black, Paul E. (編)。「Ω」。アルゴリズムとデータ構造の辞書。米国国立標準技術研究所。2006年12 月 16 日閲覧。
- Black, Paul E. (2004 年 12 月 17 日)。Black, Paul E. (編)。「ω」。アルゴリズムとデータ構造の辞書。米国国立標準技術研究所。2006年12 月 16 日閲覧。
- Black, Paul E. (2004 年 12 月 17 日)。Black, Paul E. (編)。「Θ」。アルゴリズムとデータ構造の辞書。米国国立標準技術研究所。2006年12 月 16 日閲覧。
外部リンク
- シーケンスの成長 — OEIS (オンライン整数シーケンス百科事典) Wiki
- 漸近記法の紹介
- Big-O記法 – 何に役立つのか
- 第一微分の中心差分法の精度におけるビッグオーの例 2018-10-07 にWayback Machineでアーカイブされました
- アルゴリズムの複雑性分析へのやさしい入門
