• Tidak ada hasil yang ditemukan

Perbandingan algoritma A dan Dijkstra untuk pencarian jalur terpendek pada Graf Square Lattice

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan algoritma A dan Dijkstra untuk pencarian jalur terpendek pada Graf Square Lattice"

Copied!
88
0
0

Teks penuh

(1)

Oleh:

A Fendi Pratama

NIM. 135314113

Program Studi Teknik Informatika

Fakultas Sains dan Teknologi

Universitas Sanata Dharma

Yogyakarta

2017

PERBANDINGAN ALGORITMA A* DAN DIJKSTRAUNTUK

PENCARIAN JALUR TERPENDEK PADA GRAF SQUARE LATTICE

SKRIPSI

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer

(2)

COMPARISON OF A* AND DIJKSTRA ALGORITHMS FOR

SMALLEST PATHFINDING IN SQUARE LATTICE GRAPH

THESIS

Presented as Partial Fulfillment of The Requirements To Obtain Sarjana Komputer Degree

In Informatics Engineering Study Program

By:

A Fendi Pratama

NIM. 135314113

Informatics EngineeringStudy Program

Faculty of Science and Technolgy

Sanata Dharma University

Yogyakarta

(3)
(4)
(5)

v

PERNYATAAN KEASLIAN HASIL KARYA

Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tisak memuat karya atau bagian karya orang lain, kecuali yang telah disesbutkan dalam kutipan dan daftar pustaka, sebagaimana hasil karya ilmiah.

Yogyakarta, 14 Juni 2017 Penulis

(6)

vi

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI UNTUK

KEPENTINGAN AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma Yogyakarta :

Nama : A Fendi Pratama NIM : 135314113

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :

“PERBANDINGAN ALGORITMA A* DAN DIJKSTRAUNTUK

PENCARIAN JALUR TERPENDEK PADA GRAF SQUARE LATTTICE ”

Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Universitas Sanata Dharma untuk menyimpan, mengalihkan dalam bentuk media lain, mengolahnya dalam bentuk pangkalan data, mendistribusikannya secara terbatas, dan mempublikasikannya di internet atau media lain untuk kepentingan akademis tanpa perlu minta ijin dari saya maupun memberikan royality kepada saya selama tetao mencatumkan nama saya sebagai penulis. Demikian peryataan ini saya buat dengan sebenarnya.

Yogyakarta, 14 Juni 2017 Penulis

(7)

vii ABSTRAK

Graf Square Lattice merupakan salah satu bentuk graf yang simpul dan penghubungnya membentuk dimensi jaring-jaring kotak atau persegi. Graf ini sering diimplementasikan untuk membangun jalur pada peta suatu arena permainan. Salah satu permasalahan popular yang muncul pada graf adalah pencarian jalur terpendek. Maka dengan menggunakan teknolgi komputer dapat dibuat sistem yang bisa memberikan solusi jalur terpendek dengan lebih cepat.

Pada pembangunan sistem ini dapat dibuat dengan menerapkan algoritma pathfinding.Ada beberapa algoritma pathfinding yang bisa digunakan dua diantaranya adalah A* dan Dijkstra. Dari kedua algoritma tersebut dapat ditentukan algoritma mana yang bekerja lebih baik, baik dari solusi yang diberikan dan proses kerja. Parameter yang dapat digunakan untuk penilaian kedua algoritma tersebut diantaranya waktu eksekusi, poses looping, simpul dijelajahi yang merupakan parameter proses kerja dan jalur terpendek merupakan parameter solusi.

Hasil yang dicapai adalah bawha algoritma A* dan Dijkstra sama-sama memberikan solusi yang optimal. Kedua algoritma mampu memberikan jalur terpendek dengan ukuran yang sama.Pada proses kerja baik dari Algoritma A* dan Algoritma Dijkstra memiliki keunggulan dan kelemahan masing-masing. A* lebih baik untuk arenadengan halangan yang tidak mengecoh. Dijkstra bisa lebih baik untuk arena dengan halangan yang mengecoh.

(8)

viii ABSTRACT

Graph Square Lattice is one of the forms of graph that vertices and edges form a square webs dimension. These graphs are often implemented to build paths on maps in a game arena.One of the popular topics that appear on graphs is the shortest pathfinding. So by using computer technology can be made system that can provide the shortest path solution more quickly.

To build this system can be made by applying pathfinding algorithm. There are several pathfinding algorithms that can be used two of them are A* and

Dijkstra. From both algorithms can be determined which algorithm works better, both form given solution and work process.Parameters that can be used for the assessment of both algorithms include execution time, looping process, explored nodes which are the working process parameters and the shortest path is the solution parameter.

The result is that the A* and Dijkstra algorithms provide the optimal solution. Both algorithms are able to provide the shortest path of the same size. In the work process both from A* Algortihm and Dijkstra Algorithm have advantages and disadvantages of each. A* Algorithm is better for obstacles that do not deceive. Dijkstra is better for a deceptive obstacle.

(9)

ix

KATA PENGANTAR

Puji syukur saya haturkan kepada Tuhan YME yang telah melimpahkan rahmat dan karunia-Nya, sehingga penulis dapat menyelsesaikan Tugas Akhir dengan judul “Perbandingan Algoritma A* dan Dijkstrauntuk Pencarian Jalur Terpendek pada Graf Square Lattice”.

Dalam menyelesaikan pembuatan program dan laporan Tugas Akhir ini, penulis telah banyak menerima bimbingan, saran dan masukan dari berbagai pihak, baik secara langsung maupun tidak langsung. Pada kesempatan ini penulis menyampaikan banyak terima kasih kepada :

1. Bapak Albertus Agung Hadhiatma M.T. selaku dosen pembimbing yang telah banyak membantu, memberikan bimbingannya dengan sabar danbaik.

2. Ayah, Ibu, dan Kakak yang telah memberi dukungan dalam bentuk materi, non materi, moril, kasih sayang bagi penulis sehingga program dan laporan Tugas Akhir ini dapat terselesaikan dengan baik dan tepat waktu. Tugas Akhir ini dapat terselesaikan dengan baik.

Penulis menyadari bahwa Tugas Akhir ini masih jauh dari sempurna.Penulis sangat mengharapkan kritik dan saran yang membangun dari pembaca, sehingga suatu saat penulis dapat memberikan karya yang lebih baik.

(10)

x DAFTAR ISI

HALAMAN JUDUL ... i

TITTLE PAGE ... ii

HALAMAN PERSETUJUAN SKRIPSI ... iii

HALAMAN PENGESAHAN SKRIPSI ... iv

PERYATAAN KEASLIAN HASIL KARYA... v

LEMBAR PERYATAAN PUBLIKASI ... vi

(11)

xi

BAB III PERANCANGAN SISTEM ... 14

3.1 Kebutuhan Sistem ... 15

3.2 Rancangan Use Case ... 17

3.3 Rancangan Algoritma ... 17

3.3.1 Rancangan Kode untuk Algoritma A* ... 18

3.3.2 Rancangan Kode untuk Algoritma Dijkstra ... 18

3.4 Perancangan Struktur Data ... 19

3.5. Perancangan Antarmuka ... 20

3.6 Perancangan Pengujian ... 21

3.7 Simulasi Manual Penerapan Algoritma ... 21

3.7.1 Simulasi Algoritma A* ... 21

3.7.2 Simulasi Algoritma Dijkstra ... 27

BAB IV IMPLEMENTASI DAN ANALISIS ... 30

4.1 Implementasi Sistem ... 30

4.1.1 Implementasi Rancangan Tampilan ... 30

4.1.2 Implementasi Algoritma Dijkstra dan A* ... 32

4.2 Pengujian dan Analisa ... 36

4.2.1 Pengujian Arena Solid dan Simetris ... 38

4.2.2 Pengujian Arena TidakSoliddan Simetris ... 42

4.2.3 Pengujian Arena Solid danRandom Obstacle ... 47

4.2.4 Pengujian Arena TidakSoliddan Random Obstacle ... 57

4.2.5 Pengujian Arena TidakSoliddan Random ObstacleUkuran Diperbesar ... 62

(12)

xii

4.2.7 Pengujian dengan Banyak Target ... 64

4.2.8 Analisa... 65

BABVKESIMPULAN DAN SARAN ... 69

5.1 Kesimpulan ... 69

5.2 Saran ... 69

(13)

xiii

DAFTAR GAMBAR

Gambar 2.1 Contoh Permainan Labirin Pacman ... 7

Gambar 2.2 Graf Square Lattice ... 8

Gambar 3.1.c Rancangan Grid Matrix ... 16

Gambar 3.2 Use Case Alat Pengujian ... 17

Gambar 3.4 Linked List Penelusuran Ke Node Awal ... 19

Gambar 3.5 Tampilan Papan Permainan dan Pengujian ... 20

Gambar 3.7.1.1 Visualisasi A* Langkah 1 ... 22

Gambar 3.7.1.2 Visualisasi A* Langkah 2 ... 22

Gambar 3.7.1.3 Visualisasi A* Langkah 3 ... 23

