Big OのOとは何ですか?


23

Big O表記のBigとOとは何ですか?私は定義を読みましたが、Oが「oh」と発音されていることはわかりません。たとえば、O(n)は線形アルゴリズムの複雑さであり、nは操作の数になる可能性があることを理解しています。しかし、Oとは何ですか?


13
英語のアルファベットの15番目の文字です。また、ギリシャ語のアルファベットの15番目の文字です。
ジョエルイーサートン

1
明確にするために:Oが使用される記号(QまたはEまたは他の何かの代わりに)である理由と、Oが他の記号に対して持つ意味を探していますか?
FrustratedWithFormsDesigner

6
@ジョエル:実際には、それはオミクロンであり、それがこの特定の手紙が選ばれた理由の手がかりです。
ヨルグWミットタグ

この答えは、オミクロンの理論に反論しています(正確に思います)。
ホークアイパーカー

回答:


31

さて、私の推測は順序であり、これはウィキペディア一致します。

編集:(私自身の(改善点を歓迎))ドイツのウィキペディアの記事からの翻訳

(ドイツ語: "Ordnung von")の順序のシンボルとしての大文字O(実際には当時の大文字オミクロン)は、ドイツの数論者Paul Bachmanが分析数論に関する本の第2号で最初に使用したこの表記法は、特にドイツ語の用語で、この命名法が今日広く関連付けられている別のドイツの数論者であるエドマンド・ランダウの研究により人気を得ました。


5
多くの数学者がそのように言及している場合もありますが、元々そうではありませんでした。20世紀初頭の数論の本を読んでも、そのような説明はありません。それはそれであり、私は彼の考えが記法に関して何であったかを理解するためにドイツ語を読むことができません。
ジョナサンヘンソン

1
@ジョナサン:投稿が更新されました。
back2dos

非常に素晴らしい!私はすべての数論の本を調べましたが、Oの説明はどこにも見つかりませんでした。+1
ジョナサンヘンソン

2
私はいつも、Oがあまり意味がないと言っているように、それを順序として発音しました。
ニュートピア

16

「大」は「資本」を意味し、「O」は「複雑さの順序」のように順序を意味します。このように命名されたのは、「複雑さの順序」をO(f(x))として書く慣習、たとえば大文字の「O」または「大きなO」で命名されたためです。「誰も」がそれが何を意味するのか理解しているので、誰もそれについてあまり語りません。

複雑さの分析を理解するために、topgun_ivardによって投稿されたリンクを開始するのに適した場所だと思います。データ構造またはアルゴリズムをカバーする優れた入門教科書も役立ちます。


5
申し訳ありませんが、バッハマン-ランドーの表記法はドイツの数学者によって考案されたので、彼が英語の単語にちなんで命名したとは思いません。実際、たとえそれがアメリカの数学者によって発明されたとしても、それが発明されたとき(1920年頃、私は思う)、数学の国際言語はドイツ語だったので、おそらくドイツ語にちなんでまだ命名されていただろう。さらに、リモートでも複雑さには関係ありません。
ヨルグWミットタグ

1
@イェルク:はい、しかし、ただではないことをOrdnungのドイツのwikiの記事のクレームが起源であるためには、:de.wikipedia.org/wiki/Landau-Symbole#Geschichte
back2dos

1
@Ethelはあなたの記事に小さな変更を加えることができます。あなたは確かに正しいです。投票する前に編集する必要があります。
ジョナサンヘンソン

1
@ジョナサン、あなたがどんな小さな変更を望むのか正確にはわかりません。先に進んで、必要な編集を行うことはできますか?それとも、私たちはただ、彼はいくつかの優れた研究にとにかく起因する最良の答え:)になってしまったかもしれないように見える、back2dos'回答スタンドを聞かせてできた
エセル・エヴァンス

1
うーん、面白い。スウェーデンでは、Big Ohは通常「ordning」(スウェーデン語で「順序」)ではなく「ordo」(ラテン語で「順序」)と呼ばれます。
バティーン

11

Oは順序を表します。

もともとはドイツ語で数学者ポール・バックマンによって導入された数論の上の彼の本の第二巻ダイAnalytische Zahlentheorie 1894年に出版され、(P。401) 。彼は、最初に記法を使用する式の後に注意します。

(...)wen wir durch das Zeichen O(n) eindeGrösseausdrücken、deren Ordnung in Bezug auf n die Ordnung von n nichtüberschreitet(...)

