Asimptotik notasyon kullanımında hata


10

Aşağıdaki nüksün aşağıdaki kanıtıyla neyin yanlış olduğunu anlamaya çalışıyorum

T(n)2(cn

T(n)=2T(n2)+n
T(n)2(cn2)+ncn+n=n(c+1)=O(n)

Dokümantasyon çünkü o endüktif varsayımın yanlış olduğunu söylüyor Am ben eksik?

T(n)cn

2
Bu formun tekrarları, Ana teorem kullanılarak da çözülebilir .
Juho

2
@Ran: Master-theorem'in bu soru için uygun bir etiket olduğunu düşünmüyorum. Soru, bunun nasıl çözüleceği ile ilgili değil, belirli bir argümandaki yanlışlığa dikkat çekmek. Ayrıca, master-teorem muhtemelen çok spesifiktir ve muhtemelen kendi etiketine sahip olmayı hak etmemektedir. Genel olarak, olası cevapları değil, soruyu temel alarak etiketlemeliyiz. Örneğin, bu akra-bazzi'yi etiketler misiniz?
Aryabhata

"Aşağıdaki ispat ile yanlış olan ne" - Bir ispat görmüyorum. Hataları tespit etmek için tam bir kanıt yazmak (yani, indüksiyonu açık yapmak) genellikle yararlıdır.
Raphael

Yanıtlar:


12

Diyelim ki nihai hedef yi kanıtlamak . Tümevarım hipoteziyle başlarsınız:T(n)=O(n)

Tüm i < n için T ( i ) c i .T(i)cii<n

Kanıtı tamamlamak için de göstermelisiniz.T(n)cn

Ancak, çıkarabileceğiniz şey , bu da kanıtın tamamlanması için yararlı değildir; İhtiyacınız biri sabit c (neredeyse) herkes için n . Bu nedenle hiçbir şeyi sonuçlandıramayız ve T ( n ) = O ( n ) kanıtlanmamıştır.T(n)(c+1)ncnT(n)=O(n)

Sonuç ve ispat süreci arasında kafanızın karıştığına dikkat edin. Ve bir nokta daha, bu durumda aslında Θ ( n log n ) olduğundan, kanıtlayabilmek için uygun bir indüksiyon hipotezini düşünebilirsiniz.T(n)Θ(nlogn)


c '= c + 1' i değiştirirsek, herhangi bir değişiklik yapar mı?
Erb

@erb: Hayır, olmayacak. Seçilen bir sabit için kanıtlamanız gerekir. Değiştirilmesi durumunda, , sonunda sahip T ( n ) ( c ' + 1 ) , n (veya T ( n ) ( C + 2 ) n, daha sonra sonuç aynıdır). c=c+1T(n)(c+1)nT(n)(c+2)n
ped

8

Birkaç adım atladınız. Görünüşe göre indüksiyonla kanıtlamaya çalışıyorsunuz ve kanıtınız gidiyor:T(n)=O(n)

Varsayalım için k < n . Bu T ( k ) c anlamına gelirT(k)=O(k)k<nbazıları için k c . Daha sonra , T ( n ) = 2 T ( N / 2 ) + n 2 c N / 2 + n ( c + 1 )T(k)ckc , yani T ( n ) = O ( n ) .T(n)=2T(n/2)+n2cn/2+n(c+1)nT(n)=O(n)

Bu kanıt en baştan yanlış gidiyor: “ k < n için “ ”bir anlam ifade etmiyor. Büyük Ah bir asimptotik kavramıdır: T ( k ) = O ( k ) bir sabit olduğu anlamına gelir c ve bir eşik, N , öyle ki k N , T ( k ) CT(k)=O(k)k<nT(k)=O(k)c . Ve yine sonunda, “ T ( n ) = O ( n ) ”sonucunu çıkaramazsınız, çünkü bu T fonksiyonu hakkındabir bütün olarak birşeyler söylüyorve sadece belirli T ( n ) değeri hakkında bir şey kanıtladınız..kN,T(k)ckT(n)=O(n)TT(n)

ne anlama geldiği konusunda açık olmalısınız . Belki de kanıtınız gider:O

Diyelim ki herkes için k < n . Daha sonra , T ( n ) = 2 T ( N / 2 ) + n 2 c N / 2 + n ( c + 1 )T(k)ckk<n .T(n)=2T(n/2)+n2cn/2+n(c+1)n

Bu tümevarım adımını kanıtlamaz: ve için ispat k = N , T ( k ) ( c + 1 )T(k)ckk=n . Bu daha zayıf bir bağ. Bunun ne anlama geldiğine bakın: T ( k ) cT(k)(c+1)k , c'nin T'nin büyüme oranına bağlı olduğuanlamına gelir. Ama k büyüdüğündeartanbir c oranına sahipsiniz. Bu doğrusal bir büyüme değil!T(k)ckcTck

Eğer yakından bakarsanız, hızı fark edeceksiniz tarafından yetişir 1 zaman k çiftlerde. Bu nedenle, gayri, eğer m = 2 s k sonra c m = C k + s ; diğer bir deyişle, c k = c 0 log 2 k .c1km=2pkcm=ck+pck=c0log2k

Bu kesin bir şekilde yapılabilir. Söz konusu endüksiyon ile kanıtlamak , T ( k ) c log 2 ( k ) .k1T(k)clog2(k)

Yineleme ilişkisi, verileri doğrusal zamanda iki eşit parçaya bölen böl ve fethet algoritmaları için tipiktir. Bu tür algoritmalar faaliyet süresi ( O ( n ) değil ).Θ(nlog(n))O(n)

Beklenen sonucun ne olduğunu görmek için, master teoremine karşı nüks ilişkisini kontrol edebilirsiniz . Bölüm ve yapılan fazladan çalışma n ; log 2 ( 2 ) = 1 , bu yüzden , ikinci durumda büyüme olduğu Θ ( n2T(n/2)nlog2(2)=1 .Θ(nlog(n))


7

Zaten verilen cevabı uzatıyorum, belki de sadece yorumumu daha ayrıntılı olarak açıklayarak.

Tahmin etmek zor ve sıkıcı olabileceğinden, bazen daha iyi yöntemler mevcuttur. Böyle bir yöntem Master Teoremidir . Bizim nüks biçimi artık , bir 1 ve b > 1 sabitler ve vardır f ( n ) bir fonksiyonu. Bizim durumumuzda o Not n / 2 yorumlanabilir anlamına n / 2T(n)=aT(n/b)+f(n)a1b>1f(n)n/2n/2. Teknik olarak kesin olmak gerekirse, tam sayı olmayabileceğinden yinelememiz iyi tanımlanmamış olabilir. Bununla birlikte, nüksün asimptotik davranışını etkilemeyeceği için buna izin verilir. Bu nedenle, genellikle zemin ve tavanları düşürmeyi uygun buluyoruz. Bunun resmi kanıtı biraz sıkıcıdır, ancak ilgilenen okuyucu bunu Cormen ve ark. kitap .n/2

Bizim durumumuzda , b = 2 , f ( n ) = Θ ( n ) var . Bu, n log b a = n log 2 2 = n olduğu anlamına gelir . İkinci durum Master 'teoremi Beri geçerlidir f ( n ) = Θ ( n ) , ve çözüm , T ( n ) = Θ ( n günlüka=2b=2f(n)=Θ(n)nlogba=nlog22=nf(n)=Θ(n) .T(n)=Θ(nlogn)


n=2k
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.