Gambar 3.7.1.4 Visualisasi A* Langkah 4 ... 23

Gambar 3.7.1.5 Visualisasi A* Langkah 5 ... 24

Gambar 3.7.1.6.a Visualisasi A* Langkah 6 ... 24

Gambar 3.7.1.6.b Kemungkinan Jalur Terpendek ... 25

Gambar 3.7.1.7 Visualisasi A* Langkah 7 ... 25

Gambar 3.7.1.8.a Visualisasi A* Langkah 8 ... 26

Gambar 3.7.1.8.b Visualisasi Runut Balik ... 26

Gambar 3.7.2.1 Inisiasi Posisi Awal ... 27

Gambar 3.7.2.2 Langkah Dijkstra 2 ... 27

Gambar 3.7.2.3 Langkah Dijkstra 3 ... 28

Gambar 3.7.2.4 Langkah Dijkstra 4 ... 28

Gambar 3.7.2.5 Langkah Dijkstra 5 ... 29

Gambar 4.1.1 Tampilan papan permainan dan Fasilitas Pencarian jalur terpendek ... 31

Gambar 4.2.1.1 Arena Solid dan Simetris... 38

Gambar 4.2.1.2 Pencarian Algoritma A* Pengujian 1 ... 39

Gambar 4.2.1.3 Pencarian Algoritma Dijkstra Pengujian 1 ... 39

Gambar 4.2.2.1 Arena TidakSoliddan Simetris ... 42

(14)

xiv

Gambar 4.2.2.3 Pencarian Algoritma Dijkstra Pengujian 2 ... 43

Gambar 4.2.3.1 Arena Soliddan Random Obstacle... 47

Gambar 4.2.3.2 Pencarian Algoritma A* Pengujian 3 ... 48

Gambar 4.2.3.3 Pencarian Algoritma Dijkstra Pengujian 3 ... 48

Gambar 4.2.4.1 Arena TidakSolid danRandom Obstacle ... 51

Gambar 4.2.4.2 Pencarian Algoritma A* Pengujian 4 ... 52

Gambar 4.2.4.3 Pencarian Algoritma DijkstraPengujian 4 ... 52

Gambar 4.2.6.1 Arena Halangan Berbentuk Cincin ... 51

Gambar 4.2.6.2 Pencarian Algoritma A* Pengujian 6 ... 52

Gambar 4.2.6.3 Pencarian Algoritma Dijkstra Pengujian 6 ... 52

Gambar 4.2.7.1 Arena dengan Banyak Target ... 64

Gambar 4.2.7.2 Pencarian Algoritma A* Pengujian 5 ... 64

(15)

xv

DAFTAR TABEL

Tabel 4.2.1.1 Tabel PengujianArena Solid dan Simetris ... 40

Tabel 4.2.2.1 Tabel PengujianArena TidakSolid dan Simetris ... 44

Tabel 4.2.3.1 Tabel Pengujian Arena Solid dan Random Obstacle ... 48

Tabel 4.2.4.1 Tabel Pengujian Arena Tidak Solid dan Random Obstacle ... 53

Tabel 4.2.5.1 Tabel Pengujian Arena Tidak Solid dan Random Obstacle Ukuran Diperbesar ... 56

Tabel 4.2.6.1 Tabel Pengujian Arena Halangan Berbentuk Cincin ... 61

(16)

xvi

DAFTAR GRAFIK

Grafik 4.2.1.1 Perbandingan Node Visitation 30 Kali Pengujian 1 ... 41

Grafik 4.2.1.2 Perbandigan Proses Looping 30 Kali Pengujian 1 ... 42

Grafik 4.2.1.3 Perbandingan Waktu Pencarian 30 Kali Pengujian 1 ... 42

Grafik 4.2.2.1 Perbandingan Node Visitation 30 Kali Pengujian 2 ... 45

Grafik 4.2.2.2 Perbandigan Proses Looping 30 Kali Pengujian 2 ... 46

Grafik 4.2.2.3 Perbandingan Waktu Pencarian 30 Kali Pengujian 2 ... 46

Grafik 4.2.3.1 Perbandingan Node Visitation 30 Kali Pengujian 3 ... 50

Grafik 4.2.3.2 Perbandigan Proses Looping 30 Kali Pengujian 3 ... 50

Grafik 4.2.3.3 Perbandingan Waktu Pencarian 30 Kali Pengujian 3 ... 51

Grafik 4.2.4.1 Perbandingan Node Visitation 30 Kali Pengujian 4 ... 54

Grafik 4.2.4.2 Perbandigan Proses Looping 30 Kali Pengujian 4 ... 55

Grafik 4.2.4.3 Perbandingan Waktu Pencarian 30 Kali Pengujian 4 ... 55

Grafik 4.2.5.1 Perbandingan Node Visitation 30 Kali Pengujian 5 ... 58

Grafik 4.2.5.2 Perbandigan Proses Looping 30 Kali Pengujian 5 ... 58

Grafik 4.2.5.3 Perbandingan Waktu Pencarian 30 Kali Pengujian 5 ... 59

Grafik 4.2.6.1 Perbandingan Node Visitation 30 Kali Pengujian 6 ... 62

Grafik 4.2.6.2 Perbandigan Proses Looping 30 Kali Pengujian 6 ... 63

(17)

1

BAB I

PENDAHULUAN

1.1Latar Belakang

Graf Square Lattice merupakan salah satu bentuk graf yang simpul dan penghubung-nya membentuk dimensi kotak atau persegi. Graf ini sering diimplementasikan untuk membangun jalur pada peta untuk arena permainan.Ghost Words Labyrinth merupakan permainan labirin dimana pemainakan ditugaskan untuk menyusun kata dari huruf yang secara beruntun akan muncul pada peta labirin. Dalam membangun arena labirin permainan ini diimplementasikan Graf Square Lattice. Rintangan dari game ini adalah dinding-dinding yang ada pada arena permainan. Skor permainan akan bergantung seberapa cepat pemain dapat mendapatkan huruf, sehingga pemain harus mencari jalur yang efektif untuk mendapatkan huruf yang dicari.

Dari masalah di atas maka bisa dibuat fasilitas pencari jalan yang dapat membantu pemain menyelesaikan misi.Menurut buku Artificial Intelligence for Games karangan Ian Millington algoritma pathfinding bisa dipakai sebagai solusi untuk menyelesaikan misi permainan yang membutuhkan pencarian jalur terpendek.Ada banyak algoritma yang dapat digunakan untuk pencarian jalur beberapa diantaranya adalah algoritma A* dan algoritma Dijkstra.

Algoritma A* diperkenalkan pertama kali oleh Peter Hart, Nils Nilsson dan Bertram Raphael dari Institut Riset Stanford(Stanford Reseach Institute) pada tahun 1968. Algoritma A* merupakan algoritma heuristik sehingga pencariannya akan terbimbing. Sedangkan untuk algoritma Dijksta diperkenalkan oleh Edsger Dijkstra pada tahun 1956.Algoritma Dijkstra sendiri bersifat greedy sehingga pencarianya tidak terbimbing.(Reddy, 2013).

(18)

Robert Sedgewick bahwa algoritma dapat dikatakan bekerja lebih baik jika kita dapat melihat nilai performa yang didapatkan dari masing algoritma. Kemudian pada bukuAftificial Intelligence for Games karangan Ian Millington performa kerja algoritma Patfinding dapat dinilai dengan melihat banyaknya proses kerja dan solusi yang diberikan.

Merujuk permasalahan di atas peneliti akan membuat prototipe dari papan Ghost Words Labyrinth dan membuat fasilitas pencarian jalur terpendek dengan algoritmaA* dan Dijkstra. Kemudian meneliti performa dari algoritma A* dan Dijkstra yang akan dipakai, sehingga perbandingan kedua algoritma tadi dapat diketahui mana yang lebih baik.

1.2Rumusan Masalah

Berdasarkan latar belakang diatas, maka dapat ditarik beberapa rumusan masalah sebagai berikut :

1. Bagaimana hasil perbandingan untuk solusi jalur terpendek yang diberikan algoritma A* maupun Dijkstra?

2. Bagaimana hasil perbandingan dari proses kerja untuk algoritma A* dan Dijkstra?

1.3Batasan Masalah

Batasan-batasan masalah dalam dalam penelitian ini antara lain :

1. Graf yang dipakai untuk membuat jalur pada arena adalah Square Lattice sehingga hanya memungkinkan jalur vertikal dan horizontal. 2. Peta arena dibuat secara manual dan tidak dibuat secara otomatis. 3. Penelitian difokuskan pada perbandingan kinerja Algoritma A* dan

(19)

4. Game ini adalah prototipe yang digunakan sebagai media untuk menguji dan mengukur kinerja Algoritma A* dan Dijkstra.

1.4Tujuan Penelitian

Tujuan yang akan dicapai dari penelitian ini adalah mengetahui perbandingan performa algortima A* dan Dijkstra baik dari solusi yang diberikan dan proses kerja yang dilakukan untuk mencari jalur terpendek pada graf dengan tipe Square Lattice pada suatu arena permainan.

