Neden ikili aramanın big-O'daki log 2'ye dayanmıyor?


35

Bilgisayar bilimi algoritmalarını anlama konusunda yeniyim. İkili arama sürecini anlıyorum, ancak etkinliği ile ilgili biraz yanlış anlama yaşıyorum.

element boyutunda, belirli bir elementi bulmak için ortalama olarak n adım gerekir. Her iki taraftaki taban 2 logaritmasını almak log 2 ( s ) = n değerini verir . Peki ikili arama algoritması için ortalama adım sayısı log 2 ( ler ) olmaz mıydı?s=2nnlog2(s)=nlog2(s)

İkili arama algoritması hakkındaki bu Wikipedia makalesi , ortalama performansın olduğunu söylüyor . Bu neden böyle? Neden bu numara günlüğü 2 ( n ) değil ?O(logn)log2(n)


Yanıtlar:


86

Logaritmanın tabanını değiştirdiğinizde, ortaya çıkan ifade sadece Big-O notasyonu tanımıyla, her iki fonksiyonun da asimptotik davranışlarına göre aynı sınıfa ait olduğunu ima eden sabit bir faktöre göre değişir .

Örneğin burada C=1

log10n=log2nlog210=Clog2n
.C=1log210

Bu nedenle ve log 2 n , sabit bir C'ye göre farklılık gösterir ve bu nedenle her ikisi de doğrudur: log 10 n  ,  O ( log 2 n ) log 2 n  ,  O ( log 10 n ) Genel log a, n , O ( log b) n ) 1'den büyük a ve b pozitif tamsayıları için .log10nlog2nC

log10n is O(log2n)
log2n is O(log10n)
loganO(logbn)ab

Logaritmik fonksiyonlara sahip başka bir önemli yönü sabiti sırasında yani , n, k değil O ( n ) , ama oturum n k olan O ( log n ) itibaren günlük n k = k log n den olan farklıdır log n, tek bir sabit ile faktör k .k>1nkO(n)lognkO(logn)lognk=klognlognk


Sadece pozitif tamsayılar için değil: Tüm gerçek , örneğin, e . a,b>1e
nbubis

2
Büyük O notasyonu ile logaritmanın tabanının genellikle belirtilmediğinin sebebinin bu olduğunu ekleyeceğim. Aynı zamanda, tabanının ( log n ) hangi bazda kullandığı konusunda bir karışıklık olmadığı anlamına gelir : fark yaratmadığı için yaygın olarak kullanılan herhangi biri olabilir. O(logn)
svick

9

log(n)elog

Ancak, daha önce de gösterildiği gibi, bu durumda önemli değil.


7
“Log (n)” nin “O (log (n))” olduğu konusunda belirsiz olsa da, “o (log (n))” ifadesinin belirleyici olamayacağına dikkat etmek daha da önemlidir.
Chris,
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.