Kamis, 12 September 2013

Apakah A* / A-star / Astar cocok untuk searching menggunakan Java Netbeans

lagi iseng iseng ngeblog lagi eh terpikirkan untuk membahas tentang algoritma A* akhir akhir ini di suatu kampus lagi ngetrend para dosen nya kasih tugas yang berhubungan dengan algoritma A*, BSF, tree, binary dan lain sebagainya nah disini saya membahas tentang apakah A* cocok untuk diterapkan pada pembuatan aplikasi searching dengan menggunakan netbeans pertama mari kita bahas tentang pengertian A* Algorima A*, dapat juga disebut sebagai Algoritma A Star, merupakan salah satu contoh algoritma pencarian yang cukup popular di dunia. Beberapa terminologi dasar yang terdapat pada algoritma ini adalah simpul(node), simpul asal/mulai(source node), simpul akhir/tujuan(destination node), simpul sekarang(current node), openlist, closedlist, bestpath, biaya(cost), halangan(unwalkable/obstacle). Simpul(node) adalah petak-petak kecil sebagai representasi dari area pencarian(pathfinding). Bentuknya dapat berupa persegi, lingkaran, maupun segitiga. Simpul asal/mulai(source node) adalah sebuah terminologi untuk posisi awal sebuah benda. Simpul akhir/tujuan(destination node) adalah tempat tujuan yang ingin dicapai pada pencarian. Simpul sekarang(current node) adalah simpul terbaik sebelumnya yang dipilih dan menjadi titik acuan untuk membangkitkan simpul tetangganya(adjacent). Open list adalah tempat menyimpan data simpul yang diakses dari simpul asal/mulai(source node) atau dari tetangga simpul sekarang(current node) yang belum pernah berada di open list maupun closed list.Closed list adalah tempat menyimpan simpul yang pernah menjadi simpul sekarang(current node). Biaya biasanya disimbolkan dengan huruf F(total cost) adalah nilai yang diperoleh dari penjumlahan nilai G (actual cost) dengan nilai H(heuristic cost). Halangan/penghalang adalah simpul yang tidak dapat dilalui. Awal dari algoritma ini bekerja adalah dengan menentukan terlebih dahulu simpul asal(source node) dan simpul tujuan(destination node). Simpul asal(source node) dijadikan sebagai acuan atau simpul sekarang(current node) dan semua simpul tetangga(adjacent) dari simpul sekarang(current node) dibangkitkan. Ketika simpul tetangga tersebut belum pernah berada di openlist maka hitung biaya G(actual cost) dan biaya H(heuristic cost). biaya G(actual cost) adalah biaya sebenarnya, biasanya berupa jarak yang pernah ditempuh. Tapi dalam kasus tertentu biaya G(actual cost) dapat berupa penjumlahan antara jarak dengan biaya medan (terrain cost). Kemudian menentukan parent dari simpul tersebut. Setelah biaya tersebut dihitung dan parent ditentukan kemudian simpul tersebut dimasukkan ke openlist. Jika simpul tetangga pernah berada di openlist maupun di closedlist maka biaya G(actual cost) diperiksa jika biayanya sudah paling optimal maka tidak perlu untuk merubah parentnya. Setelah melakukan pemeriksaan terhadap simpul tetangga maka simpul sekarang(current node) dimasukkan ke closedlist dan setelah itu dipilih simpul sekarang(current node) yang baru. Pemilihan simpul sekarang(current node) yang baru adalah berdasarkan besarnya biaya F(total cost) yang terdapat pada simpul yang disimpan di openlist. Proses tersebut terus dilakukan sampai simpul sekarang(current node) adalah simpul tujuan. Kemudian setelah itu dilakukan proses penelusuran balik pada simpul parent dan disimpan di (bestpath). jadi setelah sebegitu panjang pendeknya membaca dan searching searching di mbah google dapat disimpulkan jika algoritma A* lebih maksimal jika digunakan untuk diterapkan pada rancang bangun aplikasi game ketangkasan seperti puzzle tetapi jangan khawatir sodara disini akan saya kasih sedikit contoh penghitungan jarak menggunakan A* monggoh diunduh mugi2 bermanfaat nggih

Tidak ada komentar: