• Tidak ada hasil yang ditemukan

Implementasi Algoritma A Berbasis Pathfinding Dalam Pengembangan Game Menanam Pohon

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma A Berbasis Pathfinding Dalam Pengembangan Game Menanam Pohon"

Copied!
12
0
0

Teks penuh

(1)

BAB II

TINJAUAN PUSTAKA

Bab ini akan menjelaskan tentang pembahasan teori-teori algoritma A*.

2.1. Video Game

Video game (permainan video) adalah permainan yang menggunakan interaksi dengan antarmuka pengguna melalui gambar yang dihasilkan oleh piranti video. Permainan video umumnya menyediakan sistem penghargaan misalnya skor yang dihitung berdasarkan tingkat keberhasilan yang dicapai dalam menyelesaikan tugas-tugas yang ada di dalam permainan.

Kata "video" pada "permainan video" pada awalnya merujuk pada piranti tampilan raster. Namun dengan semakin dipakainya istilah "video game", kini kata permainan video dapat digunakan untuk menyebut permainan pada piranti tampilan apapun. Sistem elektronik yang digunakan untuk menjalankan permainan video disebut platform, contohnya adalah komputer, permainan konsol dan smartphone. (Apperley, 2006)

2.2. Desain Analisis Algoritma

Desain Analisis Algoritma merupakan suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah (Levitin, 2011). Untuk menganalisis sebuah algoritma, kita harus mengidentifikasi sumber primer sehingga analisis rinci dapat difokuskan dengan benar. Sebuah analisis lengkap dari waktu berjalan dari algoritma melibatkan langkah-langkah berikut:

1. Melaksanakan algoritma sepenuhnya.

2. Tentukan waktu yang dibutuhkan untuk setiap operasi dasar. Mengidentifikasi jumlah yang tidak diketahui yang dapat digunakan untuk menggambarkan frekuensi pelaksanaan operasi dasar.

3. Mengembangkan model yang realistis untuk input ke program.

(2)

5. Hitung total waktu berjalan dengan mengalikan waktu dengan frekuensi untuk setiap operasi, kemudian menambahkan semua produk.

Langkah pertama dalam analisis ini adalah untuk hati-hati menerapkan algoritma pada komputer tertentu. Sebuah implementasi tertentu tidak hanya menyediakan objek konkret untuk belajar, tetapi juga dapat memberikan data empiris yang berguna untuk membantu dalam atau untuk memeriksa analisis.

Langkah berikutnya adalah untuk memperkirakan waktu yang dibutuhkan oleh masing-masing instruksi komponen program. Pendekatan lain adalah dengan hanya menjalankan program untuk input kecil ukuran untuk "estimasi" nilai-nilai konstanta, atau untuk melakukannya secara tidak langsung dalam agregat.

Langkah berikutnya adalah untuk model input ke program, untuk membentuk dasar untuk analisis matematis dari frekuensi instruksi. Nilai dari frekuensi diketahui tergantung pada masukan untuk algoritma: masalah ukuran parameter utama yang digunakan untuk mengungkapkan hasil (Sedgewick, 2013).

2.3. Teori Graf

terhubung oleh sisi (edge) atau busur (arc). Biasanya graf digambarkan sebagai kumpulan titik-titik (melambangkan "simpul") yang dihubungkan oleh garis-garis (melambangkan "sisi") atau garis berpanah (melambangkan "busur"). Suatu sisi dapat menghubungkan suatu simpul dengan simpul yang sama. Sisi yang demikian

dinamakan

2.4. Jenis-Jenis Graf

(3)

2.4.1. Berdasarkan sisi ganda

Berdasarkan ada tidaknya gelang atau sisi ganda pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis:

1. Graf sederhana, graf yang tidak mengandung gelang maupun sisi ganda dinamakan graf sederhana.

2. Graf tak-sederhana, graf yang mengandung sisi ganda dinamakan graf tak- sederhana. Ada dua macam graf tak sederhana, yaitu graf ganda dan graf semu. Graf ganda adalah graf yang mengandung sisi ganda. Sebuah graf memiliki sisi ganda jika ada 2 buah simpulyang dihubungkan lebih dari satu sisi. Graf semu adalah graf yang memiliki sisi gelang (loop). Sisi gelang adalah sisi yang menghubungkan sebuah simpul dengan simpul itu sendiri.

