Warum hat keine Interpretation?


8

Welche Bedeutung hat in CLRS (auf den Seiten 49-50) die folgende Aussage:

Σ n i = 1 O ( i )Σni=1O(i) ist nur eine einzelne anonyme Funktion (von ), aber nicht dasselbe wie O (1) + O (2) + \ cdots + O (n) , das hat nicht wirklich eine Interpretation. "i iO ( 1 ) + O ( 2 ) + + O ( n )O(1)+O(2)++O(n)


Ich habe versucht, Ihre Frage genauer zu formulieren. Beachten Sie auch, dass wir hier Latex-Unterstützung haben, damit Sie gut formatierte Mathematik schreiben können. Ich ermutige Sie, genauer zu sein: Was genau ist verwirrend? Welcher Teil verursacht Probleme? (Vielleicht können Sie dann auch den Titel der Frage entsprechend bearbeiten).
Juho


1
Die erweiterte Summe hat wohl auch keine Interpretation; Sie sollten schreiben, dass beginnt. O ( )O()
Raphael

1
Kann jemand die beabsichtigte Bedeutung von ? Summe von Funktionen der Ordnung " "? Dies macht wenig Sinn, da . Summe von Funktionen, die durch indiziert sind und in irgendeiner Reihenfolge? n i = 1 O ( i ) n i O ( i ) = O ( 1 ) n ini=1O(i)niO(i)=O(1)ni
Yves Daoust

Antworten:


12

Da , ist es verlockend anzunehmen, dass ... Dies ist jedoch in der Tat nicht gültig. Der Grund ist, dass es für jeden Term in der Summe eine andere Konstante geben kann.1 + 2 + + n = O ( n 2 ) 1+2++n=O(n2)O ( 1 ) + O ( 2 ) + + O ( n ) = O ( n 2 )O(1)+O(2)++O(n)=O(n2)

Ein Beispiel

Lassen Sie mich ein Beispiel geben. Betrachten Sie die Summen , , , und so weiter. Beachten Sie, dass , , , usw. für jeden Term in der Summe. Daher wäre es vernünftig, in der Form zu schreiben . Können wir also schließen, dass ? Nee. Tatsächlich ist , also .S ( 1 ) = 1 2S(1)=12 S ( 2 ) = 1 2 + 2 2S(2)=12+22 S ( 3 ) = 1 2 + 2 2 + 3 2S(3)=12+22+32 S ( 4 ) = 1 2 + 2 2 + 3 2 + 4 2 S(4)=12+22+32+421 2O. ( 1 ) 12O(1)2 2O ( 2 ) 22O(2)32O ( 3 ) 4 2O ( 4 ) S ( j ) = 1 2 + + j 2 S ( j ) = O ( 1 ) + + O ( j ) S ( j ) = O ( j 2 ) S ( n ) = n ( n + 132O(3)42O(4)S(j)=12++j2S(j)=O(1)++O(j)S(j)=O(j2)) ( 2 n + 1 ) / 6 S ( n ) = Θ ( n 3 )S(n)=n(n+1)(2n+1)/6S(n)=Θ(n3)

Wenn das nicht hilft, versuchen wir die folgende genauere mathematische Entwicklung:

Eine Formalisierung

Es sei daran erinnert, dass die Interpretation von beispielsweise besteht, dass es sich um eine Menge nicht negativer Funktionen (nämlich um eine Menge von Funktionen so dass Konstanten so dass für alle ).O ( n 2 ) f ( n ) f ( n ) , c 0 , d 0 f ( n ) c n 2 n dO(n2)f(n)f(n)c0,d0f(n)cn2nd

Wir können einer Interpretation von nächsten kommen, wenn es sich um die Menge der Funktionen der Form so dass , , ..., .O(1)+O(2)++O(n)O(1)+O(2)++O(n)f1(n)+f2(n)++fn(n)f1(n)+f2(n)++fn(n)f1(n)O(1)f1(n)O(1)f2(n)O(2)f2(n)O(2)fn(n)O(n)fn(n)O(n)

Aber jetzt können die Konstanten für jedes unterschiedlich sein. Somit ist jedes eine nicht negative Funktion so dass es Konstanten mit für alle .fifififififici0,di0ci0,di0fi(n)ciifi(n)ciindindi

