Cosa non va nelle somme dei termini di Landau?


14

scrissi

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

ma il mio amico dice che questo è sbagliato. Dal cheat sheet TCS so che la somma è anche chiamata che ha una crescita logaritmica in . Quindi il mio limite non è molto nitido, ma è sufficiente per l'analisi di cui avevo bisogno. nHnn

Che cosa ho fatto di sbagliato?

Modifica : il mio amico dice che con lo stesso ragionamento, possiamo dimostrarlo

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

Ora questo è ovviamente sbagliato! Cosa sta succedendo qui?


2
Vedi una discussione sui tag di questa domanda qui .
Raffaello


Risposte:


10

Quello che stai facendo è un abuso di notazione molto conveniente.

Alcuni pedanti diranno che ciò che scrivi non ha senso, poiché indica un insieme e non puoi fare operazioni aritmetiche su di loro nel modo in cui stai facendo.O(f)

Ma è una buona idea ignorare quei pedanti e supporre che rappresenti un membro del set. Quindi quando diciamo f ( n ) = g ( n ) + O ( n ) , cosa intendiamo realmente se f ( n ) - g ( n ) O ( n ) . (Nota: alcuni pedanti potrebbero rabbrividire anche a questa affermazione, sostenendo che f ( n ) è un numero e fO(f)f(n)=g(n)+O(n)f(n)-g(n)O(n)f(n)f è la funzione!)

Questo rende molto conveniente scrivere espressioni come

nΣK=1nK1/Kn+O(n1/3)

Ciò significa che c'è qualche in modo tale chefO(n1/3)

nΣK=1nK1/Kn+f(n)

Nel tuo caso di

k=1n1k=k=1nO(1)=O(n)

lo stai abusando ancora di più e devi stare attento.

Ci sono due possibili interpretazioni qui: riferimento a una funzione di n , o una funzione di k ?O(1)nk

Credo che la giusta interpretazione sia interpretarla come una funzione di .k

Se provi a pensarla come una funzione di , ritenuta non errata, potrebbe portare a potenziali errori, come pensare che k sia O ( 1 ) e provare a scrivere n k = 1 k = n k = 1 O ( 1 )nkO(1)k=1nk=k=1nO(1)

Se provi a pensarlo come una funzione di , allora è vero che, se f = O ( g ) (poiché l'argomento va a ) e g non è mai 0 , quellokf=O(g)g0

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

Si noti che nel mezzo abbiamo usato l'abuso conveniente della notazione per indicare che per alcune funzioni h O ( g ) la somma è n k = 1 h ( k ) . Si noti che la funzione finale all'interno di O si riferisce a una funzione di n . La prova non è così difficile, ma devi fare attenzione al fatto che hai a che fare con un limite superiore asintotico (cioè per argomenti sufficientemente grandi), ma la somma inizia proprio da 1 .O(g(k))hO(g)k=1nh(k)On1

Se provi a pensarlo come una funzione di , allora è anche vero che se f = O ( g ) (poiché l'argomento va a ), alloranf=O(g)

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

Quindi la tua prova è essenzialmente corretta, in entrambe le interpretazioni.


1
In conclusione: sii consapevole (assicurati) che ogni ricorrenza di un simbolo Landau introduce (ha) una sua costante .
Raffaello

8

Quello che hai scritto è perfettamente corretto. Il -esimo numero armonico è infatti nel set O ( n ) .nO(n)

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

The upper bound O(n) isn't tight, but it's correct.


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

1
The concern is directed at the second equality sign. How do I verify that?
Raphael

2
Ma è anche corretto. Una somma di n termini, ognuno dei quali è O (1), è effettivamente O (n).
Suresh,

2
O

2
The bug is not in the second equality. the bug (in the second expression) is in how you GET to that summation. Going from iO(1)=O(n) is correct. It's claiming that i=O(1) is wrong. I realize this is obvious to all concerned, but I think this is the problem with 'seeding' questions :)
Suresh

6

For the second example, you can't claim that

i=O(1)

since i varies with n. After few steps it will be the case that i>n/2. A more appropriate way is to say that i=O(n) since indeed, throughout the summation i never exceeds 1n. By this reasoning,

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

However the right thing to do is actually use the big-O notation only at the end. Upper bound your summation as tight as you can, and only when your done use the asymptotic notations to avoid these pitfalls.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.