1.5Manfaat Penelitian

Manfaat yang dapat diperoleh dari penilitian dapat diuraikan sebagai berikut :

1. Bagi Peneliti

Bisa menambah wawasan keilmuan kepada peniliti dalam menerapkan algoritma untuk memberikan solusi pada suatu permainan.Kemudian bisa menambah pengetahuan mengenai perbandingan algoritma yang diterapkan.

2. Bagi Peneliti Berikutnya

(20)

1.6Metode Penelitian

Dalam melakukan penelitian ini langkah-langkah yang dilakukan adalah sebagai berikut :

1. Studi Pustaka

Pada langkah ini peneliti mempelajari teori-teori melalui buku, artikel, jurnal yang berkaitan dengan perancangan permainan komputer, algoritma A*, Algoritma Dijkstra, dan buku referensi dalam membangun aplikasi dengan menggunakan HTML5 dan pemrograman Javascripgt. 2. Perancangan Sistem

Peneliti melakukan perencanaan alat uji yang akan digunakan sebagai alat penelitian. Perancangan sistem ini akan meliputi skenario permainan, perancangan kebutuhan, use case, rancangan struktur data, rancangan algoritma, serta rancangan antarmuka dari aplikasi yang akan dibuat.

3. Pembangunan Sistem

Pada tahap ini peneliti akan membangun alat uji yakni simulasi pencarian jalur permainan Ghost Words Labyrinth berdasarkan rancangan yang telah dibuat.

4. Pengujian

(21)

5. Evalusi dan Analisis Hasil

Peniliti melakukan penarikan kesimpulan setelah menganalisis data hasil pengujian.

1.7 Sistematika Penulisan

Sistematika penulisan proposal tugas akhir ini terbagi atas lima bab dengan garis besar sebagai berikut :

BAB I PENDAHULUAN

Berisi gambaran umum dari penelitian. Pendahulan terdiri dari Latar Belakang, Rumusan Masalah, Batasan Masalah, Tujuan Penelitian, Manfaat Penelitian, Metode Penelitian dan Sistematika Penulisan.

BAB II LANDASAN TEORI

Berisi teori-teori yang berhubungan dengan permainan, algoritma A* dan Dijkstra yang digunakan untuk pencarian jalur terpendek.

BAB III PERANCANGAN SISTEM

(22)

BAB IV IMPLEMENTASI DAN ANALISIS

Bab ini memuat hasil riset/implementasi, dan pembahasan/analisis dari riset tersebut yang sifatnya terpadu.

BAB V KESIMPULAN DAN SARAN

(23)

7 BAB II

LANDASAN TEORI

2.1Permainan Labirin

Permainan labirin adalah salah satu jenisatau genre dari pemainan komputer yang cukup populer di dunia. Permainan ini merupakann cabang permainan puzzle dalam bentuk percabangan jalan yang kompleks dan memiliki banyak jalan yang buntu. Tujuan dari permainan labirin adalah pemain harus mencari jalan keluar dari suatu pintu masuk menuju pintu keluar.Bisa juga pemain harus menyelesaikan suatu misi atau tugas dengan mejelajahi labirin yang telah disediakan.

Permainan labirin biasanya bersifat single-user atau dimainkan oleh satu orang pemain.Salah satu contoh misi yang harus diselesaikan pada permainan labirin adalah mengumpulkan sejumlah objek yang disebarkan di dalam peta labirin. Dimana objek yang dikumpulkan akan menjadi scoring atau penilaian dalam permainan labirin.(Rina, 2013)

Gambar 2.1 Contoh Permainan Labirin Pacman

(24)

Pada penelitian akan dipakai dua algoritma yang bisa dipakai untuk memcahkan masalah tersebut yaitu A* atau Dijkstra.(Angga, 2013)

2.2Graf Square Lattice

Secara definitif graf merupakan suatu pasangan dua himpunan dari elemen yang disebut titik, atau simpul, vertex dan pasang terurut dari simpul yang disebut ruas atau garis, atau ruas, atau edge. Square Lattice Graph merupakan salah satu bentuk dari Lattice Graph. Menurut Beouwer, A.E. (1999) graf lattice atau bisa disebut graf jaring atau graf grid merupakan graf yang memiliki gambar yang disematkan di ruang euclidean, graf ini biasanya membentuk ubin. Simpul pada graf ini biasanya menyimpan data koordinat sehinnga meskipun kedua simpul tidak terhubung dengan vertex secara langsung perkiraan jarak dari kedua simpul bisa diketahui dengan pendekatan jarak tertentu.

Square Lattice Graph adalah graf lattice yang jaring-jaring ubinya membentuk kotak. Garis atau edge pada graph menyimbolkan apakah kedua simpul saling terhubung. Graf Square Lattice dapat digambarkan sebagai berikut.

Gambar 2.2 Graf Square Lattice

(25)

2.3Algoritma A*

Algoritma A* adalah algoritma yang ditemukan oleh Hart, Nilsson, dan Raphael pada tahun 1968. Algoritma A* merupakan salah satu algoritma Branch & Bound atau disebut juga sebagai sebuah algoritma untuk melakukan pencarian solusi dengan menggunakan informasi tambahan (heuristik) dalam menghasilkan solusi yang optimal.(Hapsari,2011)

2.3.1Terminologi Dasar Algoritma A*

Beberapa terminologi dasar yang terdapat pada algoritma ini adalah starting point, current node, simpul, neighbor node, open set , closed set , came from, harga (F), walkabiltiy, target point.

Starting point adalah sebuah terminologi untuk posisi awal sebuah benda.Current node adalah simpul yang sedang dijalankan dalam algoritma pencarian jalan terpendek.Simpul adalah petak-petak kecil sebagai representasi dari area pathfinding.Bentuknya dapat berupa persegi, lingkaran, maupun segitiga.Neighbor node adalah simpul-simpul bertetangga dengan current node.

Open set adalah tempat menyimpan data simpul yang mungkin diakses dari starting point maupun simpul yang sedang dijalankan. Closed set adalah tempat menyimpan data simpul sebelum current node yang juga merupakan bagian dari jalur terpendek yang telah berhasil didapatkan. Came from adalah tempat menyimpan data ketetanggan dari suatu simpul, misalnya y came from x artinya neighbor node y dari current node x.

(26)

2.3.2Fungsi Heuristik

Algoritma A* merupakan teknik heuristik dan membantu penyelesaian persoalan.Heuristik adalah penilai yang memberi harga pada tiap simpul yang memandu A* mendapatkan solusi yang diinginkan. Dengan heuristik yang benar, maka A* pasti akan mendapatkan solusi (jika memang ada solusinya) yang dicari. Dengan kata lain, heuristik adalah fungsi optimasi yang menjadikan algoritma A* lebih baik dari algoritma lainnya. Namun heuristik masih merupakan estimasi/perkiraan biasa saja, sama sekali tidak ada rumus khususnya. Artinya setiap kasus memiliki fungsi heuristik yang berbeda – beda.Nilai ongkos pada setiap simpul n menyatakan taksiran ongkos termurah lintasan dari simpul n ke simpul target (target node), yaitu :

F(n) = nilai taksiran lintasan termurah dari simpul status n ke status tujuan Dengan kata lain, F(n) menyatakan batas bawah (lower bound) dari ongkos pencarian solusi dari status n. Fungsi heuristik yang terdapat pada algoritma A* untuk menghitung taksiran nilai dari suatu simpul dengan simpul yang telah dilalui adalah :

Dimana:

F(n) = ongkos untuk simpul n

G(n) = ongkos mencapai simpul n dari akar

H(n) = ongkos mencapai simpul tujuan dari simpul n (heuristik).

Fungsi H ini dapat dihitung menggunakan rumus pendekatan jarak salah satunya yang dapat dipakai adalah Manhattan Distance. Rumus Manhattan Distanceuntuk mencari fungsi Heuristik H dapat formulasikan sebagai berikut :

(27)

Dimana :

H(n) = Perkiraan heuristik Dari simpul n ke target Xt = Koordinat X untuk simpul target

Xn = Koordinat X untuk simpul n (sedang dijelajahi) Yt = Koordinat Y untuk simpul target

Yn = Koordinat Y untuk simpul n (sedang dijelajahi)

2.3.3Langkah Algoritma A*

Menurut Eranki Rajiv(2002) dari MIT mengenai algoritma A* secara ringkas langkah demi langkahnya adalah sebagai berikut :

1. Inisiasi Open list dan Inisiasi Closed List.

2. Tambahkan starting point ke dalam open list dan set nilai f = g+h dimana g = 0 dan h dengan menggunakan rumus ii.

3. Lakukan looping jika open list tidak kosong. Jika kosong pencarian selesai.

4. Ambil open list dengan f terkecil sebagai current.

5. Jika current adalah node tujuan, hentikan pencarian dan return

pathnya.

6. Generatesemua simpul yang bertetangga dengan current yang

walkable atau dapat dijelajahi. Node – node ini disebut suksesor. 7. Loop semua suksesor pada node current.

