APLIKASI PENDEKATAN DYNAMIC PROGRAMMING PADA
TRAVELING SALESMAN PROBLEM
SKRIPSI
WIDYA MAULINA
060823023
PROGRAM STUDI SARJANA MATEMATIKA
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
APLIKASI PENDEKATAN DYNAMIC PROGRAMMING PADA
TRAVELING SALEMAN PROBLEM
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains
WIDYA MAULINA
060823023
PROGRAM STUDI SARJANA MATEMATIKA
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : APLIKASI PENDEKATAN DYNAMIC
PROGRAMMING PADA TRAVELING SALESMAN PROBLEM
Kategori : SKRIPSI
Nama : WIDYA MAULINA
Nomor Induk Mahasiswa : 060823023
Program Studi : SARJANA (S1) MATEMATIKA
Departemen : MATEMATIKA
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN
ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, Maret 2009
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Syahriol Sitorus, S.Si, M.IT Dra. Mardiningsih, M.Si
NIP.132 174 687 NIP.130 803 344
Diketahui oleh :
Departemen Matematika FMIPA USU Ketua,
PERNYATAAN
APLIKASI PENDEKATAN DYNAMIC PROGRAMMING PADA TRAVELING SALESMAN PROBLEM
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Maret 2009
PENGHARGAAN
Puji dan syukur penulis panjatkan kepada Allah SWT, dengan limpahan dan karunia-Nya kertas kajian ini berhasil diselesaikan dalam waktu yang telah ditetapkan.
ABSTRAK
ABSTRACT
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel viii
Daftar Gambar ix
Bab 1 Pendahuluan 1
1.1Latar Belakang 1
1.2Perumusan Masalah 2
1.3Tinjauan Pustaka 2
1.4Tujuan Penelitian 4
1.5Kontribusi Penelitian 4
1.6Metode Penelitian 5
Bab 2 Landasan Teori 6
2.1 Teori Graph 6
2.2 Graph Hamilton 7
2.3 Representasi Graph pada Komputer 8
2.4 Permasalahan Optimasi 9
2.5 Traveling Salesman Problem 10
2.5.1 Sejarah Singkat Traveling Salesman Problem 10
2.6 Dynamic Programming 12
2.6.1 Model Dynamic Programming 13
2.6.2 Konsep Dasar Dalam Dynamic Programming 14
2.6.3 Ciri-ciri Dasar dari Suatu masalah Dynamic Programming 16
Bab 3 Pembahasan 18
3.1 Analisa dynamic Programming 18
3.2 Perancangan Flowchart 24
3.3 Perancangan Antar Muka 25
3.4 Analisa Kebutuhan Perangkat Keras 25
3.5 Perancangan Perangkat Lunak 26
Bab 4 Kesimpulan dan Saran 33
4.1 Kesimpulan 33
4.2 Saran 33
Daftar Pustaka
DAFTAR TABEL
Halaman
Tabel 2.1 Daftar History dari TSP 11
Tabel 3.1 Perhitungan Waktu Antar Kota 31
DAFTAR GAMBAR
Halaman
Gambar 2.1 Graph dengan Empat vertex 6
Gambar 2.2 Graph Tak-Berarah 7
Gambar 2.3 Graph Berarah 7
Gambar 2.4 Penggambaran Graph Hamilton 8
Gambar 3.1 Graph dengan Empat Vertex 20
Gambar 3.2 Graph dengan Empat Vertex 23
Gambar 3.3 Flowchart dynamic programming pada TSP 24
Gambar 3.4 Form Utama Aplikasi Dynamic Programming 25
Gambar 3.5 Form Utama 26
Gambar 3.6 Form Menu 27
Gambar 3.7 Form Entri Data Graph 27
Gambar 3.8 Form Komputasi jalur Terpendek 28
Gambar 3.9 Form Hasil Komputasi Jalur Terpendek 29
Gambar 3.10 Form Hasil Graph Jalur Terpendek 29
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Traveling Salesman Problem (TSP) merupakan salah satu permasalahan penting
dalam dunia matematika dan informatika. TSP dapat diilustrasikan sebagai perjalanan
seorang salesman yang harus melalui semua kota yang dituju dengan jarak terpendek,
dimana setiap kota hanya boleh dilalui satu kali. Solusi dari TSP ialah jalur yang
dilalui oleh salesman tersebut. Tentunya solusi terbaik atau optimal dari permasalahan
ini ialah jalur dengan jarak terpendek atau dapat disebut juga dengan rute perjalanan
minimum.
Penggambaran yang sangat sederhana dari istilah TSP adalah seorang
salesman yang harus mengunjungi n buah kota dengan aturan: ia harus mengunjungi
setiap kota hanya sebanyak satu kali. Ia harus meminimalisasi total jarak perjalanan
dan pada akhirnya ia harus kembali ke kota asalnya. Dengan demikian, apa yang telah
ia lakukan disebut sebagai sebuah tour. Guna memudahkan permasalahan, pemetaan n
kota tersebut akan digambarkan dengan sebuah graph, dimana jumlah vertex dan
edge-nya terbatas (sebuah vertex akan mewakili sebuah kota dan sebuah edge akan
mewakili jarak antar dua kota yang dihubungkan). Penanganan problem TSP ini
ekuivalen dengan mencari sirkuit Hamilton terpendek.
Dynamic Programming merupakan sebuah 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. Penemu dan orang yang bertanggung jawab atas
kepopuleran dynamic programming adalah Richard Bellman.
Pada dynamic programming, rangkaian keputusan optimal yang dibuat
dengan menggunakan prinsip optimalitas. Prinsip Optimalitas: jika solusi total
Optimalitas ini dijamin bahwa pengambilan keputusan pada suatu tahap adalah
keputusan yang benar untuk tahap-tahap selanjutnya. Inti dari pemrograman dinamik
adalah membuang satu bagian kecil dari sebuah persoalan dalam setiap langkahnya,
kemudian menyelesaikan persoalan yang lebih kecil tersebut dan menggunakan solusi
hasil penyelesaian ini untk ditambahkan kembali ke bagian persoalan dalam langkah
berikutnya.
Dynamic programming mencoba untuk memberikan solusi yang memiliki
pemikiran terhadap konsekuensi yang ditimbulkan dari pengambilan keputusan pada
suatu tahap. Dynamic programming mampu mengurangi pengenumerasian keputusan
yang tidak mengarah ke solusi. Penerapan pendekatan dynamic programming telah
banyak diperlihatkan mampu untuk menyelesaikan aneka masalah seperti: alokasi,
muatan (knapsack), capital budgeting, pengawasan persediaan, dan lain-lain.
1.2 Perumusan Masalah
Bagaimana peranan atau pendekatan program dinamik dalam penyelesaian TSP dalam
menentukan jalur yang paling optimal dengan jarak total yang paling minimum
dengan pendekatan maju (forward atau up-down).
1.3 Tinjauan Pustaka
Muhammad Ghifary (2007 : 2) dalam jurnalnya menjelaskan bahwa ada dua
pendekatan yang berbeda dalam dynamic programming yaitu:
1. Maju (forward atau up-down) : bergerak mulai dari tahap 1, terus maju ke
tahap 2,3,…,n. urutan variabel keputusan adalah .
2. Mundur (backward atau bottom-up) : bergerak mulai dari tahap n, terus
mundur ke tahap n-1, n-2,…2,1. Urutan variabel keputusan adalah
.
1. Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap
hanya diambil satu keputusan yang optimal.
2. Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan
dengan tahap tersebut.
3. Hasil keputusan yang diambil pada tahap ditransformasikan dari status yang
bersangkutan ke status berikutnya pada tahap berikutnya.
4. Jarak pada suatu tahap bergantung pada jarak tahap-tahap sebelumnya dan
meningkat secara teratur dengan bertambahnya jumlah tahapan.
5. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan
yang dilakukan tahap sebelumnya.
6. Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk
setiap status pada tahap k memberikan keputusan terbaik untuk tahap
sebelumnya.
7. Prinsip optimalitas berlaku pada persoalan ini.
Mohamad Irvan Faradian (2007 : 6) berdasarkan prinsip optimalitas,
diperoleh hubungan sebagai berikut:
Misalkan G = (V, E) adalah graph lengkap berarah dengan edge-nya yang diberi harga
cij> 0 untuk setiap i dan j, dimana i dan j adalah vertex-vertex yang berada di dalam V.
Misalkan ⎢V ⎢= n dan n > 1. Setiap simpul diberi nomor 1, 2, …, n.
(
1
,
{
1
})
min
{
1(
,
{
1
,
})}
2
c
f
k
V
k
V
f
kn
k
+
−
=
−
≤
≤ (1)
dimana:
f(1, 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
dari persamaan (1), diperoleh rincian:
(2)
(rekurens)
dimana:
f(i, 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
Asumsikan perjalanan (tour) dimulai dan berakhir pada vertex 1. Setiap tur
pasti terdiri dari sisi 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. Misalkan f(i, S) adalah bobot jalur terpendek yang berawal
dari vertex i, yang melalui semua vertex di dalam S dan berakhir pada vertex 1. Nilai
f(1, V – {1}) adalah bobot tour terpendek.
Dari persamaan (1) dapat diperoleh persamaan (2) jika kita mengetahui f (k,
V – {1, k}) untuk seluruh pilihan nilai k. Nilai f tersebut dapat diperoleh dengan
menggunakan persamaan (2). Kita menggunakan persamaan (2) untuk memperoleh
f(i, S) untuk , kemudian kita dapat memperoleh f(i, S) untuk , hingga |S|
= n- 2.
1.4 Tujuan Penelitian
Mengkaji TSP sebagai graph Hamiltonian dengan menggunakan dynamic
programming untuk mendapatkan jumlah bobot yang paling minimum dan
1.5 Kontribusi Penelitian
Dengan mengaplikasikan dynamic programming pada TSP dapat bermanfaat dalam
pengembangan program dinamik lebih lanjut dan diharapkan hasil dari tulisan ini
dapat dikembangkan dan direpresentasikan pada lembaga atau perusahaan yang
bergerak di bidang Transportasi, Alokasi, Capital Budgeting, dan lain-lain.
1.6 Metode Penelitian
Metode penelitian yang digunakan dalam penelitian ini adalah sebagai berikut:
1. Menggambarkan contoh TSP dalam bentuk graph.
2. Menerapkan dynamic programming untuk penyelesaian TSP.
3. Mengaplikasikan dynamic programming pada TSP ke dalam bahasa
BAB 2
LANDASAN TEORI
2.1 Teori Graph
Graph didefinisikan dengan G = (V, E), di mana V adalah himpunan berhingga tidak
kosong dari vertex-vertex = dan E himpunan sisi (edges atau arcs)
yang menghubungkan sepasang vertex . Vertex dalam graph pada
tulisan ini merupakan kota dan edge atau sisi merupakan rute atau jalan yang
menghubungkan antar kota.
a b
c d
Gambar 2.1. Graph dengan Empat Vertex
Keterangan Gambar:
G adalah graph dengan:
V = { a, b, c, d }
E = { (a, b), (a, c), (a,d), (c, a), (c, d), (b,b), (b, d), (d, b) }
= { e1, e2, e3, e4, e5, e6, e7, e8 }
Secara umum graph dapat dibedakan atas dua jenis:
1. Graph tak-berarah (undirected graph) adalah graph yang edge-ya tidak
Gambar 2.2. Graph Tak-Berarah
2. Graph berarah (directed graph atau digraph) adalah graf yang semua edge-nya
memiliki arah tertentu.
Gambar 2.3. Graph Berarah
2.2 Graph Hamilton
Lintasan Hamilton ialah lintasan yang melalui tiap vertex di dalam graph tepat satu
kali. Bila lintasan itu kembali ke vertex asal membentuk lintasan tertutup (sirkuit),
maka lintasan tertutup itu dinamakan sirkuit Hamilton. Jadi, sirkuit Hamilton ialah
sirkuit yang melalui tiap vertex di dalam graph tepat satu kali. Graph yang memiliki
sirkuit Hamilton dinamakan graph Hamilton, sedangkan yang memiliki lintasan
Hamilton disebut graph semi-Hamilton.
Teorema2.1. Setiap graph lengkap adalah graph Hamilton.
b
a
d c
b
a a b
d c d c
a b c
Keterangan gambar:
(a) graph yang memiliki lintasan Hamilton (misal:c, b, a, d)
(b) graph yang memiliki sirkuit Hamilton (a, b, c, d, a)
(c) graph yang tidak memiliki lintasan maupun sirkuit Hamilton
2.3 Representasi Graph Pada Komputer
Untuk mengimplementasikan suatu graph dalam bahasa pemrograman komputer,
dibutuhkan suatu cara untuk menterjemahkan bentuk graph ke dalam bentuk lain yang
dikenal oleh komputer, sebab komputer tidak dapat mengenal graph dalam bentuk
gambar graph biasa. Matriks dapat digunakan untuk menyatakan suatu graph, jika
graph dinyatakan sebagai matriks maka perhitungan-perhitungan yang diperlukan
dapat dilakukan dengan mudah. Representasi graph pada komputer dapat dilakukan
dengan beberapa cara, yaitu:
1. Matriks Adjacency
Matriks adjacency didefinisikan sebagai berikut, misalkan A matriks berordo nxn
(n baris dan n kolom). Jika antara dua vertex terhubung (adjacent) maka elemen
matriks bernilai 1, dan sebaliknya jika tidak terhubung bernilai 0. Contoh dari
matriks adjacency: A = ⎟⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎜ ⎜ ⎝ ⎛ 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
Jika graph yang diberikan adalah graph berbobot maka elemen matriks yang
terhubung antara vertex adalah bobot graph.
2. Matriks Incidency
Matriks incidency atau matriks bersisian adalah matriks yang merepresentasikan
hubungan antara vertex dan edge. Misalkan B adalah matriks dengan m baris
edge, maka elemen matriks bernilai 1. Sebaliknya, jika vertex tidak terhubung
dengan edge maka elemen matriks bernilai 0. Contoh matriks bersisian adalah:
B = ⎟⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎜ ⎜ ⎝ ⎛ 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 1
Seperti halnya matriks kedekatan untuk matriks berbobot, untuk matriks bersisian
elemen dari matriks juga merupakan bobot dari setiap edge dari graph.
2.4 Permasalahan Optimasi
Secara umum, penyelesaian masalah pencarian jalur terpendek dapat dilakukan
dengan menggunakan dua metode, yaitu metode konvensional dan metode heuristik.
1. Metode Konvensional
Metode konvensional adalah metode yang menggunakan perhitungan matematis biasa.
Ada beberapa metode konvensional yang biasa digunakan untuk melakukan pencarian
jalur terpendek, diantaranya: algoritman Djikstra, algoritma Floyd-Warshall, dan
algoritma Bellman-Ford.
2. Metode Heuristik
Metode Heuristik adalah sub bidang dari kecerdasan buatan yang digunakan untuk
melakukan pencarian dan optimasi. Ada beberapa algoritma pada metode heuristik
yang biasa digunakan dalam permasalahan optimasi, diantaranya algoritma genetika,
algoritma semut, logika fuzzy, jaringan syaraf tiruan, pencarian tabu, simulated
annealing, dan lain-lain.
TSP merupakan salah satu permasalahan penting dalam dunia matematika dan
informatika. TSP dapat diilustrasikan sebagai perjalanan seorang salesman yang harus
memulai perjalanannya dari satu kota, melalui setiap kota lainnya hanya sekali dan
kembali lagi ke kota asal keberangkatan. Solusi dari TSP ialah lintasan yang dilalui
oleh salesman tersebut. Tentunya solusi terbaik atau optimal dari permasalahan ini
ialah lintasan dengan jarak terpendek atau dapat disebut juga dengan tour perjalanan
minimum. Model TSP dinyatakan dalam bentuk graph, dengan kata lain TSP
termasuk ke dalam problem menemukan lintasan atau siklus Hamilton.
Dalam tulisan ini TSP yang dibahas adalah TSP asimetris, dimana TSP
asimetris adalah jarak dari kota A ke kota B adalah tidak sama dengan jarak dari kota
B ke kota A (asimetris terjadi karena jalan satu arah)(Adhi,2008). Graph yang
direpresentasikan sebagai permasalahannya merupakan graph yang terhubung secara
penuh artinya pada setiap vertex yang ada pasti terhubung dengan vertex yang lain.
2.5.1 Sejarah Singkat Traveling Salesman Problem
Permasalahan TSP dalam ilmu matematika dilakukan pada tahun 1800 oleh ahli
matematika Irlandia William Rowan Hamilton dan ahli matematika Inggris Thomas
Penyngton Kirkman, dengan membuat permainan untuk menyelesaikan perjalanan
melalui 20 titik dengan menggunakan koneksi yang sudah ditetapkan. Permainan yang
disebut game Icosian tersebut tak lain adalah menemukan siklus Hamilton di atas
suatu bidang dengan mengunjungi tiap-tiap edge-nya sekali dan akhirnya kembali ke
edge awal, suatu permainan yang jelas seperti rumus TSP.
TSP kemudian dipelajari oleh ahli matematika Karl Menger di Vienna,
Harvard serta Hassler Whitney and Merrill Flood di Princeton pada tahun 1930 dan
menuliskan bentuk umumnya. Karena pertumbuhan algoritma yang semakin
meningkat dari tahun ke tahun, mulai tahun 1950 penyelesaian TSP dipecahkan
dengan komputer. Tahun 1954 pertumbuhan penting dari TSP diteliti oleh para
peneliti yaitu: Dantzig, Fulkerson dan Jhonson yang terus mengembangkan metode
Tabel 2.1 Daftar History dari TSP
Tahun Tim Periset Ukuran
1954 G. Dantzig, R. Fulkerson, dan S. Johnson 49 kota
1971 M. Held dan R.M. Karp 64 kota
1975 P.M. Camerini, L. Fratta, dan F. Maffioli 67 kota
1977 M. Grötschel 120 kota
1980 H. Crowder dan M.W. Padberg 318 kota
1987 M. Padberg dan G. Rinaldi 532 kota
1987 M. Grötschel dan O. Holldan 666 kota
1987 M. Padberg dan G. Rinaldi 2.392 kota
1994 D. Applegate, R. Bixby, V. Chvátal, dan
W. Cook 7.397 kota
1998 D. Applegate, R. Bixby, V. Chvátal, dan
W. Cook 13.509 kota
2001 D. Applegate, R. Bixby, V. Chvátal, dan
W. Cook 15.112 kota
2004 D. Applegate, R. Bixby, V. Chvátal, W.
Cook, dan K. Helsgaun 24.978kota
2.6 Dynamic Programming
Dynamic programming adalah teknik manajemen sains yang diaplikasikan kepada
persoalan yang melibatkan keputusan yang saling berkaitan. Program ini
dikembangkan oleh Richard Bellman dan G. B Dantzig pada tahun 1940 – 1950.
Sebagai sebuah konsep, dynamic programming lebih luwes dibanding
program-program optimasi lainnya. Aplikasi dynamic program-programming telah terbukti baik pada
pengelolaam persediaan, jaringan, penjadwalan kerja untuk karyawan, pengendalian
produksi, perencanaan penjualan dan bidang lainnya.
Dynamic programming adalah metode pemecahan masalah dengan cara
menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage)
sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian
Pada penyelesaian persoalan dengan metode dynamic programming ini
terdapat sejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun
dari hasil solusi tahap sebelumnya, kita menggunakan persyaratan optimasi kendala
untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.
Pada dynamic programming, rangkaian keputusan yang optimal dibuat dengan
menggunakan Prinsip Optimalitas. Prinsip Optimalitas: jika solusi optimal, maka
bagian solusi pada tahap ke-k juga optimal. 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
dihasilkam pada tahap k) + (ongkos dari tahap k ke tahap k+1). Dengan prinsip
optimalitas ini dijamin bahwa pengambilan keputusan yang benar untuk tahap-tahap
selanjutnya.
2.6.1 Model Dynamic Programming
Secara umum, model dari dynamic programming dapat dituliskan sebagai berikut:
) , ( * ) ,
( n n = n + n−1 n−1 n−1
n S D R f S D f
dengan:
) , (Sn Dn
f = return pada tahap-n dari nilai status input Sn dan keputusan Dn
n
S = kondisi awal
1 −
n
S = kondisi akhir
n
D = keputusan yang dibuat pada setiap tahap
1 −
n
D = keputusan pada tahap akhir
n
R = return function
) , (
* 1 1
1 − −
− n n
n S D
f = return optimal pada tahap-n−1 dari nilai status input dan
Adapun model dari Dynamic Programming untuk TSP adalah:
})}
,
1
{
,
(
{
min
})
1
{
,
1
(
12
c
f
k
V
k
V
f
kn
k
+
−
=
−
≤ ≤
dengan:
f(1, 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)
k
C1 = bobot dari vertex 1 (awal) ke k
2.6.2 Konsep Dasar Dalam Dynamic Programming
Adapun konsep dasar dalam sebuah dynamic programming adalah:
a. Dekomposisi
Persoalan dynamic programming dapat dipecah-pecah menjadi sub-persoalan
atau tahapan yang lebih kecil dan berurutan. Setiap tahap disebut juga sebagai
titik keputusan. Setiap keputusan yang dibuat pada suatu tahap akan
mempengaruhi keputusan-keputusan pada tahap berikutnya.
b. Status
Status adalah kondisi awal ( ) dan kondisi akhir ( ) pada setiap tahap,
dimana pada tahap tersebut keputusan dibuat ( ). Status akhir pada sebuah
tahap tergantung kepada status awal dan keputusan yang dibuat pada tahap
yang bersangkutan. Status akhir pada suatu tahap merupakan input bagi tahap
berikutnya.
n
S Sn−1
c. Variabel Keputusan dan Hasil
Keputusan yang dibuat pada setiap tahap ( ) merupakan keputusan yang
berorientasi kepada return yang diakibatkannya ( ), tingkat maksimal
atau minimal. n D n n D R |
d. Fungsi Transisi
Fungsi transisi menjelaskan secara pasti bagaimana tahap-tahap saling
berhubungan. Fungsi ini berbentuk fungsi hubungan antar status pada setiap
tahap yang berurutan. Fungsi transisi secara umum berbentuk :
n n n S D S −1 = −
Di mana = status pada tahap n-1, atau status akhir pada tahap-n.
adalah status awal pada tahap-n.
1 −
n
S Sn
e. Optimasi Tahap
Optimasi tahap dalam dynamic programming adalah menentukan keputusan
optimal pada setiap tahap dari berbagai kemungkinan nilai status inputnya.
Fungsi umum dari keputusan optimal adalah :
) ,
( n n
n S D f
n D
= return pada tahap-n dari nilai status input , dan keputusan,
. n S ) ( * n n S
f = return optimal pada tahap-n dari nilai input status Sn.
f. Fungsi Rekursif
Fungsi rekursif biasanya digunakan pada berbagai program komputer, di
mana nilai sebuah variabel pada fungsi itu merupakan nilai kumulatif dari
nilai variabel tersebut pada tahap sebelumnya. Pada DP, fungsi umum
dituliskan sebagai :
) , ( * ) ,
( n n = n + n−1 n−1 n−1
n S D R f S D f
Karakteristik dynamic programming adalah :
1. Persoalan dapat dipisahkan menjadi beberapa tahap (stages), di mana setiap
tahap membutuhkan keputusan kebijakan yang standard dan saling
berhubungan.
2. Setiap tahap memiliki sejumlah status (state). Secara umum, sekumpulan
status ini merupakan berbagai kemungkinan kondisi yang timbul dari sistem
persoalannya. Status ini memberikan informasi yang dibutuhkan setiap
keputusan dan dampaknya pada tahap berikutnya. Jumlah status pada setiap
tahap bisa definit atau infinit.
3. Setiap keputusan kebijakan yang dibuat pada suatu tahap, status pada tahap
tersebut ditransformasi ke dalam status yang berkaitan pada tahap berikutnya.
Hubungan antar status pada tahap yang berurutan bisa bersifat deterministik
atau probabilistik.
Pada sebuah persoalan dengan n-tahap, ada dua input, yaitu : (1) state pada
tahap-n ( ) dan decision variable ( ). Sedang outputnya adalah : (1) return
atau akibat dari setiap yang dipilih, ; dan (2) status baru yang
menjadi input pada tahap berikutnya ( ). Hubungan antara dan
ditentukan oleh return function. Sedang hubungan antar status pada
tahap tertentu ditentukan oleh transition function.
n S ) n n X n
X fn(S,Xn)
1 −
n
S Xn
, (
n S X f
4. Solusi pada dynamic programming berprinsip kepada optimalitas yang
dikembangkan oleh Bellman.
5. Keputusan pada tahap berikutnya bersifat independen terhadap keputusan
sebelumnya. Untuk menyelesaikan persoalan dynamic programming, dimulai
dari solusi awal pada suatu tahap, dan secara berurutan menuju tahap
berikutnya dengan proses yang terbalik (backward induction process).
6. Solusi optimal yang dihasilkan pada setiap tahap berprinsip kepada hubungan
dalam bentuk fungsi rekursif (recursion relationship). Secara umum bentuk
)} , ( min{ max/ )
(
* n n n n
n S f S X
f =
Di mana fn*(Sn) = adalah hasil optimal dari keputusan pada tahap-n.
2.6.3 Ciri ciri dasar dari suatu masalah dynamic programming
Adapun ciri-ciri dasar dari suatu masalah dynamic programming adalah:
1. Dalam masalah dynamic programming, keputusan tentang suatu masalah ditandai
dengan optimisasi pada tahap berikutnya, bukan keserentakan. Ini berarti, jika
suatu masalah akan diselesaikan dengan dynamic programming, ia harus
dipisahkan menjadi n sub problem.
2. Dynamic programming berkaitan dengan masalah-masalah dimana pilihan atau
keputusan dibuat pada masing-masing tahap. Seluruh kemungkinan pilihan
dicerminkan, di-atur, oleh sistem status atau state pada setiap tahap.
3. Berkaitan dengan setiap keputusan pada setiap tahap adalah return function yang
mengevaluasi pilihan yang dibuat dalam arti sumbangan yang diberikan kepada
tujuan keseluruhan (maksimisasi atau minimisasi).
4. Pada setiap tahap proses keputusan dihubungkan dengan tahap yang berdekatan
melalui fungsi transisi.
5. Suatu hubungan rekursif digunakan untuk menghubungkan kebijaksanaan
optimum pada tahap n dengan n-1. Ada dua macam prosedur rekursif yaitu:
a. Foreward recursive equation (perhitungan dari depan ke belakang)
b. Backward recursive equation (perhitungan dari belakang ke depan)
Langkah- langkah pengembangan dynamic programming adalah sebagai berikut:
1. Karakteristikkan struktur solusi optimal.
2. Defenisikan secara rekursif nilai solusi optimal.
3. Hitung nilai solusi optimal secara maju atau mundur.
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 cij> 0
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
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 ( f(i,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
if
∅
=
, 2 ≤ i ≤ nLangkah 2:
Hitung f(i, S) untuk ⎢S ⎢= 1, kemudian kita dapat memperoleh f(i, S) untuk ⎢S ⎢= 2,
hingga |S| = n- 1.
Dengan persamaan:
})}
{
,
(
{
min
)
,
(
i
S
c
f
j
S
j
f
=
j∈S ij+
−
dengan:
f(i, 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
(
V
c
1f
k
V
k
f
−
=
k+
−
≤
dengan:
f(1, 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 f(1, {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:
Berikut langkah-langkah penyelesaiannya:
Langkah 1:
Hitung
1 ,
)
,
(
i
c
if
∅
=
, 2 ≤ i ≤ nDiperoleh:
15
)
,
2
(
∅
=
c
21=
f
8
)
,
3
(
∅
=
c
31=
f
9
)
,
4
(
∅
=
c
41=
f
Langkah 2:
Untuk |S| = 1, Hitung
f
(
i
,
S
)
min
{
c
f
(
j
,
S
{
j
})}
ij S
j
+
−
=
∈Diperoleh:
Untuk |S| = 2, hitung
f
(
i
,
S
)
min
{
c
f
(
j
,
S
{
j
})}
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
(
12
c
f
k
V
k
V
f
kn
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
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-edge 1-3, 3-2, 2-4, 4-1)dari depan ke belakang. Berarti jalur
terpendek adalah 1 3 2 4 1 dengan jumlah bobot minimum 44. Dapat dilihat
pada gambar berikut (edge yang bercetak tebal merupakan jalur terpendek):
12
1 15 16
9 11 11 14 15 10 8
16 18 14
17
4 3
[image:32.595.155.441.248.559.2]2
3.2 Perancangan Flowchart
Gambaran secara umum proses yang terjadi dalam menyelesaikan permasalahan TSP
dalam menentukan jalur terpendek dengan bobot minimum yaitu :
[image:33.595.157.440.182.693.2]Mulai
Gambar dari node i ke j
Input nilai
tidak
ya
Gambar 3.3Flowchart dynamic programming pada TSP Hitung
f
(
i
,
∅
)
=
c
i,1, 2 ≤i≤nHitung persamaan rekursif untuk |S|=1…n-1
Identifikasi pembentuk jalur dengan bobot terpendek
Hitung hubungan rekursif
Tampilkan Hasil
3.3 Perancangan Antar Muka
Rancangan antar muka dari dynamic programming menggunakan visual basic.
Gambar 3.4 adalah tampilan dari aplikasi dynamic programming. Aplikasi terdiri dari
beberapa bagian yaitu menu, form graph dan form hasil.
Dynamic Programming
Graph Matriks Jarak Editor
[image:34.595.110.513.180.441.2]Graph Hasil
Gambar 3.4 Form Utama Aplikasi Dynamic Programming
3.4 Analisa Kebutuhan Perangkat Keras
Perangkat keras yang digunakan untuk menguji implementasi dari dynamic
programming ini pada TSP adalah sebagai berikut :
1. Procesor Pentium IV 1,8D GHz
2. Memory 512 MB
3. Hard Disk 40 GB
4. O/S Windows XP
5. Mouse
3.5 Perancangan Perangkat Lunak
Implementasi dari dynamic programming untuk penyelesaian TSP pada tulisan ini
diaplikasikan dalam bahasa pemrograman Visual Basic 6.0. Aplikasi dari dynamic
programming ini dibatasi hanya pada pencarian jalur terpendek dari data graph yang
diinput oleh user. Tampilannya terdiri dari beberapa form yang memiliki fungsi
masing-masing yang tampil sesuai dengan urutan yang telah diprogram.
1. Halaman Utama
Pada halaman utama terdapat dua menu yaitu keluar dan graph. Tampilan halaman
[image:35.595.107.491.335.534.2]utama dapat dilihat pada Gambar 3.4.
Gambar 3.6. Form Menu
2. Form Graph
Form graph merupakan form yang digunakan untuk menggambar graph. Data graph
diinput oleh user dengan cara menentukan vertex dan edge. Data graph juga bisa
disimpan dan dibuka dalam bentuk file dengan ekstension *.tzr, sehingga
mempermudah ketika data graph dibutuhkan kembali. Jumlah vertex yang dapat
di-run untuk n= 100. Berikut tampilan dari form graph dengan input n=10.
[image:36.595.117.516.498.720.2]3. Form Matriks Jarak
Form matriks jarak merupakan form yang digunakan untuk memasukkan jarak ke
dalam matriks. Data matriks diinput oleh user . Berikut tampilan dari form matriks
[image:37.595.156.440.191.544.2]jarak dengan input n=10.
4. Form Hasil
Form hasil merupakan form untuk melakukan proses komputasi mencari jalur optimal
[image:38.595.112.481.162.723.2]minimum sekaligus menampilkan waktu komputasi. Berikut tampilan dari form hasil.
Gambar 3.9. Form Hasil Komputasi Jalur Terpendek
5. Coding untuk Dynamic Programming
Berikut adalah coding untuk penyelesaian TSP dengan dynamic programming yang
ditulis dengan Microsoft Visual Basic 6.0.
1. Input Matriks Jarak
For i = 1 To Me.flxMap.Rows - 1 For j = 1 To Me.flxMap.Cols - 1
jarak(i, j) = flxMap.TextMatrix(i, j) If jarak(i, j) = 0 Then
visib(i, j) = 0 ' Else
visib(i, j) = Round(1 / jarak(i, j), 2) End If
Next Next
2. Penentuan Jalur Terpendek
function TSP(G(),n) for k = 2 to n C(i,k),k)=d(1,k) next
for s=3 to n
for a= ubound(s) to lbound(s0
for b= ubound(k()) to lbound(k()) if k(b)=s(b) the
C(a,b)=min(m(c(s-{k(b)),a)+d(a,b) for c = ubound(k) to lbound(k)
optimal=min(c,k + d(b,a)
next end if
next next
6. Hasil Analisis
Setelah dynamic programming diimplementasikan dalam bahasa pemrograman,
kemudian diuji dengan masukan beberapa jumlah kota untuk mendapatkan jalur
terpendek dengan bobot minimum. Dari pengujian yang dilakukan dapat dilihat
perbandingan waktu pada proses komputasi dengan masukan kota yang berbeda.
Pengujian dilakukan pada spesifikasi komputer yang penulis gunakan, hasil waktu
[image:40.595.157.441.258.420.2]proses algoritma tidak selalu sama pada jenis komputer yang berbeda.
Tabel 3.1. Perhitungan Waktu antar Kota
Jumlah Kota Waktu Proses (Detik)
5 0.016 10 0.047 15 0.153 20 0.442 25 0.716 30 0.890
Hasil pengukuran terhadap waktu proses dari metode dynamic programming ini
ditunjukkan pada grafik berikut:
[image:40.595.114.496.329.727.2]7. Analisis Berdasarkan Regresi
Regresi adalah bagian ilmu statistik yang mempelajari data berpasangan yang terdiri
atas satu variabel takbebas dan minimal satu variabel bebas. Ada dua jenis persamaan
regresi, yaitu regresi linier dan regresi non linier. Persamaan regresi linier adalah
persamaan matematik yang memungkinkan peramalan nilai suatu peubah takbebas
(dependent variable) dari nilai peubah bebas (independent variable).
Berdasarkan data grafik waktu proses, dilakukan pengujian untuk menghitung
persamaan regresi dengan menggunakan aplikasi SPSS diperoleh model non linier
eksponensial. (Data tabel SPSS terdapat pada halaman lampiran).
8. Pengujian Perangkat Lunak dengan Black Box
Pada bagian ini akan dibahas mengenai pengujian terhadap Perangkat Lunak
.Pengujian perangkat lunak dilakukan dengan pengujian secara black box. Pengujian
ini menggunakan beberapa kasus, seperti pada tabel di bawah ini :
No Pengujian Hasil Pengujian
1 Graph tidak ada Masukkan graph
2 Jika (i,j) ={ } Kalkulasi jarak gagal
3 (i,j) = text Kalkulasi jarak gagal
4 Nilai jarak (i,j) = jarak (j,i) Input jarak gagal
BAB 4
KESIMPULAN DAN SARAN
4.1 Kesimpulan
Berdasarkan hasil penelitian mengenai dynamic programming dalam penyelesaian
kasus TSP dapat disimpulkan bahwa:
1. Pada penyelesaian TSP dengan dynamic programming mampu menghasilkan
rute optimal yaknni jalur terpendek beserta panjang rute optimal dan dynamic
programming mampu mengurangi pengenumerasian keputusan yang tidak
mengarah ke solusi.
2. Dari hasil analisis ternyata untuk 5, 10, 15...30 kota, diperoleh fungsi waktu
terhadap banyaknya kota berbentuk non linier.
4.2 Saran
Sebagai saran yang ditujukan kepada pembaca yang ingin menyelesaikan persoalan
TSP dengan menggunakan dynamic programming, agar dapat mengembangkan
metode ini lebih luas lagi. Disini penulis hanya menyelesaikan dalam cakupan kecil
yang dapat dikerjakan secara manual. Untuk itu penulis berahap agar pembaca dapat
DAFTAR PUSTAKA
Adhi, Wahyu A.2008. Studi dan Implementasi Graf dalam Penentuaan Rute.
Bandung: Informatika ITB.
Evans. J. R. dan Minieka. E. 1992. Optimization Algorithms for Network and Graph.
Marcel Dekker, Inc
Irfan, Mohamad Faradin. 2007. Penerapan Penggunaan Algoritma Genetika dengan Algoritma Konvensional pada Traveling Salesman Problem. Bandung: Informatika ITB
Kusuma, Dian Ningtyas, Vina Evania dan Ernastusi. 2008. Evaluasi Kinerja Algoritma Traveling Salesman Problem dengan Teknik Pemrograman Dinamik. Depok: Universitas Gunadarma.
Minoux, M. 1986. Mathematical Programming Theory and Algorithms. John Wiley & Sons Ltd.
Munir, Rinaldi. 2001. Matematika Diskrit . Bandung: Informatika ITB.
Setiadi, Robert. 2008. Algoritma itu Mudah. Jakarta: PT Prima Infosarana.
Simonetti, N. 1998. Applications of a Dynamic Programming Approach to the Traveling Salesman Problem. USA.