Fonksiyonlar her zaman asimptotik olarak karşılaştırılabilir mi?


15

İki algoritmanın karmaşıklığını karşılaştırdığımızda, genellikle veya g ( n ) = O ( f ( n ) ) (muhtemelen her ikisi), burada f ve gf(n)=O(g(n))g(n)=O(f(n))fg iki algoritmanın çalışma süreleridir (örneğin).

Her zaman böyle mi? Yani, ve g ( n ) = O ( f ( n ) ) ilişkilerinden en az biri her zaman geçerlidir, yani f , g genel fonksiyonları için ? Değilse, hangi varsayımları yapmak zorundayız ve algoritma çalışma sürelerinden bahsederken (neden) sorun değil?f(n)=O(g(n))g(n)=O(f(n))fg

Yanıtlar:


21

Her fonksiyon çifti notasyonu ile karşılaştırılamaz ; fonksiyonu olan f ( n ) = n- ve g ( n ) = { 1 ise  n  tek sayı , n, 2 , eğer  , n  , hatta olan . Ayrıca, g ( n ) gibi fonksiyonlar aslında algoritmaların çalışma süreleri olarak ortaya çıkmaktadır. Belirli bir n tamsayısının asal olup olmadığını belirlemek için bariz kaba kuvvet algoritmasını düşünün :O()f(n)=n

g(n)={1if n is odd, n2if n is even.
g(n)n
IsPrime(n):
  for i ← 2 to (n-1)
     if i·⌊n/i⌋ = n
        return False
  return True

Bu algoritma n eşit olduğunda aritmetik işlemler gerektirir , O ( Θ(1)nnbirleşikolduğunda işlemler, ancakpr(n)nbirinciolduğunda işlemleri. Dolayısıyla, bu algoritma resmi olarak kullanan bir algoritma ilekarşılaştırılamaz.O(n)nΘ(n)n herniçin aritmetik işlemlern n .

Biz algoritmaları analiz Çoğu zaman, sadece üst formu bağlanan bir asimptotik isteyen göreli olarak basit bir fonksiyonu f . Örneğin, çoğu ders kitabı O ( n ) aritmetik işlemlerinde çalışan (ve doğru bir şekilde) rapor verir . Tipik üst sınır fonksiyonları, üstel, polinom ve logaritmaların ürünleridir (faktöriyeller ve yinelenen logaritmalar gibi daha egzotik hayvanlar da zaman zaman ortaya çıkar). Bu tür iki işlevin karşılaştırılabilir olduğunu kanıtlamak zor değildir.O(f(n))fIsPrime(n)O(n)

Bu MathOverflow sorusuna da bakın .


7

Vikipedi'den, büyük O gösteriminin tanımı:

ve eğer her yeterince büyük değerler için olumlu bir sabit M, yoktur, sadece , f ( x ), M ile çarpılır en olduğunu g ( x ) mutlak değer olarak. Yani, f ( x ) O ( g ( x ) ) yalnızca pozitif bir M sayısı ve bir gerçek x sayısı varsaxf(x)g(x)f(x)O(g(x))M olması durumundax0

|f(x)|<=M|g(x)|for allx>x0

Yakınsamayan (sabit veya sonsuza) işlevler için ne olur?

Fonksiyonlar bak ve g ( x ) = 10f(x)=|xsin(x)|g(x)=10

x0x>x0x=kπf(x)=0MMf(x)>g(x)g(x)O(f(x))

|xsin(x)|Mx0x>x0f(x)<Mg(x)f(x)O(g(x))

Mf(x)g(x)g(x)=log(x)


6

İşte asimptotik olarak karşılaştırılamayan bir çift monotonik fonksiyon. Bu önemlidir çünkü pratikte ortaya çıkan karmaşıklıkların çoğu monotoniktir.

f(x)=Γ(x+1)=x!
g(x)=Γ(x1/2+3/2)

Γ


4

İzin Vermek LŞu işlemleri kullanarak kimlik fonksiyonundan ve sabitlerden elde edilen fonksiyon sınıfı olabilir: toplama, çıkarma, çarpma, bölme, logaritma ve üstel. Örneğin,tecrübe(2günlükx+günlükgünlükx)/x2. Hardy, her iki işlev içinf,gL pozitif ve sonsuzluğa eğilimli olan aşağıdakilerden biri doğrudur: f=Ö(g), f=ω(g), f/gdeğişmez. "Sonsuzluk emirleri" kitabının 18. sayfasına bakınız.

Sonuçta algoritmasının analizi meydana gelen herhangi iki "basit" bir fonksiyonu olmasıdır olan karşılaştırılabilir. Burada "basit", vakalar tarafından tanımlanmadığı anlamına gelir (sonlu birçok temel durumdan başka) ve bazen çalışma sürelerini gösteren ters Ackermann işlevi gibi şaşırtıcı işlevler ortaya çıkmaz.


Nice! It is noteworthy, though, that periodic elements occur frequently in average case analysis (of d&c algorithm). The one I know are bound on both sides by constants, so they don't hurt asymptotic comparability.
Raphael
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.