8. Set nilai g untuk suksesor sama dengan current.g ditambah dengan jarak antara suksesor dengan current.

9. Set nilai h (heuristik) untuk suksesor dari node tujuan ke suksesor dengan rumus ii.

10. Set nilai f sama dengan g ditambah nilai h pada suksesor seperti rumus i.

(28)

12. Jika suksesor mempunyai kondisi selain pada langkah 11 maka tambahkan suksesor ke dalam open list.

13. Ulangi langkah 7 pada semua suksesor.

14. Tambahkan nodecurrent ke dalam closed list.

15. Temukan node yang ada di dalam open list dengan nilai F paling kecil , kembali ke langkah 3.

2.4Algoritma Dijkstra

Sudah banyak algoritma yang bisa digunakan untuk pencarian rute terpendek. Tidak bisa dipungkiri Dijkstra masih menjadi salah satu yang populer dari sekian banyak algoritma pencarian jalur terpendek.Algoritma Dijkstra dinamakan sesuai dengan nama penemunya, seorang ilmuwan komputer berkebangsan Belanda yang bernama Edsger Dijkstra pada tahun 1956, adalah algoritma yang digunakan untuk mencari lintasan terpendek pada sebuah graf berarah dan tidak berarah. Ian Millington (2006) pada bukunya berjudul Artificial Inteligence for Games menyebut algoritma dijkstra sebagai versi ringkas algoritma A*. Keringkasan yang dimaksud adalah bahwa keduanya memiliki kesamaan dalam proses pencarian rute terdekat, hanya saja pada algoritma Dijkstra fungsi heuristik tidak di perhitungkan sebagaimana yang dilakukan oleh A*.(Setiawan, 2015).

(29)

2.4.1 Algoritma Greedy

Algoritma greedy merupakann metode yang paling populer untuk memecahkan persoalan optimasi.Persoalan Optimasi adalah persoalan mencari solusi yang paling optimum.Hanya ada dua macam persoalan optimasi, yaitu maksimasi dan minimasi.

Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah . Pada setiap langkah :

1. Mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan.

2. Berharap bahwa dengan memilih optimum local pada setiap langkah akan berakhir dengan optimum global.

Element-elemen algoritma greedy :

1. Himpunan kandidat (C), berisi elemen-elemen pembentuk solusi. 2. Himpunan solusi (S), berisi kandidat-kandidat yang terpilih sebagai

solusi persoalan.

3. Fungsi seleksi, memilih kandidat yang paling memungkinkan mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya. 4. Fungsi kelayakan, memeriksa apakah fungsi suatu kandidat yang telah

dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala (constraints) yang ada. Kandidat yanglayak dimasukkan ke dalam himpunan solusi,sedangkan kandidat yang tidak layak dibuang dantidak pernah dipertimbangkan lagi.

(30)

Algoritma greedy melibatkan pencarian sebuah himpunan bagian, S, dari himpunan kandidat, C, yang dalam hal ini, S harus memenuhi beberapa kriteria yang ditentukan, yaitu menyatakan suatu solusi dan S dioptimasi oleh fungsi obyektif.

2.4.2 Langkah Algoritma Dijkstra

Algoritma Dijkstra pada dasarnya menggunakan strategi greedy. Pada setiap langkah, ambil sisi yang berbobot minimum yang menghubungkan sebuah simpul yang sudah terpilih dengan sebuah simpul lain yang belum terpilih. Lintasan dari simpul asal ke simpul yang baru haruslah merupakan lintasan yang terpendek diantara semua lintasannya ke simpul-simpul yang belum terpilih.

Algoritma secara ringkas langkahnya dapat dijelaskan sebagai berikut : 1. Inisiasi open list dan close list.

2. Setstarting node ke dalam open list dan set cost sama dengan 0. 3. Lakukan looping jika open list tidak kosong. Jika kosong pencarian

selesai.

4. Ambil open list dengan cost terkecil sebagai current.

5. Jika Suksesor adalah node tujuan, hentikan pencarian dan return

pathnya.

6. Generatesemua simpul yang bertetangga dengan current yang

walkable atau dapat dijelajahi. Node – node ini disebut suksesor. 7. Loop semua suksesor pada node current.

8. Set cost pada suksesor dengan nilai cost current ditambah jarak antara suksesor dengan current.

9. Tambahkan suksesor tersebut ke dalam open list. 10. Ulangi langkah ke 7 untuk semua suksesor. 11. Tambahkan current ke dalam closed list.

(31)

15 BAB III

PERANCANGAN SISTEM

Pada bab ketiga penulisan Tugas Akhir ini dibagi menjadi 7 subbab. Bagian pertama kebutuhan sistem yang akan dipakai untuk membangun dan menjalankan aplikasi. Bagian kedua adalah diagram use case yang memperlihatkan kegiatan user terhadap aplikasi. Bagian ketiga adalah rancangan algoritma yang akan digunakan berupa pseudocode dari algoritma A* dan Dijkstra. Bagian keempat berisi rancangan struktur data dari aplikasi yang dibuat.Bagian kelima merupakan rancangan antarmuka dari aplikasi yang dibuat. Bagian keenam merupakan rancangan pengujian yang akan dilakukan. Bagian ketuju berisi penerapan algoritma yang memperlihatkan kerja dari algoritma A* dan Dijkstra.

3.1Kebutuhan Sistem

Secara umum kebutuhan yang diperlukan dalam membangun prototype Ghost Words Labyrinth dengan fasilitas pencarian jalurnya meliputi kebutuhan perangkat lunak, kebutuhan perangkat keras dan kebutuhan data. Kebutuhan yang diperlukan dalam sistem dapat jabarkan sebagai sebagi berikut:

a. Perangkat Lunak

Pada pembuatan permainan Ghost Words Labyrinth peneliti akan menggunakan sistem operasi windows 7. Kemudian untuk membangun sistem akan digunakan text editor Sublime dengan menggunakan bahasa pemrograman Javascript dan HTML5, serta menggunakan web browser Google Chrome untuk menjalankan sistem.

(32)

dibaca oleh manusia dan dimengerti oleh mesin.Javascript sendiri merupakanbahasa pemrogrman tingkat tinggi dan dinamis yang dijalankan pada sisi client. Kode Javascript sendiri langsung diterjemahkan oleh web browser.

b. Perangkat Keras

Perangkat keras yang akan dipakai pada penelitian ini memiliki spesifikasi sebagai berikut

 Processor Intel Pentium B960 Dual Core 2GHz RAM 4 GB  Hardisk 1 GB

 Keybord dan Mouse

c. Data

Pada penelitian ini akan dibutuhkan data berupa kata-kata. Kata-kata ini akan dipakai untuk misi dalam prototype permainan Ghost Words Labyrinth. Kemudian data lainnya adalah objek animasi untuk karakter pemain dan karakter, serta peta labirin yang akan dipakai sebagai map dari game yang direpresentasikan sebagai graf berbentuk grid matrix atau bisa disebut (Square Lattice Graph)dimana 1 melambangkan dindingyang tidak bisa dilalui dan 0 melambangkan jalan pada labirin dengan dimensi matrix.

(33)

17

3.2Rancangan Use Case

Use Case dari aplikasi yang dibuat dapat digambarkan sebagai berikut:

Gambar 3.2 Use Case Alat Pengujian

Terdapat 1 user dimana peneliti yang melakukan penelitian dengan pathfinfing dengan algoritma A* dan Dijkstra. Peneliti akan menggunakan fasilitas pencari jalur terpendek A* dan Dijkstra yang akan menampilkan simulasi dan data pengujian berupa runtime, open node(node yang dijelajahi) dan best path(jalur terpendek).

3.3Rancangan Algoritma

Dalam membangun fasilitas pencarian jalur terpendek maka dibutuhkan algoritma yang mampu memberikan solusi tersebut, maka untuk penelitian ini akan dipakai algoritma algoritma A* dan Dijkstra dimana keduanya akan memberi solusi untuk pencarian jalur terpendek. Dimana nantinya akan dilakukan penelitian pada segi performa dari kedua algoritma tersebut. Untuk perancangan

Peneliti

Melihat Performa Algoritma A* dan

(34)

algoritma dapat diuraikan sebagai berikut. 3.3.1 Rancangan Kode untuk Algoritma A*

Pseudocode algoritma A* dapat diuraikan sebagai berikut :

3.3.2 Rancagan Kode untuk Algoritma Dijkstra

Adapun pseudocode dari algoritma dijkstra dapat diuraikan sebagai berikut:

\

initialize the open list initialize the closed list

put the starting node on the open list set F = G+ H where G = 0 and H = distance from goal to open list

while the open list is not empty set node with the least f as current

if current is the goal, stop the search return the path generate all successors and set current as their parents for each successor

successor.g = current.g + distance between successor and q successor.h = distance from goal to successor

successor.f = successor.g + successor.h

if a node with the same position as successor is in the CLOSED list which has a lower f than successor, skip this successor

otherwise, add the node to the open list end for

push current on the closed list

