Asimptotik analiz
Bu terim, algoritmanın üzerinde çalıştığı verilerin ( girdi ), layman'ın terimleriyle, "onu büyütmenin sonucu değiştirmeyecek kadar büyük olduğu" varsayımı altında algoritma performansının analizini ifade eder . Giriş tam boyutu belirtilmesi gerekmez, ancak verilerinin kendisi set (yalnızca bir üst bağlanmış mi) sahiptir belirtilmelidir.
Şimdiye kadar sadece analiz yöntemi hakkında konuştuğumuzu unutmayın ; tam olarak hangi miktarı analiz ettiğimizi (zaman karmaşıklığı? uzay karmaşıklığı?) belirtmedik ve hangi ölçüyle ilgilendiğimizi de belirtmedik (en kötü durum? en iyi durum? ortalama?).
Pratikte asimptotik analiz terimi genellikle bir algoritmanın üst sınır zaman karmaşıklığına , yani büyük-Oh gösterimi ile temsil edilen toplam çalışma süresi ile ölçülen en kötü durum performansına (örneğin, bir sıralama algoritması olabilir O(nlogn)
) atıfta bulunur .
Amortize edilmiş analiz
Bu terim, en kötü durum senaryosunu hedefleyen belirli bir işlem sırasına dayalı algoritma performansının analizini ifade eder - yani amortize edilmiş analiz, metriğin en kötü durum performansı olduğunu ima eder (yine de hangi miktarın ölçüldüğünü söylememektedir ). Bu analizi yapmak için girdinin boyutunu belirlememiz gerekiyor ancak biçimi hakkında herhangi bir varsayımda bulunmamıza gerek yok.
Layman'ın terimleriyle, amortize edilmiş analiz girdi için rastgele bir boyut seçmek ve ardından algoritmayı "oynatmak" tır. Girdiye bağlı bir karar verilmesi gerektiğinde, en kötü yol alınır¹. Algoritma tamamlandıktan sonra, hesaplanan karmaşıklığı girdinin boyutuna bölerek nihai sonucu elde ederiz.
¹not: Kesin olmak gerekirse, teorik olarak mümkün olan en kötü yol . Kapasitesi her tükendiğinde dinamik olarak iki katına çıkan bir vektöre sahipseniz, "en kötü durum" , eklemeler bir dizi olarak işlendiği için her eklemede iki katına çıkması gerekeceği anlamına gelmez . Bilinen durumu , girdi bilinmeyen kalsa bile, elimizden geldiğince çok sayıda "daha da kötü" durumu matematiksel olarak ortadan kaldırmak için kullanabiliriz (ve aslında kullanmamız gerekir) .
En önemli fark
Asimptotik ve amortize edilmiş analiz arasındaki kritik fark, birincisinin girdinin kendisine bağlı olması, ikincisinin ise algoritmanın yürüteceği işlemlerin sırasına bağlı olmasıdır.
Bu nedenle:
- asimptotik analiz, algoritmanın karmaşıklığının, N'ye yaklaşan büyüklükte en iyi / en kötü / ortalama durum girdisi verildiğinde, bazı F (N) fonksiyonuyla sınırlandığını iddia etmemize izin verir - burada N bir değişkendir
- Amortize edilmiş analiz, algoritmanın karmaşıklığının bilinmeyen özelliklere sahip bir girdi verildiğinde, ancak bilinen boyut N'nin bir F (N) işlevinin değerinden daha kötü olmadığını iddia etmemize olanak tanır - burada N bilinen bir değerdir