Sıkı bir kanıt istiyorsanız, aşağıdaki lemma çoğunlukla yararlıdır. tanımlardan daha kullanışlı.
c=limn→∞f(n)g(n)
- c=0 ⟺f∈o(g) ,
- c∈(0,∞)⟺f∈Θ(g) ve
- c=∞ ⟺f∈ω(g) .
Bununla algoritma analizinde ortaya çıkan fonksiyonların çoğunu sipariş edebiliyor olmalısınız¹. Bir egzersiz olarak, kanıtlayın!
Tabii ki buna göre sınırları hesaplayabilmelisin. Karmaşık fonksiyonları temel fonksiyonlara indirgeyecek bazı pratik püf noktaları:
- Her iki işlevi de ve üstleri karşılaştırın; eğer oranları ya da ise, orijinal bölüm de öyle. 0 ∞e…0∞
Daha genel: Eğer sürekli türevlenebilir ve kesinlikle işlevi artan bir dışbükey, varsa gibi anahtar bölüm yeniden yazmak, böyleceh
f(n)g(n)=h(f∗(n))h(g∗(n)) ,
ile veg∗∈Ω(1)
limn→∞f∗(n)g∗(n)=∞ ,
sonra
limn→∞f(n)g(n)=∞ .
Bu kuralın titiz bir kanıtı için buraya bakınız (Almanca).
Fonksiyonlarınızın gerçekler üzerinde devam ettiğini düşünün. Artık L'Hôpital'in kuralını kullanabilirsiniz ; koşullarına dikkat et²!
- Kesikli eşdeğer Stolz-Cesàro'ya bakın .
Factorials açıldığında, Stirling'in formülünü kullanın :
n!∼2πn−−−√(ne)n
Ayrıca, bir kez kanıtladığınız ve sık kullandığınız temel ilişkilerden oluşan bir havuzda tutmak yararlıdır:
logaritmalar polinomlardan daha yavaş büyür, yani
α , β > 0(logn)α∈o(nβ) tümü için .α,β>0
polinomların sırası:
α<βnα∈o(nβ) tümü için .α<β
polinomları üstellere göre daha yavaş büyür:
nα∈o(cn) hepsi ve .αc>1
Limit mevcut olmadığı için yukarıdaki lemmanın geçerli olmaması söz konusu olabilir (örneğin, fonksiyonlar salındığında). Bu durumda, Landau sınıflarının aşağıdaki gibi üst / alt limes kullanan karakterizasyonunu göz önünde bulundurun :
İle Elimizdekics:=lim supn→∞f(n)g(n)
- 0≤cs<∞⟺f∈O(g) ve
- cs=0⟺f∈o(g) .
İle Elimizdekici:=lim infn→∞f(n)g(n)
- 0<ci≤∞⟺f∈Ω(g) ve
- ci=∞⟺f∈ω(g) .
Ayrıca,
- 0<ci,cs<∞⟺f∈Θ(g)⟺g∈Θ(f) ve
- ci=cs=1⟺f∼g .
Yazımla karıştıysanız, burada ve burada kontrol edin .
Not: Meslektaşım birçok fonksiyon için bunu başarıyla yapan bir Mathematica fonksiyonu yazdı, bu yüzden lemma işi gerçekten mekanik hesaplamaya indirgiyor.
² Ayrıca bakınız buraya .