download

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