find the node with the least f on the open list end while

initialize the open list initialize the closed list

put the starting node on the open list set the cost is 0 while the open list is not empty

set node with the least cost as current

generate all successors and set current as their parents for each successor

if successor is the goal, stop the search return the path successor.cost = q.cost + distance between successor and q add the node to the open list

end for

push current on the closed list

(35)

19

Linked List adalah suatu struktur data linier.Berbeda dengan array yang

juga merupakan struktur data linier dan tipe data komposit, linked list dibentuk

secara dinamik. Pada saat awal program dijalankan elemen linked list belum ada.

Elemen linked list (disebut node) dibentuk sambil jalan sesuai instruksi. Linked

list digunakan untuk menyimpan alur dari path dari end node menuju start node

melalui parent – parent nodenya dalam proses runut balik ke node awal.

Misal Start Node di koordinat (19,11) dan End Node di (16,13) maka pada pencarian tersebut disetiap node yang dijelajahi akan di disimpan ke dalam array dengan index sesuai koordinatnya. Ketika Algoritma sudah menemukan jarak terpendek maka akan dilihat index [x][y] nya kemudian didalam array tersebut node (19,13) menunjuk ke parent node (19,12) kemudian node (19,12) menunjuk ke parent node (19,11). Jadi itulah menjadi jalur terbaik dari node (19,11) ke (16,13).

Gambar 3.4 3.4Perancangan Struktur Data

(36)

3.5Perancangan Antarmuka

Bagian ini menjelaskan mengenai rancangan interfacepapan permainan Ghost Words Labyrinth beserta fasilitas pencarian jalur terpendek serta fungsi-fungsi dari tombol yang dibuatt.

Gambar 3.5 Tampilan Papan Permainan dan Pengujian

Gambar diatas merupakan rancangan untuk untuk papan permainan dari Ghost Words Labyrinth. Dimana bagiannya dapat diuraikan sebagai berikut :

1. Papan permainan Ghost Words Labyrinth

2. Fasilitas pencarian jalur terpendek untuk penyelesaian misi yakni tombol A* dan Dijkstra, yang digunakan juga sebagai pengujian untuk perbandingan algoritma.

3. Data performa yang diperlihatkan yaitu time adalah waktu algoritma melakukan pencarian jalur terpendek, loop adalah banyaknya proses looping, node adalah banyak simpul yang dijelajahi, path adalah solusi jalur terpendek yang diberikan.

1

2

(37)

21

3.6Perancangan Pengujian

Pengujian akan dilakukan dengan menjalankan fasilitas pencarian jalur terpendek pada permainan Ghost Words Labyrinth. Pada pengujian akan dipakai beberapa karakteristik peta labirin yang berbeda. Akan digunakan fasilitas pencarian untuk algoritma A* dan Dijkstra untuk penyelesaian misi yang sama. Jadinya untuk satu misi akan dijalankan dua fasilitas pencarian jalur yaitu A* dan Dijkstra.

Ketika menjalankan fasilitas pencarian jalur akan dicatat data performa diantaranya lama algoritma melakukan pencarian jalur terpendek, banyak proses looping yang dilakukan oleh algoritma, banyaknya simpul dijelajahi danbanyak solusijalur terpendek yang diberikan. Setelah itu akan dilakukan analisa dari data dengan menghitung nilai efisiensi dan akan ditarik kesimpulan bagaimana perbandingan peforma dari kedua algoritma tersebut.

3.7Simulasi Manual Penerapan Algoritma

Pada subbab ini akan dijelaskan bagaimana jalanya pencarian terpendek dengan menggunakan algoritma A* dan Dijktra. Dimana disitu akan terdapat angka yang menjelaskan penghitungan dari kedua algoritma tersebut

3.7.1Simulasi Algoritma A*

Penerapan Algoritma A* pada permainan ini adalah pada fasilitas pencarian jalur yang akan digunakan untuk membantu pemain dalam penyelesaian misi. Adapun proses algoritma-nya dapat dicontohkan seperti berikut ini. Pada gambar dibawah akan terdapat daftar nilai untuk F = G+Hdimana :

(38)

 H adalah ongkos dari node yang dituju : Posisinya berada di kanan bawah.

Langkah 1

Tentukan kotak tentangga yang mungkin dijelajahi (Walkable) dari posisi awal (Poin A).Hitung juga nilai F, dan tambahkan itu sebagai list.

Gambar 3.7.1.1 Visualisasi A* Langkah 1

Langkah 2

(39)

23

Gambar 3.7.1.2 Visualisasi A* Langkah 2

Langkah 3

Lakukan lagi, yaitu memilih lagi kotak dengan nilai F terendah, dan lanjutkan iterasi.

Gambar 3.7.1.3 Visualisasi A* Langkah 3

Langkah 4

(40)

kotak baru yang telah didapatkan.

Gambar 3.7.1.4 Visualisasi A* Langkah 4

Langkah 5

Pilih kotak yang memiliki nilai terendah yakni 7 dan pada kasus ini dipilih simpul yang paling baru.

Gambar 3.7.1.5 Visualisasi A* Langkah 5

Langkah 6

(41)

25

tetapi ini tidak menjadi masalah yang mana yang akan dipilih, ini akan sesuai dengan implementasi yang sebenarnya dalam kode program.

Gambar 3.7.1.6.a Visualisasi A* Langkah 6

Gambar 3.7.1.6.b Kemungkinan Jalur Terpendek

Langkah 7

(42)

Gambar 3.7.1.7 Visualisasi A* Langkah 7

Langkah 8

Pada saat dimana kotak target telah menjadi open list, algoritma akan menambahkan itu ke closed list, kemudian algoritma akan melakukan runut balik untuk memperoleh jalur final.

(43)

27

Gambar 3.7.1.8.b Visualisasi Runut Balik

3.7.2Visualisasi Algoritma Dijkstra

Penerapan Algoritma Dijkstra pada permainan Ghost Words Labyrinth adalah pada fasilitas pencarian jalur yang akan digunakan untuk membantu pemain dalam penyelesaian misi.Adapun keterangan angka adalah ongkos dari setiap simpul yang dihitung dari akar.

Langkah 1

(44)

Pada posisi awal open node di atas dan disamping kiri dan kanan node awal diberi cost 1. Sesudah itu pilih salah satu node dengan nilai cost paling kecil.Lalu jadikan posisi current node.Sesudah itu pada current node tentukan open node dari current node.

Langkah 2

Gambar 3.7.2.2 Langkah Dijkstra 2

Sesudah ditentukan maka berikan nilai cost adalah cost current node ditambah 1. Untuk selanjutnya pilihlah open node dengan cost terkecil lalu tentukan open node lagi. Begitu seterusnya hingga mencapai titik akhir yang dicari.

Langkah 3

(45)

29

Lakukan hal yang sama seperti langkah sebelumnya untuk close node pada node yang ada dikiri dengan menjelajahi ke atas dan ke bawah dan berikan cost 2 untuk lanjutan biaya dari node sebelumnya.

Langkah 4

Gambar 3.7.2.4 Langkah Dijkstra 4

Lakukan lagi pencarian dengan closed node dengan biaya terkecil yaitu current node yang berada diatas start point. Jadikan node diatasnya sebagai closed node lanjutan dan tambahkan biayanya sehingga biayanya menjadi 2.

Langkah 5

(46)
(47)

30 BAB IV

IMPLEMENTASI DAN ANALISIS

Bab keempat pada penulisan Tugas Akhir ini akan dibagi menjadi menjadi dua bagian. Pada bagian pertama akan berisi impementasi pembangunan sistem berdasrkan rancangan yang telah dibuat. Pada bagian Kedua menjelaskan mengenai hasil pengujian yang dilakukan antara Algoritma Dijkstra dan Algoritma A* pada beberapa tipe Arena yang berbeda serta analisa baik secara matematis maupun secara deskriptif.

4.1Implementasi Sistem

Berdasarkan perancangan dan perencanaan yang telah dilakukan pada Bab 3, aplikasi pencari jalur untuk permainan Ghost Words Labyrinth dibuat dengan menggunakan pemrograman HTML5 dan Javascript, aplikasi ini direkomendasikan untuk dijalankan menggunakan web browser Google Chrome. Pada subbab ini akan dibagi menjadi dua bagian, bagian pertama akan menjelaskan tentang rancangan implementasi rancangan tampilan program, kemudian untuk bagian kedua menjelaskan implemntasi algoritma A* dan Dijkstra pada aplikasi pencarian jalan di permainan Ghost Words Labyrinth. 4.1.1 Implementasi Rancangan Tampilan

(48)

Gambar 4.1.1 Tampilan Papan Permainan dan Fasilitas Pencarian Jalur

Terpendek

Tampilan papan permainan dan fasilitas pencarian jalur sesuai rancangan yang dibuat. Tampilan diatas dipakai untuk meneliti bagaimana performa algoritma yang dipakai sesuai dengan bentuk arena yang ada. Akan terdapat 5 tombol yang ada program yang dibuat,yaitu :

 Simulasi Dijkstra :