私の翻訳:

(...)表記O(n)で、nを参照する次数がnの次数を超えない大きさを示します(...)

他の人が言ったこととは対照的に、彼のテキストには、これが実際にギリシャの首都オミクロンであることを示すものは何もありません。彼はギリシャ文字とラテン文字の両方をたくさん使用しているため、実際に伝える方法はありません。本文で「Ordnung n log n」などを継続して使用していることを考えると、いずれの場合も「Ordnung」(疑問がある場合はドイツ語で「order」を意味する)を意味していることは明らかですが、派手なギリシャのO

ただし、オミクロンの起源は、ドナルド・クヌースが関連概念の記号オメガ(Ω)とシータ(Θ)を導入したために、おそらくレトロニムです。 彼の論文ビッグオミクロンとビッグオメガとビッグシータ、またはおそらくハーディとリトル人以前にオメガ記号を導入しました。


2
面白い。あなたは正しいと思います。LandauとBachmannの両方の本の定義を調べたところ、実際にはa)ギリシャ語のOmikronではなくラテン語のOhを使用しており、b)両方とも「Ordnung」という単語を使用しており、c)Landauは明示的に「Ordnung」を意味していると述べています。私は立ち直る。
ヨルグWミットタグ

もっと良い言葉が見つかりましたか?ドイツ人から?Ordnung ist das halbe Leben!
JensG 14年

あなたの(正しい、賛成、すごい)答えの最初の文は、「Oは「Ordnung」(ドイツ語で「注文」を意味する)の略です」と読むべきだと思います。この回答が他の読者の注意を引くのに役立ちます。
ホークアイパーカー

5

私はこの記事が好きです、あなたもそれが役に立つことを望んでいます!

記事のセクションを引用:
Big Greek Letters

Big Oはよく誤用されます。Big OまたはBig Ohは、実際にはBig Omicronの略です。漸近的な複雑さの上限を表します。したがって、アルゴリズムがO(n log n)の場合、上限がcn log nになるような定数cが存在します。

Θ(n log n)(ビッグシータ)は、それよりも厳密にバインドされています。このようなアルゴリズムは、c1n log n <f(n)<c2n log nとなる2つの定数c1およびc2が存在することを意味します。

Ω(n log n)(Big Omega)は、アルゴリズムのcn log nの下限があることを示しています。

他にもありますが、これらは最も一般的であり、Big Oはすべての中で最も一般的です。通常、このような区別は重要ではありませんが、注目に値します。結局、正しい表記は正しい表記です。

Big Oとは何ですか?

Big O表記法は、キーファクターが無限に向かう傾向がある場合に、キーファクターに対する成長率を減らすことにより、アルゴリズムの相対的な複雑さを表現しようとします。このため、「漸近的な複雑さ」というフレーズをよく耳にします。そうすることで、他のすべての要因は無視されます。これは複雑さの相対的な表現です。

ビッグOとは何ですか?

Big Oは、アルゴリズムのパフォーマンステストではありません。また、他の要因を無視する傾向があるという点で、概念的または抽象的です。ソートアルゴリズムの複雑さは、通常、キーファクターとしてソートされる要素の数まで削減されます。これは問題ありませんが、次のような問題は考慮していません。

メモリ使用量:あるアルゴリズムは、別のアルゴリズムよりもはるかに多くのメモリを使用する場合があります。状況によっては、これは完全に無関係なものから重大なものまであります。比較のコスト:要素の比較は非常に高価である可能性があり、アルゴリズム間の実際の比較を変更する可能性があります。要素の移動のコスト:要素のコピーは通常安価ですが、必ずしもそうであるとは限りません。等


5
記事をリンクするだけではあまり役に立ちません。通常、スレッドに特に関連すると思われるセクションを言い換えたり引用したりすることをお勧めします。
デミアンブレヒト

3
反対票は本当に必要ですか?彼がリンクした記事は非常に関連性があり、私見は非常に有用です。一方、トップ投票の回答は、ウィキペディアの記事へのリンクです。ハイブマインドの偽善を相殺するために+1。
ブランドンモレッツ

1
-1は、アーティスは非常に素晴らしくよく書かれた記事であるが、質問とは関係がないためです。
ヨルグWミットタグ

@Jorg、この記事が問題を解決するとは決して言いませんでしたが、これらの概念を見ているときに役に立つとわかったので、共有しました。
topgun_ivard