Gambar 2.1 Graf sederhana(G1), Graf Ganda (G2), Graf Semu(G3) (Munir, 2009)

2.4.2. Berdasarkan arah

Berdasarkan arah dari sisi, graf dibedakan menjadi 2 jenis : 1. Graf tak-berarah

Graf yang sisinya tidak memiliki orientasi arah disebut graf tak-berarah. Pada graf tak-berarah, urutan pasangan simpul pada sisi tidak diperhatikan. Sebuah sisi e = (u, v) sama dengan e = (v, u).

(4)

2. Graf Berarah

Graf yang setiap sisinya memiliki orientasi arah disebuh graf berarah. Pada graf berarah, sebuah sisi dikenal juga sebagai busur (arc). Pada graf berarah, (u, v) dan (v, u) menyatakan dua buah sisi yang berbeda. Pada sebuah sisi (u, v), simpul u menyatakan simpul asal (initial vertex) dan simpul v menyatakan simpul terminal (terminal vertex).

Gambar 2.3 Graf berarah (Munir, 2009)

2.4.3. Berdasarkan bobot

1. Graf berbobot (weighted graph)

Graf berbobot adalah graf yang setiap sisinya memiliki bobot. Bobot pada sisi graf dapat merepresentasikan kapasitas, biaya, atau keuntungan.

Gambar 2.4. Graf berbobot (Munir, 2009)

2. Graf tak-berbobot (unweighted graph)

Graf tak-berbobot adalah graf yang setiap sisinya tidak memiliki bobot.

(5)

2.5. Pathfinding

Pathfinding adalah suatu metode yang digunakan untuk pencarian jalur yang bertujuan untuk mencapai suatu tempat tujuan dari tempat awal. Cara kerja metode pathfinding adalah dengan mencari sebuah grafik dengan memulai pada satu titik dan menjelajahi node yang berdekatan sampai node tujuan tercapai, umumnya dengan maksud untuk menemukan rute terpendek. Namun, tidak perlu untuk memeriksa semua jalur yang mungkin untuk menemukan satu yang optimal. Dalam sistem-perjalanan routing yang praktis, kompleksitas waktu yang lebih baik dapat dicapai dengan algoritma yang dapat pra-proses grafik untuk mencapai kinerja yang lebih baik. (Deiling, 2009).

2.6. Algoritma A*

Algoritma A* adalah pengembangan dari algoritma Djikstra yaitu suatu algoritma yang bertujuan untuk memproses perencanaan jalur yang efisien di antara beberapa titik (node) dengan menggunakan heuristik. Peter Hart, Nils Nilsson dan Bertram Raphael dari Stanford Research Institute memperkenalkan algoritma ini pada tahun 1968 (Deiling, 2009).

A* menggunakan pencarian terbaik pertama dan menemukan jalan dengan biaya terendah dari node awal yang diberikan ke satu node tujuan. A* melintasi grafik untuk membangun sebuah pohon jalur parsial. Daun pohon ini (disebut set atau pinggiran terbuka) disimpan dalam antrian prioritas yang memerintahkan node daun dengan fungsi biaya, yang menggabungkan perkiraan heuristik dari biaya untuk mencapai tujuan dan jarak yang ditempuh dari node awal. Secara khusus, fungsi biaya:

f (n) = g (n) + h (n).

Di sini, g (n) adalah biaya diketahui mendapatkan dari node awal untuk nilai ini dilacak oleh algoritma. h (n) adalah perkiraan heuristik dari biaya untuk mendapatkan dari n ke setiap node tujuan. Untuk algoritma untuk menemukan jalur terpendek yang sebenarnya, fungsi heuristik harus diterima, artinya tidak pernah overestimates biaya yang sebenarnya untuk sampai ke node tujuan terdekat. Fungsi heuristik adalah spesifik masalah dan harus disediakan oleh pengguna dari algoritma.

(6)

