Was stimmt nicht mit Landau-Begriffen?


14

Ich schrieb

i=1n1i=i=1nO(1)=O(n)

aber mein freund sagt das ist falsch. Aus dem TCS-Spickzettel weiß ich, dass die Summe auch heißt und logarithmisch in . Meine Schranke ist also nicht sehr scharf, reicht aber für die Analyse aus, für die ich sie brauchte.Hnn

Was habe ich falsch gemacht?

Bearbeiten : Mein Freund sagt, dass mit der gleichen Begründung können wir das beweisen

ich=1nich=ich=1nÖ(1)=Ö(n)

Das ist natürlich falsch! Was geht hier vor sich?


2
Eine Diskussion über die Tags dieser Frage finden Sie hier .
Raphael

Metadiskussion über die Tag- Algorithmen .
Kaveh

Siehe auch eine konkretere Behandlung eines allgemeinen Beispiels: Was ist die asymptotische Laufzeit dieser verschachtelten Schleife?
Gilles 'SO - hör auf böse zu sein'

Antworten:


10

Was Sie tun, ist ein sehr bequemer Missbrauch der Notation.

Einige Pedanten werden sagen, dass das, was Sie schreiben, Unsinn ist, da eine Menge bezeichnet und Sie keine arithmetischen Operationen mit ihnen ausführen können, wie Sie es tun.Ö(f)

Es ist jedoch eine gute Idee, diese Pedanten zu ignorieren und anzunehmen, dass für ein Mitglied der Gruppe steht. Wenn wir also f ( n ) = g ( n ) + O ( n ) sagen , was meinen wir dann wirklich, wenn f ( n ) - g ( n ) O ( n ) . (Hinweis: Einige Pedanten könnten bei dieser Aussage ebenfalls erschauern und behaupten, dass f ( n ) eine Zahl und f istÖ(f)f(n)=G(n)+Ö(n)f(n)-G(n)Ö(n)f(n)f ist die Funktion!)

Dies macht es sehr bequem, Ausdrücke wie zu schreiben

nk=1nk1/kn+O(n1/3)

Was dies bedeutet , ist , dass es einige ist , so dassfO(n1/3)

nk=1nk1/kn+f(n)

In deinem Fall von

k=1n1k=k=1nÖ(1)=Ö(n)

Sie missbrauchen es noch weiter und müssen vorsichtig sein.

Hier gibt es zwei mögliche Interpretationen: Bezieht sich auf eine Funktion von n oder auf eine Funktion von k ?Ö(1)nk

Ich glaube, die richtige Interpretation besteht darin, sie als Funktion von zu interpretieren .k

Wenn Sie denken, es als eine Funktion der versuchen , dachte nicht falsch, könnte es zu potenziellen Täuschungen führen, wie das Denken k ist O ( 1 ) und zu versuchen , schreiben Σ n k = 1 k = Σ n k = 1 O ( 1 )nkÖ(1)k=1nk=k=1nÖ(1)

Wenn Sie versuchen, es als eine Funktion von , dann ist es wahr, dass, wenn f = O ( g ) (wie das Argument zu geht ) und g niemals 0 ist , dasskf=Ö(G)G0

S(n)=k=1nf(k)=k=1nO(g(k))=O(k=1n|g(k)|)

Beachten Sie, dass wir in der Mitte den bequemen Missbrauch der Notation zu bedeuten, dass für einige Funktionen h O ( g ) die Summe n k = 1 h ( k ) ist . Beachten Sie, dass sich die letzte Funktion im O auf eine Funktion von n bezieht . Der Beweis ist nicht so schwierig, aber Sie müssen sich darum kümmern, dass es sich um eine asymptotische Obergrenze handelt (dh für ausreichend große Argumente), aber die Summe beginnt bei 1 .O(g(k))hO(g)k=1nh(k)On1

Wenn Sie versuchen, es als eine Funktion von , dann ist es auch wahr, dass wenn f = O ( g ) (wie das Argument zu geht ) dannnf=O(g)

S(n)=k=1nf(k)=k=1nO(g(n))=O(ng(n))

Ihr Beweis ist also in jeder Interpretation im Wesentlichen richtig.


1
Fazit: Seien Sie sich bewusst (stellen Sie sicher), dass jedes Vorkommen eines Landau-Symbols eine eigene Konstante einführt (hat) .
Raphael

8

Was Sie geschrieben haben, ist vollkommen richtig. Die te Harmonische liegt tatsächlich in der Menge O ( n ) .nO(n)

Beweis: . i=1n1ilnn+12n=O(n)

Die obere Schranke ist nicht eng , aber korrekt.O(n)


4
Okay: 1 / i ≤ 1 = O (1).
JeffE

1
Die Sorge richtet sich an das zweite Gleichheitszeichen. Wie überprüfe ich das?
Raphael

2
Das ist aber auch richtig. Eine Summe von n Termen, von denen jedes O (1) ist, ist tatsächlich O (n).
Suresh

2
@Suresh Nur wenn die von den O s implizierten Konstanten unabhängig von der Summationsvariablen sind und das hier der Punkt ist (Seed-Frage). O
Raphael

2
Der Fehler ist nicht in der zweiten Gleichheit. Der Fehler (im zweiten Ausdruck) liegt darin, wie Sie zu dieser Summe gelangen. Es ist richtig, von . Es wird behauptet, dass i = O ( 1 ) falsch ist. Mir ist klar, dass dies für alle Beteiligten offensichtlich ist, aber ich denke, dies ist das Problem mit der Frage der Aussaat :)iO(1)=O(n)i=O(1)
Suresh

6

Für das zweite Beispiel können Sie nicht behaupten, dass

i=O(1)

da mit n variiert . Nach wenigen Schritten ist i > n / 2 . Ein geeigneterer Weg ist zu sagen, dass i = O ( n ) ist, da in der Tat während der gesamten Summation i niemals 1 n überschreitet . Durch diese Argumentation, n Σ i = 1 i = n Σ i = 1 O ( n ) = n O ( n ) = O (ini>n/2i=O(n)i1n

i=1ni=i=1nO(n)=nO(n)=O(n2)

Es ist jedoch richtig, die Big-O-Notation nur am Ende zu verwenden. Grenzen Sie Ihre Summe so eng wie möglich ein, und verwenden Sie die asymptotischen Notationen erst dann, wenn Sie fertig sind, um diese Fallstricke zu vermeiden.

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.