SORU
21 ŞUBAT 2010, Pazar


O(log n) tam olarak ne anlama geliyor?

Şu anda O Gösterimi çalışma saatlerini ve itfa katı büyüklükte öğreniyorum. Kavramını anlıyorumO(n)doğrusal zaman, algoritma büyüme orantılı olarak etkiler giriş...ve aynı boyut için de geçerli, yani, örneğin, zaman ikinci derecedenO(n2)hatta algoritmaları, permütasyon jeneratör gibi vb. ileO(n!)times, faktöriyel daha da büyümektedir.

Örneğin, aşağıdaki işleviO(n)algoritma kendi giriş ile orantılı olarak büyür Çünkün:

f(int n) {
  int i;
  for (i = 0; i < n;   i)
    printf("%d", i);
}

Eğer varsa benzer şekilde, bir iç içe döngü, zaman O olur(n2).

Ama tam olarak ne olduğunuO(log n)? Örneğin, tam bir ikili ağaç yüksekliği olduğunu söylemek ne anlama geliyorO(log n)?

Logaritma ne olduğunu biliyorum (çok detaylı değil belki), bu anlamda: günlük10100 = 2, ama logaritmik bir fonksiyon tanımlamak için nasıl anlayamıyorum.

CEVAP
21 ŞUBAT 2010, Pazar


Bir günlük süre ile bir fonksiyon tanımlamak için nasıl anlayamıyorum.

Logaritmik çalışan-zaman fonksiyonu en genel nitelikler:

  • üzerinde bazı eylemleri gerçekleştirmek için bir sonraki elemanı seçimi birkaç olasılıktan biri
  • sadece bir tane olacak seçilmelidir.

ya

  • hangi eylem yapılır unsurları n basamak vardır

Bu, örneğin, bir telefon rehberi insanlar arıyoruz(günlük n) olmasıdır. Kontrol etmenize gerek yokherkişi telefon rehberinde bulmak için doğru; bunun yerine, sadece böl-ve-fethet, ve sadece ihtiyacı keşfetmek için küçük bir kısmını tüm alanı önce seni bulucak birinin telefon numarası.

Tabii ki, daha büyük bir telefon rehberi yine de daha uzun bir zaman alacak, ama bu kadar çabuk ek boyutu oransal artış olarak büyümek olmaz.

Telefon rehberi örnek işlemleri başka türlü karşılaştırmak için genişletebilirizonlarınzaman hızla azalıyor. Bizim telefon defteri var varsayacağızişletmeler(benzersiz adlara sahip olan . "Sarı Sayfalar") ^em>insanlar("Beyaz Sayfalar") benzersiz adlara sahip olmayabilir. Bir telefon numarası en fazla bir kişi ya da iş için atanır. Ayrıca sabit zaman belirli bir sayfa çevirmek için aldığını varsayacağız.

Burada en iyi gelen en kötü için telefon rehberine gerçekleştirmek olabilir, bazı işlemler çalışan kat:

  • O(1) (en kötü durum):Bir iş adı ve iş adı sayfa verilen telefon numarasını bulabilirsiniz.

  • O(1) (Ortalama durumda):Bir kişinin adını ve kendi adını sayfa verilen telefon numarasını bulabilirsiniz.

  • O(log n):Belirli bir kişinin adını, telefon numarasını alarak bir noktaya göre yaklaşık yarısına bölümü kitap araştırmadınız henüz, o zaman kontrol olup olmadığını görmek için kişinin ismi bu noktada. Kişinin adını burada yatıyor sonra kitabın bölüm yarısında bu işlemi tekrarlayın. (Bu kişinin adı için bir ikili arama.)

  • O(n):Basamak içeren tüm insanları bul"". 5

  • O(n):Bir telefon numarası verilir, bu numara ile bir kişi ya da iş bulmak.

  • O(n log n):Bir yazıcı ofisinde karışıklık vardı ve telefon kitabımızın tüm sayfalarını rastgele bir sırayla yerleştirilmiş. Her sayfada ilk isim bakmak ve sonra da yeni, boş bir telefon rehberi uygun noktada bu sayfa koyarak doğru olacak şekilde sipariş düzeltme.

Örnekler aşağıda, şimdi yazıcıyı ofisine geldik. Telefon rehberleri, her ikamet veya iş için postaya verilmesi için bekliyor ve her telefon rehberi gönderilecek olması gereken yerde tanımlayan bir etiket var. Ya da iş her insan bir telefon defteri alır.

  • O(n log n):İstediğimiz kişiselleştirmek telefon rehberi, bulacağız her kişi ya da iş adına onların belirlenmiş kopyalayın, daha sonra Daire kendi adına kitap yazmak ve kısa bir teşekkür notu için hamilikler.

  • O(n2):Bir hata ofiste oluştu ve telefon kitapların her biri, her giriş "telefon numarasını sonunda. 0 fazladan var Beyaz bir atın ve her sıfır kaldırın.

  • O(n * n!):Nakliye iskeleye telefon defterlerini yüklemek için hazırız. Ne yazık ki, kitapları yüklemek için gereken robot haywire gitti: rasgele sırada kamyonun üzerine kitap koyarak! Daha da kötüsü, kamyona tüm kitapları yükler, sonra da çeki düzen içindeler, ve eğer onları kaldırır olmadığını görmek için tekrar başlar. (Bu korkunçbogo sort.)

  • O(nn):Sen yükleme doğru şeyler bu yüzden bu robotu tamir et. Ertesi gün, iş senin bir otomatik baskı sistemleri ve teller şaka yükleme iskelesinde robot oynar. Robot özgün bir kitap, bir fabrika yazıcıyı yüklemek için her zaman bir bütün rehberi ve çalıştırmak yinelenen yapar! Neyse ki, robotun hata algılama sistemlerinin yeteri kadar gelişmiş robot değil deneyin baskı daha da kopyalar bulduğu bir yinelenen kitap için yükleme, ama hala yüklenemedi her orijinal ve yinelenen bir kitap oldu basılmıştır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kruno j

    kruno j

    6 Mayıs 2007
  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006
  • Videojug

    Videojug

    25 EKİM 2006