Alt sınır ile sıkı sınır arasındaki fark nedir?


100

Bu cevaba referansla , Theta (sıkı sınır) nedir?

Omega alt sınırdır, oldukça anlaşılır, bir algoritmanın alabileceği minimum süredir. Ve Big-O'nun üst sınır için olduğunu biliyoruz, yani bir algoritmanın alabileceği maksimum süre. Ama Theta hakkında hiçbir fikrim yok.

Yanıtlar:


155

Büyük O üst sınır, Omega ise alt sınırdır. Theta , hem Big O hem de Omega gerektirir, bu yüzden buna sıkı bir sınır adı verilir. (hem üst hem de alt sınır olmalıdır) .

Örneğin, bir algoritma Omega(n log n)en az n log nzaman alır , ancak üst sınırı yoktur. En azından (Omega n log n) ve (Big O n log n) ' dan fazlasınıTheta(n log n) gerektirmediği için bir algoritma almak çok tercih edilir .n log n n log n


7
Oh .. Şimdi "sıkı sınır" terimi bana oldukça kendini açıklıyor gibi görünüyor. Teşekkürler Chris. Aptal ben, belki de karmaşık bir fikir bekliyordum. :)
Adeel Ansari

6
Evet, etrafta pek çok süslü nota atılmış ama bir kez kemerinizin altına girdiğinizde çok karmaşık değil.
Chris Bunch

4
Virginia Tech tarafından ücretsiz olarak sunulan bu belge, farklı karmaşıklıklara sahip algoritmalar arasındaki performans farklılıklarını örneklerle açıklıyor ve Asimptotik Analizi kısaca açıklıyor: people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
Alan,

"Teta'yı (n log n) alan bir algoritma, en az n log n (Omega n log n) alır ve n log n'den (Büyük O n log n) fazla olmadığı için çok tercih edilir." İle ne demek istiyorsun? en azından Omega (nlogn) ve max BigO'da (nlogn) yazdığınız gibi bir algoritmanın tam karmaşıklığı mı?
Nikhil Verma

1
Basit bir ifadeyle, en kötü durum olarak üst sınır (Büyük (O)) diyebilir miyiz? ortalama durum olarak sıkı sınır? en iyi durum olarak alt sınır (Omega)?
Revanth

113

Θ-gösterimi (teta gösterimi) sıkı sınır olarak adlandırılır çünkü O-gösteriminden ve Ω-gösteriminden (omega gösterimi) daha kesindir.

Tembel olsaydım, sıralanmış bir dizide ikili aramanın O (n 2 ), O (n 3 ) ve O (2 n ) olduğunu söyleyebilirdim ve her durumda teknik olarak doğru olurdum. Bunun nedeni, O-notasyonunun yalnızca bir üst sınır belirtmesidir ve ikili aramanın yüksek tarafta tüm bu işlevler tarafından sınırlandırılmasıdır, sadece çok yakından değil. Bu tembel tahminler işe yaramaz .

Θ-notasyonu, O-notasyonu ve Ω-notasyonu birleştirerek bu problemi çözer . İkili aramanın Θ (log n) olduğunu söylersem, bu size daha kesin bilgi verir. Size algoritmanın verilen fonksiyon tarafından her iki tarafta da sınırlandırıldığını söyler , bu nedenle asla belirtilenden çok daha hızlı veya daha yavaş olmayacaktır.


11
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case- Öyle görünüyor ki, bilgisayar dünyasındaki çoğu insan tembeldir, çünkü herkes yalnızca Big O karmaşıklıklarından bahsetmektedir.
RBT

If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every caseBirisinin bununla karıştırılması durumunda: Asimptotik olarak sıkı olmayan bu tür işlevler için küçük-o gösterimi kullanılır. Örnek: - Bağlı 2n ^ 2 = O (n ^ 2) asimptotik olarak sıkıdır, ancak 2n = O (n ^ 2) sınırı değildir. Daha fazla bilgi için: stackoverflow.com/questions/1364444/…
Dragos Strugar

18

O (f (n)) olan bir şeye sahipseniz bu, f (n)kg (n) olacak şekilde k , g (n) olduğu anlamına gelir. .

Eğer Ω (f (n)) olan bir şeye sahipseniz bu, f (n)kg (n) olacak şekilde k , g (n) olduğu anlamına gelir. .

