Upload
trinhhanh
View
249
Download
0
Embed Size (px)
Citation preview
Oleh:
A Fendi Pratama
NIM. 135314113
Program Studi Teknik Informatika
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Yogyakarta
2017
PERBANDINGAN ALGORITMA A* DAN DIJKSTRA UNTUK
PENCARIAN JALUR TERPENDEK PADA GRAF SQUARE LATTICE
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
2017
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSETUruAN SKRIPSI
PERBAI{I}INGAI\I ALGORITMA A* DAIY DIJKSTRA UNTUK
PENCARIAN JALUR TERPENDEK PADA GRAF'SQUARE I,AITTICE
llI
rangga: l(r JUNI 1ot7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
SKRIPSI
PERBANDINGAN ALGORITMA A* DAI{ DIJKSTRA TJNTUK
PENCARIAIY JALUR TERPENDEK PADA GRAT SQUARB LATTTICE
Yang Dipersiapkan dan Ditutis Oleh :
A Fendi Pratama
r3$14u3Telah dipertahamkan di depan Panitia Penguji
mdinvehlrrg-44 Iq4D
5ts- '
4 *u*u**i*
\--{:*daqA-1f.
Fakultas Sains dan Teknologi
Sudi Mrmgkasi, S.Si., M.Math. Sc.,Ph.D
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
A Fendi Pratama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
A Fendi Pratama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
Kata Kunci : Graf Square Lattice, A*, Dijkstra
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
Kata Kunci :Square Lattice Graph, A*, Dijkstra
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
3. Sahabat – sahabat dekat saya yang selalu memberikan semangat, dan
pencerahan.
4. Teman – teman TI angkatan 2013 yang tidak dapat penulis sebutkan
satu per satu.
5. Pihak lain yang tidak dapat penulis sebutkan satu per satu, sehingga
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.
Akhir kata, penulis memohon maaf apabila ada kesalahan dan kekurangan
baik dalam penyusunan laporan Tugas Akhir maupun penyusunan program Tugas
Akhir. Penulis berharap semoga Laporan Tugas Akhir ini dapat berguna dan
bermanfaat bagi pembaca.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
ABSTRAK ......................................................................................................... vii
ABSTRACT ....................................................................................................... viii
KATA PENGANTAR ....................................................................................... ix
DAFTAR ISI ..................................................................................................... x
DAFTAR GAMBAR ........................................................................................ xiii
DAFTAR TABEL ............................................................................................. xv
DAFTAR GRAFIK ........................................................................................... xvi
BAB IPENDAHULUAN ................................................................................... 1
1.1 Latar Belakang ...................................................................................... 1
1.2 Rumusan Masalah ................................................................................. 2
1.3 Batasan Masalah ................................................................................... 2
1.4 Tujuan Penelitian .................................................................................. 3
1.5 Manfaat Penelitian ............................................................................... 3
1.6 Metode Penilitian ................................................................................. 4
1.7 Sistematika Penulisan .......................................................................... 5
BAB II LANDASAN TEORI ............................................................................ 7
2.1 Permainan Labirin ................................................................................ 7
2.2 Graf Square Lattice ............................................................................... 8
2.3 Algoritma A* ....................................................................................... 9
2.3.1 Terminologi Dasar Algoritma A* ........................................................ 9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
2.3.3 Fungsi Heuristik ................................................................................... 10
2.3.4 Langkah Algoritma A* ......................................................................... 11
2.4 Algoritma Dijkstra ................................................................................ 12
2.4.1 Algoritma Greedy ................................................................................. 13
2.4.2. Langkah Algoritma Dijkstra ................................................................ 14
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
4.2.6 Pengujian dengan Halangan Berbentuk cincin ..................................... 59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Daftar Pustaka ................................................................................................... 70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Gambar 4.2.2.2 Pencarian Algoritma A* Pengujian 2 ....................................... 43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Gambar 4.2.7.3 Pencarian Algoritma DijkstraPengujian 5 ................................ 65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Tabel 4.2.8.1 Rata-Rata Penurunan Besaran Proses Dari Algoritma
Dijktra ke A* ......................................................................................... 66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Grafik 4.2.6.2 Perbandigan Proses Looping 30 Kali Pengujian 6 ..................... 63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1 Latar 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).
Dari kedua algoritma yang disebutkan di atas ini dapat dicari algoritma
mana yang bekerja lebih baik.Dalam buku Analysis of Algortihms karangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
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.2 Rumusan 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.3 Batasan 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
Dijkstra. Penelitian tidak menitikberatkan pada RealGame
Development , tidak melakukan pembahasan dan analisa game yang
meliputi antarmuka, usability testing, skenario / jalan cerita game.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
4. Game ini adalah prototipe yang digunakan sebagai media untuk
menguji dan mengukur kinerja Algoritma A* dan Dijkstra.
1.4 Tujuan 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.5 Manfaat 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
Dapat dijadikan sebagai bahan pertibangan atau dikembangkan lebih
lanjut, serta referensi terhadap penelitian sejenis.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
1.6 Metode 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
Pada Bagian ini peniliti akan melakukan pengujian dengan melihat
perbadingan efektifitas algoritma A* dan Dijkstra dengan menjalankan
alat uji yang telah dibuat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
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
Berisi analisis teori-teori yang digunakan dan bagaimana
menerjemahkannya ke dalam sistem yang hendak dibuat dan
membahas tentang perancangan kebutuhan sistem, pemilihan
algoritma, desain user interface program, dan rancangan pengujian
sistem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
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
Kesimpulan merupakan peryataan singkat dan tepat yang
dijabarkan dari hasil analisis kegiatan riset/implementasi dalam
penyusunan skripsi. Saran memuat aktifitas yang dilakukan untuk
mengembangkan kinerja sistem saat ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
BAB II
LANDASAN TEORI
2.1 Permainan 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
Arena pada game labirin biasanya menerapkan graf untuk membangun
lintasan-lintasan yang ada. Graf tersebut membentuk jaring-jaring ubin
membentuk persegi atau bisa disebut Square Lattice Graph. Permaslahan yang
muncul adalah bagaimana mendapatkan jalur terpendek untuk mendapat target
pada game. Dengan menggunakn algoritma pathfinding masalah itu bisa selesai.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
Pada penelitian akan dipakai dua algoritma yang bisa dipakai untuk memcahkan
masalah tersebut yaitu A* atau Dijkstra.(Angga, 2013)
2.2 Graf 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
Simpul yang ada di graf diatas meyimpan koordinat x dan y, dari hal itu yang
meyatakan graf tersebut terdapat pada sebuah ruang euclidean.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2.3 Algoritma 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.1 Terminologi 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.
Harga (F) adalah nilai yang diperoleh dari penjumlahan nilai G, jumlah
nilai tiap simpul dalam jalur terpendek dari starting point ke current node, dan H
adalah jumlah nilai perkiraan dari sebuah simpul ke target point. Target point
yaitu simpul yang dituju dan H inilah merupakan fungsi heuristik yang
digunakan.Kemudian, Walkability adalah sebuah atribut yang menyatakan apakah
sebuah simpul dapat atau tidak dapat dilalui oleh current node.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
2.3.2 Fungsi 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 :
( ) | | | | ( )
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
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.3 Langkah 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.
11. Jika sebuah node dengan posisi yang sama dengan suksesor ada di
dalam close list dan mempunyai nilai f yang lebih kecil dari suksesor
maka abaikan suksesor tersebut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
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.4 Algoritma 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).
Cara kerja algoritma Dijkstra memakai strategi greedy, dimana pada setiap
langkah dipilih sisi dengan bobot yang paling kecil yang menghubungkan sebuah
simpul yang sudah terpilih dengan simpul lain yang belum terpilih.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
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.
5. Fungsi Obyektif, fungsi yang memaksimumkan atau meminimumkan nilai
solusi(misalnya panjang lintasan, keuntungan, dan lain-lain).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
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.
12. Temukan node yang ada di dalam open list dengan nilai cost paling
kecil , kembali ke langkah 3.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.1 Kebutuhan 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.
HTML5 merupakan bahasa markah generasi ke 5 yang diciptakan
World Wide Web Consortium (Konsortium Waring Wara Wenua).HTML5
mempunyai dukungan untuk teknologi multimedia terbaru, sehingga mudah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
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.
Gambar 3.2.c Rancangan Grid Matrix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
3.2 Rancangan 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.3 Rancangan 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
Dijkstra
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
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
find the node with the least cost on the open list,
end while
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
sudah terbentuk link list yang digunakan untuk merunut node tersebut dari node
awal. Link listnya dimulai dari End Node ditelusur parent - parent nya hingga
sampai ke start node.
Untuk koordinat di atas maka dimulai dari Object Node (16,13) yang
menunjuk parent ke node (17,13) , node (18,13) menunjuk parent node(19,13) ,
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.4 Perancangan Struktur Data
Pada penelitian ini penulis menggunakan struktur data sebagai penyimpan
data.Struktur data yang digunakan adalah Array dan Linked List. Array dua
dimensi digunakan untuk menentuan koordinat titik (x, y) dalam permainan
labirin ini. Array dua dimensi adalah Sebuah array yang menampung array lain
sebagai data nilai dari setiap indeks array penampung.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
3.5 Perancangan 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
3
Linked List Penelusuran Alur Ke Node Awal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
3.6 Perancangan 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.7 Simulasi 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.1 Simulasi 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 :
F adalah ongkos untuk kotak : Posisinya berada di kiri atas.
G adalah ongkos dari node awal : Posisinya berada di kiri bawah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
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
Langkah selanjutnya, pilih kotak yang memiliki nilai F terkecil, tambahkan ke
closed list kemudian cari lagi tetangganya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Pada langkah ini ada kasus yang menarik. Dapat dilihat pada gambar sebelumnya
terdapat 4 kotak yang memiliki nilai F yang sama yaitu 7. Lalu solusinya adalah
tetap ikuti kotak yang baru ditambahkan ke open list.Kemudian lanjutkan pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
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
Pada langkah ini sudah akan terlihat bahwa akan terdapat dua pilihan 2 jalur
terpendek untuk ke tujuan yang bisa dipilih, yakni 1-2-3-4-5-6 dan 1-2-3-4-5-7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Lakukan iterasi satu kali lagi dari langkah sebelumnya maka tujuan akan masuk
ke open list.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
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.
Gambar 3.7.1.8.a Visualisasi A* Langkah 8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
Gambar 3.7.1.8.b Visualisasi Runut Balik
3.7.2 Visualisasi 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
Gambar 3.7.2.1 Inisiasi Posisi Awal Dijkstra
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
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
Gambar 3.7.2.3 Langkah Dijkstra 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Pada Langkah 5 ini ditampilkan proses keselurah dari pencarian algoritma
dijkstra. Jadi node tujuan ditemukan dengan cost 7 maka proses selesai. Lalu
dirunut balik menujut titik awal dari tujuan melewati node- node parentnya maka
diperoleh jalur terpendek.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Gambar 3.7.2.5 Langkah Dijkstra 5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.1 Implementasi 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
Peneliti masuk ke papan permainan untuk melakukan pengujian algoritma.
Dalam papan permainan tersebut akan ada beberapa tombol. Tampilan papan
permainan dapat diperlihatkan pada halaman selanjutnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
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 :
Tombol ini digunakan untuk memperlihatkan performa dari pengetesan
algoritma Dijkstra dan memperlihatkan proses pencarian jalur terpedek
secara langsung tanpa animasi proses pencarian.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
Berikut ini akan ditampilkan kode program yang telah dibuat untuk
algortima Dijsktra dan A*.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Dijkstra
function getDijkstra(fromX,fromY,toX,toY) { console.log("FIND: " + fromX + "," + fromY + " -> " + toX + "," + toY); if(toX < 0 || toY < 0 || toY >= map.length || toX >= map[0].length || map[toY][toX] != 0) return []; var m = []; for (var i = 0; i <map.length; i++) { m[i] = []; for (var j = 0; j < map[i].length; j++) { m[i][j] = map[i][j]; } } for (var i = 0; i <monsters.length; i++) { m[monsters[i].gy][monsters[i].gx] = 1; } var width = m[0].length; var height = m.length; var opened = []; var open = []; var count = 0; var start = AData(fromX,fromY,0,0); addtoOpenNode(open,start); addtoOpenedNode(opened,start); while(open.length > 0) { var cur = open[0]; cur.closed = true; if(cur.x == toX && cur.y == toY) { count++; console.log("FOUND xxx"); var path = []; while(cur != null) { path.splice(0,0,{x:cur.x,y:cur.y}); cur = cur.parent; } return {"path":path, "node": opened, "count": count}; } open.splice(0,1); var neighbour = []; if(cur.x - 1 > 0 && m[cur.y][cur.x - 1] == 0) { neighbour.push({x:cur.x-1,y:cur.y}); }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
A*
if(cur.y - 1 > 0 && m[cur.y - 1][cur.x] == 0) { neighbour.push({x:cur.x,y:cur.y-1}); } if(cur.x + 1 < width && m[cur.y][cur.x + 1] == 0) { neighbour.push({x:cur.x+1,y:cur.y}); } if(cur.y + 1 < height && m[cur.y + 1][cur.x] == 0) { neighbour.push({x:cur.x,y:cur.y+1}); } for(var i = 0; i < neighbour.length; i++) { var n = neighbour[i]; var node = getNode(opened, n.x, n.y); count++; if (!node){ node = AData(n.x, n.y, cur.g + 1, 0,cur); addtoOpenedNode (opened, node); addtoOpenNode(open,node); } } } }
function getAstar(fromX,fromY,toX,toY,heur=heuristic) { console.log("FIND: " + fromX + "," + fromY + " -> " + toX + "," + toY); if(toX < 0 || toY < 0 || toY >= map.length || toX >= map[0].length || map[toY][toX] != 0) return []; var m = []; for (var i = 0; i <map.length; i++) { m[i] = []; for (var j = 0; j < map[i].length; j++) { m[i][j] = map[i][j]; } } for (var i = 0; i <monsters.length; i++) { m[monsters[i].gy][monsters[i].gx] = 1; }
var width = m[0].length; var height = m.length; var opened = []; var open = []; var count = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
var start = AData(fromX,fromY,0,heur(fromX,fromY,toX,toY)); addtoOpenNode(open,start); addtoOPenedNode(opened,start); while(open.length > 0) { var cur = open[0]; cur.closed = true; if(cur.x == toX && cur.y == toY) { count++; console.log("FOUND xxx"); var path = []; while(cur != null) { path.splice(0,0,{x:cur.x,y:cur.y}); cur = cur.parent; } return {"path":path, "node": opened, "count": count}; } open.splice(0,1); var neighbour = []; if(cur.x - 1 > 0 && m[cur.y][cur.x - 1] == 0) { neighbour.push({x:cur.x-1,y:cur.y}); } if(cur.y - 1 > 0 && m[cur.y - 1][cur.x] == 0) { neighbour.push({x:cur.x,y:cur.y-1}); } if(cur.x + 1 < width && m[cur.y][cur.x + 1] == 0) { neighbour.push({x:cur.x+1,y:cur.y}); } if(cur.y + 1 < height && m[cur.y + 1][cur.x] == 0) { neighbour.push({x:cur.x,y:cur.y+1}); } for(var i = 0; i < neighbour.length; i++) { var n = neighbour[i]; var node = getNode(opened, n.x, n.y); count++; if (!node){
node = AData(n.x, n.y, cur.g + 1, heur(n.x,n.y,toX,toY),cur);
addtoOpenedNode(opened, node); addtoOpenNode(open,node); } else { if(cur.g + 1 < node.g) { node.g = cur.g + 1; node.parent = cur; addtoOpenedNode(opened, node); addtoOpenNode(open,node); } } } } }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
4.2 Pengujian 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 :
Waktu adalah lama untuk algoritma melakukan pencarian jalur
terpendek, untuk mendapatkan waktu tersebut akan dilakukan
pencatatan waktu algoritma mulai dipanggil sampai selesai
memberikan solusi jalur terpendek kemudian dicari selisihnya. Waktu
yang dicatat adalah dalam satuan milisekon(ms).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
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
dari 1.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
4.2.1 Pengujian Arena Solid dan Simetris
Gambar 4.2.1.1 Arena Solid dan Simetris
Tipe Arena ini mempunyai halangan dan jalur yang teratur.Jalur yang
disediakan adalah jalur setapak saja di setiap arena. Pada peta ini algoritma A*
lebih baik dari pada Algoritma Dijkstra dalam hal Efisiensi dan Efektifitas
Algoritma, yang ditandai dengan waktu proses pencarian yang lebih cepat dan
proses penjelajahan node yang lebih sedikit dan 2 Algoritma tersebut sama –
sama menghasilkan path yang terbaik ( minimum ) pada semua proses pengujian
yang telah ditentukan jumlahnya .
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Gambar 4.2.1.2 Pencarian Algoritma A* Pengujian 1
Gambar 4.2.1.3 Pencarian Algoritma Dijkstra Pengujian 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
No Koordinat Dijkstra A*
Start End Time(ms) Loop Node Path Time(ms) Loop Node Path
1 24,11 29,3 3.3200 175 91 14 2.8200 31 19 14
2 29,10 35,17 5.7250 167 87 14 3.1500 29 17 14
3 15,8 20,17 4.1900 209 107 15 1.6350 31 18 15
4 37,6 29,12 3.5750 75 40 15 1.1950 33 20 15
5 9,11 1,4 4.2050 207 106 16 2.8050 41 24 16
6 15,10 6,17 5.1850 255 129 17 2.7750 49 28 17
7 29,5 17,11 3.6300 217 111 19 3.4100 43 26 19
8 30,17 18,11 2.8450 153 78 19 1.1800 41 24 19
9 29,12 36,1 4.1950 227 116 19 1.1250 69 38 19
10 9,5 23,4 5.6350 237 119 20 1.1000 49 29 20
11 26,7 15,16 6.8050 299 150 21 2.5900 57 33 21
12 25,7 9,12 5.0900 323 158 22 2.9750 55 33 22
13 15,17 1,12 4.9250 237 121 22 2.8950 49 28 22
14 36,11 23,1 2.8600 209 112 24 2.5600 65 37 24
15 29,10 9,6 5.3950 315 154 25 3.0450 63 37 25
16 37,15 21,7 3.1550 159 81 25 2.4550 55 32 25
17 37,6 19,1 2.7550 215 110 26 2.1350 91 47 26
18 23,6 7,17 5.6300 387 189 28 2.3450 101 54 28
19 9,6 31,11 4.4450 337 164 28 1.2450 65 39 28
20 9,12 29,17 4.0250 339 165 28 2.3450 113 60 28
21 1,1 19,11 3.6900 187 96 29 0.8900 120 63 29
22 7,17 29,8 4.0800 307 152 32 2.1650 71 41 32
23 6,7 29,16 4.0500 357 174 33 2.5800 105 59 33
24 34,1 16,17 4.6550 303 150 35 2.9550 87 48 35
25 35,7 9,15 3.8750 355 173 35 2.2550 103 58 35
26 31,11 3,1 5.6250 409 198 39 2.4500 137 73 39
27 2,1 29,17 3.9200 371 181 44 2.1050 147 78 44
28 37,6 1,13 6.6750 399 193 44 3.2650 113 63 44
29 5,17 34,1 6.2450 405 196 46 3.4700 121 67 46
30 37,1 7,17 5.5250 387 189 47 3.9350 153 81 47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
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
0
50
100
150
200
250
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
No
de
Percobaan ke
Dijkstra
A*
0
50
100
150
200
250
300
350
400
450
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Loo
pin
g
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
0.0000
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Wak
tu(m
s)
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
masih memiliki rintangan penghalang.
Gambar 4.2.2.2 Pencarian A* Pengujian 2
Gambar 4.2.2.3 Pencarian Dijkstra Pengujian 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
No Koordinat Dijkstra A*
Start End Time(ms) Loop Node Path Time(ms) Loop Node Path
1 14,8 9,15 5.7050 572 193 13 2.2750 39 27 13
2 1,3 9,9 4.4850 194 65 15 4.0900 43 29 15
3 14,11 23,6 6.6000 711 232 15 3.9100 55 41 15
4 8,7 16,1 7.5850 587 195 15 4.7150 51 37 15
5 21,3 13,11 4.6550 583 190 17 2.8300 60 44 17
6 8,1 18,8 5.1450 454 152 18 2.7100 74 26 18
7 29,14 37,5 10.0950 620 205 18 5.2100 111 56 18
8 30,14 36,2 8.9850 607 200 19 1.8000 114 63 19
9 30,15 36,2 10.7250 607 200 20 4.3050 121 66 20
10 15,8 1,3 14.1700 979 315 20 5.7500 110 60 20
11 32,12 18,7 11.5050 676 220 20 2.6950 65 45 20
12 23,10 37,3 11.2150 1045 332 22 5.9000 68 44 22
13 4,6 16,15 16.3350 661 217 22 6.7150 96 58 22
14 31,2 36,17 8.3250 708 230 23 3.9300 182 83 23
15 18,8 37,2 6.9750 1254 392 26 4.5400 80 55 26
16 24,8 7,16 11.1250 1167 366 26 3.6100 210 96 26
17 36,3 22,15 7.5850 661 217 27 4.1200 114 71 27
18 6,5 28,10 6.3750 937 299 28 3.9800 230 103 28
19 17,14 37,7 11.0050 1642 386 28 1.6650 174 74 28
20 24,10 3,16 6.0100 1236 388 28 2.1750 369 115 28
21 31,2 15,17 7.3400 1014 318 32 3.9650 138 81 32
22 20,17 2,4 6.1750 1265 395 32 2.8450 162 89 32
23 14,7 37,16 8.4950 1308 404 33 6.6600 282 127 33
24 31,5 7,14 11.7500 1137 358 34 4.1550 213 107 34
25 37,3 18,16 5.0250 952 302 35 4.3350 540 171 35
26 4,12 33,17 5.4800 1171 367 37 3.0200 330 135 37
27 3,14 31,5 8.4100 1119 352 38 1.9150 130 89 38
28 30,16 1,6 12.1700 1256 392 40 2.8900 179 110 40
29 36,16 6,5 13.1150 1140 358 42 3.8350 214 118 42
30 1,4 37,16 10.9700 1308 404 49 4.1850 364 172 49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
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
0
50
100
150
200
250
300
350
400
450
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
No
de
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
0
200
400
600
800
1000
1200
1400
1600
1800
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Loo
pin
g
Percobaan ke
Dijkstra
A*
0.0000
2.0000
4.0000
6.0000
8.0000
10.0000
12.0000
14.0000
16.0000
18.0000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Wak
tu(m
s)
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
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.
Gambar 4.2.3.2 Pencarian A* Pengujian 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
10 20,6 11,1 11.1150 491 235 23 4.7650 124 67 23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Tabel 4.2.3.1 Tabel Pengujian Arena Soliddan Random Obsctacle
No. Koordinat Dijkstra A*
Start End Time(ms) Loop Node Path Time(ms) Loop Node Path
11 11,11 24,4 8.6300 446 215 23 5.3850 81 43 23
12 33,17 17,10 6.5450 283 137 24 5.1750 63 37 24
13 7,17 18,5 6.3100 331 161 24 1.9600 60 36 24
14 11,2 17,16 5.0800 342 168 25 2.5550 69 40 25
15 22,2 31,14 7.7250 478 228 26 3.9750 104 58 26
16 20,8 33,17 8.2900 576 272 27 2.1850 66 38 27
17 8,6 27,13 7.2750 420 200 27 2.5250 71 43 27
18 15,12 37,7 6.4800 613 287 28 2.7000 73 43 28
19 7,13 23,2 10.2350 409 194 28 1.6950 62 36 28
20 28,14 13,4 6.4900 519 248 30 5.1200 229 116 30
21 9,4 29,14 10.2550 481 229 31 1.8100 87 52 31
22 11,1 26,6 12.7000 465 222 31 2.8750 171 86 31
23 25,11 6,2 9.5150 596 278 31 6.2550 163 88 31
24 18,2 33,12 6.7850 586 277 32 4.9450 169 93 32
25 3,8 25,16 5.2400 439 207 33 2.3200 154 84 33
26 34,17 20,3 20.2650 466 219 35 7.9950 275 131 35
27 25,6 1,15 6.4000 631 293 38 5.0300 229 114 38
28 14,4 37,9 7.8750 602 281 39 4.5650 169 91 39
29 3,4 30,16 7.2200 522 246 44 3.7300 196 106 44
30 3,11 35,3 7.4150 611 286 49 3.8450 346 161 49
Pada arena ini baik Algoritma A* maupun Dijkstra menemukan jalur
terbaik dengan nilai yang sama di setiap pengujian. Apabila dilihat dari gambar
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.
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%.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
0
50
100
150
200
250
300
350
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
No
de
Percobaan ke
Dijkstra
A*
0
100
200
300
400
500
600
700
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Loo
pin
g
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
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
Wak
tu(m
s)
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Gambar 4.2.4.3 Pencarian Dijkstra Pengujian 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
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
No Koordinat Dijkstra A*
Start End Time(ms) Loop Node Path Time(ms) Loop Node Path
1 10,14 15,9 4.6450 258 96 11 2.0800 33 22 11
2 4,2 9,11 3.8650 263 88 15 1.1800 47 32 15
3 29,16 34,6 10.8400 481 165 16 3.3750 130 63 16
4 17,8 7,3 6.9650 623 218 16 2.9400 69 42 16
5 27,15 37,6 7.5750 577 193 20 3.5300 153 73 20
6 3,4 15,10 4.3850 470 159 21 2.8650 127 58 21
7 21,3 8,6 10.7350 296 301 21 2.5950 68 47 21
8 9,3 2,17 10.5350 768 256 22 5.1300 71 50 22
9 1,13 16,7 4.7100 480 167 22 1.0300 74 51 22
10 6,13 20,7 5.5550 796 263 23 3.3300 289 96 23
11 23,13 8,5 8.1450 1051 349 24 4.5900 91 56 24
12 13,11 32,16 18.5100 1151 379 25 6.5450 188 95 25
13 9,1 18,16 7.9850 781 259 25 1.5100 188 73 25
14 37,12 16,7 12.6150 748 246 27 6.3050 198 92 27
15 17,11 34,1 11.0950 1324 428 28 3.0450 135 83 28
16 7,3 21,16 6.6600 871 288 28 3.0900 177 94 28
17 14,10 32,1 9.7250 1254 409 28 5.9150 97 64 28
18 23,14 3,7 7.4700 1181 386 28 3.2800 195 92 28
19 31,16 13,6 10.0600 857 284 29 3.1500 99 65 29
20 28,15 10,7 6.0100 922 306 29 3.4450 257 110 29
21 28,11 7,3 9.5950 1199 393 30 5.3300 160 87 30
22 12,3 29,10 8.3650 974 312 31 4.4700 271 112 31
23 12,3 27,10 13.4750 974 321 31 6.6350 271 113 31
24 27,10 3,4 9.9850 1285 419 33 4.5100 304 130 33
25 17,17 33,1 6.8400 1299 420 33 4.5400 128 79 33
26 9,17 31,5 8.0000 1133 375 35 1.1250 119 79 35
27 8,15 29,1 13.7850 1195 391 36 4.0100 119 82 36
28 11,1 31,13 9.3100 1126 373 37 6.4100 220 112 37
29 8,3 26,15 10.7850 1226 402 37 6.8200 805 236 37
30 35,16 3,7 6.3100 1181 386 42 5.3250 319 147 42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
0
50
100
150
200
250
300
350
400
450
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
No
de
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
Grafik 4.2.4.2 Perbandingan Proses Looping 30 kali Pengujian 4
Grafik 4.2.4.3 Perbandingan Waktu Pencarian 30 kali Pengujian 4
0
200
400
600
800
1000
1200
1400
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Loo
pin
g
Percobaan ke
Dijkstra
A*
0.0000
2.0000
4.0000
6.0000
8.0000
10.0000
12.0000
14.0000
16.0000
18.0000
20.0000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Wak
tu(m
s)
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
Ukuran Diperbesar
No Koordinat Dijkstra A*
Start End Time(ms) Loop Node Path Time(ms) Loop Node Path
1 70,67 81,60 5.8750 680 223 19 1.4100 74 53 19
2 153,20 139,29 11.4300 1854 524 24 3.1600 93 70 24
3 44,23 22,29 11.2950 2201 679 35 1.6750 236 105 35
4 117,9 92,19 14.4100 3195 969 38 1.9800 200 101 38
5 112,35 96,58 13.5000 5109 1547 40 1.8950 141 101 40
6 106,33 72,47 19.7500 7899 2342 49 2.0650 193 127 49
7 109,63 68,47 20.3650 7477 2178 58 1.9650 369 193 58
8 146,45 111,16 19.2950 8231 2338 65 3.1150 246 149 65
9 119,57 77,32 19.4950 10351 2992 68 2.8000 782 322 68
10 64,31 115,51 22.8150 11999 3508 72 3.7450 476 230 72
11 24,13 16,53 12.7100 6752 2004 73 10.0400 1760 534 73
12 55,39 32,5 24.7150 12903 3769 76 15.0050 2099 620 76
13 75,31 25,3 23.0650 13722 4010 79 5.7750 626 289 79
14 15,19 90,21 14.7300 8223 2407 82 3.4050 453 222 82
15 1,10 43,52 63.4300 6088 1808 85 8.0450 292 191 85
16 140,63 78,41 16.9100 10188 2911 85 2.7450 574 286 85
17 11,16 77,4 15.1100 7721 2266 85 12.9450 1534 452 85
18 64,32 133,26 19.1800 15066 4390 86 4.0600 1560 486 86
19 9,30 79,47 16.8900 8363 2436 88 3.6500 430 226 88
20 90,10 8,29 20.4200 17637 5082 102 3.9450 1044 442 102
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Tabel 4.2.5.1 Tabel Pengujian Arena Tidak Solid dan Random Obstacle
Ukuran Diperbesar
No Koordinat Dijkstra A*
Start End Time(ms) Loop Node Path Time(ms) Loop Node Path
21 100,45 33,3 26.7650 18890 5389 110 3.7850 935 414 110
22 28,23 94,67 25.2950 14798 4297 117 3.7200 601 303 117
23 108,5 12,21 19.1850 18158 5195 119 17.8150 3913 1069 119
24 65,68 152,27 31.5000 19565 5612 129 4.9900 534 324 129
25 8,67 85,3 21.4250 14149 4126 142 4.6850 1180 567 142
26 116,17 8,48 19.9800 20156 5768 148 15.2750 10168 2051 148
27 26,39 141,1 25.2350 20227 5794 154 4.0350 708 435 154
28 126,2 4,35 26.5350 19383 5534 156 17.2450 2268 893 156
29 1,45 153,55 25.8950 19814 5708 185 17.7600 4170 1292 185
30 147,5 8,65 32.1800 20515 5857 202 28.3200 8741 2537 202
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%.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
0
1000
2000
3000
4000
5000
6000
7000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
No
de
Percobaan ke
Dijkstra
A*
0
5000
10000
15000
20000
25000
30000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Loo
pin
g
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
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
0
10
20
30
40
50
60
70
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Wak
tu(m
s)
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
di dalam halangan dan di luar halangan.
Gambar 4.2.6.2 Pencarian A* Pengujian 6
Gambar 4.2.6.3 Pencarian Dijkstra Pengujian 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
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
No Koordinat Dijkstra A*
Start End Time(ms) Loop Node Path Time(ms) Loop Node Path
1 16,15 37,4 2.8150 1749 492 37 7.1120 1862 319 37
2 20,14 1,1 11.6800 1769 502 39 21.6900 1795 321 39
3 24,14 1,5 4.1050 1753 494 39 12.6050 1952 355 39
4 18,15 35,1 6.2200 1767 501 40 9.4300 1850 327 40
5 17,13 35,1 5.2700 1767 501 43 10.6450 1897 365 43
6 10,15 37,4 6.6800 1749 492 43 11.6150 2402 397 43
7 10,13 37,4 5.2500 1749 492 45 9.8850 2300 422 45
8 27,14 1,1 6.1700 1769 502 46 10.6450 2410 401 46
9 14,13 35,1 3.3300 1767 501 46 11.4500 2152 404 46
10 20,15 10,1 13.9200 1803 519 47 25.3500 1966 444 47
11 12,9 37,4 5.1900 1749 492 47 9.8200 1936 434 47
12 12,13 35,1 6.9000 1767 501 48 8.4700 2322 430 48
13 34,15 1,5 5.1500 1753 494 48 11.3150 2850 463 48
14 25,7 1,1 5.5200 1769 502 51 8.5200 1903 439 51
15 22,12 10,1 7.3750 1803 519 52 42.8100 2121 483 52
16 29,10 1,1 5.9000 1769 502 52 8.8150 2342 457 52
17 12,9 35,1 5.2600 1767 501 52 30.2800 2090 459 52
18 35,15 1,1 6.1650 1769 502 53 10.0300 3145 467 53
19 28,7 1,1 3.9450 1769 502 54 5.0200 2029 457 54
20 33,8 1,5 4.6350 1753 494 54 10.8550 2034 463 54
21 21,12 14,1 7.7900 1819 527 55 27.0450 1965 492 55
22 23,13 14,1 10.2300 1819 527 56 43.7200 2069 492 56
23 24,13 14,1 8.9100 1819 527 57 46.9500 2109 492 57
24 3,7 37,4 4.2200 1749 492 58 11.7700 1943 462 58
25 35,6 1,5 3.4700 1753 494 58 9.9200 1814 463 58
26 28,10 10,1 7.9550 1803 519 60 43.3700 2209 484 60
27 23,8 14,1 5.1950 1819 527 61 22.6700 1909 492 61
28 33,5 1,1 4.3250 1769 502 61 10.5350 1929 467 61
29 35,3 1,5 5.1850 1753 494 61 11.1650 1906 436 61
30 25,9 14,1 12.1700 1819 527 62 34.0100 1989 492 62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
0
100
200
300
400
500
600
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
No
de
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Grafik 4.2.6.2 Perbandingan Proses Looping 30 kali Pengujian 6
Grafik 4.2.6.2 Perbandingan Waktu Pencarian 30 kali Pengujian 6
0
500
1000
1500
2000
2500
3000
3500
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Loo
pin
g
Percobaan ke
Series1
Series2
0.0000
5.0000
10.0000
15.0000
20.0000
25.0000
30.0000
35.0000
40.0000
45.0000
50.0000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Wak
tu(m
s)
Percobaan ke
Dijkstra
A*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
Gambar 4.2.7.2 Pencarian A* Pengujian 7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
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).
Pengujian dilakukan dengan cara membandingkan besaran Node
Visitation, proses Looping dan waktu pencarian sebanyak 30 kali percobaan pada
5 tipe arena yang berbeda. Suatu algoritma pathfinding dikatakan lebih baik
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 %)
Algoritma A* lebih efektif dikarenakan Algoritma Dijkstra menggunakan
metodeblind search. A* sebenarnya cara kerjanya mirip dengan Dijkstra.
Perbedaannya adalah A* mencari path menggunakan fungsi heuristic yang
memberikan prioritas pada Node yang diduga lebih baik daripada yang node yang
lain sedangkan Algoritma Dijkstra hanya melakukan eksplorasi ke semua path
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
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.
Pada pengujian 7 Algoritma Dijkstra memperlihatkan keungulannya.
Algoritma Dijkstra mampu mencari jalur untuk banyak target dalam sekali
pencarian. Hal ini dapat terjadi karena Algoritma Dijkstra tidak menitikberatkan
posisi target. Algoritma hanya menitikberatkan bahwa target sudah ditemukan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
atau belum ditemukan. Berbeda dengan Algoritma A* dengan nilai heuristiknya
harus memerlukan posisi target untuk mendapatkanya. Sehingga hal ini tidak
memungkinkan untuk Algoritma A* mencari jalur untuk banyak target untuk satu
kali pencarian.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
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.2 Saran
Beberapa saran untuk penelitian sejenis mendatang :
1. Untuk penelitian selanjutnya, bisa kembangkan untuk sistem
penyelesaian misi dengan algoritma pencari jalur terpendek yang
lain.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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. PENERAPAN 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.
Zaidah, Nur. 2016. PENERAPAN ALGORITMA DIJKSTRA UNTUK GAME
HIJAIYAH . Malang. Teknik Informatika Universitas Maulana Malik
Ibrahim Malang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
Eranki Rajiv. (2002). PATHFINDING USING A*(A-STAR). Diperoleh
1 Maret 2017, dari http://web.mit.edu/eranki/www/tutorials/search/
Beouwer, A.E. (1999). Lattice Graph . Diperoleh 3 Juni 2017,
darihttp://mathworld.wolfram.com/LatticeGraph.html
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI