O (mn) “doğrusal” mı yoksa “ikinci dereceli” bir büyüme olarak mı kabul edilir?


24

Kimin zaman karmaşıklığı O (bazı işlevi varsa mn ), m ve n , biz "doğrusal" zamanı karmaşıklığı iki girdilerin boyutları çağırır edilmektedir ( 's hem de doğrusal beri m ve n ya da ( "ikinci dereceden") iki boyutta bir ürün olduğundan?) Veya başka bir şey?

“Doğrusal” olarak adlandırmanın kafa karıştırıcı olduğunu düşünüyorum, çünkü O (m + n) de doğrusal ama çok daha hızlı, ancak “ikinci dereceli” olarak adlandırmak da garip çünkü her değişkende doğrusal olduğunu düşünüyorum.


7
Neyin içinde doğrusal olduğunu söylemek önemlidir . Örneğin, kenarları ve köşeleri olan bir grafiğimiz varsa , kenar sayısında doğrusaldır, ancak (potansiyel olarak) tepe sayısında kuadratiktir. , n O ( m + n )mnO(m+n)
Raphael

3
Bence Raphael'in yorumu çok açık. "Doğrusal", genellikle girdi boyutunda olan bir şeye göre kullanılmalıdır. Bir transpoze ediyorsanız matrisi , girişin boyutuna sahip olması nedeniyle "doğrusaldır" . Bir karakterli dizgenin bir karakterli dizideki oluşumunu arıyorsanız , doğrusal değildir --- . O ( m, n ) O ( m, n ) n, m, O ( m , n ) O ( m + n )m×nO(mn)O(mn)nmO(mn)O(m+n)
SamM

3
@ Raphael'in yorumuyla da aynı fikirdeyim, ama aynı zamanda insanların belirli bir zaman karmaşıklığının ne olduğuna değinmeden "doğrusal" olduğunu söylemeleri de alışılmadık bir durum değil. Bazı durumlarda farketmez, örneğin O (m + n) tüm girişlere göre doğrusaldır , bu yüzden SamM'nin de yaptığı gibi onu doğrusal olarak adlandırmayı iki kez düşünmezdim. Fakat bu şu soruyu akla getiriyor: Ne olursa olsun, O (mn) 'yi lineer değil yapan nedir?
Mehrdad

3
@Mehrdad: Bence taban çizgisi "girdi büyüklüğünde, girişin ikili bir dize olarak kodlandığı varsayımıyla (bir Turing makine bandında)". Bu giriş boyutu daha sonra n ve bir fonksiyonudur m. SamM iyi örnekler veriyor.
Raphael

1
Ayrıca bkz . Çoklu değişkenlerde landau notasyonu için people.cis.ksu.edu/~rhowell/asymptotic.pdf .
Jonas Kölker

Yanıtlar:


18

Matematikte bunun gibi fonksiyonlara çoklu doğrusal fonksiyonlar denir . Ancak bilgisayar bilimcileri muhtemelen bu terminolojiyi bilmeyeceklerdir. Bu fonksiyon kesinlikle gerekir değil makul birini düşünün sürece, matematik veya bilgisayar bilimi ya doğrusal olarak adlandırılabilir ve n bir sabit.mn


ve n den birini sürekli olarak makul kılan şey nedir ? mn
user2768

11

Yorumlardaki tartışmayı açıklamak için, neye oranla büyüme ölçtüğünüz önemlidir.

@Kaveh tarafından belirtildiği gibi aynı zamanda her ikisi de doğrusal değildir, ancak bir sabittir ve, diğer bir büyür doğrusaldır.O(mn)

Öte yandan, muhtemelen doğrusal olarak kabul edilecektir. Sezgisel olarak, eğer m iki katına çıkarsa veya n iki katına çıkarsa veya m ve n iki katına çıkarsa bile , m + n iki katından fazla olamaz. Bu doğru değildir m, n ; eğer m ve n her ikisi çift m n 4. kadar gider çok bağlamda bu çalışma süresi kuadratik düşünülebilir nedeni budur. Buna birkaç paragrafta dize eşleşmesi ile bir örnek verdim.O(m+n)mnmnm+nmnmnmn

Ancak, genellikle Big- notasyonu kullanırken, bunu özellikle bir şeye referans olarak kullanıyorsunuz. Çoğunlukla teorisyen olduğumuz için, genellikle soruna girdilerin büyüklüğüdür.O

Mesela Matrix Addition'ı ele alalım. İki ekleme matrisini alır O ( m, n ) bir zaman. Ancak girişimizin her bir öğesine yalnızca bir kez dokunulur, bu nedenle buna genellikle doğrusal denir. Başka bir ifade ile, bizim giriş büyüklüğü olan O ( m, n ) bir çalışma süresi, yani O ( m, n ) giriş büyüklüğü doğrusaldır.m×nO(mn)O(mn)O(mn)

Şimdi dize eşleşmesine bakalım - yani, bize bir boyutu ve bir de n boyutu dize verildi ve daha büyük dize içinde daha küçük bir dize oluşumu olup olmadığını görmek istiyoruz. Biz naif bu kontrol edebilir O ( m, n ) süresi; bu genellikle ikinci dereceden kabul edilirdi. Niye ya? Eğer m ve n şey dizisi olabilir m = n . O zaman işletim süresi olan O ( m, 2 ), ve giriş boyutu olan 2 m .mnO(mn)mnm=nO(m2)2m

Öte yandan, eğer Rabin-Karp algoritmasını kullanırsak (ortalama) zamanı elde ederiz . Girdilerimiz her iki diziden oluşuyordu, bu yüzden girdilerimiz O ( m + n ) boyutundaydı . Bu nedenle, bu genellikle doğrusal olarak adlandırılır.O(m+n)O(m+n)

Özetle: 's girişinin boyutu, doğrusal, ama genellikle, çünkü daha küçük bir giriş dize eşleme gibi şeyler için karesel denir çünkü genellikle matris çarpımı gibi şeyler için doğrusal olarak adlandırılır. Hangi terimin uygun olduğu, onu kullandığınız içeriğe göre değişir.O(mn)


8

Eğer çalışan zamanın ölçülmesi halinde daha sonra O ( m, n ) olduğu değil de doğrusal bir fonksiyonu ( m , n ) . M ve n arasında bir ilişki yoksa, bu işlev genel olarak ikinci dereceden büyüyebilir .(m,n)O(mn)(m,n)mn

Bununla birlikte, her biri ayrı ayrı doğrusal bir işlevdir, yani bir tanesini düzeltip diğer değişkendeki büyümeye bakarsanız, o zaman diğerinde doğrusal bir işlevdir.


3

İle sorunların karmaşıklığı ölçmek için birden girdiler , tek yön bulmaktır baskın değişken ve bu değişkene dayalı ardından bağlı diğer girişler. Bu yaklaşımla, tek değişkene dayalı karmaşıklık işlevine sahip olabilirsiniz .


2
Örneğin, düğüm ve kenar sayılarına sahipseniz, egemen bir değişken olmayabilir.
Raphael

0

Biraz Dil Verilen ve f işlevi bu şekilde min { | w 1 | , | w 2 | } f ( | w | ) her w = w için 1 # w 2LL={w1#w2|wi(Σ{#}),}fmin{|w1|,|w2|}f(|w|)w=w1#w2LL'yi O ( f ( | w | ) ( | w | - f ( | w | ) ) = O ( f ) olarak tanıyan bir algoritmasının çalışma süresini tahmin edebilirsiniz ( | w | ) | w | - f ( | w | )O(|w1||w2|)L .O(f(|w|)(|w|f(|w|))=O(f(|w|)|w|f(|w|)2)=O(f(|w|)|w|)

Bunun anlamı, eğer girişinizin daha küçük kısmı sabitse (bütün girişe göre), eğer doğrusalsa eğer altı çizili ve karesel çalışma zamanı ise ( gibi) arasında bir şey varsa, doğrusal zaman alırsınız .O(nlogn)

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.