То, что вы делаете, - это очень удобное злоупотребление нотацией.
Некоторые педанты скажут, что то, что вы пишете, является чепухой, поскольку обозначает множество, и вы не можете выполнять арифметические операции над ними так, как вы это делаете.O (f)
Но это хорошая идея - игнорировать этих педантов и предполагать, что обозначает некоторый член набора. Поэтому, когда мы говорим f ( n ) = g ( n ) + O ( n ) , что мы действительно имеем в виду, если это f ( n ) - g ( n ) ∈ O ( n ) . (Примечание: некоторые педанты тоже могут вздрогнуть от этого утверждения, утверждая, что f ( n ) - это число, а fO (f)е( n ) = г( n ) + O ( n )е( n ) - г( n ) ∈ O ( n )е( н )е это функция!)
Это делает очень удобным для написания таких выражений, как
n ≤ ∑к = 1NК1/k≤n+O(n1/3)
Это означает, что есть некоторые таким образом, чтоf∈O(n1/3)
n≤∑k=1nk1/k≤n+f(n)
В вашем случае
∑k=1n1k=∑k=1nO(1)=O(n)
Вы злоупотребляете этим еще больше, и вам нужно быть осторожным.
Здесь возможны две интерпретации: относится ли к функции n или функции k ?O(1)nk
Я считаю, что правильное толкование - это интерпретировать его как функцию от .k
Если вы попытаетесь думать о нем как о функции , считая его неправильным, это может привести к потенциальным ошибкам, например, если думать, что k есть O ( 1 ), и пытаться записать ∑ n k = 1 k = ∑ n k = 1 O ( 1 )nkO(1)∑nk=1k=∑nk=1O(1)
Если вы попытаетесь думать об этом как о функции , то верно, что если f = O ( g ) (как аргумент переходит к ∞ ) и g никогда не равно 0 , тоkf=O(g)∞g0
S(n)=∑k=1nf(k)=∑k=1nO(g(k))=O(∑k=1n|g(k)|)
Обратите внимание, что в середине мы использовали удобное злоупотребление обозначениями для обозначения того, что для некоторой функции h ∈ O ( g ) сумма равна k n k = 1 h ( k ) . Обратите внимание, что заключительная функция внутри O относится к функции n . Доказательство не так сложно, но вы должны учитывать тот факт, что вы имеете дело с асимптотической верхней границей (т.е. для достаточно больших аргументов), но сумма начинается прямо с 1 .O(g(k))h∈O(g)∑nk=1h(k)On1
Если вы попытаетесь представить его как функцию от , то также верно, что если f = O ( g ) (как аргумент идет к ∞ ), тоnf=O(g)∞
S(n)=∑k=1nf(k)=∑k=1nO(g(n))=O(ng(n))
Таким образом, ваше доказательство по существу правильно, в любой интерпретации.