Transcript Pertemuan 3
Pertemuan-4 : Recurrences
Pendahuluan:
Pengertian, contoh, dll
Metode substitusi Metode pohon rekursi Metode master
1
Penemu fungsi rekursif
Lahir : Hungary, February 17, 1905 Meninggal : Hungary, February 16, 1977 2
• • •
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.
3
Langkah-langkah mendefinisikan barisan secara rekursif:
1. Langkah basis : Spesifikasi anggota awal.
2. Langkah rekursif : Berikan aturan untuk membangun anggota baru dari anggota yang telah ada. 4
Contoh barisan yang didefinisikan secara rekursif
Berikan definisi rekursif dari a n =r n , dengan r Bulat, r ≠ 0 dan n bilangan bulat positif.
Solusi:
Definisikan a 0 = r 0 = 1 dan a n+1 = r.a
n untuk n = 0, 1, 2, … 5
Langkah-langkah mendefinisikan fungsi secara rekursif dgn domain bil. cacah
1. Langkah basis : Tentukan nilai fungsi pada saat nol 2. 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 6
Contoh fungsi yang didefinisikan secara rekursif
f(0) = 3 f(n + 1) = 2f(n) + 3
maka • • • • •
f(0) = 3 f(1) = 2f(0) + 3 = 2
3 + 3 = 9 f(2) = 2f(1) + 3 = 2
9 + 3 = 21 f(3) = 2f(2) + 3 = 2
21 + 3 = 45 f(4) = 2f(3) + 3 = 2
45 + 3 = 93
7
Bilangan Fibonacci
•
f 0
•
f n = 0, f 1 = 1 = f n-1 + f n-2 , n=2,3,4,…
f 0 = 0 f 1 = 1 f 2 = f 1 + f 0 = 1 + 0 = 1 f 3 = f 2 + f 1 = 1 + 1 = 2 f 4 = f 3 + f 2 = 2 + 1 = 3 f 5 = f 4 + f 3 = 3 + 2 = 5 f 6 = f 5 + f 4 = 5 + 3 = 8 8
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 kelinci yg mati.
recurrence
dari jumlah pasangan setelah n bulan, bila tidak ada 9
Populasi kelinci:
• • • • • • • bulan 0 : 1 pasang bulan 1 : 1 pasang bulan 2 : 1 + 1 pasang bulan 3 : 2 + 1 pasang bulan 4 : 3 + 2 pasang ...
bulan n : bulan(n-1) + bulan(n-2) pasang 10
Solusi:
• • • Misalkan f n : jumlah pasangan kelinci setelah n bulan, maka, f 1 = 1, f 2 = 1. Untuk mencari f n , tambahkan jumlah pasangan pada bulan sebelumnya, f n-1 , dengan jumlah pasangan yang baru lahir, f n-2 . Jadi, f n = f n-1 + f n-2 .
11
Solusi:
dengan
disebut
golden ratio
12
Andaikan:
13
Komputasi rekursif:
recFib(n) { if (n ≤ 1) return n else return recFib(n-1) + recFib(n-2) } 14
T(n) = T(n-1) + T(n-2) 2T(n-2) ≤ T(n-1) + T(n-2) ≤ 2T(n-1)
T(n) = O(2
n
) T(n) = Ω(2
n/2
)
15
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)
16
Relasi rekursif (Recurrence)
• •
Relasi Recurrence
dimana n 0 untuk barisan {a n } adalah
persamaan
yang menyatakan a n dalam satu atau lebih bentuk a 0 , a 1 , …, a n-1 untuk semua n dengan n n 0 bilangan bulat non-negatif. Barisan {a n } tersebut dikatakan sebagai
solusi
dari relasi
recurrence
ini bila a n memenuhi relasi
recurrence
.
17
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) 18
Metode substitusi
Diketahui :
T T
1
T
2
n
Buktikan bahwa:
T
O
Buat tebakan T(n) = O(√n), berarti T(n) ≤ c√n 19
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 20
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 21
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.
22
Contoh: Tentukan T(n), bila T(1) = 1 T(n) = T(n-1) + 1/n Jawab: Bila bentuk rekursif diuraikan: (lihat Cormen 3.9)
n n
1 1
n
2 1
i n
1 1
i i
n
2 1
i n
1 1
x dx n
1
n n
23
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 3 i n/4 i Oleh karena n berkurang sebesar 4 pada setiap iterasi, maka proses berlangsung sampai log 4 N langkah 24
T(n) ≤ n + 3n/4 + 9n/16 + 27n/64 + . . .+ 3 log 4 N N / N
25
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.
26
• • • • Misalkan H Hanoi.
n : banyaknya langkah yg diperlukan untuk memindahkan n disk dalam masalah menara Kita mulai dengan n disk pada tiang 1. Kita dapat memindahkan n-1 disk paling atas dengan mengikuti aturan ke tiang 3 dalam H n-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 H n-1 langkah. Dengan demikian, kita telah memecahkan puzzle dengan banyak langkah:
H n = 2H n-1 + 1 dan H 1 = 1.
27
Untuk mencari solusinya, dilakukan proses iteratif:
H n = 2H n-1 + 1 = 2(2H n-2 = 2 2 (2H n-3 … + 1)+1 = 2 2 H n-2 + 2 +1 +1) + 2 +1 = 2 3 H n-3 + 2 2 + 2 +1 = 2 n-1 H 1 = 2 n-1 + 2 + 2 n-2 n-2 + 2 + 2 n-3 n-3 + … + 2 +1 + … + 2 +1 (deret geometri) = 2 n - 1
Jadi, untuk memindahkan 64 disk diperlukan langkah sebanyak :
2 64 - 1 = 18,446,744,073,709,551,615.
28
Contoh: T(n) = aT([n/4])+ n
a=3:
n, (3/4)n, (3/4)
2
n, ...
a=4:
n, (4/4)n, (4/4)
2
n, ...
a=5:
n, (5/4)n, (5/4)
2
n, ...
29
a = 3 30
a = 4 31
a = 5 32
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.
33
Kasus I: T(n) = aT(n/b) + f(n) a ≥ 1 , b > 1
jika
f(n) = O(n log b (a-ε) )
, ε > 0 maka
T(n) = Θ(n log b a )
dhi, f(n) secara polinomial lebih kecil dari n log b a n log b a dengan faktor n mendominasi ε , shg 34
Contoh: Jadi kasus I, shg:
35
Kasus II: T(n) = aT(n/b) + f(n) a ≥ 1 , b > 1
jika
f(n) = Θ(n log b a )
maka
T(n) = Θ(n log b a log n)
dhi,
cost
setiap langkah adalah
n log b a
sehingga, padahal ada sebanyak log n langkah, jadi
T(n) = Θ(n log b a log n)
36
Contoh: Jadi kasus II, shg:
37
Kasus III: T(n) = aT(n/b) + f(n) a ≥ 1 , b > 1
jika
f(n) = Ω(n log b (a+ε) )
, ε > 0 dan a f(n/b) ≤ c f(n) untuk c < 1 maka
T(n) = Θ(f(n))
dhi, f(n) > n log b a dgn faktor polinomial sehingga suku dominan adalah f(n) + f(n/b) + f(n/b 2 )…
O(f(n))
38
Contoh:
Jadi kasus III, krn f(n) mendominasi
39
Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : T(n) = 7T(n/2) + n 2 Solusi: a = 7, b = 2, f(n) = n 2 , n log 2 7 n n 2 2 = O(n log 2 ≤ cn 2.803.. 7 ε ε ), oleh karena ε, c > 0 = n 2.803..
T(n) = Θ(n
log 2 7
)
40
Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : T(n) = 4T(n/2) + n 2 Solusi: a = 4, b = 2, f(n) = n 2 n 2 = Θ(n log 2 4 ) = Θ(n 2 )
T(n) = Θ(n
log 2 4
log n) = Θ(n
2
log n)
41
Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : T(n) = 2T(n/3) + n 3 Solusi: a = 2, b = 3, f(n) = n 3 n log 3 2 n 3 = n 0.63
..
= Ω(n log 3 2 + ε ) ok n 3
dan
≥ cn 0.63+ ε 2f(n/3) = 2n 3 /27 ≤ cn 3 ε, c > 0 utk 2/27 < c < 1
T(n) = Θ(n
3
)
42
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 log 2 3 - ε ) nlogn ≤ cn 1.5
logn < cn 0.5
c = 1, n 0 = 16 T(n) = Θ(n log 2 3 ) 43
Gunakan metode Master untuk menentukan T(n) = Θ(?) bila : Solusi:
a
= 2,
b
= 2,
f
(
n
) = 10
n
, log
b a
= log 2 2 = 1 dapat dicek bahwa jadi 44
Metode Master yg umum
45
46