Pertemuan 13 DYNAMIC PROGRAMMING : FIBONACCI SEQUENCE PROBLEM Matakuliah : T0034 / Perancangan & Analisis Algoritma Tahun : 2008 Pertemuan 13 DYNAMIC PROGRAMMING : FIBONACCI SEQUENCE PROBLEM
DYNAMIC PROGRAMMING Dynamic Programming adalah metode penyelesaian masalah yang dapat digunakan jika solusi sebuah problem dapat dipandang sebagai deretan dari beberapa keputusan. Dynamic Programming vs Metode Greedy Dynamic Programming menghasilkan solusi yang optimal, karena tidak menggunakan local optimum seperti Metode Greedy Dynamic Programming vs Metode Naive Metode Naive : menghitung semua Solusi Feasible Dynamic Programming tidak perlu menghitung semua kemungkinan, menghemat banyak waktu dan lebih efisien. [buku utama, bab 7.1] Bina Nusantara
APLIKASI DYNAMIC PROGRAMMING Fibonacci Sequence Problem Coin Change Problem Multistage Graph Problem Travening Salesman Problem 0/1 Knapsac Problem Bina Nusantara
Misalkan kita memiliki deret Fibonacci f(1),f(2),f(3),f(4),... FIBONACCI SEQUENCE Fibonacci Sequence adalah sebuah deret dimana setiap elemen merupakan hasil penjumlahan 2 elemen sebelumnya. Misalkan kita memiliki deret Fibonacci f(1),f(2),f(3),f(4),... Nilai f(3) dihitung dari f(1)+f(2). Nilai f(4) dihitung dari f(2)+f(3) dan seterusnya. [buku utama, bab 7.2] Bina Nusantara
FIBONACCI DENGAN METODE NAIVE 1 module fibo(n) 2 if (n=0) or (n=1) then 3 result=n 4 else 5 result=fibo(n-1)+fibo(n-2) 6 end if 7 end module 1 for i=1 to 100 do 2 display fibo(i),” ” 3 end for [buku utama, pseudocode 7.1] Bina Nusantara
RECURSIVE CALL TREE [buku utama, ilustrasi 7.1] Bina Nusantara
JUMLAH PEMANGGILAN FUNGSI Nilai N Pemanggilan fungsi 1 2 3 5 4 9 15 6 25 7 41 8 67 ... 100 1.146.295.688.027.634.168.201 [buku utama, tabel 7.1] Bina Nusantara
REDUNDANSI [buku utama, ilustrasi 7.2] Bina Nusantara
MEMOIZATION [buku utama, ilustrasi 7.3] Bina Nusantara
JUMLAH PEMANGGILAN FUNGSI Setelah ditambahkan memoization Nilai N Pemanggilan fungsi 1 2 3 5 4 7 9 6 11 13 8 15 ... 100 199 [buku utama, tabel 7.2] Bina Nusantara
FIBONACCI DENGAN MEMOIZATION 1 module fibo(n) 2 if (n=0) or (n=1) then 3 result=n 4 else 5 if F[n]=0 then 6 F[n]=fibo[n-1]+fibo[n-2] 7 end if 8 result=F[n] 9 end if 10 end module 1 for 1=1 to 100 do 2 F[i]=0 3 end for 4 for i=1 to 100 do 5 display fibo(i),” ” 6 end for [buku utama, pseudocode 7.2] Bina Nusantara
TOP-DOWN vs BOTTOM-UP Top-Down Bottom-Up Berusaha mencapai hasil akhir dengan cara menghitung komponen-komponen penyusun hasil tersebut. Biasanya berbentuk fungsi rekursif. Bottom-Up Berusaha membentuk solusi dengan menghitung dari awal, secara terstruktur menuju solusi. Biasanya berbentuk perulangan biasa. Bina Nusantara
Jelaskan cara kerjanya! LATIHAN Pseudocode Fibonacci dengan Memoization yang terdapat dalam penjelasan pertemuan ini menggunakan pendekatan Top-Down. Buatlah versi Bottom-Up nya! Jelaskan cara kerjanya! Bina Nusantara
Apa yang sudah dipahami? Apa yang akan dibahas selanjutnya? REVIEW Apa yang sudah dipahami? Apa yang akan dibahas selanjutnya? Bina Nusantara