Landau terimlerinin toplamı ile ilgili sorun nedir?


14

yazdım

i=1n1i=i=1nO(1)=O(n)

ama arkadaşım bunun yanlış olduğunu söylüyor. TCS hile tabaka itibaren toplam olarak da adlandırılır biliyoruz logaritmik büyüme sahip olan n . Yani sınırım çok keskin değil, ama ihtiyacım olan analiz için yeterli.Hnn

Neyi yanlış yaptım?

Düzenleme : Arkadaşım aynı akıl yürütme ile bunu kanıtlayabileceğimizi söylüyor

i=1ni=i=1nO(1)=O(n)

Şimdi bu kesinlikle yanlış! Burada neler oluyor?


2
Bu sorunun etiketleri hakkında bir tartışmaya buradan bakın .
Raphael


Ayrıca, ortak bir örneğin daha somut bir tedavisine de bakınız: Bu yuvalanmış halkanın asimptotik çalışma süresi nedir?
Gilles 'SO- kötü olmayı bırak

Yanıtlar:


10

Yaptığınız şey gösterimi çok uygun bir şekilde kötüye kullanmaktır.

Bazı akranlar, bir kümeyi ifade ettiği ve yazdıklarınız üzerinde aritmetik işlemler yapamayacağınız için yazdıklarınızın saçma olduğunu söyleyecektir .O(f)

Ama bu bilgiçler göz ardı ederek varsaymak iyi bir fikirdir açılımı bazı setin üyesi. Yani f ( n ) = g ( n ) + O ( n ) dediğimizde, eğer bu f ( n ) - g ( n ) O ( n ) ise gerçekten kastettiğimiz şey . (Not: bazı bilginler bu ifadede de f ( n ) bir sayı ve f olduğunu iddia ederek ürperebilirO(f)f(n)=g(n)+O(n)f(n)g(n)O(n)f(n)f işlevi!)

Bu, aşağıdaki gibi ifadelerin yazılmasını çok kolaylaştırır

nk=1nk1/kn+O(n1/3)

Bunun araçları bazı olmasıdır olduğu gibifO(n1/3)

nk=1nk1/kn+f(n)

Sizin durumunuzda

k=1n1k=k=1nO(1)=O(n)

daha da kötüye kullanıyorsunuz ve dikkatli olmanız gerekiyor.

O(1)nk

k

nkO(1)k=1nk=k=1nO(1)

kf=O(g)g0

S(n)=k=1nf(k)=k=1nO(g(k))=O(k=1n|g(k)|)

O(g(k))hO(g)k=1nh(k)On1

nf=O(g)

S(n)=k=1nf(k)=k=1nO(g(n))=O(ng(n))

Yani kanıtınız her iki yorumda da doğrudur.


1
Alt satır: Landau sembolünün her oluşumunun kendi sabitini getirdiğini ( olduğundan) emin olun (emin olun) .
Raphael

8

nO(n)

i=1n1ilnn+12n=O(n)

O(n)


4
Tamam: 1 / i ≤ 1 = O (1).
JeffE

1
Endişe ikinci eşitlik işaretine yöneliktir. Bunu nasıl doğrularım?
Raphael

2
Ancak bu da doğrudur. Her biri O (1) olan n terimlerin toplamı gerçekten O (n) 'dir.
Suresh

2
O

2
iO(1)=O(n)i=O(1)

6

İkinci örnek için, olduğunu iddia edemezsiniz.

i=O(1)

ini>n/2i=O(n)i1n

i=1ni=i=1nO(n)=nO(n)=O(n2)

Ancak yapılacak en doğru şey aslında büyük-O notasyonunu sadece sonunda kullanmaktır. Üst, toplamanızı olabildiğince sıkı ve sadece bitirdiğinizde bu tuzaklardan kaçınmak için asimtotik notasyonları kullanın.

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.