Üst ve alt sınırların “doğru” tanımı nedir?


19

Let f(n) olmak boyut girişindeki bir sorun nedeniyle çalışma süresi en kötü durum n . N = 2 k için ancak n = 2 k + 1 için f ( n ) = n'yi düzelterek sorunu biraz tuhaflaştıralım .f(n)=n2n=2kf(n)=nn=2k+1

  1. Peki, sorunun alt sınırı nedir? Anlama şeklim ' nin sadece alt sınırıdır f(n). Fakat biliyoruz ki , tüm , için doğru olmayan , sabitinin olduğunu ima ediyor . Bu yüzden sadece diyebiliriz . Ama genellikle, sorunun alt sınırı olduğunu söyleyeceğiz , değil mi?k n 0 n > n 0 f ( n ) > k n 2 f ( n ) = Ω ( n ) Ω ( n 2 )f(n)=Ω(n2)kn0n>n0f(n)>kn2f(n)=Ω(n)Ω(n2)

  2. Varsayarak sabit olduğu anlamına gelir, , bu şekilde tüm , . Bir problemin çalışma süresinin olduğunu varsayalım . Eğer bu problemi tüm primerler için başka bir probleme indirgeyebilirsek (aynı giriş büyüklüğünde), diğer problemin çalışma süresinin daha düşük sınırı olduğunu söyleyebilir miyiz ?k n 0 n > n 0 g ( n ) > k n 2 g ( n ) n Ω ( n 2 )g(n)=Ω(n2)kn0n>n0g(n)>kn2g(n)nΩ(n2)


12
Bu yüzden matematikçiler lim sup ve lim inf kullanırlar.
Peter Shor

1
Bence farkı anlıyorum. Bence post insanlar Omega'yı sonsuz sıklıkta anlayacaklar. Ancak açık bir ayrım yapmak istersem, onu genişletmekten başka kullanabileceğim gösterimler var mı?
Wei Yu

3
k
lim supg(n)n2k
kg(n)kn2
lim infg(n)n2k
g(n)kn2n
 

