Matakuliah Tahun : T0034 / Perancangan & Analisis Algoritma : 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 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 1 2 3 3 5 4 9 5 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 1 2 3 3 5 4 7 5 9 6 11 7 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 2 3 4 5 6 for 1=1 to 100 do F[i]=0 end for for i=1 to 100 do display fibo(i),” ” end for [buku utama, pseudocode 7.2] Bina Nusantara TOP-DOWN vs BOTTOM-UP • Top-Down – 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 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 REVIEW • Apa yang sudah dipahami? • Apa yang akan dibahas selanjutnya? Bina Nusantara
© Copyright 2024 Paperzz