Vous êtes sur la page 1sur 9

Makalah

Artificial Intelligence
Algortima A*
Diajukan Untuk Memenuhi Salah Satu Mata Kuliah Artificial Intelligence dengan Dosen Pengampu
Ken Kinanti Purnamasari S.Kom.,M.T.

Disusun Oleh :
Kelompok : 2

10114345 Disca Amelia


10114367 Adi Abdurakhim
10114368 Amal Rifandi
10114376 Yopi Sepriana
10114356 La Ode M Yasser A

Kelas : AI-9

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK DAN ILMU KOMPUTER
UNIVERSITAS KOMPUTER INDONESIA
2017
1. Pengertian Algortima A*
Algoritma A* (A-Star) merupakan algoritma pencarian graf/pohon yang mencari jalur
dari satu titik awal ke sebuah titik akhir yang telah ditentukan. Algoritma A* menerapkan
pendekatan teknik heuristik/h(x) (teknik pencarian terbimbing) yang dimana algoritma ini
membuang langkah-langkah tidak perlu dengan pertimbangan bahwa langkah-langkah yang
dibuang sudah pasti merupakan langkah yang tidak akan mencapai solusi yang diinginkan.
Maka dari itulah algoritma A* adalah contoh dari best-first search.
Algoritma ini pertama kali ditemukan pada tahun 1968 oleh Peter Hart, Nils Nilsson
dan Bertram Raphael. Dalam tulisan mereka, algoritma ini dinamakan algoritma A.
Penggunaan algoritma ini dengan fungsi heuristik yang tepat dapat memberikan hasil yang
optimal, maka algoritma inipun disebut A*.
Algoritma A* menggunakan path dengan cost paling rendah ke node yang
membuatnya sebagai algoritma pencarian nilai pertama yang terbaik atau best first search.
Menggunakan rumus :
() = () + () dimana:
() adalah jarak total dari posisi asal ke lokasi sekarang.
() adalah fungsi heuristik yang digunakan untuk memperkirakan jarak dari lokasi
sekarang ke lokasi tujuan. Fungsi ini jelas berbeda karena ini adalah perkiraan semata
dibandingkan dengan nilai aslinya. Semakin tinggi keakuratan heuristik, semakin cepat dan
bagus lokasi tujuan ditemukan dan dengan tingkat keakuratan yang lebih baik. Fungi () =
() + () ini adalah perkiraan saat ini dari jarak terdekat ke tujuan
Algoritma A* membangkitkan simpul yang paling mendekati solusi. Simpul ini
kemudian disimpan suksesornya ke dalam list sesuai dengan urutan yang paling mendekati
solusi terbaik. Kemudian, simpul pertama pada list diambil, dibangkitkan suksesornya dan
kemudian suksesor ini disimpan ke dalam list sesuai dengan urutan yang terbaik untuk
solusi. List simpul ini disebut dengan simpul terbuka (open node).
Simpul pada list bisa berasal dari kedalaman berapapun dari graf. Algoritma ini
akan mengunjungi secara mendalam (mirip DFS) selama simpul tersebut merupakan simpul
yang terbaik. Jika simpul yang sedang dikunjungi ternyata tidak mengarah kepada solusi
yang diinginkan, maka akan melakukan runut balik ke arah simpul akar untuk mencari
simpul anak lainnya yang lebih menjanjikan dari pada simpul yang terakhir dikunjungi. Bila
tidak ada juga, maka akan terus mengulang mencari ke arah simpul akar sampai ditemukan
simpul yang lebih baik untuk dibangkitkan suksesornya.
Beberapa terminologi dasar yang terdapat pada algoritma ini adalah starting point,
simpul (nodes), A, open list, closed list, harga (cost), rintangan (unwalkable).
Starting point adalah sebuah terminologi posisi awal sebuah benda.
A adalah simpul yang sedang dijalankan algortima pencarian jalan terpendek.
Simpul (nodes) adalah petak-petak kecil sebagai representasi dari areapathfinding.
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.
Harga (F) adalah nilai yang diperoleh dari penjumlahan nilai G, jumlah nilai tiap
simpul dalam jalur terpendek dari starting point ke A, dan H, jumlah nilai perkiraan
dari sebuah simpul ke simpul tujuan.
Simpul tujuan merupakan simpul yang dituju.
Rintangan adalah sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat
dilalui oleh A.

Algoritma A* dapat dijelaskan dengan pseudocode dibawah ini :

1. Masukan node awal ke openlist


2. Loop Langkah langkah di bawah ini :
a. Cari node (n) dengan nilai f(n) yang paling rendah dalam open list. Node ini
sekarang menjadi current node.
b. Keluarkan current node dari openlist dan masukan ke close list
c. Untuk setiap tetangga dari current node lakukan berikut :
o Jika tidak dapat dilalui atau sudah ada dalam close list, abaikan.
o Jika belum ada di open list . Buat current node parent dari node
tetangga ini. Simpan nilai f,g dan h dari node ini.
o Jika sudah ada di open list, cek bila node tetangga ini lebih baik,
menggunakan nilai g sebagai ukuran. Jika lebih baik ganti parent
dari node ini di openlist menjadi current node, lalu kalkulasi ulang
nilai g dan f dari node ini.
d. Hentikan loop jika :
o Node tujuan telah ditambahkan ke openlist, yang berate rute telah
ditemukan.
o Belum menemukan node goal sementara open list kosong atau
berarti tidak ada rute.
3. Simpan rute. Secara backward, urut mulai darinode goal ke parent-nya terus sampai
mencapai node awal sambil menyimpan node ke dalam sebuah array.

