Aşağıdaki nüksün aşağıdaki kanıtıyla neyin yanlış olduğunu anlamaya çalışıyorum
T(n)≤2(c⌊n
Dokümantasyon çünkü o endüktif varsayımın yanlış olduğunu söylüyor Am ben eksik?
Aşağıdaki nüksün aşağıdaki kanıtıyla neyin yanlış olduğunu anlamaya çalışıyorum
T(n)≤2(c⌊n
Dokümantasyon çünkü o endüktif varsayımın yanlış olduğunu söylüyor Am ben eksik?
Yanıtlar:
Diyelim ki nihai hedef yi kanıtlamak . Tümevarım hipoteziyle başlarsınız:
Tüm i < n için T ( i ) ≤ c i .
Kanıtı tamamlamak için de göstermelisiniz.
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.
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.
Birkaç adım atladınız. Görünüşe göre indüksiyonla kanıtlamaya çalışıyorsunuz ve kanıtınız gidiyor:
Varsayalım için k < n . Bu T ( k ) ≤ c anlamına gelirbazıları için k c . Daha sonra , T ( n ) = 2 T ( ⌊ N / 2 ⌋ ) + n ≤ 2 c ⌊ N / 2 ⌋ + n ≤ ( c + 1 ) , yani T ( 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 ) ≤ 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..
ne anlama geldiği konusunda açık olmalısınız . Belki de kanıtınız gider:
Diyelim ki herkes için k < n . Daha sonra , T ( n ) = 2 T ( ⌊ N / 2 ⌋ ) + n ≤ 2 c ⌊ N / 2 ⌋ + n ≤ ( c + 1 ) .
Bu tümevarım adımını kanıtlamaz: ve için ispat k = N , T ( k ) ≤ ( c + 1 ) . Bu daha zayıf bir bağ. Bunun ne anlama geldiğine bakın: T ( k ) ≤ c , 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!
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 .
Bu kesin bir şekilde yapılabilir. Söz konusu endüksiyon ile kanıtlamak , T ( k ) ≤ c log 2 ( 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 ).
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 Θ ( n .
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 / 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 .
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ük .