Starting point adalah sebuah terminologi untuk posisi awal sebuah benda. Simpul adalah petak-petak kecil sebagai representasi dari area pathfinding. Bentuknya dapat berupa persegi, lingkaran, maupun segitiga. Open list adalah tempat menyimpan data simpul yang mungkin diakses dari starting point maupun simpul yang sedang dijalankan. Closed list adalah tempat menyimpan data simpul sebelum A yang juga merupakan bagian dari jalur terpendek yang telah berhasil didapatkan. Simpul tujuan yaitu simpul yang dituju. Halangan adalah sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat dilalui oleh A. Prinsip algoritma ini adalah mencari jalur terpendek dari sebuah starting point menuju simpul tujuan dengan memperhatikan harga (F) terkecil (Munir, 1998).

2.6.1 Cara Kerja

Dimulai dengan node awal, ia mempertahankan antrian prioritas node yang akan dilalui, dikenal sebagai set atau pinggiran terbuka. Semakin rendah f (x) untuk diberikan simpul x, semakin tinggi prioritas. Pada setiap langkah algoritma, node dengan f (x) nilai terendah akan dihapus dari antrian, f dan g nilai tetangganya diperbarui sesuai, dan tetangga ini ditambahkan ke antrian. Algoritma terus sampai node tujuan memiliki nilai f rendah dari setiap node dalam antrian (atau sampai antrian kosong). (Node Goal dapat melewati beberapa kali jika masih ada node lain dengan nilai f yang lebih rendah, karena dapat menyebabkan jalan yang lebih pendek untuk tujuan.) Nilai f dari tujuannya adalah maka panjang jalur terpendek, karena jam pada tujuannya adalah nol dalam heuristik diterima.

(7)

2.6.2. Sifat Algoritma A*

A* selesai dan akan selalu mencari solusi jika ada. Jika heuristik fungsi h adalah diterima, artinya tidak pernah overestimates biaya minimal sebenarnya mencapai tujuan, maka A* itu sendiri diterima (atau optimal) jika kita tidak menggunakan satu set tertutup. Jika satu set tertutup digunakan, maka h juga harus monoton (atau konsisten) untuk A* menjadi optimal. Ini berarti bahwa untuk setiap pasangan node yang berdekatan x dan y, di mana d (x, y) menunjukkan panjang dari tepi antara mereka, kita harus memiliki:

Hal ini memastikan bahwa untuk setiap jalur X dari node awal untuk x:

dimana L adalah fungsi yang menunjukkan panjang jalan, dan Y adalah jalan X diperluas untuk mencakup y. Dengan kata lain, tidak mungkin untuk menurunkan (total jarak sejauh + diperkirakan jarak yang tersisa) dengan memperluas jalan untuk memasukkan node tetangga. (Ini analog dengan pembatasan untuk nonnegatif tepi bobot dalam algoritma Dijkstra.) Monotonisitas berarti diterimanya ketika estimasi heuristik setiap node tujuan itu sendiri adalah nol, karena (membiarkan P = (f, v1, v2, ..., vn, g ) menjadi jalur terpendek dari setiap node f ke terdekat g tujuan):

A* juga optimal efisien untuk setiap heuristik h, yang berarti bahwa tidak ada algoritma optimal mempekerjakan heuristik yang sama akan memperluas node kurang dari A*, kecuali jika ada solusi parsial beberapa di mana h persis memprediksi biaya jalur yang optimal. Bahkan dalam kasus ini, untuk setiap grafik terdapat beberapa urutan hubungan melanggar dalam antrian prioritas sehingga A* memeriksa node paling sedikit mungkin (Deiling, 2009).

2.7. Heuristik

(8)

inilah yang membedakan algoritma A* dengan algoritma pathfinding lainnya. Heuristik dapat digunakan untuk mengontrol perilaku A*.

 Pada satu ekstrim, jika h (n) adalah 0, maka hanya g (n) memainkan peran, dan A* berubah menjadi Algoritma Dijkstra, yang dijamin untuk menemukan jalan terpendek.

 Jika h (n) selalu lebih rendah dari (atau sama dengan) biaya pindah dari n ke tujuan, maka A* dijamin untuk menemukan jalan terpendek. Lebih rendah h (n), semakin simpul A* mengembang, membuatnya lebih lambat.