12
@Wei: Çoğu karmaşıklık teorisyenine (aşağıdaki Lance'e bakın), fonksiyonunuz θ (n ^ 2); çoğu algoritmaya göre (bkz. Knuth veya CLRS), fonksiyonunuz Ο (n ^ 2) ve Ω (n) 'dir. Her iki gösterim de alt topluluklarında neredeyse tamamen değil standarttır; işleri daha da kötüleştirmek için, bu iki alt topluluk büyük ölçüde örtüşüyor! Eğer kullandığınız notasyonu konularda Yani, sen gerekir kullanmakta olduğunuz notasyonu açıkça söylemek. (Neyse ki, nadiren önemli.)
Jeffε

2
@Jeffe. Yorumunuzu cevap olarak göndermeniz gerektiğine inanıyorum.
chazisop

Yanıtlar:


13

nin doğru tanımı, sonsuz sayıda , olacak şekilde bazı olmasıdır . Alt sınırların sonsuz sıklıkta tanımlanması sorunlarınızı ele alır ve bunu pratikte nasıl kullandığımızdır.k > 0 n f ( n ) k n 2f(n)=Ω(n2)k>0nf(n)kn2

2005 yılında bu konuda bir yazı yaptım .

Bazı ders kitapları bu tanımı doğru yapar, bazıları anlamıyor.


14
Knuth seninle aynı fikirde değil: portal.acm.org/citation.cfm?id=1008329
Jeffε

4
CLRS ve Wikipedia da sizinle aynı fikirde değil. Sonsuz sıklıkla tanım, dikkate değer bir alternatiftir, ancak daha az yaygın olarak kullanılmaktadır.
İsimsiz

sanırım bu tanımların hepsi istisna seti 0 olduğunda
ölçüldü

2
"Sonsuz sıklıkla" tanımlarıyla ilgili sorun, genellikle "sonsuz sıklıkta değil" i dışlamamalarıdır. Bu nedenle değil, aynı zamanda olan korkunç sonuçlara sahibiz , burada ve bazılarında katı siparişler olması gerekiyordu. duygusu. Bunu gerçekten sevmedim. En azından @ Carter'ın tedbir 0 istisnaları önerisi, normalden daha iyi bir düzene izin verirken, biraz daha az korkunç. f ( n ) = o ( n + 1 ) Ω of(n)=Ω(n2) f(n)=o(n+1)Ωo
András Salamon

2
@Jukka: Hayır, kötüye ediyorum burada. İpucu olarak , yerine kullanmak için argümanımı düzeltmem gerekiyor . yüzden veya kullanmadan asıl itirazı yeniden ifade edeyim . "Sonsuz sıklıkla" ile, , , ancak anomalisi vardır . Yani ön sipariş bile oluşturmaz. O o o O n = Ω ( f ( n ) ) f ( n ) = Ω ( n 2 ) n Ω ( n 2 ) ΩoOooOn=Ω(f(n))f(n)=Ω(n2)nΩ(n2)Ω
András Salamon

4

İle Knuth 'ın tanımı sadece iddia edebilir . Gözlemlediğiniz gibi, bu sezgisel değildir ve Vitányi ve Meertens'in "vahşi" olarak adlandırdığı işlevler için olur . Onlar tanımlamak için tekliff(n)Ω(n)

Ω(f(n))={gδ>0:n0>0:n>n0:g(n)δf(n)}.

(Bu Lance'in tanımıyla aynıdır.) Bu tanımla .f(n)Ω(n2)


2

En yaygın olarak kullanılanı bilmiyorum, ama en eski kullanımı bildiğime inanıyorum (yine de bilgisayar bilimi için).

Hartmanis & Stearns'ın "Algoritmaların hesaplama karmaşıklığı hakkında" adlı 1965 tarihli makalesinde, Corollary 2.1:

Eğer ve zaman fonksiyonları olacak şekilde sonrat inf n T ( n )UTinfnT(n)U(n)0SUST

burada , hesaplanabilir tüm problemlerin karmaşıklık sınıfıdır . T (n) bazı tamsayıları ve tüm ve için uymak zorundadır , ancak zamanla yapılandırılabilir olması gerekmez.SKO(K(n))T(n)n/kknT(n)T(n+1)

İşleviniz için ilk kurala uyuyor ancak ikinci kurala uymuyor.k=1

Sonuç 2.2, yukarıdakilerin iki yönlüdür ve limit supremum kullanır, ancak yine de bu gereksinimleri vardır. Sanırım algoritmalar yıllar geçtikçe daha karmaşık hale geldiğinden, gereksinimlerin rahatlatılması mümkündür.


2

İki şey arasında ayrım yapmamız gerektiğini düşünüyorum:

  • bir işlev için bir alt sınır
  • bir problem için bir alt sınır (algoritma)

Fonksiyonlar için, bir siparişi düzelttiğimizde alt sınır / üst sınır tanımını izler. Sıra ilişkisi asimptotik büyükleşme ise (sabit faktörleri göz ardı ederek)

fg:c,nm>n. f(x)cg(x)

tanım, ve olağan tanımıdır . Her ikisi de kombinatorik gibi diğer alanlarda yaygın olarak kullanılmaktadır.ΩOΩ

Ancak, bir sorun (algoritma) için bir alt sınırdan bahsettiğimizde, gerçekten söylemek istediğimiz, sorunun belirli miktarda kaynak gerektirmesidir (problemi çözen algoritmayı çalıştırmak için). Genellikle karmaşıklık sınıfları gibi işlevlerle parametrelendirilir ve sorunun basitçe bir işlevle alt sınırda olduğunu söyleriz, ancak bu sadece güzel işlevler için çalışır (örn. Algoritmanın çalışma süresi) monoton, vb.). Bu durumlarda söylemek istediğimiz , sorunu çözmek için çalışma süresine ihtiyacımız var , yani çalışma süresinden daha az yeterli değil, bu da resmi olarak Lance'in algoritmanın çalışma süresinin olmadığı tanımına dönüşüyor .n 2 n 2 o ( t ( n ) )Time(t(n))n2n2o(t(n))

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.