Fungsi Heuristik :
Algoritma A* sebagai algoritma pencarian yang menggunakan fungsi
heuristik untuk menuntun pencarian rute, khususnya dalam hal pengembangan dan
pemeriksaan node-node pada peta. Terdapat beberapa fungsi heuristic umum yang
bisa dipakai untuk algoritma A* ini. Salah satunya adalah yang dikenal dengan
istilah Manhattan Distance. Fungsi heuristic ini digunakan untuk kasus dimana
pergerakan pada peta hanya lurus (horizontal atau vertikal), tidak diperbolehkan
pergerakan diagonal. Perhitungan nilai heuristikuntuk node ke-n menggunakan
Manhattan Distance adalah sebagai berikut:
h(n) = (abs(n(x) goal(x)) + abs(n(y) goal(y)))
Untuk mendekati kenyataan, cost untuk perpindahan node secara diagonal
dan orthogonal dibedakan. Cost diagonal adalah 1.4 kali cost perpindahan secara
orthogonal, maka fungsi heuristic yang digunakan adalah sebagai berikut:
h_diagonal(n) = min(abs(n(x) goal(x)) + abs(n(y) goal(y)))
h_orthogonal(n) = (abs(n(x) goal(x)) + abs(n(y) goal(y)))
h(n) = h_diagonal(n) + (h_orthogonal (n) (2 * h_diagonal(n))) dimana
h_diagonal(n) adalah banyaknya langkah diagonal yang bisa diambil untuk
mencapai goal dari node n. h_orthogonal adalah banyaknya langkah lurus yang bisa
diambil untuk mencapai goal dari node n. Nilai heuristic kemudian diperoleh dari
h_diagonal(n) ditambah dengan selisih h_orthogonal(n) dengan dua kali
h_diagonal(n). Dengan kata lain, jumlah langkah diagonal kali cost diagonal
ditambah jumlah langkah lurus yang masih bisa diambil dikali cost pergerakan lurus.
2. Contoh Kasus
Menghitung Rute Terpendek Menggunakan Algoritma A* Dengan Fungsi
Heuristik Euclidean Distance. (Studi Kasus : Uin Susqa Mall Ska)
Setelah nilai heuristik dari masing-masing node didapat maka kita akan
mencari f(n) menggunakan algoritma A* dengan rumus:

h(n) = Nilai heuristik antar Koordinat


g(n) = Jarak Koordinat ke titik tujuan
Maka f(n) total yang didapat adalah 123.72, karena satu titik ordinat mewakili 200
meter maka jaraknya sebenarnya (dalam meter) adalah:

123.72 200 = 24744 meter,


Dalam Kilometer = 24,744 km
Jalur yang dilalui:
ABCEG
UIN SUSQA Jln HR Soebrantas Simpang Garuda Sakti Jln Tuanku Tambusai
II Mall SKA
3. Hasil Pengukuran Kriteria
Kompleksitas Algoritma A* (A Star) : Kompleksitas waktu dari algoritma
A* tergantung dari heuristicnya. Dalam kasus terburuk (worst case), jumlah simpul
yang diekspansi bisa eskponensial dalam solusinya (jalan tependek). Akan tetapi,
kompleksitasnya bisa berupa polinomial bila fungsi heuristik h bertemu kondisi
berikut: | h(x) h * (x) | = O(logh * (x)) Dimana h* adalah heuristik optimal, atau
cost pasti untuk menuju tujuan dari x. Dengan kata lain, kesalahan (error) dari h tidak
boleh tumbuh lebih cepat dari algoritma perfect heuristic h* yang mengembalikan
jarak sebenarnya dari x menuju tujuan.
Efisien Waktu Algoritma A* :
Dengan digunakannya fungsi heuristic H(n), algoritma A* dapat
memfokuskan pencarian pada node-node yang berada pada arah yang mendekati
node tujuan. Kemudian pencarian diterminasikan pada waktu node tujuan 29
diperiksa. Hal ini dapat meminimalisasikan jumlah node yang harus diperiksa dan
arena waktu yang diperlukan untuk mendapatkan jalur berbanding lurus dengan
jumlah node yang diperiksa, maka waktu pencarian dapat diminimalisasikan.
Walaupun jumlah node yang diperiksa dapat diminimalisasikan, algoritma A*
mempunyai kasus terburuk. Pada kasus ini, sebagian besar ataupun keseluruhan node
pada jalan diperiksa, sehingga algoritma A* bekerja seperti algoritma dijkstra atau
BFS (Best-First-Search). Ada dua hal yang dapat menyebabkan keadaan terburuk
ini, yaitu keadaan sepadan dan jika jalur yang dicari tidak ditemukan.

Vous aimerez peut-être aussi