TINJAUAN PUSTAKA Implementasi Algoritma A* Berbasis Pathfinding Dalam Pengembangan Game Menanam Pohon

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. 4. Menganalisis jumlah yang tidak diketahui, dengan asumsi input yang dimodelkan. Universitas Sumatera Utara 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 Graf adalah himpunan benda-benda yang disebut simpul vertex atau node yang 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 gelang loop. Graf G didefinisikan sebagai pasangan himpuna V,E. 2.4. Jenis-Jenis Graf Jenis graf dibedakan atas 3 karakteristik yaitu, berdasarkan sisi ganda berdasarkan ada tidaknya suatu gelang, arah berdasarkan arah dari sisi , dan berdasarkan pada bobot sisinya Bondy, 2008. Universitas Sumatera Utara 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 sederhanaG 1, Graf Ganda G 2 , Graf SemuG 3 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. Gambar 2.2 Graf tidak berarah Munir, 2009 Universitas Sumatera Utara 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. Graph 2.5 Graf tak berbobot Munir, 2009. Universitas Sumatera Utara 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. Beberapa terminologi dasar yang terdapat pada algoritma A adalah starting point, simpul nodes, open list, closed list, harga cost, halangan unwalkable. Universitas Sumatera Utara 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. Algoritma yang dijelaskan sejauh memberi kita hanya panjang jalur terpendek. Untuk menemukan urutan yang sebenarnya dari langkah-langkah, algoritma dapat dengan mudah direvisi sehingga setiap node di jalan melacak pendahulunya. Setelah algoritma ini dijalankan, node berakhir akan mengarah ke pendahulunya, dan seterusnya, sampai pendahulunya beberapa node adalah node awal.Selain itu, jika heuristik yang monoton atau konsisten, lihat di bawah, satu set tertutup node sudah dilalui dapat digunakan untuk membuat pencarian lebih efisien. Deiling, 2009. Universitas Sumatera Utara 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 Heuristik adalah fungsi optimasi pada algoritma A dengan cara memberi nilai pada tiap simpul yang memandu A mendapatkan solusi yang diinginkan. Dengan heuristik, maka A pasti akan mendapatkan solusi jika memang ada solusinya. Heuristik Universitas Sumatera Utara 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 heuristiknode { dx = absnode.x - goal.x dy = absnode.y - goal.y return D dx + dy } Universitas Sumatera Utara 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 8D. 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 heuristiknode { dx = absnode.x - goal.x dy = absnode.y - goal.y return D dx + dy + D2 - 2 D mindx, dy } Universitas Sumatera Utara 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 2D 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 pun juga merilis ponsel dengan nama Google Nexus One. Fenomena ini tentu function heuristik node { dx = abs node.x - goal.x dy = abs node.y - goal.y return D sqrt dx dx + dy dy } Universitas Sumatera Utara 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 GPUGraphic 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. Starling dikembangkan untuk pengembang ActionScript 3, terutama mereka yang terlibat dalam pengembangan game 2D, sehingga perlu memiliki pemahaman dasar tentang ActionScript 3. Dengan desain ringan, fleksibel, dan sederhana. Starling juga digunakan untuk kasus penggunaan lain seperti pemrograman UIUser Interface. Bose, 2013. Universitas Sumatera Utara 3. Penelitian yang Relevan Berikut ini beberapa penelitian tentang desain analisis dan algoritma yang berkaitan dengan Algoritma A. No NamaTahun Judul Hasil Penelitian 1. Witanti, Wina, 2013 Analisis pengaruh penggunaan nilai Heuristik Terhadap Performansi Algortima A Nilai heuristik berpengaruh terhadap performa algoritma A dalam mencari rute terdekat [15]. 2. Cui, Xiao Shi, H 2011 Abased Pathfinding in Modern Computer Games Cara untuk mengoptimalkan performa pencarian A adalah dengan meningkatkan fungsi heuristik [4]. 3. Rahayu, D. N 2011 Optimasi Rute Perjalanan Ambulance Menggunakan Algoritma A-Star Lamanya proses pencarian dan banyaknya simpul yang diperiksa untuk pencarian jalan tergantung pada jarak antara titik awal dan titik tujuan [12]. Universitas Sumatera Utara

BAB I PENDAHULUAN