O que você está fazendo é um abuso muito conveniente de notação.
Alguns pedantes dirão que o que você escreve não faz sentido, pois indica um conjunto e você não pode fazer operações aritméticas com eles do jeito que está fazendo.O (f)
Mas é uma boa idéia ignorar esses pedantes e assumir que representa algum membro do conjunto. Então, quando dizemos , o que realmente queremos dizer se . (Nota: alguns pedantes também podem tremer com essa afirmação, alegando que é um número é a função!)f ( n ) = g ( n ) + O ( n ) f ( n ) - g ( n ) ∈ O ( n ) f ( n ) fO (f)f( n ) = g( n ) + O ( n )f( n ) - g( n ) ∈ O ( n )f( N )f
Isso torna muito conveniente escrever expressões como
n ≤ ∑k = 1nk1 / k≤ n + O ( n1 / 3)
O que isso significa é que existe algum tal quef∈ O ( n1 / 3)
n ≤ ∑k = 1nk1 / k≤ n + f( N )
No seu caso de
∑k = 1n1k= ∑k = 1nO ( 1 ) = O ( n )
você está abusando ainda mais e precisa ter cuidado.
Existem duas interpretações possíveis aqui: refere a uma função de ou a uma função de ?n kO(1)nk
Eu acredito que a interpretação correta é interpretá-la como uma função de .k
Se você tentar pensar nisso como uma função de , se considerado incorreto, poderá levar a possíveis falácias, como pensar que é e tentar escreverk O ( 1 ) ∑ n k = 1 k = ∑ n k = 1 O ( 1 )nkO(1)∑nk=1k=∑nk=1O(1)
Se você tentar pensar nisso como uma função de , é verdade que, se (como o argumento vai para ) e nunca for , issof = O ( g ) ∞ g 0kf=O(g)∞g0
S(n)=∑k=1nf(k)=∑k=1nO(g(k))=O(∑k=1n|g(k)|)
Observe que no meio, usamos o conveniente abuso da notação para significar que, para alguma função a soma é . Observe que a função final dentro de se refere a uma função de . A prova não é tão difícil, mas você deve considerar o fato de estar lidando com um limite superior assintótico (ou seja, para argumentos suficientemente grandes), mas a soma começa em .h ∈ O ( g ) ∑ n k = 1 h ( k ) O n 1O(g(k))h∈O(g)∑nk=1h(k)On1
Se você tentar pensar nisso como uma função de , também é verdade que se (como o argumento vai para ), entãof = O ( g ) ∞nf=O(g)∞
S(n)=∑k=1nf(k)=∑k=1nO(g(n))=O(ng(n))
Portanto, sua prova é essencialmente correta, em qualquer uma das interpretações.