Я написал
но мой друг говорит, что это неправильно. Из шпаргалки TCS я знаю, что сумма также называется которая имеет логарифмический рост по . Таким образом, моя граница не очень четкая, но достаточна для анализа, который мне был нужен.
Что я сделал не так?
Изменить : мой друг говорит, что с тем же рассуждением, мы можем доказать, что
Теперь это явно неправильно! Что здесь происходит?
asymptotics
landau-notation
Рафаэль
источник
источник
Ответы:
То, что вы делаете, - это очень удобное злоупотребление нотацией.
Некоторые педанты скажут, что то, что вы пишете, является чепухой, поскольку обозначает множество, и вы не можете выполнять арифметические операции над ними так, как вы это делаете.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 ) е( н ) е это функция!)
Это делает очень удобным для написания таких выражений, как
Это означает, что есть некоторые таким образом, чтоf∈O(n1/3)
В вашем случае
Вы злоупотребляете этим еще больше, и вам нужно быть осторожным.
Здесь возможны две интерпретации: относится ли к функции n или функции k ?O(1) n k
Я считаю, что правильное толкование - это интерпретировать его как функцию от .k
Если вы попытаетесь думать о нем как о функции , считая его неправильным, это может привести к потенциальным ошибкам, например, если думать, что k есть O ( 1 ), и пытаться записать ∑ n k = 1 k = ∑ n k = 1 O ( 1 )n k O(1) ∑nk=1k=∑nk=1O(1)
Если вы попытаетесь думать об этом как о функции , то верно, что если f = O ( g ) (как аргумент переходит к ∞ ) и g никогда не равно 0 , тоk f=O(g) ∞ g 0
Обратите внимание, что в середине мы использовали удобное злоупотребление обозначениями для обозначения того, что для некоторой функции h ∈ O ( g ) сумма равна k n k = 1 h ( k ) . Обратите внимание, что заключительная функция внутри O относится к функции n . Доказательство не так сложно, но вы должны учитывать тот факт, что вы имеете дело с асимптотической верхней границей (т.е. для достаточно больших аргументов), но сумма начинается прямо с 1 .O(g(k)) h∈O(g) ∑nk=1h(k) O n 1
Если вы попытаетесь представить его как функцию от , то также верно, что если f = O ( g ) (как аргумент идет к ∞ ), тоn f=O(g) ∞
Таким образом, ваше доказательство по существу правильно, в любой интерпретации.
источник
То, что вы написали, совершенно правильно. Номер й гармоники действительно находится в множестве O ( n ) .n O(n)
Доказательство: . ◻∑ni=11i≤lnn+1≤2n=O(n) □
Верхняя граница не жесткая , но она правильная.O(n)
источник
Для второго примера, вы не можете утверждать, что
посколькуя зависит от N , После нескольких шагов это будет так, чтоi>n/2 . A more appropriate way is to say that i=O(n) since indeed, throughout the summation i never exceeds 1⋅n . By this reasoning,
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.
источник