O (n log n) tarafından açıklanan fonksiyon sınıfının adı nedir?


40

"Büyük O" 'da, ortak notasyonların ortak isimleri vardır ("sabit bir faktörden Oh" demek yerine):

O (1) "Sabit"

O (log n) "Logaritmik" tir.

O (n) "Doğrusal" dır

O (n ^ 2) "Kuadratik" dir

O (n * log n) , ???

Sadece "n log n" mi, yoksa yukarıdaki gibi özel bir adı mı var?


Yanıtlar:


52

Buna doğrusal zaman denir ve yarı doğrusal olarak bilinen daha genel bir sınıfın özel bir halidir . Adından da anlaşılacağı gibi, bu sınıfa giren algoritmalar neredeyse doğrusal zamanda çalışır; Aslında, da ile çalışan algoritmalardan daha düşük karmaşıklığa sahiptirler .O(nk)k>1


Yorumlar uzun tartışmalar için değildir; bu konuşma sohbete taşındı .
Gilles 'SO- kötülük' dur


11

Her zaman bana doğru gelen "log-linear" olarak tanımlanan O (n log n) 'i duydum.


4
Bu, bir ya da iki referansın iyi olacağını söyledi.
Raphael

7

Bu yorum için çok uzun sürdü, bu yüzden bir cevap yazdım. Bunu ilk cevabımı eklemedim, çünkü birçok kişi ilk vanswer'ı çoktan aştı ve bu cevabı da kabul ettiklerinden emin değilim.

  • Lineeritmik , kabul edilen cevabın yorumunda belirtildiği gibi sağlam bir terim olduğunu sanmıyorum . Bu terimi kullanan genç yazılardan bazılarını, CS kursunu ve Sedgewick'in bu terimi ve birçok çevrimiçi sözlük kullanan başka bir kitabını googledim.
  • Kuasilin terimi iki makalede bulundu:

    Memnuniyet, NQL
    CP Schnorr
    Bilgisayar Makineleri Birliği Dergisi,
    Cilt 25'te Tamamlandı. Cilt 1, No 1, Ocak 1978, s. 136-1,15

ve Vikipedi'de geçen ve bu Schorr'ın makalesiyle ilgilenen bir makalede. Schnorr, quasilinear (QL) ve nondeterministic quasilinear (NQL) karmaşıklık sınıflarını tanıtır.
Kuasilinear, kısmi diferansiyel denklemler teorisinde de kullanılıyor gibi görünüyor.

Sonuçta, bir veya daha fazla Wikipedian'ın bu fonksiyon için yaygın olarak kabul edilen bir isme sahip olmayan isimler vermek istediği anlaşılıyor. Fakat şimdi bile bana öyle geliyor ki, adların hiçbiri yaygın olarak kabul edilmiyor (bunun yanı sıra bunun Wikipedia'nın yapmaması gereken bir tür manipülasyon olduğunu düşünüyorum). Terminoloji soruları için Vikipedi'yi kullanırken birinin dikkatli olması gerektiğini düşünüyorum. Ve bu fonksiyon için yeterli bir kaynak değildir. Bence bu fonksiyon için tek yaygın kabul edilen isim n log n .


1
Lineeritmik ve loglinearın meşruiyeti tartışılabilir olsa da, yarı-doğrusal olanın iyi tanımlanmış bir terim olduğuna inanıyorum . Araştırma makalelerinde yaygın olarak kullanılıyor gibi görünüyor.
Roukah

@ Roukah evet, ama tamamen aynı şey anlamına gelmez; kuasilinear daha geneldir. - Ben Vikipedi kesin olan bir ad kullanarak nesi görmüyorum, daha iyi bir alternatif gibi görünüyor, ve bir çok yayılmış bulunuyor olmasa bile, oldukça ünlü kaynakta kullandı. Aslında son derece yaygın bir karmaşıklık sınıfı olmasına rağmen yayılmadığı gerçeğinin, insanların onu daha fazla kullanmaya başlamasının zamanı geldiğini öne sürdüğünü söyleyebilirim!
leftaroundabout

+1 "bu işlev için yalnızca yaygın olarak kabul edilen ad n log n" - Diğer tüm cevaplar eğlenceli ve düzenleyicidir, ancak haklı olabilirsiniz. Birkaç gündür "linearitmik" diyerek pratik yapıyorum ve dil hala açılmıyor. "En log en", söylemesi kolay, hatırlaması kolay ve anında Büyük O’ya aşina olan herkes tarafından hemen anlaşıldı. Bunu biraz düşüneceğim, ancak kabulümü bu cevaba taşımam gerekebilir.
GlenPeterson
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.