İçeriğe atla
ΣDSA Patterns
Menü
Dil

Temeller

Büyüme hızları ve Big-O eğrileri

O(1)…O(n!) tek grafikte; n büyüdükçe her sınırın nasıl ölçeklendiğini izle.

Soru: n ≤ 10⁴ için O(n²) kabul edilebilir mi?

Cevap n’nin üst sınırına bağlıdır. 10⁴ × 10⁴ = 10⁸ işlem çoğu judge’ı zaten 1 saniyede aşar. Ama n ≤ 10⁵ ise O(n²) = 10¹⁰ ve çözüm zaman sınırına takılır. Bu sayfa, bir sınırı “yeterince hızlı mı?” sorusunu görsel ve sayısal cevaplayacak hıza getirmeyi amaçlar.

Sayılarla

nlog₂ nnn log nn²2ⁿ
10³1010³10⁴10⁶~10³⁰⁰
10⁶2010⁶2·10⁷10¹²patlar
10⁹3010⁹3·10¹⁰10¹⁸patlar

Tek satırda: log n devasa n’de bile küçük kalır, n log n10⁶’da hâlâ yaşanır, n² 10⁵’i geçince ölmez, 2ⁿ n > 30’da fiziksel olarak imkânsızdır.

Nereden gelir?

Her döngü yapısı bir büyüme sınıfına karşılık gelir:

Tuzak: “merge sort iç içe döngü içeriyor, O(n²) olmalı”

Yanlış. Merge sort’taki iç döngü tek bir seviye içindir ve her seviye tüm diziyi bir kezdokunur (n iş). İç içe gibi görünen kısım aslında log n seviyenin her birinde n iş:n · log n, n · n değil. Aynı yanılgı: “iki ayrı döngü var, O(n²)”. Ardışık iki döngü toplanır (n + n = 2n → O(n)), çarpılmaz.

Sıradaki adım

Alıştırma

Grafiği duraklatıp n = 20’ye getir. O(n²) ve O(n log n)değerlerini tahmin et, sonra fareyi üstlerinde tut. Şimdi n = 40’a çıkar: fark kaç kat büyüdü?

O(1)1.0O(log n)4.6O(n)—O(n log n)—O(n²)—O(2ⁿ)—O(n!)—
n = 25
işlem01020250102025n (girdi boyutu)
Hız

← Tüm matematik konuları →