Kekambuhan

8

Catatan: ini dari catatan Algoritma JeffE di Recurrences, halaman 5.

(1) Jadi kita mendefinisikan pengulangan tanpa case dasar. Sekarang saya mengerti bahwa untuk sebagian besar kekambuhan, karena kami sedang mencari batas asimptotik, base case tidak masalah. Tetapi dalam kasus ini, saya bahkan tidak melihat di mana kita bisa mendefinisikan kasus dasar. Apakah ada angka yang dijamin akan mengenai kita ketika kita terus mengambil akar kuadrat mulai dari bilangan bulat apa pun. Apakah kita hanya mendefinisikan untuk , untuk beberapa realita , ?T(n)=nT(n)+nT(n)=an<bab

(2) Pada halaman 7, Erickson mendapatkan bahwa jumlah lapisan dalam pohon rekursi L akan memenuhi . Dari mana datangnya ini? Saya tidak punya ide. Saya melihat bahwa jumlah daun di pohon seharusnya berjumlah , tapi saya tidak tahu harus ke mana dari sana.n2L=2(n)(n)=n

Bantuan apa pun dihargai!

Catatan Saya sedang melihat: http://jeffe.cs.illinois.edu/teaching/algorithms/notes/99-recurrences.pdf

DB Cooper
sumber

Jawaban:

7

Anda harus benar-benar mengajukan pertanyaan ketiga: apa yang terjadi jika nbukan persegi yang sempurna. Jawaban atas pertanyaan ini adalah bahwa perulangan yang sebenarnya seharusnya terjadiT(n) atau T(n) dari pada T(n), meskipun dalam analisis kami hanya akan mempertimbangkan input yang kotak "rekursif".

Mengenai pertanyaan pertama Anda, mungkin ada lebih dari satu kasus dasar. Misalnya, mungkinT(n)=1 untuk semua n100. Anda dijamin pada akhirnya mencapai kasing ini. Dalam hal ini, seperti dalam kebanyakan kasus, bentuk persis dari kasus dasar tidak mempengaruhi asimptotik Theta besar (tetapi itu mempengaruhi konstanta tersembunyi).

Akhirnya, mengenai pertanyaan kedua Anda, anggap bahwa kasus dasar Anda menentukan T(n) untuk nC. Pohon rekursi (yang merupakan interpretasi khusus dari beberapa fitur rekurensi) memiliki bentuk berikut:

  • Root adalah salah satu contoh ukuran n.
  • Akar sudah n anak-anak yang merupakan contoh ukuran n.
  • Setiap node pada kedalaman 1 memiliki n=n1/4 anak-anak yang merupakan contoh ukuran n=n1/8.
  • Lebih umum, sebuah simpul di kedalaman d adalah contoh ukuran n1/2d. Anda dapat membuktikan ini dengan induksi dengan memeriksa cased=0 (dimana n1/2d=n) dan menghitung n1/2d=n1/2d+1.

Rekursi berakhir ketika instance memiliki ukuran paling banyak C, dan ini terjadi saat n1/2dC. Pada titik ini terjadi, kita punyan1/2d1>C (asumsi n>C), dan sebagainya C<n1/2dC. Mengambil logaritma,12logC<logn2d<logC dan sebagainya logn2d=Θ(1), menyiratkan 2d=Θ(logn). Kita dapat menyimpulkan bahwadloglogn. Ini adalah jumlah lapisan dalam pohon. Jeff menggunakanC=2, Itulah cara dia mendapatkan formula khususnya.

Yuval Filmus
sumber
4

Menjawab pertanyaan pertama Anda. Alternatif untuk menggunakan batas atas dan batas bawah untuk mencapai kasus dasar, salah satu opsi adalah Anda dapat mengambil bentukn.

Ambil, misalnya, rekursi mergesort:

T(n)=2cT(n2)+cn

Jelas, sebagian besar ntidak akan membagi menjadi bilangan bulat secara merata. Maka sangat umum untuk menganggap itun berbentuk:

n=2kkN

Ini menyiratkan setiap n adalah kekuatan positif 2, dengan demikian menyelesaikan kasus dasar kami selalu 1. Atau kita bisa membuat kasingc dari pada 1 dengan asumsi n berbentuk:

n=c2kkN,cN+

Kita bisa menerapkan ini pada pengulangan kita:

T(n)=nT(n)+n

Menganggap n berbentuk:

n=c2kkN,cN+
Maka kasus dasar akan selalu menyelesaikan ke konstan c.

Sekarang jika Anda dapat membuktikannya dengan asumsi ini, Anda bisa melanjutkan untuk membuktikannya nnilai yang tidak memiliki formulir ini. Salah satu pendekatan adalah dengan mencoba mengikatnya dengan yang tertinggi berikutnya (atau terendah)nyang memang memiliki bentuk itu.

ryan
sumber