Tombol ini digunakan untuk memperlihatkan simulasi proses pencarian rute terpendek dengan algoritma Dijkstra.

 Simulasi A* :

Tombol ini digunakan untuk memperlihatkan simulasi proses pencarian rute terpendek dengan algoritma A*.

 Performa Dijsktra :

(49)

32

 Performa A* :

Tombol ini digunakan untuk memperlihatkan performa dari dari pengetesan algoritma A* untuk peneliti dan bagi publik dapat dipakai untuk mencari langsung rute terpendek saat bermain game Ghost Words Labyrinth.

4.1.2 Implementasi Algoritma Dijkstra dan A*

Algoritma Dijkstra dan A* dipakai untuk mencari jalur terpendek jika user kesulitan mencari jalur yang efektif.User bisa memakai kedua fasilitas pencarian jalur yang ada. Kedua algoritma akan bekerja dengan membaca peta labirin yang sedang dimainkan dimana dinding dan hantu adalah simpul yand tidak dapat dijelajahi. Kemudian obyek player dan target yang merupakan titik awal dan akhir pencarian. Algoritma akan melakukan iterasi pencarian pada node yang diinisialisasikan sebagai jalan pada peta labarin. Iterasi akan dilakukan sampai target ditemukan .

Setelah simpul target ditemukan maka algoritma akan dilakukan proses

backtracking. Proses backtracking akan melakukan penelusuran jalur dengan merunut jalur Linked List hasil dari proses pencarian dari root menuju target. Setelah proses backtracking selesai maka jalur terpendek telah ditemukan. Yang membedakan dari kedua algoritma adalah pada proses pencarian algoritma A* dibuat fungsi heuristik yang akan mecari simpul tetangga dengan nilai terkecil. Sedangkan algoritma dijkstra tidak memakai fungsi heuristik dan akan menelurusi semua node terdekat sampai target ditemukan.

(50)

Dijkstra

(51)

34

(52)

addtoOpenNode(open,start);

return {"path":path, "node": opened, "count": count}; }

(53)

36

4.2Pengujian dan Analisa

Proses pengujian akan dilakukan sebanyak 30 kali untuk tiap tipe karakteristik arena. Setiap pengujian akan ditempatkan posisi start dan tujuan secara acak ( random ) lalu diambil data berupa path terbaik , jumlah node yang dijelajahi, waktu , dan proses looping pada proses pencarian.

Sebelumnya akan dijelaskan mengenai data yang akan diambil dalam pengujian :

1. Path :

Path adalah jalur terpendek yang diperoleh dari masing-masing algoritma. Pada papan pengujian diperlihatkan dari blok jalan yang berwarna jingga, kemudian jumlahnya dapat dilihat dari status performa.

2. Simpul dijelajahi/ Node Visitation :

Simpul dijelajahi adalah jumlah simpul yang dijelajahi selama algoritma melakukan pencarian sampai target ditemukan. Dapat dilihat pada gambar papan pengujian dari semua blok jalan yang berubah warna. Dimana terdiri dari close node yang diwakili warna kuning dan jingga. Dan open node yang diwakili dengan blok berwarna biru. 3. Banyak Looping :

Looping adalah jumlah proses looping dari proses algoritma mencari jalur terpendek. Pada implementasi algoritma dapat dilihat dari kedua algoritma terdapat proses looping yang merupakan proses pengecekan tetangga dari dari starting point sampai menemukan target.

4. Time :

(54)

Proses pengujian ini dilakukan dengan 5 tipe karakteristik arena yang berbeda :

1. Arena Solid dan Simetris (Simetris Sedikit Rongga)

Arena yang penuh dengan obstacle(halangan) dengan bentuk halangan dan tipe jalur yang teratur (jalurnya setapak).

2. Arena TidakSoliddan Simetris (Simetris dan banyak rongga)

Arena yang mempunyai halangan dan bentuknya simetris , terdapat banyak rongga (jalurnya tidak setapak).

3. Arena Solid dan RandomObstacle (Acak sedikit Rongga)

Arena yang mempunyai sedikit rongga (jalurnya setapak) dan bentuk halangannya random.

4. Arena Tidak Solid dan Random Obstacle (Acak dan Berongga)

Arena yang mempunyai halangan yang banyak rongga dan bentuk halangannya random.

5. Arena Tidak Solid dan RandomObstacle Ukuran Diperbesar

Pada arena iniadalah seperti jenis ke 4 hanya arena diperbesar menjadi sekitar 4 kali lipat dari ukuran semula dengan ukuran matrik 156 x 70. 6. Arena dengan Halangan Berbentuk Cincin

Pada arena ini adalah halangan atau obstacle akan membentuk cincin.

Starting point akan berada di dalam cincin dan target point berada di luar

cincin.

7. Arena dengan Banyak Target

Pada arena ini berbentuk seperti dengan arena 6. Hanya memiliki target lebih

(55)

38

4.2.1 Pengujian Arena Solid dan Simetris

Gambar 4.2.1.1 Arena Solid dan Simetris

(56)

Gambar 4.2.1.2 Pencarian Algoritma A* Pengujian 1

(57)

40

Berikut ini adalah tabel data pengujian Algoritma A* dan Dijkstra pada 30 kondisi berbeda pada arena tersebut :

Tabel 4.2.1.1 Tabel Pengujian Arena Solid dan Simetris

(58)

Panjang semua path yang dipilih sebagai jalur baik Algoritma A* dan Dijkstra adalah sama. Node yang dijelajahi oleh algoritma A* lebih sedikit dari Algoritma Dijkstra dan Waktu yang diperlukan untuk menemukan jalur terbaiknya lebih sedikit sehingga bisa dikatakan algoritma A* lebih baik daripada Algoritma Dijkstra pada Arena tipe ini. Presentase 2 algoritma menemukan jalur terbaiknya dalam 30 kali pengujian adalah 30/30*100% = 100% .

Grafik 4.2.1.1 Perbandingan Node Visitation 30 Kali Pengujian 1

Grafik 4.2.1.2 Perbandingan Proses Looping 30 kali Pengujian 1

(59)

42

Grafik 4.2.1.3 Perbandingan Waktu Pencarian 30 kali Pengujian 1

4.2.2. Pengujian Arena Tidak Solid dan Simetris

Gambar 4.2.2.1 Arena Tidak Solid dan Simetris

Tipe Arena ini mempunyai halangan yang tidak padat, bentuknya simetris dan jalur yang longgar.Jalur yang disediakan adalah jalur longgar di setiap arena. Di arena ini memungkinkan hero mempunyai banyak pilihan untuk menentukan jalur menuju tujuannya, karena jalurnya longgar dan tidak setapak, akan tetapi

(60)

masih memiliki rintangan penghalang.

Gambar 4.2.2.2 Pencarian A* Pengujian 2

(61)

44

Berikut ini adalah tabel data pengujian Algoritma A* dan Dijkstra pada 30 kondisi berbeda pada arena tersebut :

Tabel 4.2.2.1 Tabel Pengujian Arena Tidak Solid dan Simetris

(62)

Pada arena ini baik Algoritma A* maupun Dijkstra menemukan jalur terbaik dengan nilai yang sama di setiap pengujian. Apabila dilihat dari gambar 4.2.2.2 dan 4.2.2.3 bisa dilihat kalau rintangan semakin longgar maka Algoritma Dijkstra akan melakukan pencarian path secara menyebar sehingga algoritma ini akan melakukan proses yang lebih banyak dan tidak efisien, sedangkan Algoritma A* lebih efektif dalam proses pencarian pathnya

Dilihat dari hasil path jalur terbaik maka algoritma Dijkstra dan A* sama – sama menemukan hasil, akan tetapi proses dan pencarian algoritma Dijkstra kurang efektif dibandingkan Algoritma A*. Persentase 2 Algoritma menemukan jalur terbaik yang sama minimumnya dalam 30 kali pengujian adalah 30/30*100% = 100%.

Grafik 4.2.2.1 Perbandingan Node Visitation 30 kali Pengujian 2

(63)

46

Grafik 4.2.2.2 Perbandingan Proses Looping 30 kali Pengujian 2

Grafik 4.2.2.2 Perbandingan Waktu Pencarian 30 kali Pengujian 2

(64)

4.2.3. Pengujian Arena Soliddan Random Obstacle

Gambar 4.2.3.1 Arena Solid dan Random Obstacle

Tipe Arena ini mempunyai halangan yang padat dan letaknya

random.Jalur yang disediakan adalah jalur setapak saja di setiap arena. Untuk mencapai suatu tujuan , di arena ini memungkinkan Hero untuk mencari path dengan jalur yang berbeda pada setiap pencarian algoritma, tergantung jarak tujuan dengan posisi awal Hero.

(65)

48

Gambar 4.2.3.3 Pencarian Dijkstra Pengujian 3

Berikut ini adalah tabel data pengujian Algoritma A* dan Dijkstra pada 30 kondisi berbeda pada arena tersebut :

Tabel 4.2.3.1 Tabel Pengujian Arena Soliddan Random Obstacle

