FLOYD WARSHALL
SKRIPSI
Oleh:
HARRIS KRISTANTO NIM.1144076
PROGRAM STUDI TEKNIK INFORMATIKA
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK TIME
i
Pada kehidupan sehari-hari sering ditemukan permasalahan dalam menentukan jalur mana yang harus dilalui agar jarak yang ditempuh paling minimum ataupun biaya transportasi yang diperlukan paling minimum. Permasalahan seperti ini dapat diselesaikan dengan menggunakan algoritma
shortest path, dimana daerah (kota) diwakili oleh vertex dan jarak atau biaya yang
diperlukan diwakili oleh edge pada sebuah graph.
Problema all-pairs shortest-path ditujukan untuk mencari shortest path dari semua pasangan simpul pada sebuah graph. Salah satu contoh penerapan problema ini yaitu dalam pembuatan tabel jarak terpendek antara semua pasangan kota dari suatu peta jalan. Algoritma Floyd-Warshall menggunakan bantuan struktur matriks, operasi perkalian matriks dan konsep dynamic programming untuk mencari all-pairs shortest path.
Perangkat lunak mampu menampilkan proses kerja dari algoritma Floyd-Warshall secara terperinci tahap demi tahap. Selain itu, perangkat lunak juga menyediakan teori-teori yang berhubungan dengan algoritma Floyd-Warshall.
ii
In life we often found problems in determining the path which must be passed in order that the minimum distance or transport costs required minimum. Such problems can be solved by using a shortest path algorithm, in which area (city) represented by the vertex and the distance or cost required is represented by edge on a graph.
Problems all-pairs shortest-path aimed to find the shortest path from every pair of vertices in a graph. As an example of this problem is in the manufacture of table shortest distance between all pairs of cities of a roadmap. Floyd-Warshall algorithm using support matrix structure, matrix multiplication operations and the concept of dynamic programming to find the all-pairs shortest path.
The software is able to display the working process of the Floyd-Warshall algorithm in detail step by step. In addition, the software also provides the theories related to the Floyd-Warshall algorithm.
iii
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa, atas berkat rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan Skripsi ini dengan mengambil judul “PERANGKAT LUNAK PERMAINAN SEEKING
PATH DENGAN ALGORITMA ALL-PAIRS SHORTEST-PATH FLOYD WARSHALL”.
Penyusunan laporan skripsi ini merupakan salah satu syarat yang harus dipenuhi penulis guna mendapatkan gelar Strata-1 Program Studi Teknik Informatika pada STMIK TIME Medan.
Pada kesempatan ini, penulis ingin menyampaikan ucapan terima-kasih yang sebesar-besarnya kepada semua pihak yang telah membimbing dan membantu dalam penyusunan laporan skripsi ini, terutama kepada:
1. Bapak Dian Noviandri, ST, M.Kom, selaku Dosen Pembimbing I yang telah membantu dan membimbing penulis dalam menyelesaikan skripsi ini.
2. Bapak Hendri, M.Kom, selaku Dosen Pembimbing II yang telah membantu dan membimbing penulis dalam menyelesaikan skripsi ini.
3. Bapak Simon Kanggali, selaku Ketua Yayasan STMIK TIME Medan. 4. Bapak Prof. Chainur Arsyid, SH, selaku Ketua BPH STMIK TIME Medan. 5. Bapak Prof. Harlem Marpaung, Ph.D, selaku Ketua STMIK TIME Medan. 6. Bapak Jackri Hendrik, ST, M.Kom, selaku Pembantu Ketua I STMIK TIME
Medan.
iv
selama perkuliahan.
9. Orang tua tercinta dan saudara-saudara yang senantiasa mendukung dan memberikan bantuan moril maupun material kepada penulis.
Akhir kata, dengan penuh kerendahan hati penulis menyadari bahwa isi skripsi dan teknik penulisan skripsi ini masih jauh dari kesempurnaan dan masih memerlukan perbaikan untuk menyempurnakannya baik dari segi tata bahasa manapun materi yang terkandung didalamnya. Oleh karena itu, setiap kritik dan saran akan diterima dengan senang hati agar dapat dijadikan bahan perbaikan untuk penulisan selanjutnya. Akhir kata, puji dan syukur penulis ucapkan kepada Tuhan Yang Maha Esa, semoga kita selalu dalam lindungan dan rahmat karunia-Nya.
Medan, April 2015 Penulis,
v
ABSTRAK ... i
ABSTRACT ... ii
KATA PENGANTAR ... iii
DAFTAR ISI ... v
DAFTAR GAMBAR ... vii
DAFTAR TABEL ... viii
DAFTAR LAMPIRAN ... ix
BAB I PENDAHULUAN ... 01 1.1. Latar Belakang Masalah ... 01 1.2. Identifikasi Masalah ... 03 1.3. Batasan Masalah ... 03 1.4. Tujuan Dan Manfaat Penelitian ... 04 1.5. Sistematika Penulisan ... 04 BAB II LANDASAN TEORI ... 06 2.1. Perangkat Lunak (software) ... 06 2.2. Permainan Seeking Path ... 7
2.3. Algoritma ... 7
2.4. All-Pairs Shortest Path ... 8
2.4.1. Graph ... 10
2.4.2. Jenis-jenis Graph ... 12
2.4.3. Istilah-istilah Dasar Dalam Graph ... 15
2.4.4. Shortest Path ... 18
2.4.5. Algoritma Floyd-Warshall ... 20
BAB III METODE PENELITIAN ... 22
3.1. Tempat Dan Jadwal Penelitian ... 22
3.2. Kerangka Kerja ... 22
3.2.1. Pengumpulan Data ... 23
3.2.2. Analisa Sistem ... 24
3.2.3. Perancangan Sistem ... 24
vi
4.1. Analisa ... 26
4.1.1. Analisa Proses Kerja Algoritma Floyd-Warshall ... 26
4.1.2. Analisa Kebutuhan ... 33
4.2. Perancangan ... 34
4.2.1. Perancangan Tampilan ... 35
4.2.1.1 Form ‘Main’ ... 35
4.2.1.2 Form ‘Pilih User’ ... 37
4.2.1.3 Form ‘Permainan’ ... 38
4.2.1.4 Form ‘High Score’ ... 39
4.2.1.5 Form ‘About’ ... 40
4.3. Perancangan Database ... 41 ‘Kotak Masuk / Keluar’ BAB V HASIL DAN PEMBAHASAN ... 42
5.1. Hasil ... 42
5.1.1. Spesifikasi Perangkat Keras dan Perangkat Lunak ... 42
5.1.2. Tampilan Hasil ... 43
5.2. Pembahasan ... 48
5.3. Algoritma ... 48
BAB V1 KESIMPULAN DAN SARAN ... 50
6.1. Kesimpulan ... 50
6.2. Saran ... 50
vii
Gambar 2.1. Contoh Tiga Buah Graph ... 11
Gambar 2.2. Contoh Graph Berarah dan Graph Ganda Berarah ... 14
Gambar 3.1. Kerangka Kerja ... 23
Gambar 4.1. Proses Penentuan Nilai Awal Matriks ... 28
Gambar 4.2. Proses Perhitungan Nilai Shortest Path Floyd Warshall ... 29
Gambar 4.3. Proses Penentuan Shortest Path Floyd Warshall ... 30
Gambar 4.4. Contoh Graph Berarah ... 31
Gambar 4.5. Rancangan Form ‘Main’ ... 36
Gambar 4.6. Rancangan Form ‘Pilih User’ ... 37
Gambar 4.7. Rancangan Form ‘Permainan’ ... 38
Gambar 4.8. Rancangan Form ‘High Score’ ... 39
Gambar 4.9. Rancangan Form ’About’ ... 40
Gambar 5.1. Tampilan Form Awal ‘Main’ ... 43
Gambar 5.2. Tampilan Form ‘Pilih User’ ... 44
Gambar 5.3. Tampilan Form ’Tambah User Baru’ ... 44
Gambar 5.4. Tampilan Form ’Permainan’ ... 45
Gambar 5.5. Tampilan Form ’Permainan Menang’ ... 46
Gambar 5.6. Tampilan Form ’Pemberitahuan Permainan Berakhir’ ... 46
Gambar 5.7. Tampilan Form ’High Score’ ... 47
viii
Tabel 2.1 Perbandingan Jenis-jenis Graph ... 15
Tabel 3.1 Jadwal Penelitian ... 22
Tabel 4.1 Matriks D(0) ... 31 Tabel 4.2 Matriks D(1) ... 32 Tabel 4.3 Matriks D(2) ... 32 Tabel 4.4 Matriks D(3) ... 32 Tabel 4.5 Matriks D(4) ... 33 Tabel 4.6 Matriks D(5) ... 33
Tabel 4.7 Tabel HighScore ... 41
ix Lampiran 1. CD Program
Lampiran 2. Daftar Riwayat Hidup Mahasiswa
Lampiran 3. Surat Keputusan Dosen Pembimbing Skripsi Lampiran 4. Kartu Bimbingan Dosen I
1
1.1. Latar Belakang Masalah
Pada kehidupan sehari-hari sering ditemukan permasalahan dalam menentukan jalur mana yang harus dilalui agar jarak yang ditempuh paling minimum ataupun biaya transportasi yang diperlukan paling minimum. Permasalahan seperti ini dapat diselesaikan dengan menggunakan algoritma
shortest path, dimana daerah (kota) diwakili oleh vertex dan jarak atau biaya yang
diperlukan diwakili oleh edge pada sebuah graph. Persoalan lintasan terpendek merupakan salah satu persoalan optimasi yang menggunakan graph berbobot, dimana bobot pada setiap sisi graph tersebut dapat digunakan untuk menyatakan jarak antar kota, waktu pengiriman pesan, ongkos pembangunan, dan sebagainya. Algoritma yang digunakan untuk mencari suatu solusi dalam menentukan lintasan terpendek dari suatu graph disebut pathing algorithm. Saat ini terdapat banyak sekali algoritma yang digunakan untuk menyelesaikan persoalan lintasan terpendek diantaranya algoritma Floyd-Warshall yang memungkinkan untuk menentukan semua pasangan lintasan terpendek untuk semua pasangan simpul.
fitur permainan yang memungkinkan pemakai untuk menyelesaikan persoalan secara manual.
Oleh karena itu, penulis bermaksud untuk membuat sebuah aplikasi yang menyediakan fitur permainan yang menerapkan algoritma Floyd-Warshall. Permainan ini diberi nama permainan Seeking Path yang merupakan sebuah permainan pencarian jalur dari sumber ke tujuan dengan sasaran untuk memperoleh jarak terpendek yang ditempuh. Permainan ini akan dilengkapi dengan sebuah fasilitas hint yang dapat digunakan untuk membantu pemain dalam menentukan langkah selanjutnya yang harus dilalui untuk mencapai tujuan. Fasilitas hint ini akan dijalankan dengan menggunakan algoritma Floyd-Warshall untuk mencari solusi jarak terpendek dari sumber ke tujuan. Kelebihan dari penerapan algoritma Floyd-Warshall ini jika dibandingkan dengan algoritma lainnya seperti algoritma Djikstra adalah algoritma Floyd-Warshall dapat mencari semua pasangan jalur terpendek (all-pairs shortest path) untuk semua pasangan titik yang terdapat pada graph dalam sekali proses, sehingga dengan penerapan algoritma ini maka memungkinkan untuk pemain untuk mencari jarak terpendek pada saat permainan dijalankan hingga setengah jalan, tanpa harus memproses ulang algoritmanya. Berdasarkan uraian di atas, maka penulis bermaksud untuk merancang sebuah perangkat lunak yang mampu untuk menerapkan algoritma
Floyd-Warshall dalam mencari solusi lintasan terpendek pada permainan Seeking
Path. Oleh karena itu, penulis mengambil skripsi dengan judul “Perangkat
Lunak Permainan Seeking Path dengan Algoritma All-Pairs Shortest-Path
1.2. Identifikasi Masalah
Adapun permasalahan yang muncul dalam kehidupan sehari-hari yaitu: 1. Bagaimana menentukan jalur yang harus dilalui agar memenuhi persyaratan
tertentu seperti jarak yang ditempuh paling minimum.
2. Bagaimana menerapkan algoritma Floyd-Warshall untuk mencari solusi jarak terpendek pada permainan Seeking Path.
1.3. Batasan Masalah
Pembatasan permasalahan dalam membuat perangkat lunak ini adalah sebagai berikut:
1. Permainan akan dimainkan dengan menggunakan batasan waktu, dimana waktu akan berkurang 1 detik per kenaikan level dan sisa waktu akan diakumulasikan ke level berikutnya, dengan waktu awal dimulai dari 30 detik. 2. Permainan terdiri dari tiga jenis tingkat kesulitan yaitu:
a. Level 1 sampai level 10 merupakan tingkat kesulitan ‘Mudah’ dengan jumlah kotak sebesar 12 x 12.
b. Level 11 sampai level 20 merupakan tingkat kesulitan ‘Sedang’ dengan jumlah kotak sebesar 14 x 14.
c. Level 21 sampai level 30 merupakan tingkat kesulitan ‘Sulit’ dengan jumlah kotak sebesar 16 x 16.
3. Perangkat lunak mendukung proses pengisian nama user baru.
1.4. Tujuan dan Manfaat Penulisan
Tujuan penyusunan skripsi ini adalah membuat suatu perangkat lunak permainan yang menerapkan algoritma Floyd-Warshall dalam menentukan lintasan terpendek.
Manfaat dari penyusunan skripsi ini adalah:
1. Perangkat lunak dapat digunakan sebagai sarana penghibur yang cukup menarik.
2. Laporan skripsi dapat digunakan untuk membantu pemahaman mengenai proses penentuan jalur terpendek yang dapat dilalui dengan menggunakan algoritma Floyd-Warshall.
1.5. Sistematika Penulisan
Agar pembahasan lebih sistematika, maka tulisan ini dibuat dalam enam bab, yaitu :
BAB I PENDAHULUAN
Dalam bab ini berisi tentang latar belakang pemilihan judul, identifikasi masalah, batasan masalah, tujuan dan manfaat, dan sistematika penulisan.
BAB II LANDASAN TEORI
BAB III METODE PENELITIAN
Dalam bab ini berisi tentang tempat dan jadwal penelitian, kerangka kerja, metode pengumpulan data, analisa sistem, perancangan sistem, pembangunan sistem, uji coba sistem dan implementasi sistem.
BAB IV ANALISA DAN PERANCANGAN
Dalam bab ini berisi tentang pembahasan mengenai proses kerja dan perancangan tampilan antarmuka.
BAB V HASIL DAN PEMBAHASAN
Dalam bab ini berisi tentang algoritma dan implementasi dari perangkat lunak.
BAB VI KESIMPULAN DAN SARAN
6
LANDASAN TEORI
2.1. Perangkat Lunak (Software)
Perangkat lunak (software) dapat diartikan sebagai:
1. Instruksi-instruksi dalam program komputer yang bila dieksekusi akan memberikan fungsi dan unjuk kerja yang diinginkan.
2. Struktur data yang membuat program mampu memanipulasi suatu informasi. 3. Dokumen-dokumen yang menjelaskan operasi dan pemakaian suatu program.
Jadi, perangkat lunak adalah program komputer, struktur data, dan dokumentasi yang berkaitan, yang menyediakan metode logika, prosedur atau kontrol yang diminta.
Perangkat lunak (software) memiliki beberapa karakteristik yang membedakannya dengan perangkat keras (hardware) antara lain:
1. Perangkat lunak dikembangkan dan direkayasa, bukan dirakit seperti perangkat keras. Meskipun ada beberapa kesamaan pengertian antara kedua istilah tersebut, tetapi pada dasarnya berbeda.
2. Perangkat lunak dibuat berdasarkan sistem yang sifatnya berbeda-beda, sedangkan perangkat keras dibuat berdasarkan rakitan komponen yang sudah ada.
2.2. Permainan Seeking Path
Menurut Costkyan, permainan (game) adalah sebuah bentuk dari seni di mana pemain-pemain membuat keputusan untuk mengatur sumber-sumber melalui token-token game dalam pencarian suatu sasaran (goal) (http://www.ummi.ac.id/ti/konvert_pdf.php?kode=VGxFOVBRPT0=). Permainan
Seeking Path adalah sebuah permainan pencarian jalur dari sumber ke tujuan
dengan sasaran untuk memperoleh jarak terpendek yang ditempuh. Permainan ini akan dilengkapi dengan sebuah fasilitas hint yang dapat digunakan untuk membantu pemain dalam menentukan langkah selanjutnya yang harus dilalui untuk mencapai tujuan.
2.3. Algoritma
Algoritma adalah suatu kumpulan terhingga (finite set) dari instruksi yang terdefinisi dengan baik (well-defined instructions) untuk menyelesaikan beberapa pekerjaan dimana diberikan state awal (initial state) dan akan dihentikan pada saat ditemukan state akhir (end-state) yang dikenal.
Algoritma dapat diimplementasikan dalam pembuatan program komputer. Kesalahan dalam merancang algoritma untuk menyelesaikan suatu problema dapat menyebabkan program gagal dalam implementasinya.
benar belum tentu dapat menyelesaikan problema. Hal ini dikarenakan adanya kemungkinan algoritma tersebut rusak atau cacat, atau penerapannya tidak cocok (tidak tepat) untuk menyelesaikan problema. Sebagai contoh, sebuah algoritma hipotesis untuk membuat sebuah salad kentang akan gagal jika tidak terdapat kentang.
Suatu pekerjaan dapat diselesaikan dengan menggunakan algoritma yang berbeda dengan kumpulan instruksi (set of instructions) yang berbeda dengan perbedaan waktu akses, efisiensi tempat, usaha dan sebagainya. Sebagai contoh, diberikan dua buah resep yang berbeda untuk membuat salad kentang, resep pertama mengupas kulit kentang terlebih dahulu sebelum memasak kentang tersebut, sementara resep lainnya dilakukan dengan langkah yang terbalik, dan kedua resep akan mengulangi kedua langkah tersebut dan akan dihentikan pada saat salad kentang siap untuk dimakan.
Algoritma adalah hal yang mendasar untuk komputer dalam memproses informasi, karena sebuah program komputer adalah sebuah algoritma yang memberitahukan kepada komputer langkah-langkah spesifik yang akan dijalankan (dalam urutan spesifik) untuk melakukan pekerjaan tertentu, misalnya menghitung gaji karyawan atau mencetak rapor murid. Oleh karena itu, algoritma dapat dianggap sebagai beberapa operasi sekuensial (terurut) yang dapat dijalankan oleh sebuah sistem lengkap Turing. (Munir, 2005: 495)
2.4. All-Pairs Shortest Path
pembuatan tabel jarak terpendek antara semua pasangan kota dari suatu peta jalan. Seperti pada problema single-source shortest path, diberikan sebuah graph berbobot dan berarah G = (V, E) dengan fungsi bobot w : E  R yang memetakan sisi ke sebuah nilai riil. Sasarannya adalah untuk setiap pasangan simpul u, v  V, dicari sebuah jalur terpendek (berbobot paling minimum) dari u ke v, dimana bobot dari sebuah jalur adalah penjumlahan dari bobot sisi-sisinya. Hasil dari problema ini berupa sebuah tabel dimana nilai pada baris u dan kolom v merepresentasikan bobot shortest path dari u ke v.
Cara termudah untuk menyelesaikan problema ini adalah dengan menjalankan algoritma single-source shortest path sebanyak V kali, sekali untuk setiap simpul sebagai simpul awal. Jika semua sisi berbobot positif, maka algoritma Djikstra dapat digunakan. Sedangkan, jika ada sisi yang berbobot negatif maka algoritma Djikstra tidak dapat digunakan. Untuk menyelesaikannya, dapat menggunakan algoritma Bellman-Ford yang lebih lambat.
Cara lainnya yang memiliki waktu eksekusi yang lebih baik adalah dengan menggunakan algoritma Johnson dan Floyd-Warshall. Tidak seperti algoritma
single-source shortest path yang kebanyakan menggunakan representasi
adjacency-list, algoritma all-pairs shortest path ini menggunakan representasi
adjacency matriks. Input dari algoritma berupa matriks W berukuran n x n yang
merepresentasikan nilai bobot sisi dari sebuah graph berarah G = (V, E) dengan n buah simpul. (Cormen, et. al., 1990: 550) Nilai dari setiap elemen W = (wij)
adalah:
0 ; jika i = j.
2.4.1. Graph
Secara matematis, graph G dapat didefinisikan sebagai berikut:
Graph G didefinisikan sebagai pasangan himpunan (V, E), ditulis dengan notasi G
= (V, E), yang dalam hal ini V adalah himpunan tidak kosong dari simpul-simpul (vertices atau nodes) dan E adalah himpunan sisi (edges atau arcs) yang menghubungkan sepasang simpul. (Munir, 2005: 356)
Definisi ini menyatakan bahwa V tidak boleh kosong, sedangkan E boleh kosong. Jadi, sebuah graph dimungkinkan tidak mempunyai sisi satu buah pun, tetapi simpulnya harus ada, minimal satu. Graph yang hanya mempunyai satu buah simpul tanpa sebuah sisi pun dinamakan graph trivial. (Munir, 2005: 356)
Simpul pada graph dapat dinomori dengan huruf, seperti a, b, c, …, v, w, …, atau dengan bilangan asli 1, 2, 3, … ataupun dengan gabungan keduanya. Sedangkan sisi yang menghubungkan simpul u dengan simpul v dinyatakan dengan pasangan (u, v) atau dinyatakan dengan lambang e1, e2, …. Dengan kata
lain, jika e adalah sisi yang menghubungkan simpul u dengan simpul v, maka e dapat ditulis sebagai :
e = (u, v)
1 2 3 4 (a) G1 1 2 3 4 (b) G2 e1 e4 e3 e2 e5 e6 e7 1 2 3 4 (c) G3 e1 e4 e3 e2 e5 e6 e7 e8
Gambar 2.1 Tiga buah graph (a) graph sederhana, (b) graph ganda, dan (c) graph semu
Sumber: Munir, 2005: 356
Gambar 2.1 memperlihatkan tiga buah graph, G1, G2 dan G3. G1 adalah graph
dengan himpunan simpul V dan himpunan sisi E adalah:
G1 adalah graph dengan himpunan simpul V dan himpunan sisi E, yaitu:
V = { 1, 2, 3, 4 }
E = { (1, 2), (1, 3), (2, 4), (3, 4) }
G2 adalah graph dengan himpunan simpul V dan himpunan sisi E, yaitu:
V = { 1, 2, 3, 4 }
E = { (1, 2), (2, 3), (1, 3), (1, 3), (2, 4), (3, 4), (3, 4) }  himpunan ganda = { e1, e2, e3, e4, e5, e6, e7 }
G3 adalah graph dengan himpunan simpul V dan himpunan sisi E yaitu :
V = { 1, 2, 3, 4 }
E = { (1, 2), (2, 3), (1, 3), (1, 3), (2, 4), (3, 4), (3, 4), (3, 3) }  himpunan ganda = { e1, e2, e3, e4, e5, e6, e7, e8 }
Pada graph G2, sisi e3 = {1, 3} dan sisi e4 = {1, 3} dinamakan sisi ganda (multiple
edges atau paralel edges) karena kedua sisi ini menghubungi dua buah simpul
gelang atau kalang (loop) karena berawal dan berakhir pada simpul yang sama. (Munir, 2005: 356)
2.4.2. Jenis-Jenis Graph
Graph dapat dikelompokkan menjadi beberapa kategori bergantung pada
sudut pandang pengelompokannya. Pengelompokan graph dapat dipandang berdasarkan ada tidaknya sisi ganda atau sisi kalang, berdasarkan jumlah simpul atau berdasarkan orientasi arah pada sisi.
Berdasarkan ada tidaknya gelang atau sisi ganda pada suatu graph, maka secara umum graph dapat digolongkan menjadi dua jenis :
1. Graph sederhana (simple graph).
Graph yang tidak mengandung gelang maupun sisi ganda dinamakan graph
sederhana. Gambar 2.1 (a) adalah contoh graph sederhana yang merepresentasikan jaringan komputer. Simpul menyatakan komputer, sedangkan sisi menyatakan saluran telepon untuk berkomunikasi. Saluran telepon dapat beroperasi pada dua arah. Pada graph sederhana, sisi adalah pasangan tak terurut (unordered pairs). Jadi, menuliskan sisi (u, v) sama saja dengan (v, u). Atau dapat juga mendefinisikan graph sederhana G = (V, E) terdiri dari himpunan tidak kosong simpul-simpul dan E adalah himpunan pasangan tak terurut yang berbeda yang disebut sisi.
2. Graph tak sederhana (unsimple graph).
Graph yang mengandung sisi ganda atau gelang dinamakan graph tak
sederhana (unsimple graph). Ada dua macam graph tak sederhana, yaitu
adalah graph yang mengandung sisi ganda. Sisi ganda yang menghubungkan sepasang simpul bisa lebih dari dua buah. Gambar 2.1 (b) merupakan contoh
graph ganda. Sisi ganda dapat diasosiasikan sebagai pasangan tak terurut yang
sama. Atau dapat juga mendefinisikan graph ganda G = {V, E} terdiri dari himpunan tidak kosong simpul-simpul dan E adalah himpunan ganda (multiset) yang mengandung sisi ganda. Pada jaringan telekomunikasi, sisi ganda pada graph G2 dapat diandaikan sebagai saluran telepon tambahan
apabila beban komunikasi data antar komputer sangat padat. Setiap graph sederhana juga adalah graph ganda, tetapi tidak setiap graph ganda merupakan graph sederhana.
Graph semu adalah graph yang mengandung gelang (loop), Gambar 2.1 (c)
adalah graph semu (termasuk bila memiliki sisi ganda sekalipun). Sisi gelang pada graph G3 dapat dianggap sebagai saluran telepon tambahan yang
menghubungkan komputer dengan dirinya sendiri (mungkin untuk tujuan diagnostik). Graph semu lebih umum daripada graph ganda, karena sisi pada
graph semu dapat terhubung ke dirinya sendiri.
Jumlah simpul pada graph dapat disebut sebagai kardinalitas graph dinyatakan dengan n = |V| dan jumlah sisi dinyatakan dengan m = |E|. Pada contoh gambar 2.1 diatas, graph G1 mempunyai n = 4 dan m = 4, sedangkan
graph G2 mempunyai n = 3 dan m = 4. (Munir, 2005: 357)
1. Graph tak berarah (undirected graph).
Graph yang sisinya tidak mempunyai orientasi arah disebut graph tak berarah.
Pada graph tak berarah, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan. Jadi, (u, v) = (v, u) adalah sisi yang sama. Tiga buah graph pada Gambar 2.1 adalah graph tak berarah. Pada jaringan telepon, sisi pada
graph menyatakan bahwa saluran telepon dapat beroperasi pada dua arah.
2. Graph berarah (directed graph atau digraph).
Graph yang setiap sisinya diberikan orientasi arah disebut sebagai graph
berarah. Sisi berarah dapat juga disebut sebagai busur (arc). Pada graph berarah (u, v) dan (v, u) menyatakan dua buah busur yang berbeda, dengan kata lain (u, v)  (v, u). Untuk busur (u, v), simpul u dinamakan simpul asal (initial vertex) dan simpul v dinamakan simpul terminal (terminal vertex). (Munir, 2005: 358) 1 2 3 4 1 3 2 4
Gambar 2.2 (a) Graph Berarah, (b) Graph Ganda Berarah
Sumber: Munir, 2005: 359
Gambar 2.2 (a) adalah contoh graph berarah. Pada graph G4 dapat
dibayangkan sebagai saluran telepon yang tidak dapat beroperasi dua arah. Saluran hanya beroperasi pada arah yang ditunjukkan oleh anak panah. Jadi, sebagai contoh, saluran telepon (1,2) tidak sama dengan saluran telepon (2,1).
Graph berarah sering dipakai untuk menggambarkan aliran proses, peta lalu lintas
gelang diperbolehkan, tetapi sisi ganda tidak. Definisi graph dapat diperluas sehingga mencakup graph ganda berarah (directed multigraph). Pada graph ganda berarah, gelang dan sisi ganda diperbolehkan ada. Contoh graph ganda berarah dapat dilihat pada gambar 2.2 (b).
Perbandingan antara jenis-jenis graph dapat diringkas dalam tabel 2.1 berikut ini.
Tabel 2.1 Perbandingan jenis-jenis graph
Jenis Sisi Sisi ganda Sisi gelang
Graph sederhana Tak berarah Tidak Tidak
Graph ganda Tak berarah Ya Tidak
Graph semu Tak berarah Ya Ya
Graph berarah Berarah Tidak Ya
Graph ganda
berarah Berarah Ya Ya
Sumber: Munir, 2005: 359
2.4.3. Istilah-Istilah Dasar dalam Graph
Di bawah ini akan didefinisikan beberapa terminologi (istilah) yang berkaitan dengan graph dan sering dipakai.
1. Bertetangga (Adjacent)
Dua buah simpul pada graph tak berarah G dikatakan bertetangga bila keduanya terhubung langsung dengan sebuah sisi. Dengan kata lain, u bertetangga dengan v jika (u, v) adalah sebuah sisi pada graph G.
2. Bersisian (Incident)
Untuk sembarang sisi e = (u, v), sisi e dikatakan bersisian dengan simpul u dan simpul v.
3. Graph Kosong (Null Graph atau Empty Graph)
Graph yang himpunan sisinya merupakan himpunan kosong disebut sebagai
graph kosong dan ditulis sebagai Nn, yang dalam hal ini n adalah jumlah
simpul.
4. Lintasan (Path)
Lintasan yang panjangnya n dari simpul awal v0 ke simpul tujuan vn di dalam
graph G adalah barisan berselang-selng simpul-simpul dan sisi-sisi yang
berbentuk v0, e1, v1, e2, v2, …, vn – 1,en, vn sedemikian sehingga e1 = (v0, v1), e2
= (v1, v2), …, en = (vn – 1, vn) adalah sisi-sisi dari graph G.
Jika graph yang ditinjau adalah graph sederhana, maka cukup menuliskan lintasan sebagai barisan simpul-simpul saja : v0, v1, v2, …, vn – 1, vn, karena
antara dua buah simpul berurutan di dalam lintasan tersebut hanya ada satu sisi.
Pada graph yang mengandung sisi ganda, harus ditulis lintasan sebagai barisan berselang-seling antara simpul dan sisi menghindari kerancuan sisi manan dari sisi-sisi ganda yang dilalui.
lintasan terbuka (open path). Panjang lintasan adalah jumlah sisi dalam lintasan tersebut.
5. Siklus (Cycle) atau Sirkuit (Circuit)
Lintasan yang berawal dan berakhir pada simpul yang sama disebut sirkuit atau siklus. Panjang sirkuit adalah jumlah sisi di dalam sirkuit tersebut. Sebuah sirkuit dikatakan sirkuit sederhana (simple circuit) jika setiap sisi yang dilalui berbeda.
6. Terhubung (Connected)
Keterhubungan dua buah simpul adalah penting di dalam graph. Dua buah simpul u dan simpul v dikatakan terhubung jika terdapat lintasan dari u ke v. Jika dua buah simpul terhubung maka pasti simpul yang pertama dapat dicapai dari simpul yang kedua. Dua simpul terminal pada jaringan komputer hanya dapat berkomuniksi bila keduanya terhubung. Jika setiap pasang simpul di dalam graph terhubung, maka graph tersebut dikatakan graph terhubung. Secara formal, definisi graph terhubung adalah sebagai berikut :
“Graph tak berarah G disebut graph terhubung (connected graph) jika untuk setiap pasang simpul u dan v di dalam himpunan V terdapat lintasan dari u ke v (yang juga harus berarti ada lintasan dari u ke v). Jika tidak, maka G disebut
graph tak terhubung (disconnected graph)”.
Graph yang hanya terdiri atas satu simpul saja (tidak ada sisi) tetap dikatakan
terhubung, karena simpul tunggalnya terhubung dengan dirinya sendiri. Pada
graph berarah, definisi graph terhubung dirumuskan sebagai berikut :
Keterhubungan dua buah simpul pada graph berarah dibedakan menjadi terhubung kuat dan terhubung lemah. Dua simpul, u dan v pada graph berarah G disebut terhubung kuat (strongly connected) jika terdapat lintasan berarah dari u ke v, dan juga sebaliknya lintasan berarah dari v ke u. Jika u dan v tidak terhubung kuat tetapi tetap terhubung pada graph tak berarahnya, maka u dan v dikatakan terhubung lemah (weakly connected). Kedua hal tersebut (terhubung kuat dan terhubung lemah) melahirkan definisi graph terhubung kuat berikut :
“Graph berarah G disebut graph terhubung kuat (strongly connected graph) apabila untuk setiap pasang simpul sembarang vi dan vj di G terhubung kuat.
Kalau tidak, G disebut graph terhubung lemah. (Munir, 2005: 364)
2.4.4. Shortest Path
Seorang pengendara sepeda motor ingin menemukan rute terpendek yang dapat dilalui dari Chicago ke Boston. Diberikan sebuah peta jalan dari Amerika Serikat dimana setiap daerah yang dapat dilalui dengan jalur darat dengan jarak tertentu ditandai / dihubungkan, bagaimana cara menentukan rute terpendek ini ?
Cara lainnya yang lebih efisien adalah dengan menerapkan algoritma
shortest path pada graph. Dalam sebuah problema shortest path, diberikan sebuah
graph berbobot dan berarah G = (V, E), dengan fungsi bobot w : E  R
memetakan sisi (edge) dengan nilai bobot riil. Bobot dari path p = {v0, v1, ..., vk}
adalah penjumlahan bobot dari setiap sisinya seperti ditunjukkan oleh rumusan berikut:
k
w(p) = ∑ w(vi-1,vi) i = 1
Kemudian, didefinisikan bobot shortest path dari u ke v dengan rumusan berikut: min{w(p) : u  v} ; jika terdapat path dari u ke v.
(u, v) =
 ; jika tidak terdapat path.
Shortest path dari simpul u ke simpul v dapat didefinisikan sebagai sembarang
path p dengan bobot w(p) = (u, v).
Dalam contoh pencarian rute dari Chicago ke Boston, peta jalan dapat dimodelkan sebagai sebuah graph dimana simpul mewakili daerah, sisi mewakili jalan antar daerah yang dapat dilalui dan bobot sisi mewakili jarak jalan. Sasarannya adalah menemukan shortest path dari Chicago ke Boston. (Cormen, et. al., 1990: 514)
Algoritma shortest path ini dapat diterapkan untuk mencari solusi dari beberapa variasi dari shortest path seperti:
1. Single-destination shortest path
2. Single-pair shortest path
Problema ini ditujukan untuk mencari shortest path dari u ke v untuk simpul u dan v yang ditentukan. Problema ini disebut juga dengan problema
single-source shortest path.
3. All-pairs shortest path
Problema ini ditujukan untuk mencari shortest path dari u ke v untuk setiap pasangan simpul u dan v. Problema ini dapat diselesaikan dengan menerapkan algoritma single-source shortest path sekali dari setiap simpul, tetapi ada algoritma spesifik lain yang dapat menyelesaikan problema ini dengan lebih cepat. (Cormen, et. al., 1990: 515)
2.4.5. Algoritma Floyd-Warshall
Algoritma ini menerapkan konsep dynamic programming dalam mencari
all-pairs shortest-path dari sebuah graph. Algoritma ini memiliki kompleksitas
waktu sebesar O(V3). Proses kerja dari algoritma ini adalah sebagai berikut: 1. Algoritma proses perhitungan shortest path.
Floyd-Warshall(d, n)
1. for k  1 to n
2. for j  1 to n
3. for i  1 to n
4. dij(k) = min(dij(k-1), dik(k-1) + dkj(k-1))
5. if choose dik(k-1) + dkj(k-1) then pred(i,j) = k
2. Algoritma proses penentuan rute dari shortest path.
1. if pred(i, j) = nil then
2. return output(i, j)
3. else
4. path(i, pred(i, j))
5. path(pred(i, j), j)
Konsep dasar dari algoritma shortest path Floyd Warshall:
1. Jika yang diambil dij(k-1), maka shortest path-nya adalah edge (i, j) itu
sendiri.
2. Jika yang diambil dik(k-1) + dkj(k-1), maka shortest path-nya bukan edge (i, j),
22
METODE PENELITIAN
3.1. Tempat dan Jadwal Penelitian
Penelitian dimulai dari bulan Desember 2014 dan berakhir pada bulan April 2015. Lokasi yang diambil penulis sebagai tempat penelitian adalah perpustakaan STMIK TIME dan rumah peneliti. Berikut ini dijabarkan jadwal penelitian yang dapat dilihat pada Tabel 3.1.
Tabel 3.1 Jadwal Penelitian
3.2. Kerangka Kerja
Adapun tahapan dan langkah-langkah pengembangan perangkat lunak ini dapat digambarkan dalam bentuk diagram alir seperti diperlihatkan pada Gambar 3.1.
Waktu Kegiatan
Desember 2014 Januari 2015 Februari 2015 Maret 2015 April 2015
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Identifikasi Masalah Pengumpulan Data Analisa Sistem Perancangan Sistem Pembangunan Sistem
Uji Coba Sistem
Pengumpulan Data
Analisa Sistem
Perancangan Sistem
Pembangunan Sistem
Uji Coba Sistem Identifikasi Masalah
Penulisan Skripsi
Gambar 3.1 Kerangka Kerja
3.2.1. Pengumpulan Data
Di tahap pertama, penulis mengumpulkan data yang diperlukan dalam penyusunan skripsi. Data tersebut dikumpulkan dari buku dan sumber-sumber lainnya di internet.
gambar themes Microsoft Power Point versi 2007 yang diubah warna latarnya dan juga beberapa gambar yang bersumber dari internet dan di-edit dengan menggunakan aplikasi Adobe Photoshop C.S versi 5.0. Selain itu, juga digunakan beberapa gambar yang diunduh dari internet.
3.2.2. Analisa Sistem
Setelah dipelajari, penulis memilih dan menetapkan algoritma Floyd Warshall sebagai algoritma yang akan digunakan dalam menyelesaikan masalah
shortest path. Penulis juga melakukan analisa ulang terhadap data sebelumnya,
untuk menyimpulkan lebih rinci masalah yang akan diselesaikan serta tujuan penelitian dari penulis.
3.2.3. Perancangan Sistem
Dalam tahap desain pada siklus hidup pengembangan sistem, penganalisa sistem menggunakan informasi yang terkumpul sebelumnya untuk mencapai desain sistem yang diinginkan. Penganalisa menggunakan teknik flowchart dan perancangan layar tertentu untuk menjamin keefektifan input sistem.
Perangkat lunak untuk menentukan shortest path dengan algoritma Floyd Warshall ini dirancang dengan menggunakan bahasa pemrograman Microsoft
Visual Basic 2010 dengan menggunakan beberapa objek dasar seperti :
1. Label, yang digunakan untuk menampilkan keterangan.
2. ComboBox, yang digunakan untuk menyediakan pilihan node awal dan node akhir.
4. PictureBox, yang digunakan untuk menampilkan graph hasil. 5. SaveFileDialog, yang digunakan untuk menampilkan dialog save. 6. OpenFileDialog, yang digunakan untuk menampilkan dialog open. 7. TextBox, yang digunakan untuk menampilkan hasil proses perhitungan.
3.2.4. Pembangunan Sistem
Dalam tahap kelima pada siklus hidup pengembangan sistem, penganalisa mengembangkan suatu perangkat lunak awal yang diperlukan. Teknik terstruktur yang digunakan untuk merancang dan mendokumentasikan perangkat lunak adalah pseudocode. Penganalisa sistem menggunakan perangkat ini untuk memprogram apa yang perlu diprogram.
Rancangan tampilan dari perangkat lunak untuk menentukan shortest path dengan algoritma Floyd Warshall ini dapat dirincikan sebagai berikut:
1. Form ‘Splash Screen’. 2. Form ‘Awal’.
3. Form ‘Permainan’. 4. Form ‘Mengenai’.
3.2.5. Uji Coba Sistem
26
ANALISA DAN PERANCANGAN
4.1. Analisa
Algoritma Floyd-Warshall dapat digunakan untuk menentukan shortest
path dari semua pasangan simpul yang terdapat pada graph ataupun disebut dengan problema all-pairs shortest path yang merupakan pengembangan dari problema single-source shortest path.
4.1.1. Analisa Proses Kerja Algoritma Floyd-Warshall
Algoritma Floyd-Warshall menerapkan konsep dynamic programming, yaitu menyelesaikan problema dengan mencari dan mengkombinasikan solusi dari subproblema-subproblema yang terdapat dalam problema tersebut. Pengembangan dari algoritma dynamic programming dapat dibagi menjadi 4 langkah yang dilakukan secara berurutan, yaitu:
1. Kenali struktur dari sebuah solusi optimal (Characterize the structure of an
optimal solution).
2. Secara berulang menetapkan nilai dari sebuah solusi optimal (Recursively
define the value of an optimal solution).
3. Hitung nilai dari sebuah solusi optimal dengan pola bottom-up (Compute the
value of an optimal solution in a bottom-up fashion).
4. Cari sebuah solusi optimal dari informasi yang telah dihasilkan (Construct an
Langkah ke-1 sampai langkah ke-3 merupakan dasar dari solusi dynamic
programming pada suatu masalah. Langkah 4 dapat diabaikan hanya jika nilai dari
solusi optimal dibutuhkan. Ketika mengerjakan langkah ke-4, terkadang memerlukan informasi tambahan selama proses perhitungan pada langkah ke-3 untuk memudahkan pencarian solusi optimal.
Berdasarkan langkah dari algoritma dynamic programming di atas, maka proses pencarian shortest path dari algoritma Floyd-Warshall dapat dibagi menjadi beberapa bagian, yaitu:
1. Langkah pertama: Kenali struktur dari all-pairs shortest path. Semua subpath dari shortest path yang diperoleh pada problema all-pairs shortest path juga merupakan shortest path juga. Kenali juga bentuk representasi graph yang digunakan untuk merepresentasikan graph input. Algoritma Floyd-Warshall ini menggunakan bentuk representasi adjacency-matrix sebagai bentuk representasi graph-nya. Pada langkah ini, ditentukan besar orde dari matriks D yang akan digunakan untuk menghitung nilai shortest path. Jumlah orde dari matriks D adalah sebesar n, dimana n adalah jumlah simpul yang terdapat dalam graph input.
2. Langkah kedua: Hitunglah nilai dari matriks D(0) = (dij) yang berorde n x n.
Matriks D(0) ini merupakan nilai awal yang akan digunakan untuk menghitung nilai shortest path pada langkah selanjutnya. Proses penentuan nilai dari matriks D(0) ini menggunakan rumusan berikut:
0 ; jika i = j
dij(0) = w {bobot sisi (i, j)} ; jika i  j dan ada sisi (i, j)
Proses kerja dari langkah ini dapat dilihat pada gambar 4.1 berikut:
Untuk i = 1 sampai n
Untuk j = 1 sampai n Mulai
i = j
Ada sisi (i, j)
Ya Tidak dij(0) = 0 Tidak dij(0) =  Ya dij(0) = w(i, j) Selesai
Gambar 4.1 Proses Penentuan Nilai Awal dari Matriks D = (dij) pada
Algoritma Floyd-Warshall
Dalam proses perancangan perangkat lunak, matriks D = (dij) menggunakan
struktur data array tiga dimensi (i, j, k). Untuk nilai tak terhingga, diasumsikan bahwa nilai tersebut lebih besar dari nilai terbesar yang diperbolehkan saja. Dalam hal ini, nilai tersebut lebih besar daripada 100 dan diambil nilai 101 untuk mewakili nilai tak terhingga tersebut dalam perangkat lunak.
ataupun tidak, tergantung dari nilai yang diperoleh. Jika jalur yang melalui simpul k ini memiliki nilai yang lebih kecil daripada nilai dari sisi (i, j), maka jalur dari simpul k ini yang digunakan. Jika tidak, maka sisi (i, j) yang digunakan. Proses perhitungan dimulai dari pasangan simpul asal dan tujuan dan dipersempit hingga didapatkan kumpulan simpul yang membentuk jalur terpendek (shortest path). Dalam algoritma, nilai k merupakan jumlah perulangan perhitungan yang harus dilakukan terhadap setiap sisi (i, j) pada
graph. Proses kerja dari perhitungan nilai shortest path ini dapat dilihat pada
gambar 4.2 berikut: Untuk k = 1 sampai n Untuk j = 1 sampai n Untuk i = 1 sampai n Mulai Selesai dij(k) = min(dij(k-1), dik(k-1) + dkj(k-1)) Jika nilai dik(k-1) + dkj(k-1) yang dipilih Ya pred(i,j) = k Tidak pred(i,j) = null Shortest path = kumpulan nilai dij(n)
4. Langkah keempat: Tentukan jalur (rute) dari shortest path. Untuk menyelesaikan langkah ini, diperlukan nilai dari variabel pred(i,j) yang dihasilkan pada proses sebelumnya, dimana nilai dari variabel ini menunjukkan simpul sebelumnya yang menghubungkan sisi (i, j) ini (simpul pendahulu). Untuk itu, perlu dirancang sebuah algoritma rekursif yang memanggil nilai dari variabel pred(i,j) hingga variabel tersebut bernilai null (kosong), yang berarti bahwa proses pencarian telah mencapai simpul awal (simpul asal) sehingga proses telah selesai. Proses kerja dari langkah ini dapat dilihat pada gambar 4.3 berikut:
Mulai
pred(i, j) = 0
Tidak
Ya
Path = sisi (i, j) j = pred(i, j)
i = pred(i, j)
Selesai
Gambar 4.3 Proses Penentuan Shortest Path pada Algoritma Floyd-Warshall
Contoh :
3 4 -4 -5 1 8 6 2 7 1 2 3 4 5
Gambar 4.4 Contoh Graph Berarah
Proses kerja dari algoritma Floyd-Warshall dalam mencari all-pairs
shortest path dari graph berarah di atas adalah sebagai berikut:
1. Hitung nilai matriks D(0) :
Tabel 4.1 Matriks D(0) 1 2 3 4 5 1 0 3 8  -4 2  0  1 7 3  4 0   4 2  -5 0  5    6 0
2. Hitung nilai matriks D(1) sampai D(5) dengan menggunakan rumusan dij(k) = min(dij(k-1), dik(k-1) + dkj(k-1)) :
Tabel 4.5 Matriks D(4) 1 2 3 4 5 1 0 3 -1 4 -4 2 3 0 -4 1 -1 3 7 4 0 5 3 4 2 -1 -5 0 -2 5 8 5 1 6 0 Tabel 4.6 Matriks D(5) 1 2 3 4 5 1 0 1 -3 2 -4 2 3 0 -4 1 -1 3 7 4 0 5 3 4 2 -1 -5 0 -2 5 8 5 1 6 0
Matriks D(5) di atas merupakan solusi dari all-pairs shortest path, dimana nilai dari baris ke-i dan kolom ke-j merupakan shortest path dari node-i ke node-j. Contoh nilai pada i = 1 dan j = 2 yaitu sebesar 1 merupakan nilai shortest path dari node 1 ke node 2.
4.1.2. Analisa Kebutuhan
Kebutuhan yang harus dipenuhi oleh permainan yang akan dibangun ini dapat dirincikan sebagai berikut:
i j
1. Permainan terdiri dari tiga jenis tingkat kesulitan yaitu:
a. Level 1 sampai level 10 merupakan tingkat kesulitan ‘Mudah’ dengan jumlah kotak sebesar 12 x 12.
b. Level 11 sampai level 20 merupakan tingkat kesulitan ‘Sedang’ dengan jumlah kotak sebesar 14 x 14.
c. Level 21 sampai level 30 merupakan tingkat kesulitan ‘Sulit’ dengan jumlah kotak sebesar 16 x 16.
2. Permainan akan dimainkan dengan menggunakan batasan waktu, dimana waktu akan berkurang 1 detik per kenaikan level dan sisa waktu akan diakumulasikan ke level berikutnya, dengan waktu awal dimulai dari 30 detik. 3. Nilai ditentukan dengan menghitung total panjang path yang diperoleh. Nilai
yang diperoleh merupakan kelipatan dari level. Cara perhitungannya adalah: {nSize x nSize} – {Panjang path} + 10
4.2. Perancangan
Perangkat lunak permainan Seeking Path dengan algoritma All-Pairs
Shortest-Path Floyd-Warshall ini dirancang dengan menggunakan bahasa
pemrograman Microsoft Visual Basic 2010 dengan menggunakan beberapa objek dasar seperti :
1. Label, yang digunakan untuk menampilkan keterangan dan nama simpul. 2. Button, yang digunakan sebagai tombol eksekusi.
6. Textbox, yang digunakan untuk menampilkan hasil proses perhitungan. 7. Combobox, yang digunakan untuk menyediakan pilihan.
4.2.1. Perancangan Tampilan
Rancangan tampilan dari perangkat lunak permainan Seeking Path dengan algoritma All-Pairs Shortest-Path Floyd-Warshall ini dapat dirincikan sebagai berikut:
1. Form ‘Main’. 2. Form ‘Pilih User’. 3. Form ‘Permainan’. 4. Form ‘High Score’ 5. Form ‘About’.
4.2.1.1 Form ‘Main’
Form ini merupakan form pembuka (awal) dari perangkat lunak dan juga
Permainan Seeking Path Pilih User Bermain High Score About Keluar 1 2 3 4 5
Gambar 4.5 Rancangan Form ‘Main’
Keterangan :
4.2.1.2 Form ‘Pilih User’
Form‘Pilih User’, yang berfungsi sebagai tempat pemilihan nama pemain.
Rancangan tampilan dari form ‘Pilih User’ ini dapat dilihat pada gambar 4.6 berikut ini: Daftar User Pilih 4 1 Tambah 2 Batal 5 Hapus 3
Gambar 4.6 Form Pilih User
Keterangan:
1. Listbox user, yang digunakan untuk menampilkan daftar user yang tersimpan dalam database.
2. Tombol Tambah, yang digunakan untuk menampilkan form tambah user. 3. Tombol Hapus, yang digunakan untuk menghapus user.
4. Tombol Pilih, yang digunakan untuk memilih user.
4.2.1.3 Form ‘Permainan’
Form ini berfungsi untuk menampilkan tempat permainan seeking path. Solusi dari permainan ini merupakan proses penentuan shortest path dengan menggunakan algoritma Floyd-Warshall. Rancangan tampilan dari form ‘Permainan’ dapat dilihat pada gambar 4.7 berikut :
Permainan Seeking Path Nilai Level Sisa Waktu Keluar Restart 1 3 4 5 6 Hint 7 2
Gambar 4.7 Rancangan Form ’Permainan’
Keterangan :
2 : Daerah tampilan informasi mengenai nilai yang diperoleh pemain sekarang. 3 : Daerah tampilan informasi mengenai sisa waktu permainan.
4 : Areal permainan.
5 : Tombol ’Restart’, berfungsi untuk mengulang permainan.
6 : Tombol ‘Keluar’, berfungsi untuk menutup form dan kembali ke form ’Main’.
7 : Tombol ‘Hint’, berfungsi untuk menampilkan bantuan kepada user mengenai langkah shortest path.
4.2.1.4 Form ‘High Score’
Form ‘High Score’, yang berfungsi untuk menampilkan sepuluh nilai
tertinggi yang diperoleh pemain. Rancangan tampilan dari form ‘High Score’ ini dapat dilihat pada Gambar 4.8 berikut ini.
High Score
Nama Level
Hapus Semua Keluar
1
2 3
Nilai
Keterangan :
1 : Tabel tampilan 10 nilai tertinggi.
2 : Tombol ‘Hapus Semua’ untuk mengosongkan daftar nilai tertinggi.
3 : Tombol ’Keluar’, berfungsi untuk menutup form dan kembali ke form ’Main’.
4.2.1.5 Form ‘About’
Form ‘About’ berfungsi untuk menampilkan data pribadi dari pembuat
perangkat lunak. Rancangan tampilan dari form ‘About’ dapat dilihat pada Gambar 4.9. 3 1 Tutup Form 2 4
Gambar 4.9 Rancangan Form About
Keterangan:
1 : Tombol ‘Tutup Form’, berfungsi untuk menutup form dan kembali ke form ‘Main’.
2 : Daerah tampilan nama perangkat lunak.
4.2.2 Perancangan Database
Database yang digunakan akan dirancang dengan menggunakan aplikasi
Microsoft Access 2007. Tabel yang dirancang dapat dirincikan sebagai berikut:
1. Tabel HighScore yang digunakan untuk menyimpan data 10 nilai tertinggi dari
user. Tabel 4.7 menunjukkan struktur tabel HighScore pada database.
Tabel 4.7 Tabel HighScore
2. Tabel UserList yang digunakan untuk menyimpan data user yang terdaftar dalam sistem. Tabel 4.8 menunjukkan struktur tabel UserList pada database.
42
HASIL DAN PEMBAHASAN
5.1. Hasil
Berikut dijabarkan spesifikasi dari perangkat keras dan perangkat lunak yang digunakan untuk menjalankan aplikasi permainan Seeking Path dan tampilan
output dari sistem.
5.1.1. Spesifikasi Perangkat Keras dan Perangkat Lunak
Perangkat keras dan perangkat lunak yang digunakan untuk menjalankan aplikasi permainan Seeking Path dengan algoritma All-Pairs Shortest-Path
Floyd-Warshall ini memiliki spesifikasi sebagai berikut :
1. Processor Intel Core 2 Duo 2,93 GHz 2. Memory 1 GB.
3. Monitor dengan resolusi 1028  768 pixel. 4. Harddisk kapasitas 100GB
5. Keyboard 6. Mouse
Perangkat lunak ini direkomendasikan untuk dijalankan di sistem operasi
Microsoft Windows XP. Software pendukung yang digunakan yaitu
5.1.2. Tampilan Hasil
Untuk menjalankan aplikasi permainan Seeking Path dengan menggunakan metode Floyd Warshall, maka dapat mengklik file ‘Shortest Path.exe’ sehingga sistem akan menampilkan tampilan awal berikut.
Gambar 5.1 Tampilan Awal
Untuk bermain permainan Seeking Path dengan Menggunakan Metode
Floyd Warshall, maka pertama kali harus memilih nama user terlebih dahulu
dengan mengklik link ‘Pilih User’, sehingga sistem akan menampilkan form Nama
Gambar 5.2 Tampilan Nama User
Pemakai dapat mengisi nama user baru dan mengklik tombol ‘OK’ untuk menyimpan data nama user ke dalam database. Untuk memilih nama user, maka pemakai dapat memilih pada daftar nama dan mengklik tombol ‘Pilih’ sehingga sistem akan menyimpan nama user yang dipilih ke dalam memori sementara dan menutup form Pilih User serta kembali ke tampilan awal.
Untuk menambah user baru, maka pemakai dapat mengklik tombol ‘Tambah’ sehingga sistem akan menampilkan input box Tambah User seperti terlihat pada gambar berikut.
Setelah itu, pemain dapat bermain permainan Seeking Path dengan mengklik link ‘Permainan’, sehingga sistem akan menampilkan form Permainan berikut.
Gambar 5.4 Tampilan Permainan
Pemain dapat menggerakkan mobil ke kiri, ke kanan, ke atas dan ke bawah dengan menekan tombol ‘A’ untuk bergeser ke kiri, ‘D’ untuk bergeser ke kanan, ‘W’ untuk bergeser ke atas dan ‘S’ untuk bergeser ke bawah. Pemain harus menyelesaikan permainan dalam waktu 30 detik, yaitu menggerakkan mobil menuju ke kotak kanan atas.
Gambar 5.5 Tampilan Ketika Berhasil Memenangkan Permainan
Apabila pemain tidak berhasil menggerakkan mobil menuju ke sudut kanan atas dalam batasan waktu yang ditentukan maka permainan berakhir. Sistem akan menampilkan pesan pemberitahuan seperti terlihat pada gambar berikut.
Apabila permainan berakhir ataupun pemakai mengakhiri permainan, maka sistem akan menampilkan form High Score seperti terlihat pada gambar berikut.
Gambar 5.7 Tampilan High Score
Terakhir, pemain dapat menampilkan informasi mengenai pembuat perangkat lunak dengan mengklik link ‘Mengenai’ sehingga sistem akan menampilkan form About seperti terlihat pada gambar berikut.
5.2. Pembahasan
Beberapa informasi yang dapat diperoleh dari hasil konstruksi perangkat lunak, yaitu:
1. Metode Floyd Warshall dapat digunakan untuk mengecek solusi yang mungkin dari titik awal ke titik tujuan.
2. Aplikasi dapat digunakan untuk memainkan permainan Seeking Path pada sebuah komputer.
Sedangkan, kelemahan dari aplikasi permainan Seeking Path dengan menggunakan metode Floyd Warshall ini yaitu:
1. Software tidak dapat dimainkan pada jaringan komputer ataupun internet. 2. Software tidak menyediakan fasilitas perancangan tempat bermain (board),
sehingga pemakai tidak dapat merancang board yang diinginkan.
5.3. Algoritma
Algoritma yang digunakan untuk merancang perangkat lunak pemahaman penentuan All-Pairs Shortest-Path pada Graph dengan algoritma Floyd-Warshall ini dapat dibagi menjadi 3 bagian besar yaitu:
1. Algoritma Penentuan Nilai Matriks D(0).
2. Algoritma Perhitungan Nilai Matriks D(1)– D(n). 3. Algoritma Ekstrak Path.
Algoritma ini digunakan untuk melakukan proses pencarian all-pairs
shortest path dengan menggunakan bantuan konsep dynamic programming.
1. Algoritma Penentuan Nilai Matriks D(0), yang dapat dijabarkan sebagai berikut:
Untuk I = 1 sampai JlhNode Untuk J = 1 sampai JlhNode Jika I = J maka
ArrD(0, I, J)  0 Jika tidak, maka
Jika [ada hubungan antara I dan J] maka
ArrD(0, I, J)  Ambil nilai dari hubungan I dan J Jika tidak, maka
ArrD(0, I, J)  32000
2. Algoritma Perhitungan Nilai Matriks D(1) – D(n), yang dapat dijabarkan sebagai berikut:
Untuk A = 1 sampai JlhNode Untuk B = 1 sampai JlhNode
Jika ArrD(nStep - 1, A, nStep) = 32000 Or ArrD(nStep - 1, nStep, B) = 32000 maka
nHitung  32000 Jika tidak, maka
nHitung  ArrD(nStep - 1, A, nStep) + ArrD(nStep - 1,
nStep, B)
Jika nHitung < ArrD(nStep - 1, A, B) maka Pred(A, B)  nStep
ArrD(nStep, A, B)  nHitung Jika tidak, maka
ArrD(nStep, A, B)  ArrD(nStep - 1, A, B)
3. Algoritma Ekstrak Path, yang dapat dijabarkan sebagai berikut:
Function FPath(pnAwal, pnAkhir)
Jika Pred(pnAwal, pnAkhir) = 0 maka
FPath  "(" + pnAwal + "," + pnAkhir + ")" Jika tidak, maka
50
KESIMPULAN DAN SARAN
6.1. Kesimpulan
Setelah selesai mengkonstruksi perangkat lunak, penulis dapat mengambil beberapa kesimpulan berikut:
1. Aplikasi menyediakan sebuah interface untuk bermain permainan Seeking
Path dengan algoritma All-Pairs Shortest-Path Floyd-Warshall pada sebuah komputer.
2. Metode Floyd-Warshall dapat digunakan untuk mengecek solusi yang mungkin dari titik awal ke titik tujuan.
3. Perangkat lunak permainan Seeking Path dapat dibuat dengan menggunakan bahasa pemrograman Microsoft Visual Basic.NET 2010, namun animasi yang dihasilkan masih kurang bagus dan kurang menarik.
6.2. Saran
Penulis ingin memberikan beberapa saran sehubungan dengan pengembangan perangkat lunak, seperti:
1. Aplikasi dapat dikembangkan dengan merancang permainan agar dapat dimainkan pada jaringan komputer ataupun internet.
2. Perangkat lunak dapat dikembangkan menjadi perangkat lunak berbasis
multimedia dengan menambahkan efek animasi dan suara.
52
Cormen, H., Leiserson, E., Rivest, L., 1990, Introduction to Algorithms, Mc Graw
Hill Book Company.
Munir, R., 2005, Matematika Diskrit, Informatika Bandung.
Munir, R., dan Lidia L., 2002, Algoritma dan Pemrograman, Edisi Kedua.
Putra, R., 2005, The Best Source Code Visual Basic, PT. Elex Media Komputindo, Jakarta.
Ramadhan, A., 2004, 36 Jam Belajar Komputer Visual Basic 6.0, PT. Elex Media Komputindo, Jakarta.
en.wikipedia.org/wiki/Floyd–Warshall_algorithm, tanggal akses 17 Januari 2015. www.fet2005.cs.buap.mx/ADA/floyd-warshall.ppt, tanggal akses 17 Januari 2015. www.astahost.com/floyd-warshall-shortest-path-graphs-t17498.html, tanggal akses 17 Januari 2015.
www.cse.ust.hk/faculty/golin/COMP271Sp03/Notes/MyL15.pdf, tanggal akses 17 Januari 2015.
www.cs.rpi.edu/~musser/gp/algorithm-concepts/floyd-warshall-screen.pdf, tanggal akses 17 Januari 2015.
en.wikipedia.org/wiki/Johnson's_algorithm, tanggal akses 17 Januari 2015. www.boost.org/doc/libs/1_35_0/libs/graph/doc/johnson_all_pairs_shortest.html, tanggal akses 17 Januari 2015.
www.cs.arizona.edu/classes/cs445/spring07/ShortestPath3.prn.pdf, tanggal akses 17 Januari 2015.
www.cs.rpi.edu/~musser/gp/algorithm-concepts/johnson-screen.pdf, tanggal akses 17 Januari 2015.