Если вы хотите строгое доказательство, следующая лемма часто полезна, соответственно. более удобный, чем определения.
Если c=limn→∞f(n)g(n) существует, тогда
- c=0 ⟺f∈o(g) ,
- c∈(0,∞)⟺f∈Θ(g) и
- c=∞ ⟺f∈ω(g) .
Благодаря этому вы сможете упорядочить большинство функций, возникающих при анализе алгоритмов¹. В качестве упражнения докажи это!
Конечно, вы должны быть в состоянии рассчитать пределы соответственно. Вот некоторые полезные приемы, чтобы разбить сложные функции на базовые:
- Выразите обе функции как e… и сравните показатели; если их отношение стремится к 0 или ∞ , то же самое происходит и с исходным отношением.
В более общем смысле: если у вас есть выпуклая, непрерывно дифференцируемая и строго возрастающая функция h так что вы можете переписать свой коэффициент как
f(n)g(n)=h(f∗(n))h(g∗(n)) ,
с g∗∈Ω(1) и
,limn→∞f∗(n)g∗(n)=∞
тогда
.limn→∞f(n)g(n)=∞
Смотрите здесь для строгого доказательства этого правила (на немецком языке).
Рассмотрим продолжение ваших функций над реалами. Теперь вы можете использовать правило L'Hôpital ; будьте внимательны к его условиям²!
- Взгляните на дискретный эквивалент Штольца-Чезаро .
Когда появляются факториалы, используйте формулу Стирлинга :
n!∼2πn−−−√(ne)n
Также полезно сохранить пул базовых отношений, которые вы доказываете один раз и используете часто, например:
логарифмы растут медленнее, чем полиномы, т.е.
для всех α , β > 0 .(logn)α∈o(nβ)α,β>0
порядок полиномов:
для всехα<β.nα∈o(nβ)α<β
полиномы растут медленнее, чем экспоненты:
для всехαиc>1.nα∈o(cn)αc>1
Может случиться так, что приведенная выше лемма неприменима, потому что предел не существует (например, когда функции колеблются). В этом случае рассмотрим следующую характеристику классов Ландау с использованием Limes улучшенный / низший :
При у нас естьcs:=lim supn→∞f(n)g(n)
- и0≤cs<∞⟺f∈O(g)
- .cs=0⟺f∈o(g)
При у нас естьci:=lim infn→∞f(n)g(n)
- и0<ci≤∞⟺f∈Ω(g)
- .ci=∞⟺f∈ω(g)
Более того,
- и0<ci,cs<∞⟺f∈Θ(g)⟺g∈Θ(f)
- .ci=cs=1⟺f∼g
Проверьте здесь и здесь, если вас смущают мои записи.
¹ Примечание: мой коллега написал функцию Mathematica, которая успешно выполняет это для многих функций, поэтому лемма действительно сводит задачу к механическим вычислениям.
² Смотрите также здесь .