No Koordinat Dijkstra A*

Start End Time(ms) Loop Node Path Time(ms) Loop Node Path

1 25,8 17,12 3.3050 214 110 13 2.0200 30 19 13

2 37,8 31,3 2.8350 123 64 14 1.3400 39 22 14

3 17,6 24,7 9.2050 258 133 15 2.9850 57 33 15

4 11,4 17,11 9.2850 247 124 16 1.6750 48 29 16

5 27,13 20,8 3.7950 279 140 17 1.8550 81 43 17

6 26,5 31,14 16.8950 267 134 17 2.9300 82 46 17

7 17,12 11,2 6.7400 412 207 19 2.5100 57 62 19

8 22,5 12,15 9.8500 620 199 21 1.5050 103 33 21

9 18,13 30,5 6.3000 442 215 21 4.1750 57 34 21

(66)

Tabel 4.2.3.1 Tabel Pengujian Arena Soliddan Random Obsctacle 4.2.3.2 dan 4.2.3.3 bisa dilihat kalau Algoritma Dijkstra melakukan pencarian secara menyebar karena pada Arena ini terdapat beberapa jalan , sesuai karakteristiknya Algoritma Dijkstra akan melakukan pencarian secara menyebar apabila ruang kosongnya ada banyak di area sekitar Hero berada.

(67)

50

Grafik 4.2.3.1 Perbandingan Node Visitation 30 kali Pengujian 3

Grafik 4.2.3.2 Perbandingan Proses Looping 30 kali Pengujian 3

(68)

Grafik 4.2.3.3 Perbandingan Waktu Pencarian 30 kali Pengujian 3

4.2.4. Pengujian Arena Tidak Solid dan Random Obstacle

Gambar 4.2.4.1 Arena Tidak Solid dan Random Obstacle

Tipe Arena ini mempunyai halangan yang random dan jalur yang longgar.Jalur yang disediakan adalah jalur longgar saja di dalam arena ini. Untuk mencapai suatu tujuan , di arena ini memungkinkan Hero untuk mencari path

0.0000 5.0000 10.0000 15.0000 20.0000 25.0000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29

W

a

kt

u

(m

s)

Percobaan ke

Dijkstra

(69)

52

dengan jalur yang berbeda pada setiap pencarian algoritma, tergantung jarak tujuan dengan posisi awal Hero.

Gambar 4.2.4.2 Pencarian A* Pengujian 4

(70)

Berikut ini adalah tabel data pengujian Algoritma A* dan Dijkstra pada 30 kondisi berbeda pada arena tersebut :

Tabel 4.2.4.1 Tabel Pengujian Tidak Arena Solid dan Random Obstacle

(71)

54

Pada arena ini baik algoritma Dijkstra maupun A* sama – sama mempunyai hasil optimal dalam menemukan jalur terbaik sampai ke tujuan ( nilainya selalu sama ). Arena ini mempunyai karakteristik jalur yang longgar sehingga Algoritma Dijkstra akan melakukan pencarian secara menyebar dan hal ini akan menyebabkan proses pencarian yang kurang efektif bagi algoritma Dijkstra.

Dilihat dari hasil path jalur terbaik maka baik Algoritama Dijkstra maupun A* sama – sama menghasilakan jalur dengan nilai path yang sama . Proses dan pencarian algoritma Dijkstra kurang efektif dibandingkan Algoritma A*. Persentase 2 Algoritma menemukan jalur terbaik yang sama minimumnya dalam 30 kali pengujian adalah 30/30*100% = 100%.

Grafik 4.2.4.1 Perbandingan Node Visitation 30 kali Pengujian 4

(72)

Grafik 4.2.4.2 Perbandingan Proses Looping 30 kali Pengujian 4

Grafik 4.2.4.3 Perbandingan Waktu Pencarian 30 kali Pengujian 4

(73)

56

4.2.5Pengujian Arena Tidak Solid dan RandomObstacle Ukuran Diperbesar

Pada percobaan ini arena akan diperbesar menjadi 156x70 dengan tipe yang berongga dengan bentuk rintangan yang yang random. Dengan tujuan mengamati kinerja algoritma pada ruang yang lebih luas.Apakah terjadi perbedaan pada solusi jalur terpendek yang diberikan, dan perbandingan kinerja pada kedua algoritma.Pada bagian tidak ditampilkan arena yang telah dibuat karena ukuran arena yang terlalu besar sehingga melebihi jendela browser.

Berikut ini adalah tabel data pengujian Algoritma A* dan Dijkstra pada 30 kondisi berbeda pada arena tersebut :

Tabel 4.2.5.1 Tabel Pengujian Arena Tidak Solid dan RandomObstacle

(74)

Tabel 4.2.5.1 Tabel Pengujian Arena Tidak Solid dan Random Obstacle sehingga Algoritma Dijkstra akan melakukan pencarian secara menyebar dan hal ini akan menyebabkan proses pencarian yang kurang efektif bagi algoritma Dijkstra.

(75)

58

Grafik 4.2.5.1 Perbandingan Node Visitation 30 kali Pengujian 5

Grafik 4.2.5.2 Perbandingan Proses Looping 30 kali Pengujian 5

(76)

Grafik 4.2.5.3 Perbandingan Waktu Pencarian 30 kali Pengujian 5

4.2.6. Pengujian dengan Halangan Berbentuk Cincin

Gambar 4.2.6.1 Arena Halangan Berbentuk Cincin

Tipe Arena ini mempunyai halangan berbentuk cincin dimana terdapat ruangan satu ruangan berongga besar didalam halangan dan terdapat jalan setapak di dilur halangan. Posisi titik awal berada dalam halangan dan titik akhir pencarian diluar halanagan. Hanya satu jalan yang menghubungkan antara ruang

(77)

60

di dalam halangan dan di luar halangan.

Gambar 4.2.6.2 Pencarian A* Pengujian 6

(78)

Berikut ini adalah tabel data pengujian Algoritma A* dan Dijkstra pada 30 kondisi berbeda pada arena tersebut :

Tabel 4.2.6.1 Tabel Pengujian Arena Halangan Berbentuk Cincin

(79)

62

Pada arena ini baik Algoritma A* maupun Dijkstra menemukan jalur terbaik dengan nilai yang sama di setiap pengujian. Dilihat dari hasil path jalur terbaik maka algoritma Dijkstra dan A* sama – sama menemukan hasil. Persentase 2 Algoritma menemukan jalur terbaik yang sama minimumnya dalam 30 kali pengujian adalah 30/30*100% = 100%.

Dilihat dari node yang dijelajahi bahwa algoritma A* menjelejahi node lebih sedikit dari Dijkstra. Namun jika dilihat dari proses looping dan waktu pada kasus ini algoritma Dijkstra melakukan proses kerja lebih sedikit. Hal ini disebabkan karena algoritma A* terkecoh oleh titik target yang dicari, dimana A* hanya menitikberatkan posisi target yang dicari tanpa melihat halangan yang ada didepan. Kemudian algoritma A* harus melakukan pengulangan untuk pengecekan node yang sudah dijelajahi sehingga algoritma A* untuk mendapat jalan keluardari halangan yang berbentuk cincin.

Grafik 4.2.6.1 Perbandingan Node Visitation 30 kali Pengujian 6

(80)

Grafik 4.2.6.2 Perbandingan Proses Looping 30 kali Pengujian 6

Grafik 4.2.6.2 Perbandingan Waktu Pencarian 30 kali Pengujian 6

(81)

64

4.2.7. Pengujian dengan Banyak Target

Gambar 4.2.7.1 Arena dengan Banyak Target

Tipe Arena ini mempunyai halangan berbentuk seperti pada arena pengujian tipe 6. Namun memiliki banyak target untuk di cari jalurnya.

(82)

Gambar 4.2.7.3 Pencarian Dijkstra Pengujian 7

Pada keadaan seperti ini sudah dapat dilihat bahwa algoritma A* tidak bisa digunakan untuk banyak dalam satu kali pencarian. Alasanya adalah bahwa pada pada algoritma A* target harus diperhitungan pada proses pencarian jalur yaitu dalam proses pencarian nilai heuristik. Pada nilai heuristik tersebut harus diperhitungkan jarak antara simpul current dengan dengan simpul target. Sehingga hal ini menjadi kelemahan A* terhadap dijkstra. Pada pengujian ini tidak ditampilkan data perbandingan performa karena A* tidak bisa melakukan tugas seperti Dijkstra.

4.2.8Analisa

Pengujian yang dilakukan pada 6 tipe arena yang berbeda tadi membandingkan 3 parameter yaitu Node Visitation , proses Looping / Iteration, dan waktu yang dilakukan untuk pencarian path terbaik . Jumlah Path terbaik yang dihasilkan oleh 2 algoritma Dijkstra maupun A* besarnya selalu sama (sama – sama menghasilkan jalur yang optimum).

(83)

66

apabila hasil besaran pada 3 parameter itu lebih kecil daripada yang dihasilkan oleh algoritma pathfinding yang lain.

