Büyük O gösterimi, performans varyasyonunu ölçmek için birimsiz bir ortalamadır, bu nedenle hesaplama ilkellerinin göreli maliyetlerine karşı geçirimsizdir.
Özetle:
Büyük O gösterimi, birimsiz, göreceli bir ölçüm türüdür (mutlak ölçümün aksine). Sabitlerin çok önemli olduğu mutlak performansı değil, yalnızca performans varyasyonunu ölçebilir. Avantajı, bu maliyetler, pozitif sabit üst ve alt sınırlara sahip olduğu sürece, temel işlemlerin göreli maliyetlerini göz ardı edebilecek daha basit analizlere izin vererek uygulamayı büyük ölçüde bağımsız hale getirmesidir. Ancak sonuç, sabit faktörlerin anlamsız olmasıdır . Yine de, amaçlanan amacı için bile, asimptotik karmaşıklık analizi diğer nedenlerle sorgulanabilir ve dikkatle düşünülmelidir. Örneğin, ham girdi boyutu dikkate alınacak doğru parametre olmayabilir.
İlk açıklama, sorunuzun tam olarak doğru bir şekilde ifade edilmediğidir. Eğer sabit ihmal zaman de 33 , orada gerçekten bir "üç kat değişim", ancak her ikisi de aynı oranda değişir ve can not Assert bu "[on] şey daha hızlı diğer 3 kat daha fazla farklı olan".3n
Landau notasyonundaki sabiti görmezden gelmenin iyi bir nedeni, güvenebileceğimiz hiçbir birimimiz olmamasıdır. Birisi A'nın B'den iki kat daha uzakta yaşadığını ifade ettiğinde, bunun herhangi bir birimden bağımsız olarak bir anlamı vardır. Işık yıllarında yaptığım mesafeleri inç cinsinden ölçmenize rağmen üzerinde anlaşabiliriz. Ancak mutlak mesafe ölçümü, birimlerin belirtilmesini gerektirir ve sayısal formülasyonu, seçilen birime bağlıdır.
Bir algoritma tarafından alınan gerçek zaman, makineye çok bağlı olan temel işlemlerin yürütme süresine bağlıdır. Temel işlemlerin sayısını sayabilirsiniz, ancak hepsinin aynı zamanı aldığına inanmak için bir neden yoktur ve birkaç işlemi tek bir işlemde birleştirmek veya bir işlemi tersine küçük işlemlere ayırmak her zaman mümkündür, böylece sayı bir sanal makinede anlaşmadıkça, işlemlerin gerçekten anlamlı olmadığı anlamına gelir. Referans bağımsız olmak bir avantajdır.
Yaklaşımın avantajına başka bir bakış, analizde önem verdiğiniz tek şey, maliyetlerinin bir üst sınırı ve pozitif bir alt sınırı olduğu sürece temel işlemlerin sayısını saymaktır. Bireysel maliyet konusunda endişelenmenize gerek yok.
Bununla birlikte, bu avantaj için ödenecek fiyat, hesaplama maliyeti değerlendirmesinin belirtilmemiş birimle verilmesi ve hesaplama süresinin, örneğin nanosaniye veya milenyum olabileceğidir - bilmeye bile çalışmayız. Diğer bir deyişle, sabit faktörler anlamsızdır, çünkü değişen birimler değişen sabit faktörlerden ayrılamaz ve hiçbir referans birimi kullanılmaz.
Patrick87 tarafından belirtildiği gibi , bu, bir algoritmanın giriş boyutuna göre nasıl ölçeklendiğini anlamak için yeterlidir, ancak bir referans birimine güvenmeksizin, mutlak bir performans ölçüsü vermeyecektir. Ortak bir referans soyut makinesinin ayrılması, biri farklı algoritmaların performansını karşılaştırmak istediğinde yapılabilir, ancak karşılaştırmanın gerçekleşme ayrıntıları ile önyargısız olmamasını sağlamak daha zordur. Asimptotik karmaşıklıkta, algoritmayı kendisiyle karşılaştırdığınız için bu risk önlenir.
Her neyse, sadece saf bir programcı bir algoritma seçmek için sadece asimptotik karmaşıklığa güvenirdi. Açıklanamayan sabit ve temel işlemlerin gerçek maliyeti de dahil olmak üzere birçok kriter vardır. Ayrıca, en kötü durum karmaşıklığı zayıf bir gösterge olabilir, çünkü en kötü durum karmaşıklığının kaynağı nadiren ve girişin sınırlı bir etkiye sahip olacak kadar küçük fragmanlarında ortaya çıkabilir. Örneğin, Bitişik Ağaç Gramerleri için genel ayrıştırıcıların teorik karmaşıklığı vardır ve pratikte oldukça kullanılabilirler. Bildiğim en kötü durum
Damas-Hindley-Milner polimorfik tip çıkarımdırO(n6)üstel en kötü durum karmaşıklığına sahip olan ML için kullanılan algoritma. Ancak bu, ML kullanıcılarını rahatsız etmiyor veya ML'de çok büyük programların yazılmasını engellemiyor gibi görünüyor. Önemli olan sabitten daha fazlası var. Aslında, asimtotik analiz, bir hesaplama maliyetinin bir ölçüsü ile girdinin karmaşıklığının bir ölçüsüdür. Ancak ham boyut doğru önlem olmayabilir.
Karmaşıklık karar verilebilirlik gibidir, teorik olarak kötü olabilir, ancak bu veri alanının çoğu için ilgisiz olabilir ... bazen. Asimptotik karmaşıklık analizi, tüm araçlar gibi avantajları ve sınırlamaları ile iyi ve iyi tasarlanmış bir araçtır. Anlamsız olabilen sabiti açıklamak veya açıklamamak, yargı kullanmak gereklidir.