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 / k≤ n + O ( n1 / 3)
Ciò significa che c'è qualche in modo tale chef∈ O ( n1 / 3)
n ≤ ∑k = 1nK1 / k≤ n + 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)∑nk=1k=∑nk=1O(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))h∈O(g)∑nk=1h(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.