Big-O gösterimi katsayıları nasıl tartışılır


10

Büyük O gösterimindeki fonksiyonların katsayılarını tartışmak için hangi gösterim kullanılır?

İki fonksiyonum var:

  • f(x)=7x2+4x+2
  • g(x)=3x2+5x+4

Açıkçası, her iki fonksiyon da , gerçekten , ancak bu bundan başka bir karşılaştırmaya izin vermez. 7 ve 3 katsayılarını nasıl tartışırım? Katsayıyı 3'e düşürmek asimptotik karmaşıklığı değiştirmez, ancak yine de çalışma zamanı / bellek kullanımı için önemli bir fark yaratır.Θ ( x 2 )O(x2)Θ(x2)

Öyle mi yanlış olduğunu söylemek olan ve olan ? Katsayıları dikkate alan başka bir gösterim var mı? Ya da bunu tartışmanın en iyi yolu ne olurdu?O ( 7 x 2 ) g O ( 3 x 2 )fO(7x2)gO(3x2)


Yanlış değil, sadece gereksiz, çünkü . O(7x2)=O(x2)

Ayrıca referans sorumuza bakın .
Raphael

Yanıtlar:


9

Big- ve big- gösterimleri, önde gelen terimin katsayılarını gizler, bu nedenle hem olmak üzere iki işleviniz varsa , işlevlere bakmadan mutlak değerlerini karşılaştıramazsınız. olduğunu söylemek yanlış değildir , ancak bilgilendirici değildir çünkü de doğrudur (ve, Aslında, herhangi bir pozitif sabit için ).Θ Θ ( n 2 ) 7 x 2 + 4 x + 2 = Θ ( 7 x 2 ) 7 x 2 + 4 x + 2 = Θ ( 3 x 2 ) Θ ( k x 2 ) kÖΘΘ(n2)7x2+4x+2=Θ(7x2)7x2+4x+2=Θ(3x2)Θ(kx2)k

Bunun yerine kullanmak isteyebileceğiniz başka gösterimler de var. Örneğin, notasyonu lüx çok daha güçlü bir iddiadır :Θ~Θ

f(x)g(x)limxf(x)g(x)=1

Örneğin, , ancak iddiası yanlış olur. Tilde gösterimi , baskın büyüme teriminin önde gelen katsayısına önem veriyorsanız, aradığınız şey gibi görünen gösterimi olarak düşünebilirsiniz .7x2+4x+27x27x2+4x+23x2Θ


Aradığım şey Tilde notasyonu. Ne denildiğini hatırlayamadığım bir şey olduğundan emindim ve aramalar sonuç vermedi. Teşekkürler!

6

Tilde bir yaklaşımdır. ile sadık kalmak istiyorsanız ,O

f(x)=7x2+O(x) ve

g(x)=3x2+O(x) .


Daha da iyisi: f (x) = 7x ^ 2 + o (x ^ 2) deyin, kalanların asimptotik olarak x ^ 2'den küçük olduğunu açıklığa kavuşturmak için little-o notasyonu kullanın.
templatetypedef

2
O (x) kesinlikle o (x ^ 2) 'den daha küçüktür, bu yüzden bunu kullanmak büyük O kullanmaktan daha az açıktır. Öte yandan, doğru ilk terime sahip olduğunuzu söylemek istediğinizde little-o kullanmak kesinlikle daha yaygındır, çünkü o zaman bir sonraki terim için endişelenmenize gerek yoktur. (Ve tamamen açık olmak istiyorsak, neden tam olarak doğru olduğu için neden sadece 7x ^ 2 + 4x + 2 yazdığımızı açıklamamız gerekir.

Kesinlikle haklısın ... özür dilerim!
templatetypedef

f(x)=7x2+g(x)g(x)O(x)f(x)=7x2+4x+O(1)
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.