Ders 02 / 25
Asimptotik Gösterim
Büyük O, büyük omega ve büyük teta tanımları, sabitlerin elenmesi, toplam ve çarpım kuralları, yaygın yanlış okumalar.
İçindekiler
Önceki ders, ölçütü işlem sayısı olarak belirledi ama bir sorun bıraktı: bin elemanlık bir dizide 1000 mü, 1002 mi karşılaştırma yapıldığı önemsizdir. Bu ayrıntılar gerçekleştirime bağlıdır; algoritmanın kendisine ait olan, girdi büyüdükçe işlem sayısının hangi hızla arttığıdır.
Asimptotik gösterim, bu hızı yakalayan ve gerisini eleyen dildir.
Büyük O: Üst Sınır
ve , pozitif tam sayılardan pozitif gerçel sayılara fonksiyonlar olsun.
Sözle: yeterince büyük her için , ’nin sabit bir katını aşmıyorsa, en fazla kadar hızlı büyür.
Tanımın iki niceleyicisi de gereklidir. Sabit , çarpansal farkları eler — iki katı hızlı çalışan bir gerçekleştirim aynı sınıfta kalır. Eşik ise küçük girdilerdeki düzensizlikleri eler; asimptotik ifade, büyük girdiler hakkında bir iddiadır.
Bir örnek üzerinde açıkça gösterilebilir. için seçilirse, ve değerleri tanımı sağlar:
def f(n: int) -> int: return 3 * n**2 + 5 * n + 20 c, n0 = 4, 8 print(f(7) <= c * 7**2) # False — eşiğin altında sağlanmıyor print(f(8) <= c * 8**2) # True print(all(f(n) <= c * n**2 for n in range(n0, 10_000))) # True
Yedide sağlanmaması bir sorun değildir: tanım, eşikten sonrası için bir şey söyler. Sekizden itibaren eşitsizlik hep geçerlidir; dolayısıyla yazılır.
Büyük Omega: Alt Sınır
Büyük O bir tavan, büyük omega bir taban verir. “Bu algoritma en az şu kadar iş yapar” demek için kullanılır.
Alt sınırlar, tek bir algoritma için değil problem için konuşulduğunda güçlüdür: “karşılaştırmalı sıralama en az karşılaştırma gerektirir” ifadesi, hiçbir karşılaştırmalı algoritmanın bu sınırın altına inemeyeceğini söyler. Bu tür bir sonuç, arama ve sıralama konusunda kanıt fikriyle birlikte ele alınacaktır.
Büyük Teta: Sıkı Sınır
Teta, büyümenin tam olarak mertebesinde olduğunu söyler: hem tavan hem taban aynı fonksiyondur.
ifadesi ’dir. Aynı ifade de olur — üst sınır gevşek olabilir — ancak değildir.
Günlük kullanımda büyük O, çoğu zaman sıkı sınır kastedilerek yazılır. Bu bir kolaylıktır; kesin konuşulması gereken yerlerde teta tercih edilir.
Sadeleştirme Kuralları
Karmaşıklık ifadeleri birkaç kuralla sadeleşir.
Sabit çarpanlar elenir. . Sabit, tanımdaki tarafından zaten soğurulur.
Toplamda büyük terim kalır. . Ardışık iki bölümden pahalı olanı belirleyicidir.
Çarpımda çarpanlar korunur. İç içe döngülerde maliyetler çarpılır: .
Geçişlilik geçerlidir. ve ise ’dir.
| İfade | Sadeleşmiş | Gerekçe |
|---|---|---|
| Sabitler ve sabit terim elenir | ||
| Büyük terim baskın | ||
| ile | Aynı | Taban değişimi sabit çarpandır |
| ile | Farklı sınıflar | Faktöriyel üstelden hızlı büyür |
Üçüncü satır sık sorulan bir noktayı yanıtlar: logaritmanın tabanı belirtilmez, çünkü taban değişimi yalnızca sabit bir çarpan üretir ve o çarpan elenir.
Sabit ve Eşiği Bulmak
Bir iddiayı kanıtlamak, uygun bir ve üretmek demektir. Polinomlar için mekanik bir yöntem vardır: her düşük dereceli terim, için baskın terimle sınırlanır ve katsayılar toplanır.
örneğinde için ve yazılabilir. Toplandığında çıkar; yani , da tanımı sağlayan geçerli bir çifttir.
Yukarıda ile daha küçük bir sabit bulundu, ama gerekli değildi: tanım bir çiftin varlığını ister, en küçüğünü değil. Bu, asimptotik iddiaların neden kolay kanıtlandığını açıklar — kaba bir sınır bile yeterlidir.
Yaygın Yanlış Okumalar
“ demek, tam olarak işlem demek değildir.” Üst sınırdır; ve ikisi de ’dir.
“ en kötü durum demek değildir.” İkisi ayrı eksenlerdir. En iyi, en kötü ve ortalama durumların her biri için ayrı ayrı , ve yazılabilir. “En kötü durumda ” ile “her durumda ” farklı iddialardır.
“Küçük her zaman daha iyi değildir.” Asimptotik gösterim sabitleri elediği için, bir algoritma küçük girdilerde bir algoritmadan yavaş olabilir. Bu, sıralama kütüphanelerinin küçük parçalara farklı algoritma uygulamasının nedenidir.
Gösterim bir eşitlik değildir. yazımı yerleşmiştir ama yanıltıcıdır; doğrusu biçiminde bir küme üyeliğidir. Bu nedenle eşitlik simetrik değildir: yazılmaz.
Girdi Büyüklüğü Nedir
Son bir tanım gerekir: neyi sayar? Yanıt probleme göre değişir ve belirtilmezse ifade anlamsızdır.
- Dizi işlemlerinde eleman sayısı.
- Metin algoritmalarında karakter sayısı.
- Çizge algoritmalarında hem düğüm hem kenar sayısı — bu yüzden maliyetler gibi iki değişkenle yazılır.
- Sayısal algoritmalarda genellikle sayının bit uzunluğu; sayının kendisi değil.
Son madde ince bir ayrımdır. Bir sayının asal olup olmadığını sayıya kadar bölerek sınayan yöntem, girdi olarak sayının değeri alınırsa görünür; oysa girdi değil, onu yazmak için gereken bit sayısıdır. Bit uzunluğu cinsinden aynı yöntem üsteldir. Bu ayrım, karmaşıklık kuramında sınıflandırmanın temelidir ve Hesaplama Kuramı kursunda ele alınır.
Özet
- Asimptotik gösterim, sabitleri ve düşük dereceli terimleri eleyerek büyüme hızını tutar.
- Büyük O üst sınır, büyük omega alt sınır, büyük teta sıkı sınır verir.
- Tanımdaki sabiti çarpansal farkları, eşiği küçük girdileri eler.
- Sadeleştirmede sabitler elenir, toplamda büyük terim kalır, çarpımda çarpanlar korunur; logaritmanın tabanı yazılmaz, çünkü taban değişimi sabit çarpandır.
- ile “en kötü durum” farklı eksenlerdir; küçük asimptotik sınıf, küçük girdilerde hızlı olmayı garanti etmez.
- Girdi büyüklüğünün ne sayıldığı açıkça belirtilmelidir.
Sonraki Adım
Büyük O ve omega, sınırın sıkı olup olmadığını söylemez: hem hem ’dir. Sonraki ders, sınırın kesinlikle gevşek olduğunu belirten küçük gösterimlerini tanımlayacak ve bunların hangi ifadeleri mümkün kıldığını gösterecek.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.