BAB 3 PEMBAHASAN
3.1 Analisa Dynamic programming
Dynamic programming merupakan 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.
Diberikan sejumlah kota dan jarak antar kota. Tentukan sirkuit terpendek yang harus dilalui oleh seorang salesman, bila salesman itu berangkat dari sebuah kota asal
dan menyinggahi setiap kota tepat satu kali dan kembali lagi ke kota asal keberangkatan. Permasalahan melewati setiap kota tepat satu kali dan kembali ke kota
asal adalah meliputi pencarian lintasan terpendek pada sebuah graph Hamilton. Apabila contoh kasus tersebut diubah menjadi persoalan pada graph, maka dapat
dilihat bahwa kasus tersebut adalah bagaimana menentukan sirkuit Hamilton yang memiliki bobot minimum pada graph tersebut.
Dalam dynamic programming, diperlukan beberapa variabel dan langkah- langkah untuk menentukan jalur terpendek dengan bobot minimum menggunakan
metode forward, yaitu: Misalkan G = V, E adalah graf lengkap dengan edge-edge yang diberi harga c
ij
untuk setiap i dan j adalah vertex-vertex di dalam V. Misalkan ⎢V ⎢= n dan n 1.
Setiap vertex diberi nomor 1, 2, …, n. Asumsikan perjalanan tour dimulai dan berakhir pada vertex 1 dan setiap titik saling
terhubung. Setiap tur pasti terdiri dari edge 1, k untuk beberapa k ∈ V – {1} dan
sebuah jalur dari vertex k ke vertex 1. Jalur dari vertex k ke vertex 1 tersebut melalui setiap vertex di dalam V – {1, k} tepat hanya sekali.
Inisialisasi a. Graph lengkap berarah G
Widya Maulina : Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem, 2009 USU Repository © 2008
b. Himpunan berhingga tidak kosong dari vertex-vertex pada sebuah graph V, V = {1, 2, 3,…n}
c. Himpunan edge pada sebuah graph E d. Jarak dari i ke j jarak antar kota
, dimana e. Rangkaian jalur S, S {2, 3, …, n}
f. Bobot jalur terpendek yang berawal pada vertex i yang melalui semua vertex di dalam S dan berakhir pada vertex 1 fi,S , i S dan S
Adapun langkah-langkah dalam penyelesaian TSP dengan dynamic programming adalah sebagai berikut:
Langkah 1:
Menentukan basis dari graph Hamilton yang telah direpresentasikan menjadi sebuah matriks adjacency dengan persamaan:
1 ,
,
i
c i
f =
∅
, 2 ≤ i ≤ n
Langkah 2:
Hitung fi, S untuk ⎢S ⎢= 1, kemudian kita dapat memperoleh fi, S untuk ⎢S ⎢= 2,
hingga |S| = n- 1. Dengan persamaan:
}} {
, {
min ,
j S
j f
c S
i f
ij S
j
− +
=
∈
dengan: fi, S
= bobot jalur terpendek S – {j}
= rangkaian jalur S dikurang vertex j. i dan j
= vertex-vertex di dalam V = bobot dari vertex i ke j
Langkah 3:
Setelah diperoleh hasil dari langkah 3, kemudian hitung persamaan hubungan rekursif:
}} ,
1 {
, {
min }
1 {
, 1
1 2
k V
k f
c V
f
k n
k
− +
= −
≤ ≤
Widya Maulina : Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem, 2009 USU Repository © 2008
dengan: f1, V – {1} = panjang optimal dari tour
V = himpunan berhingga tidak kosong dari vertex-vertex dari sebuah graph
V – {1} = himpunan vertex dari suatu graph yang dikurang vertex 1 awal
k = vertex yang terhubung ke vertex 1 awal
= bobot dari vertex 1 awal ke k
Langkah 4:
Setelah menghitung persamaan rekursif pada langkah 3,akan diperoleh bobot jalur terpendek, maka untuk memperoleh solusi optimal panjang jalur terpendek untuk
sebuah graph adalah dengan menghitung f1, {2, 3, 4,…, n} yang artinya adalah panjang jalur dari vertex awal 1 menuju vertex 1 setelah melewati vertex 2, 3, 4,.., n
dengan urutan apapun dicari yang minimum kemudian cari pembentuk dari solusi optimal minimum yang telah diperoleh.
Berikut contoh penyelesaian TSP dengan menggunakan dynamic programming. Diketahui sebuah graph lengkap berarah, dengan persoalan TSP untuk n = 4.
Rangkaian jalur {2, 3, 4}. Dapat dilihat pada gambar 3.1. berikut
12 15
9 8 10 15 16 11 11 14
17 18
1 2
3 4
Gambar 3.1. Graf dengan Empat Vertex
Berikut Jarak dari i ke j jarak antar kota , dimana
yang dirubah dalam bentuk matriks:
Widya Maulina : Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem, 2009 USU Repository © 2008
Berikut langkah-langkah penyelesaiannya:
Langkah 1:
Hitung
1 ,
,
i
c i
f =
∅
, 2 ≤ i ≤ n
Diperoleh:
15 ,
2
21
= =
∅ c
f
8 ,
3
31
= =
∅ c
f
9 ,
4
41
= =
∅ c
f
Langkah 2:
Untuk |S| = 1, Hitung
}} {
, {
min ,
j S
j f
c S
i f
ij S
j
− +
=
∈
Diperoleh:
Widya Maulina : Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem, 2009 USU Repository © 2008
Untuk |S| = 2, hitung
}} {
, {
min ,
j S
j f
c S
i f
ij S
j
− +
=
∈
Diperoleh:
= min{15 + 27, 10 + 25} = min{42, 35} = 35
= min{14 +19, 27 + 11} = min{33, 38} = 33
= min{11 + 22, 17 + 29} = min{33, 46} = 33
Langkah 3:
Dengan menggunakan persamaan,
}} ,
1 {
, {
min }
1 {
, 1
1 2
k V
k f
c V
f
k n
k
− +
= −
≤ ≤
diperoleh:
= min {12 + 35, 11 + 33, 16 + 33}
= min {47, 44, 49} = 44
Jadi, bobot jalur terpendek yang berawal dan berakhir di vertex 1 adalah 44.
Langkah 4: Untuk mengetahui jalur yang dilalui, mula-mula diketahui bahwa nilai 44 yang
merupakan nilai minimum didapatkan dari 11 + 33. Berarti jalur terpendek adalah
, diperoleh bahwa bagian awal dari jalur adalah 1-3. Kemudian cari
tahu komponen pembentuk yang menghasilkan nilai minimum ternyata
adalah . Maka diketahui bahwa edge 3-2 adalah bagian dari jalur
Widya Maulina : Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem, 2009 USU Repository © 2008
terpendek. Dengan cara yang sama, ditelusuri pembentuk yang ternyata
adalah . Edge 2-4 ternyata juga bagian dari solusi jalur terpendek.
Langkah terakhir adalah menelusuri pembentuk yang ternyata adalah
berarti edge 4-1 juga bagian dari jalur terpendek. Hanya dengan merangkai edge- edge yang ditemukan edge 1-3, 3-2, 2-4, 4-1dari depan ke belakang. Berarti jalur
terpendek adalah 1 s3s2s4s1 dengan jumlah bobot minimum 44. Dapat dilihat
pada gambar berikut edge yang bercetak tebal merupakan jalur terpendek:
12 15
1
16 9
11 11 14 15
10 8 6 18 1
1 4
17
4 3
2
Gambar 3.2 Graf dengan Empat Vertex
Widya Maulina : Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem, 2009 USU Repository © 2008
3.2 Perancangan Flowchart