Kondisi Arena mempengaruhi kinerja algoritma, faktor yang mempengaruhi antara lain halangan (obstacle), ruang gerak serta jarak dengan tujuan akan sangat mempengaruhi kinerja masing – masing algoritma. Ruang gerak yang lebih longgar akan menyebabkan tingginya node visitation, proses

Looping pada masing – masing algoritma dibandingkan ruang gerak yang lebih sempit.

Tabel 4.2.8.1Rata-Rata Penurunan Proses Algortim A* Terhadap Dijkstra

Arena Node Loop Time

Arena Solid dan Simetris 68,71% 72,01% 45,52%

Arena Tidak Soliddan Simetris 72,31% 82,44% 52,75%

Arena Soliddan RandomObstacle 70,40% 74,02% 54.60%

Arena Tidak Solid danRandomObstacle 71,26% 79,63% 54,25%

Arena Diperbesar 156x70 86,12% 88,91% 66,69%

Arena Halangan Bentuk Cincin 13,00% -18,77% -175.39%

Tabel diatas dibuat agar dapat melihat nilai garis besar dari perbandingan performa kerja dari kedua algoritma. Penghitungan dilihat dari sisi algoritma A* terhadap algoritma Dijkstra. Dimana tabel perbandingan akan menampilkan nilai prsentasi penurunan proses algoritma A* terhadap Dijkstra.

Nilai persentase penurunan besaran proses Dari Algoritma Dijkstra ke A* ditentukan dengan rumus :

Persentase Penurunan = 100 – ( Besaran Proses A star / Besaran Proses

Dijkstra *100 %)

(84)

yang memungkinkan dijelajahi. Optimalitas Algoritma A* tergantung pada fungsi heuristik yang digunakan.

Di dalam simulasi bisa terlihat jika algoritma A* lebih terfokus pencarian node tujuannya, dan node yang diobservasi lebih sedikit. Sedangkan pada algoritma Dijkstra pencariannya dilakukan secara menyebar keseluruh node yang berdekatan dengan current node ( ketika dianimasikan jelas terlihat membentuk belah ketupat yang semakin membesar) hingga ketemu node tujuan.

Dilihat dari tabel untuk arena - arena yang obstacle / halangannya tidak solid ( longgar ) maka presentase rata - rata penurunan proses loop maupun node visitation lebih besar dikarenakan karakteristik algoritma Dijkstra yang melakukan pencarian menyebar ke segala arah , hal ini didukung pula dengan tipe arena tersebut yang menyediakan ruang gerak yang lebih besar. Kemudian pada arena yang diperbesar algoritma A* masih memberikan solusi yang sama minimumnya dengan algoritma Dijkstra. Bisa dilihat pula pada tabel analisa bahwa penurunan besaran proses kerja algortima A* terhadap algoritma dijkstra semakin besar.

Namun pada pengujian 6 dan 7 Algoritma A* memperlihatkan kelemahanya. Pada pengujian 6 Algoritma A* terkecoh oleh halangan membentuk cincin dimana starting node berada di dalam dan target node terdapat di luar. Node yang dijelajahi tidak memperlihatkan bahwa Algoritma A* mempunyai kelemahan tetapi pada proses looping dapat memperlihatkan bahwa A* mempunyai kelemahan dimana proses looping Algoritma A* lebih besar dari Algoritma Dijkstra. Hal ini disebabkan karena Algoritma A* harus mengecek algoritma yang pernah dijelajahi untuk mencari jalan keluar dari halangan berbentuk cincin sehingga loopingnya akan lebih besar. Namun Dijkstra yang pencariannya menyebar hanya akan menjelajahi simpul satu kali saja dan tidak akan melakukan banyak looping.

(85)

68

(86)

69 BAB V

KESIMPULAN DAN SARAN

5.1Kesimpulan

Berdasarkan implementasi dan hasil analisa penelitian yang telah dilakukan pada bab sebelumnya, maka dapat diperoleh kesimpulan sebagai berikut :

1. Baik algoritma A* dan Dijkstra meberikan solusi yang optimal diperlihatkan pada setiap percobaan memberikan solusi dengan besaran yang sama.

2. Algoritma A* memiliki keunggulan dan kelemahan. Algoritma A* dengan fungsi heuristiknya mampu membuat pencarian menjadi lebih terpusat ke arah target sehingga proses kerja lebih sedikit. Tetapi Algoritma A* dapat terkecoh dengan halangan tertentuseperti pengujian telah dilakukan dimana proses kerja A* lebih besar dari Dijkstra.

3. Algoritma Dijkstra juga memiliki keunggulan dan kelemahannya. Algoritma Dijkstramampu melakukan pencarian untuk banyak target dalam satu kali pencarian berbeda dengan A* yang hanya bisa satu-persatu. Dengan pencarian yang menyebar membuat Algoritma Dijkstra tidak terkecoh oleh halangan seperti pengujian yang telah dilakukan. Namun pada halangan yang tidak mengecoh performa kerja A* lebih baik dari Dijktra

5.2Saran

Beberapa saran untuk penelitian sejenis mendatang :

(87)

70

Daftar Pustaka

Ari W, Angga. 2013. INTEGRASI ALGORITMA A* UNTUK PENGEMBANGAN PATHFINDING DAN PERILAKU KARAKTER GAME.Jember. Program Studi Sistem Informasi Universitas Jember.

Br Sirait, Rina. 2013. PERANCANGAN APLIKASI GAME LABIRIN DENGAN MENGGUNAKAN ALGORITMA BACKTRACKING . Medan. Teknik Informatika STMIK Budidarma Medan.

Millington, Ian & Funge, John. 2009. ARTIFICIAL INTELLIGENCE FOR GAMES. Morgan Kaufmann Publisher.

van der Spuy, Rex. 2012. FOUNDATION GAME DESIGN WITH HTML5 & JAVASCRIPT. Friendsof an Apress Company.

Reddy, Harika. 2013. PATHFINDING - Dijkstra’s and A* Algorithm’s. India. Putrady, Ekky. 2009. P ENERAPAN ALGORITMA A* SEBAGAI ALGORITMA

PENCARI JALAN DALAM GAME . Bandung. Teknik Informatika Institut Teknologi Bandung.

Raywenderlich. (2011, 29 September). INTRODUCTION TO A* PATHFINDING.Diperoleh 23 November 2016, dari

https://www.raywenderlich.com/ 4946/introduction-to-a-pathfinding.

Sedgewick, Robert & Flajolet, Philippe. 2013. AN INTRODUCTION TO THE ANAYLYSIS ALGORITHMS SECOND EDITION. Addison-Wesley

Tilawah, Hapsari. 2011. PENERAPAN ALGORITMA A-STAR(A*) UNTUK MENYELESAIKAN MASALAH MAZE. Bandung. Teknik Informatika Institut Teknologi Bandung.

Visat S, Muhammad. 2015. PENERAPAN ALGORITMA DIJKSTRA PADA PERMAINAN COUNTER STRIKE. Bandung. Teknik Informatika Institut Teknologi Bandung.

(88)

Eranki Rajiv. (2002). PATHFINDING USING A*(A-STAR). Diperoleh 1 Maret 2017, dari http://web.mit.edu/eranki/www/tutorials/search/

Gambar

Gambar 3.2.c Rancangan Grid Matrix
Gambar 3.2 Use Case Alat Pengujian
Gambar 3.4
Gambar 3.5 Tampilan Papan Permainan dan Pengujian
+7

Referensi

Dokumen terkait

Bahwa hak-hak yang dijamin oleh konstitusi dan hukum tersebut di atas belum dapat dinikmati oleh Pemohon karena kepergian suami Pemohon dari Indonesia disebabkan oleh penegakan

Konsekuensi komitmen beragama berlainan dari keempat dimensi yang sudah dibicarakan diatas. Pengalaman ini mengacu pada identifikasi akibat-akibat keyakinan keagamaan,

Puji syukur kehadirat Allah subhanhu wata’ala yang telah melimpahkan rahmat, taufik dan hidayah-Nya, sehingga skripsi dengan judul “Upaya meningkatkan kemampuan

Berdasarkan rumusan masalah yang telah diungkapkan di atas maka yang menjadi tujuan penelitian ini adalah untuk mengetahui peningkatan hasil belajar pada ranah kognitif,

 Karya ilmiah berbentuk buku dari hasil penelitian atau pemikiran yang original dapat berupa buku referensi atau monograf atau buku jenis lainnya yang diterbitkan dan

Sebagai akibat dari bibit yang lebih baik, maka bibit yang berasal dari benih tanam langsung maupun bahan tanaman berupa semaian dengan stadia atau fase benih

Hasil dari analisis kedua diperoleh bahwa : Wisatawan yang berasal dari Malaysia, Singapura, Thailand dan Taiwan cenderung melakukan perjalanan ke Jawa Timur dengan ijin Bebas

Patient Monitor adalah alat yang digunakan untuk memantau kondisi berbagai kondisi sinyal tubuh pada pasien, di dalam Patient Monitor terdapat suatu parameter yaitu SPO2 dan BPM