Pertemuan-4 : Recurrences Pendahuluan: Pengertian, contoh, dll Metode substitusi Metode pohon rekursi Metode master
Penemu fungsi rekursif Lahir : Hungary, February 17, 1905 Meninggal : Hungary, February 16, 1977
Pendahuluan Ada kalanya kita mengalami kesulitan untuk mendefinisikan suatu objek secara eksplisit. Dalam kasus ini, mungkin lebih mudah untuk mendefinisikan objek tersebut menggunakan dirinya sendiri. Ini dinamakan sebagai proses rekursif Kita dapat mendefinisikan barisan, himpunan atau fungsi secara rekursif.
Langkah-langkah mendefinisikan barisan secara rekursif: Langkah basis: Spesifikasi anggota awal. Langkah rekursif: Berikan aturan untuk membangun anggota baru dari anggota yang telah ada.
Contoh barisan yang didefinisikan secara rekursif Berikan definisi rekursif dari an=rn, dengan rBulat, r ≠ 0 dan n bilangan bulat positif. Solusi: Definisikan a0 = r0 = 1 dan an+1 = r.an untuk n = 0, 1, 2, …
Langkah basis: Tentukan nilai fungsi pada saat nol Langkah-langkah mendefinisikan fungsi secara rekursif dgn domain bil. cacah Langkah basis: Tentukan nilai fungsi pada saat nol Langkah rekursif: Berikan aturan untuk mencari nilai fungsi untuk setiap bilangan bulat berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil. Definisi seperti itu disebut rekursif atau definisi induktif
Contoh fungsi yang didefinisikan secara rekursif f(n + 1) = 2f(n) + 3 maka f(1) = 2f(0) + 3 = 23 + 3 = 9 f(2) = 2f(1) + 3 = 29 + 3 = 21 f(3) = 2f(2) + 3 = 221 + 3 = 45 f(4) = 2f(3) + 3 = 245 + 3 = 93
Bilangan Fibonacci f0 = 0, f1 = 1 fn = fn-1+ fn-2, n=2,3,4,… f0= 0
Pertumbuhan populasi kelinci Sepasang kelinci ditaruh di suatu pulau. Pasangan kelinci ini tidak akan beranak sampai berumur 2 bulan. Setelah berumur 2 bulan, setiap sepasang menghasilkan sepasang yg lain setiap bulannya. Tentukan relasi recurrence dari jumlah pasangan setelah n bulan, bila tidak ada kelinci yg mati.
Populasi kelinci: bulan 0 : 1 pasang bulan 1 : 1 pasang ... bulan n : bulan(n-1) + bulan(n-2) pasang
Solusi: Misalkan fn: jumlah pasangan kelinci setelah n bulan, maka, f1 = 1, f2 = 1. Untuk mencari fn, tambahkan jumlah pasangan pada bulan sebelumnya, fn-1, dengan jumlah pasangan yang baru lahir, fn-2. Jadi, fn = fn-1 + fn-2.
Solusi: dengan disebut golden ratio
Andaikan:
Komputasi rekursif: recFib(n) { if (n ≤ 1) return n else return recFib(n-1) + recFib(n-2) }
T(n) = T(n-1) + T(n-2) 2T(n-2) ≤ T(n-1) + T(n-2) ≤ 2T(n-1) T(n) = O(2n) T(n) = Ω(2n/2)
T(n) = O(n) Komputasi iteratif: IterFib (n) { f[0] = 0; f[1] = 1; for ( i=2 ; i ≤ n ; i++) f[i] = f[i-1] + f[i-2]; } T(n) = O(n)
Relasi rekursif (Recurrence) Relasi Recurrence untuk barisan {an} adalah persamaan yang menyatakan an dalam satu atau lebih bentuk a0, a1, …, an-1 untuk semua n dengan n n0 dimana n0 bilangan bulat non-negatif. Barisan {an} tersebut dikatakan sebagai solusi dari relasi recurrence ini bila an memenuhi relasi recurrence.
Penyelesaian relasi rekursif Metode substitusi: dengan cara membuat tebakan terhadap solusinya, kemudian tebakan tsb dibuktikan dengan induksi matematika Metode (pohon) rekursif: dengan cara mengubah bentuk rekursif menjadi bentuk penjumlahan, kemudian diselesaikan. Metode master: digunakan utk menyelesaikan pers rekursif dalam bentuk : T(n) = aT(n/b) + f(n)
Metode substitusi Diketahui : Buktikan bahwa: Buat tebakan T(n) = O(√n), berarti T(n) ≤ c√n
Bukti: dengan induksi matematika Basis induksi : n = 1, c=4 T(1) = 1 ≤ c√1 , c > 0 Langkah induksi: (c/√2 + 1) ≤ c benar untuk c = 4
Selesaikan T(n) = 2T ([n/2]) + n, T(1)=1 Misalnya digunakan tebakan : O(n log n) T(n) = 2 T([n/2]) + n , T(1) = 1 T(n) ≤ 2(c[n/2]log([n/2])) + n ≤ c.n.lg([n/2]) + n ≤ c.n.lg n - c.n.lg 2 + n ≤ c.n.lg n - c.n + n ≤ c.n.lg n yang berlaku untuk c ≥ 1
Metode iterasi/ rekursif: Metode iterasi tidak memerlukan tebakan solusinya, tetapi memerlukan manipulasi aljabar yang lebih intensif dari pada metode substitusi. Ide dasarnya adalah dengan mengembangkan bentuk rekursif tersebut serta merepresentasi-kannya dalam bentuk jumlah. Teknik untuk mengevaluasi bentuk jumlah dapat digunakan untuk mendapatkan nilai batas dari solusinya.
Contoh: Tentukan T(n), bila T(n) = T(n-1) + 1/n Jawab: Bila bentuk rekursif diuraikan: (lihat Cormen 3.9)
Contoh: T(n) = 3T([n/4])+ n Bila bentuk rekursif diuraikan: T(n) = n + 3T([n/4]) = n + 3([n/4]) + 3T(n/4[/4])) = n + 3([n/4]+ 3([n/16]+ 3T(n/64))) = n + 3n/4+ 9n/16+ 27T(n/64) Suku ke-i berbentuk 3in/4i Oleh karena n berkurang sebesar 4 pada setiap iterasi, maka proses berlangsung sampai log4N langkah
T(n) ≤ n + 3n/4 + 9n/16 + 27n/64 + . . .+ 3log4N N / N
Menara Hanoi Merupakan sebuah puzzle populer yang ditemukan oleh seorang matematikawan Perancis Edouard Lucas pada abad 19 Terdapat menara dengan 3 tiang untuk meletakkan sejumlah disk berukuran berbeda. Awalnya semua disk terletak secara terurut pada tiang pertama dengan disk terbesar paling bawah Aturan: Satu disk dapat dipindahkan setiap waktu dari satu tiang ke tiang lain selama disk tsb tidak berada di atas disk yang lebih kecil. Tujuan: Memindahkan semua disk ke tiang kedua dengan disk terbesar di urutan paling bawah.
Misalkan Hn: banyaknya langkah yg diperlukan untuk memindahkan n disk dalam masalah menara Hanoi. Kita mulai dengan n disk pada tiang 1. Kita dapat memindahkan n-1 disk paling atas dengan mengikuti aturan ke tiang 3 dalam Hn-1 langkah. Kemudian, dengan menggunakan 1 langkah kita bisa memindahkan disk terbesar ke tiang 2. Selanjutnya, pindahkan n-1 disk dari tiang 3 ke tiang 2, dengan mengikuti aturan dalam Hn-1 langkah. Dengan demikian, kita telah memecahkan puzzle dengan banyak langkah: Hn = 2Hn-1 + 1 dan H1 = 1.
Untuk mencari solusinya, dilakukan proses iteratif: Hn = 2Hn-1 + 1 = 2(2Hn-2 + 1)+1 = 22Hn-2 + 2 +1 = 22(2Hn-3 +1) + 2 +1 = 23Hn-3 + 22 + 2 +1 … = 2n-1H1 + 2n-2 + 2n-3 + … + 2 +1 = 2n-1 + 2n-2 + 2n-3 + … + 2 +1 (deret geometri) = 2n - 1 Jadi, untuk memindahkan 64 disk diperlukan langkah sebanyak: 264 - 1 = 18,446,744,073,709,551,615.
Contoh: T(n) = aT([n/4])+ n n, (3/4)n, (3/4)2n, ... a=4: n, (4/4)n, (4/4)2n, ... a=5: n, (5/4)n, (5/4)2n, ...
a = 3
a = 4
a = 5
Metode Master Metode master menyediakan semacam “cookbook” untuk menyelesaikan persamaan rekursif dalam bentuk: T(n) = aT(n/b) + f(n) dengan a ≥ 1 dan b > 1 adalah konstanta dan f(n) adalah fungsi yang secara asimtotik positif. Dalam metode master perlu diingat 3 kasus, namun sesudahnya bentuk-bentuk rekursif dapat diselesaikan dengan lebih mudah.
Kasus I: T(n) = aT(n/b) + f(n) a ≥ 1 , b > 1 jika f(n) = O(nlogb(a-ε)), ε > 0 maka T(n) = Θ(nlogba) dhi, f(n) secara polinomial lebih kecil dari nlogba dengan faktor nε, shg nlogba mendominasi
Contoh: Jadi kasus I, shg:
Kasus II: T(n) = aT(n/b) + f(n) a ≥ 1 , b > 1 jika f(n) = Θ(nlogba) maka T(n) = Θ(nlogbalog n) dhi, cost setiap langkah adalah nlogba sehingga, padahal ada sebanyak log n langkah, jadi T(n) = Θ(nlogbalog n)
Contoh: Jadi kasus II, shg:
Kasus III: T(n) = aT(n/b) + f(n) a ≥ 1 , b > 1 jika f(n) = Ω(nlogb(a+ε)), ε > 0 dan a f(n/b) ≤ c f(n) untuk c < 1 maka T(n) = Θ(f(n)) dhi, f(n) > nlogba dgn faktor polinomial sehingga suku dominan adalah f(n) + f(n/b) + f(n/b2)… O(f(n))
Contoh: Jadi kasus III, krn f(n) mendominasi
T(n) = Θ(nlog27) Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : T(n) = 7T(n/2) + n2 Solusi: a = 7, b = 2, f(n) = n2, nlog27 = n2.803.. n2 = O(nlog27 - ε), oleh karena n2 ≤ cn2.803..- ε ε, c > 0 T(n) = Θ(nlog27)
T(n) = Θ(nlog24log n) = Θ(n2log n) Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : T(n) = 4T(n/2) + n2 Solusi: a = 4, b = 2, f(n) = n2 n2 = Θ(n log24) = Θ(n2) T(n) = Θ(nlog24log n) = Θ(n2log n)
T(n) = Θ(n3) Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : T(n) = 2T(n/3) + n3 Solusi: a = 2, b = 3, f(n) = n3 nlog32 = n0.63.. n3 = Ω(nlog32 + ε) ok n3 ≥ cn0.63+ ε ε, c > 0 dan 2f(n/3) = 2n3/27 ≤ cn3 utk 2/27 < c < 1 T(n) = Θ(n3)
Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : T(n) = 3T(n/2) + nlogn Solusi: a = 3, b = 2, f(n) = n logn nlogn = O(n log23 - ε) nlogn ≤ cn1.5 logn < cn0.5 c = 1, n0 = 16 T(n) = Θ(nlog23)
Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : Solusi:a = 2, b = 2, f(n) = 10n, logba = log22 = 1 dapat dicek bahwa jadi
Metode Master yg umum
sekian & terima kasih