なぜしない


8

CLRS(ページ49-50上)、次の文の意味は何ですか。

Σi=1nO(i)(の単一の匿名関数であるi)が、同じではありません実際に持っていません、解釈。」O(1)+O(2)++O(n)


私はあなたの質問をより正確に定式化しようとしました。また、ここではラテックスがサポートされているため、適切にフォーマットされた数学を記述できます。より具体的にすることをお勧めします:何が混乱しているのですか?どの部分がトラブルの原因ですか?(たぶん、それに応じて質問のタイトルも編集できます)。
Juho


1
間違いなく、拡張された合計にも解釈がありません。最初に書く必要があります。O()
ラファエル

1
の意図する意味を誰かが説明できますか?次数 " " の関数の合計?、これはほとんど意味がありません。でインデックス付けされた関数の和と、ある順序の和?? n i O i = O 1 n ii=1nO(i)niO(i)=O(1)ni
Yves Daoust、2014年

回答:


12

以来、いることを示唆したくなる ...しかし、これは実際には有効ではありません。その理由は、合計の各項に異なる定数がある可能性があるためです。O 1 + O 2 + + O n = O n 21+2++n=O(n2)O(1)+O(2)++O(n)=O(n2)

例を挙げましょう。合計、、、考えますなど。なお、、、、、などの各タームのために和。したがって、をS j = O 1 + + O j の形式で書くのが妥当です。したがって、S S 2 = 1 2 + 2 2 S 3 = 1 2 + 2 2 + 3 2 S 4 = 1 2 + 2 2 + 3 2 + 4 2 1 2O 1 2 2O 2 3S(1)=12S(2)=12+22S(3)=12+22+32S(4)=12+22+32+4212O(1)22O(2)4 2O 4 S J = 1 2 + + J 232O(3)42O(4)S(j)=12++j2S(j)=O(1)++O(j)S(j)=O(j2)?いいえ。実際、S(n)=n(n+1)(2n+1)/6なので、S(n)=Θ(n3)です。

それでも問題が解決しない場合は、次のより正確な数学的開発を試してみましょう。

正式化

リコール、たとえば、の解釈ことが非負関数の組であることであるF N 、すなわち(、関数の集合F N の定数が存在するように、C 0 dは0ようにF N C N 2すべてについてのn D)。O(n2)f(n)f(n)c0,d0f(n)cn2nd

解釈に最も近いのは、それがf 1n + f 2n + +の形式の関数のセットであることですF nはN 、その結果、F 1N O 1 F 2NO(1)+O(2)++O(n)f1(n)+f2(n)++fn(n)f1(n)O(1)、···、 F NN O N f2(n)O(2)fn(n)O(n)

しかし、各定数は異なる場合があります。したがって、各F iが非負関数であるF I定数が存在するように、C I0 dはiは0fをIN C II全てに対してN D Ifififici0,di0fi(n)ciindi

これで、について何が言えるでしょうか。あまり役に立たない。我々は定数が存在することを知っているDは= 最大値D 1D 2... D N、その結果G N C 11 + Cg=f1+f2++fd=最高d1d2d全てについてのn D。さて、この合計について何が言えるでしょうか?ええと、答えはまったく言えません。それは任意に大きくなる可能性があります。できるように誘惑された C = マックスC 1C 2... C N)を、その言う G nはC 1 + 2 + + N Cg(n)c11+c22++cnnndc=max(c1,c2,,cn) ...しかし、我々は、単一の一定の値必要があるため、これは、実際には正しくない Cのすべてのための作品というのn、および値の最大値C 1C 2... C N定数ではなく、 nの関数です。g(n)c(1+2++n)cn2=O(n2)cnmax(c1,c2,,cn)n

だから、任意の定数が存在しない可能性がありますようにG N C 1 + 2 + + N 。任意の定数が存在しない可能性がありますCようにG N C N 2。その保証はありませんG N O N 2cg(n)c(1+2++n)cg(n)cn2g(n)O(n2)

もっと読むために

この一般的な問題を扱う他の質問については、https://math.stackexchange.com/q/86076/14578およびSums of Landauの用語を再確認してください


2
TLDR:あなたは彼らがすべてになりたいと同じ が、彼らは正式に、ではありません。fO(_)
ラファエル

1

CLRSのコメントが紛らわしいのは、技術的にはO 1 + O 2 + O n として定義されているためです。実際に起こっていることは、CLRSが簡略化のために表記法を乱用していることです。i=1nO(i)O(1)+O(2)+O(n)

  • は一連の関数を表します。たとえば、 f n = 1 f n = 1 / n、および f n = n 1 / nが含まれます。O(1)f(n)=1f(n)=1/nf(n)=n1/n
  • あなたが書くときあなたが技術的に2セットを追加しているO 1 O 2 とのsumsetの操作。DWが別の回答で明確に説明しているように、これが一定数以上の用語で行われると、予期しない動作が発生する可能性があります。O(1)+O(2)O(1)O(2)

その代わり、CLRSは、このようにあなたのように解釈するでしょうとしてΣ nは、私は= 1 fはI ここで、一般的な関数F I O I 。たとえば、彼らはn i = 1 3 i 5n i = 1 O i またはOi=1nO(i)i=1nf(i)f(i)O(i)i=1n3i5i=1nO(i)O(n2)


この説明は正しくありません。を追加しても問題はありません。それは明確です。O 1 は関数のセット、O 2 は関数のセット、S Tが関数のセットである場合、S + Tは通常、関数のセット{ f n + g n f n O(1)+O(2)O(1)O(2)S,TS+T{f(n)+g(n):f(n)S,g(n)T}

これが集合加算の一般的な定義であり、明確に定義されていることに同意しますが、それが一般的な意味であるとは思いません。上記の回答であなたが正しく言っているように、一定数以上の用語に集合加算を使用すると問題が発生します。
Ari Trachtenberg

ΣOΣffO1+O2++Of11+f22++ff1f2f そのような...」。全く同じではありません。
JeffE 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.