Nüks ilişkilerinde değişkenlerin değiştirilmesi


20

Şu anda, Algoritmalara Giriş (CLRS) üzerinde kendi kendime çalışıyorum ve tekrarlama ilişkilerini çözmek için kitapta ana hatlarıyla belirttikleri belirli bir yöntem var.

Aşağıdaki yöntem bu örnekle açıklanabilir. Varsayalım, yinelemeye sahibiz

T(n)=2T(n)+logn

Başlangıçta m = lg (n) yerine koyarlar ve sonra tekrar tekrar takarlar ve alırlar:

T(2m)=2T(2m2)+m

Bu noktaya kadar mükemmel anlıyorum. Bu sonraki adım benim için kafa karıştırıcı.

Şimdi tekrar "adını" ve izin S ( m ) = T ( 2 m ) görünüşe göre üretir,S(m)S(m)=T(2m)

S(m)=2S(m/2)+m

Nedense bu yeniden adlandırma neden işe yarıyor belli değil ve sadece hile gibi görünüyor. Bunu daha iyi açıklayan var mı?

Yanıtlar:


15

Kesinlikle hile yapmaz. Analizde, zor bir integrali çözmek için ikame işleminin nasıl kullanılabileceğini düşünün. İkame denklemi manipülasyon için daha yönetilebilir hale getirir. Ek olarak, ikame biraz karmaşık nüksleri bilindik nükslere dönüştürebilir.

Bu, örneğinizde gerçekleşen şeydir. Yeni bir tekrarlama tanımladık . Unutmayın , T ( 2 m ) = 2 , T ( 2 mS(m)=T(2m). Dikkat edin,S(m/2)=T(2mT(2m)=2T(2m2)+m. Bu nokta hala belirsizse,k=m/2 olsunve yaptığımız tek şeyin buS(k)=T(2k)olduğuna dikkat edin. Şimdi,S(m) 'yi şuşekilde genişleterekifade edebiliriz: S(m)=2S(m/2)+m. İçin ÇözmeSbiz bizim tanıdık arkadaşı için giderir görüyoruzÇ(mlogmS(m/2)=T(2m2)k=m/2S(k)=T(2k)S(m)

S(m)=2S(m/2)+m.
S . Şimdi S'yi çözdüğümüze görebunu T ( n ) cinsinden ifade etmek istiyoruz. Bunu yapmak için, sadece m için orijinal değerimizi geri takınve T O ( log n log log n ) var .O(mlogm)ST(n)mTO(lognloglogn)

Doğru, ikame işleminin problemleri nasıl daha kolay hale getirdiğini ve n açısından karmaşıklığı elde etmek için değerleri nasıl yeniden eklediğimi tamamen anlıyorum. Sanırım sorum şu: S (m) = T (2 ^ m) 'ye izin verdikten sonra, S (m / 2)' yi nasıl elde edersiniz? Bir sebepten dolayı benim için açık değil. Daha spesifik olmak gerekirse, T (2 ^ (m / 2)) = S (m / 2) sonucunu nasıl elde edersiniz? Tekrarlama T'de olduğu gibi, alt problem boyutu kare köklü iken, tekrarlama S'de alt

Anlamadığım tek bölüm, "Bunu fark et, S (m / 2) = T (2 ^ (m / 2))" derken benim için açık olmayan tek kısım. Değişken ikameler yapma fikrine alışkınım, ancak gerçekten tüm bir nüksün yerine koyma fikrine alışkın değilim.

Ah tamam, son düzenleme bunu benim için yaptı. Şimdi açık, teşekkürler!

1
Biraz şüphe duyuyorum. Ben açısından fonksiyon S () yazarsanız kI denklem S (k) = 2S altında alıyorum (k / 2) + m ı yerine nasıl alabilirim miçink
Atinesh

4

S(m)=T(2m)STm2m

S

  1. Sm2m

  2. T

Bu nedenle geçişler:

m2mT(2m)=S(m)
m22m/2T(2m/2)=S(m2).
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.