3
@topgun_ivard:デッドリンクになった場合はどうなりますか?言い換えると、1)このスレッドの対象者は、リンクのコールズノートバージョン(時は金なり)を取得でき、2)デッドリンクでは投稿が無関係にならないようにします。
デミアンブレヒト

2

「f(x)はg(x)のビッグオー」

関数の成長を予測する数学的な方法です。

fとgを、整数のセットまたは実数から実数セットまでの関数とします。| f(x)|のような定数Cとkがある場合、f(x)はO(g(x))であると言います。<= C | g(x)| x> kの場合。

これは、「f(x)はg(x)のビッグオー」と読むでしょう。

big-Oは、ドイツの数学者エドモンド・ランダウにちなんで、ランダウのシンボルと呼ばれることもあります。それ以上のものを意味するとは思わない。また、同様のビッグオメガ表記とビッグシータ表記もあります。シンボルは、高校のPlanar Geometryクラスにある三角形の角度を示すために常にthetaを使用するのと同じくらい任意です。

訂正 @ back2dosは、Oが注文を参照しているという十分な説明を提供しました。よくやった。彼の答えをご覧ください。

ドナルド・クヌースはそれをコンピュータープログラムの複雑さの研究に応用しました。

表記法が使用された理由を見つけたい場合は、読む必要があります

ポール・バッハマンによる1892年の「アナリチシェ・ザーレンテリエ」


2

編集:私は間違っていることが判明した。それにもかかわらず、これは誰かがシンボルをまっすぐに保つのに役立つかもしれないので、私はそれを削除するつもりはありません。


実際に、それはだないラテン文字ああ、それはギリシャ文字だオミクロン。残念ながら、これら2つはまったく同じグリフを持っているため、時間が経つにつれて元のバージョンが破損し、現在はOhになっています。

シンボルの選択は実際には特定の意味を持たず、ニーモニックデバイスとして選択されました。

  • OmicronにはMICROという文字があり、Omicronシンボルのセマンティクスはおおよそ「より小さい」を意味します
  • Omegaには文字MEGAがあり、Omegaシンボルのセマンティクスはおおよそ「より大きい」という意味です。
  • シータ(Θ)は等号に少し似ており、シータ記号のセマンティクスはおおよそ「等しい」を意味します

それでおしまい。それには本当の意味はありません。セマンティクスをより簡単に覚えるのを助けるために、もしあなたがそうするなら、それは単なる言葉の遊びです。


2
あなたのニーモニックな命題を信じたいのですが(これは本当にクールなアイデアです)、これがバッハマンの実際の本来の意図であるという証拠を見る必要があります。提供していただければ、+ 1します。
ジョナサンヘンソン

2
@ジョナサン・ヘンソン:どうやら、私はクヌース教授に惑わされたようです:
ヨルグ・W・

-5

更新:回答を整理し、より正確にしようとしています

Big O表記は、成長率に応じて機能を特徴付ける方法です。Oは順序を表します(1次はn、2次はn乗など)。そして、私が間違えなければ、これはN要素が与えられたメソッドランタイム(またはストレージ)の最悪のシナリオになります。次数が大きいほど、メソッドの実行は最悪になります。
たとえば、配列内のレコードを検索するのはO(1)です(ハッシュテーブルの実装もそうだと思います)。リンクリストの最後に値を追加すると、要素を追加する前にリストの最後に到達する必要があるため、O(N)になります。

この答えは私の最初の試みよりもわずかに正しいはずです:)


2
-1これは単純に古く間違っているためであり、尋ねられたものとは別の質問に答えたからです。問題は、「Big O表記はどのように機能するのか」ではなく、「O」という文字が使用される理由です。Big-ohの動作についても間違っています...配列のループ処理はO(n)で、nはO(1)ではなく配列のサイズです。表記法は、アルゴリズムの「サイクル」とは関係ありません...これは、アルゴリズムの実行時間の上限の測定値です。
ケーシーパットン

ここであなたと議論することはありませんが、それは私が意図したもののようなものです。実行時間とはどういう意味ですか?実行時間は、マシンで何を処理する必要があるかによって決まります。ここでは、サイクルを多用していると思います。サイクルごとに、イテレートスルーなどを言ったほうがいいと思います。あなたは上限については正しいですが、それは平均を決定しません。したがって、ダウングレードを受け入れます。
SoftwareSavant
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.