Was können wir angesichts dessen über sagen ? Nicht sehr nützlich. Wir wissen, dass es eine Konstante so dass für alle . Was können wir nun zu dieser Summe sagen? Die Antwort ist, dass wir überhaupt nichts sagen können. Es könnte beliebig groß sein. Es ist verlockend, und zu sagen, dass ... aber das ist eigentlich nicht richtig, da wir einen einzigen konstanten Wert von brauchen , der für alle funktioniert , und den Wertg(n)=f1(n)+f2(n)++fn(n)g(n)=f1(n)+f2(n)++fn(n)d=max(d1,d2,,dn)d=max(d1,d2,,dn)g(n)c11+c22++cnng(n)c11+c22++cnnndndc=max(c1,c2,,cn)c=max(c1,c2,,cn)g(n)c(1+2++n)cn2=O(n2)g(n)c(1+2++n)cn2=O(n2)ccnnmax(c1,c2,,cn)max(c1,c2,,cn) ist eine Funktion von , keine Konstante.nn

Es gibt also möglicherweise keine Konstante so dass ; Es gibt möglicherweise keine Konstante so dass . Es gibt keine Garantie dafür, dass .ccg(n)c(1+2++n)g(n)c(1+2++n)ccg(n)cn2g(n)cn2g(n)O(n2)g(n)O(n2)

Zum Lesen

Weitere Fragen zu diesem allgemeinen Problem finden Sie unter https://math.stackexchange.com/q/86076/14578 und in den überarbeiteten Begriffen von Sumums of Landau .


2
TLDR: Sie wollen , dass sie alle seine gleichen , aber sie sind nicht formal. fO(_)fO(_)
Raphael

1

Der Grund , dass CLRS Kommentar ist verwirrend , dass ist, technisch gesehen , ist definiert als . Was wirklich passiert, ist, dass CLRS der Einfachheit halber die Notation missbraucht:ni=1O(i)ni=1O(i)O(1)+O(2)+O(n)O(1)+O(2)+O(n)

  • O(1)O(1) repräsentiert eine Reihe von Funktionen. Es umfasst zum Beispiel , und .f(n)=1f(n)=1f(n)=1/nf(n)=1/nf(n)=n1/nf(n)=n1/n
  • Wenn Sie schreiben, fügen Sie technisch zwei Sätze und mit einer Summensatzoperation hinzu . Wenn dies mit mehr als einer konstanten Anzahl von Begriffen durchgeführt wird, kann dies zu unerwarteten Verhaltensweisen führen, wie DW in einer anderen Antwort klar erklärt.O(1)+O(2)O(1)+O(2)O(1)O(1)O(2)O(2)

Stattdessen möchte CLRS, dass Sie als interpretieren, wobei die generische Funktion . Zum Beispiel würde sie , dass schreiben ist oder .ni=1O(i)ni=1O(i)ni=1f(i)ni=1f(i)f(i)O(i)f(i)O(i)ni=13i5ni=13i5ni=1O(i)ni=1O(i)O(n2)O(n2)


Diese Erklärung ist nicht ganz richtig. Es ist nichts Falsches daran, hinzuzufügen . Das ist gut definiert. ist eine Menge von Funktionen, ist eine Menge von Funktionen, und wenn Mengen von Funktionen sind, wird normalerweise als die Menge von Funktionen . Dies ist allgemein beabsichtigt, wenn wir zwei Big-Oh-Notationen hinzufügen, und alles funktioniert einwandfrei, solange Sie nur zwei (oder eine konstante Anzahl von) Big-Oh-Symbole hinzufügen. Wenn Sie in Schwierigkeiten geraten, ist die Anzahl der Addends keine Konstante, wie in meiner Antwort erläutert. O(1)+O(2)O(1)+O(2)O(1)O(1)O(2)O(2)S,TS,TS+TS+T{f(n)+g(n):f(n)S,g(n)T}{f(n)+g(n):f(n)S,g(n)T}
DW

Ich stimme zu, dass dies die übliche Definition der Mengenaddition ist und dass sie gut definiert ist, obwohl ich nicht denke, dass dies das ist, was im allgemeinen Gebrauch gemeint ist. Wie Sie in Ihrer obigen Antwort richtig gesagt haben, führt die Verwendung der Satzaddition für mehr als eine konstante Anzahl von Begriffen zu Problemen.
Ari Trachtenberg

Ich bevorzuge es, O (f (n)) als anonymes Element einer bestimmten Menge von Funktionen zu definieren, anstatt die Menge selbst. Dann bedeutet " für eine Funktion so dass ...", während " für einige Funktionen so dass ... ". Ganz und gar nicht dasselbe. iO(i)iO(i)if(i)if(i)fO(1)+O(2)++O(n)f1(1)+f2(2)++fn(n)f1,f2,,fn
JeffE
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.