O ve worst en kötü ve en iyi durumla nasıl ilişkilidir?


33

Bugün, derste ikili arama kullanarak sıralanmış bir dizide bir eleman bulmak için çok basit bir algoritma tartıştık . Bir n element dizisi için asimptotik karmaşıklığını belirlememiz istendi .

Benim fikrim, daha açık bir şekilde O(logn) , veya olmasıydı, O(log2n)çünkü log2n , en kötü durumda işlem sayısıdır. Fakat daha iyisini yapabilirim, örneğin ilk kez aranan elemana vurursam - o zaman alt sınır Ω(1) .

Öğretim görevlisi çözümü olarak sundu Θ(logn)çünkü algoritmalar için genellikle sadece en kötü durum girişlerini göz önünde bulundururuz.

Neyin sahip noktası sadece kötü durumlarda, dikkate Ama O ve Ω verilen problemin tüm kötü vakalar aynı karmaşıklık var -notation ( Θ Tamam, biz ihtiyacı olurdu?).

Burada ne özlüyorum?


@Smaji: Ne demek istiyorsun? "Ama sadece en kötü vakaları göz önüne alırken, en kötü vakaların + - aynı karmaşıklığa sahip olması durumunda büyük O ve büyük Omega notasyonuna sahip olmanın anlamı ne? lütfen açıkla.
tanmoy

@Smajl: Bence sorunuz şu: Algoritma analizinde Big O ve Big Omega notasyonu gerekliliği nedir? doğrumuyum?
tanmoy

5
O(log2n) , den daha spesifik değildirO(logn), aynı fonksiyon sınıfını belirtir.
Raphael

log2(n) ile aynılog(b)/log(2)×logb(n) bu nedenle 2 sadece büyük diğer faktörler gibi çeşitli faktörlere kaldırma olabilir bir faktör (gösterir -O.
ctrl-alt-delor

Yanıtlar:


39

Landau notasyonu, fonksiyonlarda asimptotik sınırları belirtir . O , Ω ve Θ arasındaki farkların açıklaması için buraya bakınız .OΩΘ

Kötü-iyi-ortalama ya da isim-it-vaka zamanı ayrı çalışma zamanı işlevlerini açıklar: Verilen herhangi birinin en yüksek çalışma zamanı dizisi için bir tane , en düşük oranlardan bunun için birinin, vb ..n

Kendi başlarına, ikisinin birbirleriyle hiçbir ilgisi yok. Tanımlar bağımsızdır. Şimdi çalışma zamanı fonksiyonlarında asimptotik sınırlar oluşturabiliriz: üst ( ), alt ( Ω ) veya her ikisi ( Θ ). En kötüsüyle, en iyisiyle veya başka bir davayla yapabiliriz.OΩΘ

Örneğin, ikili aramada in en iyi durumda çalışma zamanı asimptotik ve Θ ( log n )' nin en kötü durumda olan asimptotik değerini alıyoruz .Θ(1)Θ(logn)


Benim için en önemli şey, asimptotik sınırlanmış fonksiyonların herhangi biri üzerinde en kötü, en iyi durum analizini yapabilmemiz. Bana göre, bu Big O'nun bağımsızlığına karşı en kötü vaka analizini gösteriyor. Teşekkürler!
Patrick

1
@Patrick Pek değil. Her şeyden önce, en kötü, ortalama veya en iyi durumu analiz etmek isteyip istemediğinize karar verirsiniz. Sonra maliyet fonksiyonu ile (ya da olabildiğince iyi bir yaklaşım) ile gelip . Ancak o zaman asimptotik kullanıyorsunuz.
Raphael

17

Aşağıdaki algoritmayı (veya prosedürü veya bir kod parçasını veya neyse) düşünün:

Contrive(n)
1. if n = 0 then do something Theta(n^3)
2. else if n is even then
3.    flip a coin
4.    if heads, do something Theta(n)
5.    else if tails, do something Theta(n^2)
6. else if n is odd then
7.    flip a coin
8.    if heads, do something Theta(n^4)
9.    else if tails, do something Theta(n^5)

Bu fonksiyonun asimptotik davranışı nedir?

En iyi durumda ( eşit olduğu yerde ), çalışma zamanı Ω ( n ) ve O ( n 2 ) olur , ancak hiçbir şeyin Θ değildir .nΩ(n)O(n2)Θ

En kötü durumda ( garip olduğu) çalışma zamanı Ω ( n 4 ) ve O ( n 5 ) olur , ancak hiçbir şeyin Θ değildir .nΩ(n4)O(n5)Θ

durumunda , çalışma zamanı Θ ( n 3 ) 'dir .n=0Θ(n3)

Bu biraz tartışmalı bir örnektir, ancak yalnızca sınır ile dava arasındaki farkları açıkça göstermek amacıyla. Yapmakta olduğunuz aktiviteleri bilinen yoksa sen, ayrım tamamen deterministik prosedürlere anlamlı hale olabilir sınırları.Θ


1
Bu deterministik yapmak için durumlarda bölün . nmod4
vonbrand

4

[logn+1]T(n)T(n)=Θ(logn)

Öte yandan, diğer algoritmalar için egzersiz yapamayabilirsiniz T(n)

[logn+1]S[n]|S|2


1

OΘT(n)=n2+n+2T(n)=O(n2)T(n)=Θ(n2) . Bu kayıtsız davranışı iki nedenden dolayı niteliyorum. İlk olarak, birçok kişi görür.OΘΩOΘ

OΘΘΘ(1)Θ(logn)OO(logn)ΘO


O(logn)Θ(logn)

@Raphael Sizi iki gösterimin tanımlarına yönlendiririm. Dahası, çeşitli zamanlardaki cevap ve yorumlarınızın yaydığı zamanlar değil, çalışma zamanının asimptotik "büyüme hızını" sınıflandırmak için kullanıldığını fark edin.
Hamed Nassar
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.