Ve O (f (n)) ve Ω (f (n)) olan bir şeye sahipseniz , o zaman Θ (f (n) 'dir .

Wikipedia makalesi eğer biraz yoğun, iyi.


Şimdi Bachmann-Landau notasyonlarının ailesini okuyorum. Teşekkürler Charlie, oraya daha önce gittim, ancak uzunluğuna devam etmeden döndüm.
Adeel Ansari

Hey, doktora kompozisyonlarını ara sıra yenilemek iyidir.
Charlie Martin

Landau'nun büyük-O gösteriminin algoritmik karmaşıklıkla sınırlı olmadığına dikkat edin.
Charlie Martin

Bu yanlış görünüyor. İlk satırda "O (g (n)) olan bir şeye sahipseniz", yani gyerine yazmalıdır fve gerisi olduğu gibi bırakılabilir. Aynısı ikinci satır için de geçerli: "Eğer Ω (g (n)) olan bir şeye sahipseniz" olmalıdır. Lütfen iki kez kontrol edebilir misin?
Fabio

Konunun tamamı o kadar karışık ki, bu itibarı olan biri de yanlış anlayabilir: D Şaka bir yana, birinin bu cevabı düzeltmesi gerekiyor. Bu insanların kafasını karıştırıyor (bana çok şey yaptı).
Rad

5

Asimptotik üst sınır , belirli bir algoritmanın giriş sayısına bağlı olarak maksimum süre boyunca yürütüldüğü anlamına gelir.

Örnek olarak bir sıralama algoritması alalım. Bir dizinin tüm öğeleri azalan sıradaysa, onları sıralamak O(n), üst sınır karmaşıklığını gösteren bir çalışma süresi alacaktır . Dizi zaten sıralıysa, değer olacaktır O(1).

Genellikle O-notationüst sınır karmaşıklığı için kullanılır.


Asimptotik olarak sıkı sınır (c 1 g (n) ≤ f (n) ≤ c 2 g (n)), bir fonksiyon için ortalama bağlı karmaşıklığı gösterir; burada c 1 ve c 2 sabittir.


1
dizi sıralanırsa, sınır yine O (n) olacaktır
Arun Aravind

2
@ArunAravind Nedenini açıklar mısınız?
nbro

3

Minimum süre ve maksimum süre cümleleri burada biraz yanıltıcıdır. Büyük O notasyonları hakkında konuştuğumuzda, asıl ilgilendiğimiz zaman değil, girdi boyutumuz büyüdükçe zamanın nasıl arttığıdır. Ve genellikle bahsettiğimiz ortalama veya en kötü durum zamanıdır, en iyi durum değil , genellikle sorunlarımızı çözmede anlamlı değildir.

Örnek olarak diğer sorunun kabul edilen yanıtında dizi aramasını kullanmak. Numara n listesinde belirli bir sayıyı bulmak için geçen süre n / 2 * ortalama olarak sabittir. Bunu bir işlev olarak ele alırsanız , Charlie'nin verdiği anlamda f(n) = n/2*some_constantdaha hızlı artmaz g(n) = n. Ayrıca, her g(n)ikisinden de daha yavaş artmaz . Bu nedenle, g(n)aslında f(n)Big-O gösteriminde hem bir üst sınır hem de alt sınırdır , dolayısıyla doğrusal aramanın karmaşıklığı tam olarak n'dir. , yani Theta (n).

Bu bağlamda, diğer soruya verilen kabul edilen yanıttaki açıklama tamamen doğru değildir, bu da O (n) 'nin üst sınır olduğunu iddia eder çünkü algoritma bazı girdiler için sabit zamanda çalışabilir (bu yukarıda bahsettiğim en iyi durumdur , Bu gerçekten çalışma süresi hakkında bilmek istediğimiz şey değil).


Öyleyse, Ω'nin en iyi durum ve O'nun en kötü durum olduğunu söyleyebilir miyiz? . .. ve terimleri sırasıyla en iyi durum ve en kötü durum olarak değiştirmeli miyiz?
Adeel Ansari

Herhangi bir sorun için en iyi durum O (1)?
Zach Langley

1
@Adeel, hayır, Theta ve O, hem ortalama hem de en kötü durumu ifade edebilir. @Zach, tam olarak değil. Bunu belirttiğiniz için teşekkürler.
PolyThinker

0

Tembel olsaydım, sıralanmış bir dizide ikili aramanın O (n2), O (n3) ve O (2n) olduğunu söyleyebilirdim ve her durumda teknik olarak doğru olurdum.

Asimptotik olarak sıkı olmayan bir üst sınırı belirtmek için o-notasyonunu ("küçük-oh") kullanabiliriz. Hem büyük-ah hem de küçük-ah benzerdir. Ancak, büyük-ah muhtemelen asimptotik olarak sıkı üst sınırı tanımlamak için kullanılır.


0

Tam olarak alt sınır veya $ \ omega $ bfon f (n), asimptotik olarak f (n) 'den daha küçük veya eşit olan fonksiyonlar kümesidir, yani tüm $ `un≥ n için U g (n) ≤ cf (n) $ \ 'Bazı c için, $ \ Bbb {N} $ içinde n' $ \

Ve f (n) üzerindeki üst sınır veya $ \ mathit {O} $, matematiksel olarak f (n) 'den asimptotik olarak daha büyük veya eşit olan fonksiyonlar kümesi anlamına gelir:

$ g (n) \ ge cf (n) \ tümü için n \ ge n '$, bazıları c için, $ \ Bbb {N} $ içinde n' $ \.

Şimdi $ \ Theta $, yukarıda yazılan ikisinin kesişimidir

$\theta $

Örneğin bir algoritma "tam olarak $ \ Omega \ left (f (n) \ right $" gibi ise, o zaman $ \ Theta \ left (f (n) \ right) $ demek daha iyidir.

Ya da $ \omega $bize en düşük limiti veren gerçek hızı verdiğini de söyleyebiliriz .


-2

Arasındaki temel fark

Blok alıntı

asimptotik olarak üst sınır ve asimptotik olarak sıkı Asim. üst sınır, örneğin tüm dizi (n) öğeleri azalan sıradaysa, onları yukarı çıkarmak için, örneğin, girdi sayısına bağlı olarak maksimum süre ile çalıştırılabilen belirli bir algoritma anlamına gelir. üst sınır karmaşıklığını gösteren O (n) 'lik bir çalışma süresi alacaktır, ancak eğer zaten sıralanmışlarsa ohm (1) alacaktır. bu yüzden genellikle üst sınır karmaşıklığı için "O" gösterimini kullandık.

Asym. sıkı sınır, örneğin (c1g (n) <= f (n) <= c2g (n)), fonksiyonun iki sınır (üst sınır ve alt sınır) arasında değere sahip olacağı şekilde sıkı sınır sınırını gösterir. ortalama durum.


2
Cevabınız zaten kabul edilmiş cevaplara hiçbir şey eklemiyorsa, eski soruları cevaplamamalısınız.
alestanis
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.