• Tidak ada hasil yang ditemukan

PERANGKAT LUNAK PERMAINAN SEEKING PATH DENGAN ALGORITMA ALL-PAIRS SHORTEST-PATH FLOYD WARSHALL

N/A
N/A
Protected

Academic year: 2021

Membagikan "PERANGKAT LUNAK PERMAINAN SEEKING PATH DENGAN ALGORITMA ALL-PAIRS SHORTEST-PATH FLOYD WARSHALL"

Copied!
62
0
0

Teks penuh

(1)

FLOYD WARSHALL

SKRIPSI

Oleh:

HARRIS KRISTANTO NIM.1144076

PROGRAM STUDI TEKNIK INFORMATIKA

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK TIME

(2)

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.

(3)

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.

(4)

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.

(5)

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,

(6)

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

(7)

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

(8)

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

(9)

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

(10)

ix Lampiran 1. CD Program

Lampiran 2. Daftar Riwayat Hidup Mahasiswa

Lampiran 3. Surat Keputusan Dosen Pembimbing Skripsi Lampiran 4. Kartu Bimbingan Dosen I

(11)

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.

(12)

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

(13)

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.

(14)

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

(15)

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

(16)

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.

(17)

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.

(18)

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

(19)

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.

(20)

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)

(21)

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

(22)

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

(23)

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)

(24)

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

(25)

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.

(26)

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.

(27)

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 :

(28)

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 ?

(29)

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

(30)

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.

(31)

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),

(32)

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

(33)

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.

(34)

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.

(35)

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

(36)

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

(37)

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)

(38)

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.

(39)

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)

(40)

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 :

(41)

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)) :

(42)
(43)

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

(44)

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.

(45)

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

(46)

Permainan Seeking Path Pilih User Bermain High Score About Keluar 1 2 3 4 5

Gambar 4.5 Rancangan Form ‘Main’

Keterangan :

(47)

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.

(48)

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 :

(49)

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

(50)

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.

(51)

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.

(52)

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

(53)

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

(54)

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.

(55)

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.

(56)

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.

(57)

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.

(58)

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.

(59)

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

(60)

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.

(61)
(62)

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.

Gambar

Gambar 2.1 Tiga buah graph (a) graph sederhana, (b) graph ganda, dan (c)  graph semu
Gambar 2.2 (a) Graph Berarah, (b) Graph Ganda Berarah  Sumber: Munir, 2005: 359
Tabel 2.1 Perbandingan jenis-jenis graph
Tabel 3.1 Jadwal Penelitian
+7

Referensi

Dokumen terkait

Defi nition: Coverage of the material topics and Indicators and defi nition of the report boundary should be suffi cient to refl ect signifi cant economic, environmental, and

Di wilayah selatan Kabupaten Halmahera Utara, tepatnya pada lokasi izin usaha pertambangan mineral emas terdapat spesies endemik Burung Bidadari dan burung Kakatua Putih

Kebijakan lingkungan di Indonesia sejak tahun 1973 sudah dapat dijadikan indikator suatu negara yang menerapkan dan telah melaksanakan pembangunan yang berwawasan

Dari hasil analisis dan pengamatan pada penelitian ini serta mengacu pada hipotesis dapat disimpulkan bahwa: ada peningkatan kemampuan memahami teks dengan

Sinarniaga Sejahtera yang telah memberikan waktu dan kesempatan kepada penulis untuk dapat menyelesaikan skripsi ini dengan baik.. Kepada sahabat-sahabat penulis “Cangcimen”

OGC = -12,868 - 0,903AQ - 0,695ZScore + 6,710ALAG + € Hasil pengujian hipotesis pertama menunjukan bahwa variabel kualitas audit yang diproksikan dengan Kantor Akuntan Publik

yang memiliki anak dengan gangguan specific phobia terhadap nasi, agar dapat. menyadari dan memahami sedini mungkin gangguan yang

bahan) adalah untuk totap nonjanin rasa hornat, patuh dari anal; anckat itu kopada Janda sobagai salah oatu oranc tua aivjkatnya yanc nasih hidup; dan pada anhk anckat itu sondi­