Polinom zaman ve üstel zaman


91

Birisi polinom-zaman, polinom olmayan-zaman ve üstel-zaman algoritmaları arasındaki farkı açıklayabilir mi?

Örneğin, bir algoritma O (n ^ 2) süresini alıyorsa, o zaman hangi kategoride yer alır?

Yanıtlar:


87

Kontrol bu out.

Üstel, polinomdan daha kötüdür.

O (n ^ 2), bir tür polinom olan (üssün özel durumu 2'ye eşittir) ve üstelden daha iyi olan ikinci dereceden kategoriye girer.

Üstel, polinomdan çok daha kötüdür. İşlevlerin nasıl büyüdüğüne bakın

n    = 10    |     100   |      1000

n^2  = 100   |   10000   |   1000000 

k^n  = k^10  |   k^100   |    k^1000

k ^ 1000, k 1.1 gibi bir şeyden küçük olmadığı sürece son derece büyüktür. Mesela, evrendeki her parçacığın bunu başarması için trilyonlarca milyarlarca yıl boyunca saniyede 100 milyar milyar milyar işlem yapması gerektiği gibi bir şey.

Ben hesaplamadım ama BU BÜYÜK.


29
Tüm illiyonlarından zevk aldım
Josephine

7
Eğer k 1'den önemli ölçüde büyükse k ^ 1000 son derece büyüktür. k = 1 daha az etkileyici ve k = 1.00069387 ise ..., 2.
Josephine

2
Peki ya n! vs k ^ n. 2 ^ n'yi biliyorum (en yaygın), n! daha pahalı olacak, ancak genel bir k ^ n olduğuna inanıyorum, burada k> 2, n! daha ucuz olacak.
Saad

1
"Milyarlar ve milyarlar" demediğine sevindim. :-)
Tom Russell

@Saad n! asimptotik olarak sabit bir k için her zaman k ^ n'den daha pahalı olacaktır. Bununla birlikte, haklısınız, çünkü bu yalnızca yüksek bir n değerine ulaştığımızda geçerlidir. Stirling'in yaklaşımına göre, faktöriyel zaman n = e * k olduğunda daha pahalı hale gelmelidir, burada e = 2.71828 ..
inavda

140

Aşağıda, algoritmaları analiz ederken bazı yaygın Big-O işlevleri verilmiştir.

  • O ( 1 ) - sabit zaman
  • O ( log (n) ) - logaritmik zaman
  • O ( (log (n)) c ) - polilogaritmik zaman
  • O ( n ) - doğrusal zaman
  • O ( n 2 ) - ikinci dereceden zaman
  • O ( n c ) - polinom zamanı
  • O ( c n ) - üstel zaman
  • O ( n! ) - faktöryel zaman

(n = girdi boyutu, c = bir miktar sabit)

İşte bazı fonksiyonların Big-O karmaşıklığını temsil eden model grafiği

grafik modeli

şerefe :-)

grafik kredileri http://bigocheatsheet.com/


12
Daha az kelime ve daha fazla netlik için artı bir.
user3144836

1 = n ^ 0 yani polinom da
BigChief

46

O (n ^ 2) polinom zamandır. Polinom f (n) = n ^ 2'dir. Öte yandan, O (2 ^ n) üstel zamandır, burada ima edilen üstel fonksiyon f (n) = 2 ^ n'dir. Aradaki fark, n'nin fonksiyonunun bir üssün tabanına mı yoksa üssün kendisine mi yerleştirildiği.

Herhangi bir üstel büyüme fonksiyonu, herhangi bir polinom fonksiyonundan önemli ölçüde daha hızlı (uzun vadede) büyüyecektir, bu nedenle ayrım, özellikle büyük n değerleri için bir algoritmanın verimliliği ile ilgilidir.


Bu cevabın otoriter (iyi) bir havası var, ama inanıyorum ki @ dheeran'ın cevabından farklı, üstel durumdaki tabanın zorunlu olarak 2 olup olmadığına inanıyorum. Ya da muhtemelen yanlış anlıyorum ve cebirimin tozunu atmam gerekiyor.
Tom Russell

21

Polinom zamanı.

Bir polinom, Constant * x^k Üstel gibi görünen terimlerin toplamıdır.Constant * k^x

(her iki durumda da, k bir sabittir ve x bir değişkendir).

Üstel algoritmaların yürütme süresi, polinom algoritmalarından çok daha hızlı artar.


18

Üstel (MINIMAL ONE EXPONENT bir parametreye bağlıysa, üstel bir fonksiyonunuz vardır):

  • Örneğin f (x) = sabit ^ x

Polinom (NO EXPONENT bazı fonksiyon parametrelerine bağlı değilse bir polinom fonksiyonunuz vardır):

  • Örneğin f (x) = x ^ sabit

4
Bir kullanıcı tarafından düzenlendikten sonra orijinal cevabımdan hiçbir şey kalmaması hoşuma gitmiyor. Bu bir tür "balık tutma" gibi mi?
Erhard Dinhobl

2
Katılıyorum. Değişiklikler çok saçma.
raylarda satya

3

polinom zamanı O (n) ^ k anlamına gelir İşlem sayısı, giriş boyutunun k gücü ile orantılıdır

üstel zaman O (k) ^ n, işlem sayısının girdi boyutunun üssü ile orantılı olduğu anlamına gelir


0

o (n sekansı) polinimal zaman karmaşıklığıyken, o (2 ^ n) üssel zaman karmaşıklığıdır, eğer en iyi durumda p = np, en kötü durumda, giriş boyutu n çok büyüdüğünde veya girdi boyutlandırıcı arttığında p = np eşit değildir. daha uzun süre en kötü duruma geçecek ve işlenecek, böylece karmaşıklık büyüme oranı artar ve girdi küçük olduğunda n girdi boyutuna bağlıdır, girdi boyutu büyük ve büyük olduğunda polinimaldir, bu nedenle p = np eşit değildir, büyüme oranının girdi boyutuna bağlı olduğu anlamına gelir "N ". optimizasyon, uydu, klik ve bağımsız küme de üstelden polinime kadar buluştu.

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.