ANALISIS ALGORITMA
Strategi Algoritma: Dynamic Programming
Pemateri:
Adam Mukharil Bachtiar
adam@email.unikom.ac.id
Setelah mempelajari strategi algoritma
Divide and Conquer maka berikutnya
kita pelajari Dynamic Programming
(Program Dinamis).
Program Dinamis:
Metode pemecahan masalah dengan cara menguraikan
solusi menjadi sekumpulan langkah (step) atau tahapan
(stage) sedemikian sehingga solusi dari persoalan dapat
dipandang dari serangkaian keputusan yang saling
berkaitan.
Batasan Program Dinamis:
1 Terdapat sejumlah berhingga pilihan yang tersedia.
2 Solusi pada setiap tahap yang dibangun dari hasil solusi tahap sebelumnya.
3
Menggunakan persyaratan optimasi dan kendala untuk membatasi
sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.
Pada program dinamis, rangkaian
keputusan yang optimal dibuat dengan
menggunakan Prinsip Optimalitas.
Prinsip Optimalitas:
Jika solusi total optimal, maka bagian solusi sampai
tahap ke-k juga optimal.
Pada Prinsip optimalitas berarti bahwa jika kita
bekerja dari tahap k ke tahap k + 1, kita dapat
menggunakan hasil optimal dari tahap k tanpa
harus kembali ke tahap awal.
Ongkos pada tahap k +1 =
(ongkos yang dihasilkan pada tahap k ) +
(ongkos dari tahap k ke tahap k + 1)
Karakteristik Program Dinamis:
1
Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada
setiap tahap hanya diambil satu keputusan.
2
Masing-masing tahap terdiri dari sejumlah status (state) yang
berhubungan dengan tahap tersebut. Secara umum, status merupakan
bermacam kemungkinan masukan yang ada pada tahap tersebut.
3
Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari
status yang bersangkutan ke status berikutnya pada tahap berikutnya.
Karakteristik Program Dinamis:
4
Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily)
dengan bertambahnya jumlah tahapan.
5
Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang
sudah berjalan dan ongkos pada tahap tersebut.
6
Keputusan terbaik pada suatu tahap bersifat independen terhadap
keputusan yang dilakukan pada tahap sebelumnya.
Karakteristik Program Dinamis:
7
Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik
untuk setiap status pada tahap k memberikan keputusan terbaik untuk
setiap status pada tahap k + 1.
8 Prinsip optimalitas berlaku pada persoalan tersebut
Ada dua pendekatan yang bisa digunakan
pada Program Dinamis yaitu pendekatan
maju (forward atau up-down) dan
mundur (backward atau bottom-up).
Pendekatan Maju (Forward atau Up-Down)
Pendekatan Mundur (Forward atau Bottom-Up)
1
3
2
4
6
7
8
9
11
10
5
12
V1
V2
V3
V4
V5
Langkah-Langkah Program Dinamis:
1 Karakteristikkan struktur solusi optimal.
2 Definisikan secara rekursif nilai solusi optimal.
3 Hitung nilai solusi optimal secara maju atau mundur.
4 Konstruksi solusi optimal.
Problem: Shortest Path
Problem/Kasus:
Tentukan lintasan terpendek dari simpul 1 ke simpul 10.
1 3
2
4
5
6
7
8
9
10
7
2
4
3
1
3
4
5
3
3
3
6
4
1
4
6
4 3
2
4
Misalkan x1, x2, …, x4 adalah simpul-simpul yang dikunjungi pada tahap k (k = 1, 2, 3, 4) maka rute
yang dilalui adalah 1®x1®x2®x3®x4, yang dalam hal ini x4 = 10.
Solusi Program Dinamis Mundur:
!" # = %&'" (Basis)
!( # = )*+&( %&'( + !(-. /( , 1 = 1, 2, 3 (Rekurens)
Tentukan Relasi rekurens berikut menyatakan lintasan terpendek dari
status s ke x4 pada tahap k:
Keterangan:
/( = Peubah keputusan pada tahap k
%'&( = bobot (cost) sisi dari s ke /(
!( #, /( = total bobot (cost) lintasan dari s ke /(
!( # = nilai minimum dari !( #, /(
1 3
2
4
5
6
7
8
9
10
7
2
4
3
1
3
4
5
3
3
3
6
4
1
4
6
4 3
2
4
s
Solusi Optimum
f4(s) x4
*
8 3 10
9 4 10
!" # = %&'"Tahap 4:
Nilai () ∗ adalah nilai () yang meminimumkan !) #, ()
1 3
2
4
5
6
7
8
9
10
7
2
4
3
1
3
4
5
3
3
3
6
4
1
4
6
4 3
2
4
!" # = %&'(" )(*" + !, -"
Tahap 3:
x3
s
f3(s, x3) = cs,x3 + f4(x3) Solusi Optimum
8 9 f3(s) x3
*
5 4 8 4 8
6 9 7 7 9
7 6 7 6 8
1 3
2
4
5
6
7
8
9
10
7
2
4
3
1
3
4
5
3
3
3
6
4
1
4
6
4 3
2
4
!" # = %&'(" )(*" + !, -"
Tahap 3:
x3
s
f3(s, x3) = cs,x3 + f4(x3) Solusi Optimum
8 9 f3(s) x3
*
5 4 8 4 8
6 9 7 7 9
7 6 7 6 8
1 3
2
4
5
6
7
8
9
10
7
2
4
3
1
3
4
5
3
3
3
6
4
1
4
6
4 3
2
4
!" # = %&'(" )(*" + !, -"Tahap 2:
x2
s
f2(s, x2) = cs,x2 + f3(x2) Solusi Optimum
5 6 7 f2(s) x2
*
2 11 11 12 11 5 atau 6
3 7 9 10 7 5
4 8 8 11 8 5 atau 6
1 3
2
4
5
6
7
8
9
10
7
2
4
3
1
3
4
5
3
3
3
6
4
1
4
6
4 3
2
4
!" # = %&'(" )(*" + !, -"Tahap 1:
x1
s
f1(s, x1) = cs,x1 + f2(x1) Solusi Optimum
2 3 4 f1(s) x1
*
1 13 11 11 11 3 atau 4
x1 x2 x3 x4 Panjang Lintasan
Terpendek
1
3
4
5
5
6
8
8
9
10
10
10
11
11
11
Hasil:
Jadi ada tiga lintasan terpendek dari 1 ke 10, yaitu
1 ® 3 ® 5 ® 8 ® 10
1 ® 4 ® 5 ® 8 ® 10
1 ® 4 ® 6 ® 9 ® 10
Panjang ketiga lintasan tersebut sama, yaitu 11.

Analisis Algoritma - Strategi Algoritma Dynamic Programming

  • 1.
    ANALISIS ALGORITMA Strategi Algoritma:Dynamic Programming Pemateri: Adam Mukharil Bachtiar [email protected]
  • 2.
    Setelah mempelajari strategialgoritma Divide and Conquer maka berikutnya kita pelajari Dynamic Programming (Program Dinamis).
  • 3.
    Program Dinamis: Metode pemecahanmasalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan.
  • 4.
    Batasan Program Dinamis: 1Terdapat sejumlah berhingga pilihan yang tersedia. 2 Solusi pada setiap tahap yang dibangun dari hasil solusi tahap sebelumnya. 3 Menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.
  • 5.
    Pada program dinamis,rangkaian keputusan yang optimal dibuat dengan menggunakan Prinsip Optimalitas.
  • 6.
    Prinsip Optimalitas: Jika solusitotal optimal, maka bagian solusi sampai tahap ke-k juga optimal.
  • 7.
    Pada Prinsip optimalitasberarti bahwa jika kita bekerja dari tahap k ke tahap k + 1, kita dapat menggunakan hasil optimal dari tahap k tanpa harus kembali ke tahap awal.
  • 8.
    Ongkos pada tahapk +1 = (ongkos yang dihasilkan pada tahap k ) + (ongkos dari tahap k ke tahap k + 1)
  • 9.
    Karakteristik Program Dinamis: 1 Persoalandapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya diambil satu keputusan. 2 Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan tahap tersebut. Secara umum, status merupakan bermacam kemungkinan masukan yang ada pada tahap tersebut. 3 Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.
  • 10.
    Karakteristik Program Dinamis: 4 Ongkos(cost) pada suatu tahap meningkat secara teratur (steadily) dengan bertambahnya jumlah tahapan. 5 Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan ongkos pada tahap tersebut. 6 Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan pada tahap sebelumnya.
  • 11.
    Karakteristik Program Dinamis: 7 Adanyahubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1. 8 Prinsip optimalitas berlaku pada persoalan tersebut
  • 12.
    Ada dua pendekatanyang bisa digunakan pada Program Dinamis yaitu pendekatan maju (forward atau up-down) dan mundur (backward atau bottom-up).
  • 13.
    Pendekatan Maju (Forwardatau Up-Down) Pendekatan Mundur (Forward atau Bottom-Up) 1 3 2 4 6 7 8 9 11 10 5 12 V1 V2 V3 V4 V5
  • 14.
    Langkah-Langkah Program Dinamis: 1Karakteristikkan struktur solusi optimal. 2 Definisikan secara rekursif nilai solusi optimal. 3 Hitung nilai solusi optimal secara maju atau mundur. 4 Konstruksi solusi optimal.
  • 15.
  • 16.
    Problem/Kasus: Tentukan lintasan terpendekdari simpul 1 ke simpul 10. 1 3 2 4 5 6 7 8 9 10 7 2 4 3 1 3 4 5 3 3 3 6 4 1 4 6 4 3 2 4 Misalkan x1, x2, …, x4 adalah simpul-simpul yang dikunjungi pada tahap k (k = 1, 2, 3, 4) maka rute yang dilalui adalah 1®x1®x2®x3®x4, yang dalam hal ini x4 = 10.
  • 17.
    Solusi Program DinamisMundur: !" # = %&'" (Basis) !( # = )*+&( %&'( + !(-. /( , 1 = 1, 2, 3 (Rekurens) Tentukan Relasi rekurens berikut menyatakan lintasan terpendek dari status s ke x4 pada tahap k: Keterangan: /( = Peubah keputusan pada tahap k %'&( = bobot (cost) sisi dari s ke /( !( #, /( = total bobot (cost) lintasan dari s ke /( !( # = nilai minimum dari !( #, /(
  • 18.
    1 3 2 4 5 6 7 8 9 10 7 2 4 3 1 3 4 5 3 3 3 6 4 1 4 6 4 3 2 4 s SolusiOptimum f4(s) x4 * 8 3 10 9 4 10 !" # = %&'"Tahap 4: Nilai () ∗ adalah nilai () yang meminimumkan !) #, ()
  • 19.
    1 3 2 4 5 6 7 8 9 10 7 2 4 3 1 3 4 5 3 3 3 6 4 1 4 6 4 3 2 4 !"# = %&'(" )(*" + !, -" Tahap 3: x3 s f3(s, x3) = cs,x3 + f4(x3) Solusi Optimum 8 9 f3(s) x3 * 5 4 8 4 8 6 9 7 7 9 7 6 7 6 8
  • 20.
    1 3 2 4 5 6 7 8 9 10 7 2 4 3 1 3 4 5 3 3 3 6 4 1 4 6 4 3 2 4 !"# = %&'(" )(*" + !, -" Tahap 3: x3 s f3(s, x3) = cs,x3 + f4(x3) Solusi Optimum 8 9 f3(s) x3 * 5 4 8 4 8 6 9 7 7 9 7 6 7 6 8
  • 21.
    1 3 2 4 5 6 7 8 9 10 7 2 4 3 1 3 4 5 3 3 3 6 4 1 4 6 4 3 2 4 !"# = %&'(" )(*" + !, -"Tahap 2: x2 s f2(s, x2) = cs,x2 + f3(x2) Solusi Optimum 5 6 7 f2(s) x2 * 2 11 11 12 11 5 atau 6 3 7 9 10 7 5 4 8 8 11 8 5 atau 6
  • 22.
    1 3 2 4 5 6 7 8 9 10 7 2 4 3 1 3 4 5 3 3 3 6 4 1 4 6 4 3 2 4 !"# = %&'(" )(*" + !, -"Tahap 1: x1 s f1(s, x1) = cs,x1 + f2(x1) Solusi Optimum 2 3 4 f1(s) x1 * 1 13 11 11 11 3 atau 4
  • 23.
    x1 x2 x3x4 Panjang Lintasan Terpendek 1 3 4 5 5 6 8 8 9 10 10 10 11 11 11 Hasil: Jadi ada tiga lintasan terpendek dari 1 ke 10, yaitu 1 ® 3 ® 5 ® 8 ® 10 1 ® 4 ® 5 ® 8 ® 10 1 ® 4 ® 6 ® 9 ® 10 Panjang ketiga lintasan tersebut sama, yaitu 11.