Jika h (n) adalah persis sama dengan biaya pindah dari n ke tujuan, maka A* hanya akan mengikuti jalan terbaik dan tidak pernah memperluas apa pun, sehingga sangat cepat.

 Jika h (n) kadang-kadang lebih besar dari biaya bergerak dari n ke tujuan, maka A* tidak dijamin untuk menemukan jalur terpendek, tetapi dapat berjalan lebih cepat.

 Pada ekstrem yang lain, jika h (n) relatif sangat tinggi untuk g (n), maka hanya h (n) memainkan peran, dan A* berubah menjadi Greedy Best-First-Search.

Heuristik pada Algoritma A* memilki beberapa jenis dibedakan berdasarkan berapa arah yang digunakan, yaitu heuristik Manhattan Distance, Diagona l Distance, dan Euclidian Distance (Peters, 2009)

2.7.1 Manhattan Distance

Manhattan Distance adalah Heuristik standar pada peta grid yang memperkenankan 4 arah gerakan. Fungsi biaya dan menemukan minimum biaya D untuk bergerak dari satu ruang ke ruang yang berdekatan. Dalam kasus sederhana, Anda dapat mengatur D menjadi 1. Heuristik pada grid persegi D kali jarak Manhattan, yaitu :

function heuristik(node) {

(9)

Cara memilih nilai D adalah gunakan skala yang cocok dengan bobot fungsi. Untuk jalur terbaik, ubah nilai D menjadi bobot terendah diantara petak yang berdekatan (Patel, 2010).

Gambar 2.6. Ilustrasi Manhattan Distance (Patel, 2010).

2.7.2. Diagonal Distance

Diagonal Distance adalah Heuristik pada peta grid yang memungkinkan gerakan diagonal. Jika Manhatan Distance membutuhkan gerakan 4 timur dan 4 utara (8 gerakan) untuk mencapai target, menjadi 8*D.

Namun, pada diagonal distance hanya membutuhkan 4 gerakan (4 timur laut) untuk mencapai target, sehingga heuristik menjadi 4 * D2, di mana D2 adalah biaya bergerak diagonal.

Gambar 2.7. Ilustrasi Heuristik Diagonal Distance (Patel, 2010). function heuristik(node) {

dx = abs(node.x - goal.x) dy = abs(node.y - goal.y)

(10)

Di sini menghitung jumlah langkah yang diambil tidak dapat mengambil diagonal, kemudian kurangi langkah-langkah yang disimpan dengan menggunakan diagonal. Ada min (dx, dy) langkah diagonal, dan masing-masing biaya D2 tapi menghemat 2*D langkah non-diagonal. Ketika D = 1 dan D2 = 1, ini disebut jarak Chebyshev. Ketika D = 1 dan D2 = sqrt (2), ini disebut jarak octile (Patel, 2010).

2.7.3 Euclidian Distance

Jika unit dapat bergerak di setiap sudut (bukan arah grid), maka harus menggunakan jarak garis lurus:

Namun, jika hal ini terjadi, maka memiliki masalah dengan menggunakan A* langsung karena fungsi biaya g tidak akan cocok dengan heuristik fungsi h. Karena jarak Euclidean lebih pendek dari Manhattan atau jarak diagona masih akan mendapatkan jalur terpendek, tetapi A* akan memakan waktu lebih lama untuk menjalankan (Patel, 2010).

Gambar 2.8 Ilustrasi Heuristik Euclidian (Patel, 2010). 2.8. Android

Android merupakan sistem operasi mobile berbasis kernel linux yang dikembangkan oleh Android Inc dan kemudian diakusisi oleh Google. Sistem operasi ini bersifat open source sehingga para programmer dapat membuat aplikasi secara mudah. Salah satu keunggulan Android terletak pada bervariasinya merek ponsel yang mengadopsi sistem operasi ini. Oleh karena itu, tidak heran jika kita melihat beragam merek ponsel menggunakan sistem operasi ini, seperti HTC, Samsung, dan lain sebagainya. Google

function heuristik (node) { dx = abs (node.x - goal.x) dy = abs (node.y - goal.y)

(11)

mengakibatkan kita sebagai konsumen memliki banyak pilihan dalam menggunakan ponsel bersistem operasi Android. Tidak sama dengan iPhone yang bentuk persis untuk setiap seri atau Blacberry yang jumlahnya terbatas, ponsel berbasis Android memilik banyak bentuk dan merek (Jubille, 2010).

2.9. Actionscript 3.0

ActionScript adalah bahasa pemrograman berorientasi objek awalnya dikembangkan oleh Macromedia Inc (sekarang diakusisi oleh Adobe Systems). Ini adalah derivasi dari HyperTalk, bahasa scripting untuk HyperCard. Sekarang dialek dari ECMAScript (artinya itu adalah superset dari sintaks dan semantik dari bahasa lebih banyak dikenal sebagai JavaScript), meskipun awalnya muncul sebagai saudara, baik yang dipengaruhi oleh HyperTalk.

ActionScript 3 juga digunakan dengan sistem Adobe AIR untuk pengembangan desktop dan aplikasi mobile. Bahasa itu sendiri adalah open source dalam spesifikasi yang ditawarkan gratis dan kedua kompiler open source (sebagai bagian dari Adobe Flex) dan mesin virtual open source (Mozilla Tamarin) yang tersedia (Spuy, 2010).

2.10. Framework Starling

Starling adalah Framework Actionscript 3 dikembangkan di atas Stage3D API (Application Programming Interface). Starling dirancang untuk pengembangan game, tapi bisa digunakan untuk banyak kasus penggunaan lainnya. Starling memungkinkan untuk menulis aplikasi GPU(Graphic Processing Unit)-accelerated tanpa harus menyentuh level rendah Stage3D API. Kebanyakan pengembang Adobe AIR ingin dapat memanfaatkan akselerasi GPU tanpa perlu menulis framework yang lebih tinggi. (Imbert, 2012).

(12)

3. Penelitian yang Relevan

Berikut ini beberapa penelitian tentang desain analisis dan algoritma yang berkaitan dengan Algoritma A*.

No Nama/Tahun Judul Hasil Penelitian

1. Witanti, performa algoritma A* dalam mencari rute terdekat [15]. pencarian A* adalah dengan meningkatkan fungsi heuristik [4].

Gambar

Gambar 2.2 Graf tidak berarah (Munir, 2009)
Gambar 2.3 Graf berarah (Munir, 2009)
Gambar 2.6. Ilustrasi Manhattan Distance (Patel, 2010).
Gambar 2.8 Ilustrasi Heuristik Euclidian (Patel, 2010).

Referensi

Dokumen terkait

Namun demikian ditemukan bahwa komunikasi persuasif yang dilakukan oleh figur politik yang kredibel, berkuasa dan manarik dalam media Facebook ternyata tidak cukup

bucu, sinom, dorogepak dan srotongan , maka dengan sebutan tipe limas yang digunakan untuk pringgitan mengingatkan tentang bentuk dasar tipe arsitektur Jawa yaitu

Berdasarkan hal - hal yang telah dipaparkan pada pembahasan untuk menjawab rumusan masalah dengan pendekatan penelitian yang telah dilakukan maka, dapat diambil

ANALISIS ANTENA MIKROSTRIP PATCH SEGIEMPAT DENGAN TEKNIK PLANAR ARRAY.. Diajukan untuk memenuhi salah satu persyaratan dalam menyelesaikan pendidikan sarjana

f Keeping and representing data from a CSV file f Examining a JSON file with the aeson package f Reading an XML file using the HXT package f Capturing table rows from an HTML page..

Untuk beretika, akuntan juga harus ditanamkan sejak dini, seperti halnya pancasila yang telah diajarkan sejak masih SD dengan nama Pendidikan Kewarganegaraan,

Penelitian ini menggunakan pendekatan cross sectional yang ditujukan untuk mengetahui pengetahuan dengan persepsi remaja tentang seks pranikah. Populasinya adalah

Kontribusi lain dari ahli filsafat Islam yang juga tidak dimanfaatkan oleh ahli hukum Islam adalah al-Farabi yang mengembangkan teori silogistik sebagai bantahan terhadap