Что не так с суммами терминов Ландау?


14

Я написал

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

но мой друг говорит, что это неправильно. Из шпаргалки TCS я знаю, что сумма также называется Hn которая имеет логарифмический рост по n . Таким образом, моя граница не очень четкая, но достаточна для анализа, который мне был нужен.

Что я сделал не так?

Изменить : мой друг говорит, что с тем же рассуждением, мы можем доказать, что

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

Теперь это явно неправильно! Что здесь происходит?


2
Смотрите обсуждение тегов этого вопроса здесь .
Рафаэль


См. Также более конкретную обработку распространенного примера: какова асимптотическая среда выполнения этого вложенного цикла?
Жиль "ТАК - перестань быть злым"

Ответы:


10

То, что вы делаете, - это очень удобное злоупотребление нотацией.

Некоторые педанты скажут, что то, что вы пишете, является чепухой, поскольку обозначает множество, и вы не можете выполнять арифметические операции над ними так, как вы это делаете.O(f)

Но это хорошая идея - игнорировать этих педантов и предполагать, что обозначает некоторый член набора. Поэтому, когда мы говорим f ( n ) = g ( n ) + O ( n ) , что мы действительно имеем в виду, если это f ( n ) - g ( n ) O ( n ) . (Примечание: некоторые педанты тоже могут вздрогнуть от этого утверждения, утверждая, что f ( n ) - это число, а fO(f)f(n)=g(n)+O(n)е(N)-грамм(N)О(N)е(N)е это функция!)

Это делает очень удобным для написания таких выражений, как

nk=1nk1/kn+O(n1/3)

Это означает, что есть некоторые таким образом, чтоfO(n1/3)

nk=1nk1/kn+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)k=1nk=k=1nO(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))hO(g)k=1nh(k)On1

Если вы попытаетесь представить его как функцию от , то также верно, что если f = O ( g ) (как аргумент идет к ), тоnf=O(g)

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

Таким образом, ваше доказательство по существу правильно, в любой интерпретации.


1
Итог: Помните (убедитесь), что каждое вхождение символа Ландау вводит (имеет) свою собственную константу .
Рафаэль

8

То, что вы написали, совершенно правильно. Номер й гармоники действительно находится в множестве O ( n ) .nO(n)

Доказательство: . i=1n1ilnn+12n=O(n)

Верхняя граница не жесткая , но она правильная.O(n)


4
Хорошо: 1 / i ≤ 1 = O (1).
Джефф

1
Концерн направлен на второй знак равенства. Как мне это проверить?
Рафаэль

2
Но это тоже правильно. Сумма из n членов, каждый из которых является O (1), действительно является O (n).
Суреш

2
O

2
iO(1)=O(n)i=O(1)

6

Для второго примера, вы не можете утверждать, что

язнак равноО(1)

поскольку я зависит от N, После нескольких шагов это будет так, что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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.