Artificial Intelligence - A Star
Post on 14-Jun-2015
2656 Views
Preview:
DESCRIPTION
Transcript
METODE A* (BINTANG)
Susana O. KaseJayner E. WennyiHappy Maydiani
Hadi KurniasihAnggriyani S.
Manafe
Artificial Intelligence – Searching
Kelompok 5 :
FST – UNDANAIlmu Komputer
Apakah itu Algoritma A Bintang ?
Merupakan salah satu dari algoritma yang menerapkan teknik heuristik (teknik pencarian terbimbing).
Algoritma ini dipelajari untuk menyelesaikan permasalahan yang menggunakan graf untuk perluasan ruang statusnya.
Dengan kata lain digunakan untuk menyelesaikan permasalahan yang bisa direpresentasikan dengan graf.
?
Algoritma ini merupakan algoritma Best First Searchyang menggabungkan antara :
Uniform Cost Search (UCS)Mengurutkan urutan biaya sebenarnya dari yang paling kecil sampai yang terbesar. UCS berusaha menemukan solusi dengan total biaya terendah yang dihitung berdasarkan biaya dari simpul asal menuju simpul tujuan. Biaya dilambangkan dengan g(n).
Greedy Best-First SearchHanya memperhitungkan biaya perkiraan
(estimated cost) saja, yaitu f(n) = h(n). Biaya sebenarnya tidak diperhitungkan.
&
Jadi,Biaya yang di perhitungkan dalam metode A
Bintang didapat dari biaya sebenarnya ditambah dengan biaya perkiraan.
f(n) = g(n) + h(n)
Dengan perhitungan biaya seperti ini, algoritma A* adalah complete dan optimal.
Terdapat tiga kondisi bagi setiap suksesor yang dibangkitkan :
Algoritma A* menggunakan 2 senarai, yaitu OPEN dan CLOSED.
sudah berad
a di OPEN
sudah berada di CLOSED
Tidak di OPEN / CLOSED
Pada ketiga kondisi tersebut diberikan penanganan yang
berbeda-beda
Lakukan pengecekan apakah perlu pengubahan parent
atau tidak tergantung pada nilai g-nya melalui parent lama atau parent baru. Jika
melalui parent baru memberikan nilai g yang lebih kecil, maka dilakukan pula perbaruan
(update) nilai g dan f pada suksesor tersebut. Dengan perbaruan ini, suksesor tersebut
memiliki kesempatan yang lebih besar untuk terpilih sebagai simpul terbaik (best node).
Jika suksesor sudah pernah berada di OPEN
Lakukan pengecekan apakah perlu pengubahan parent atau tidak. Jika ya, maka dilakukan perbaruan nilai g dan f pada suksesor tersebut serta pada semua “anak cucunya” yang sudah pernah berada di OPEN. Dengan perbaruan ini, maka semua anak cucunya tersebut memiliki kesempatan lebih besar untuk terpilih sebagai simpul terbaik (best node).
Jika suksesor sudah pernah berada di
CLOSED
Jika suksesor tidak berada di OPEN maupun CLOSED, maka suksesor tersebut dimasukkan
ke dalam OPEN. Tambahkan suksesor tersebut sebagai suksesornya best node.
Hitung biaya suksesor tersebut dengan rumus f = g + h.
Jika suksesor tidak berada di OPEN maupun CLOSED
Pseudocode AlgoritmaA* (A Bintang)
elseIf suksesor ada di
CLOSED then {sudah pernah dibangkitkan dan sudah diproses}
OLD = simpul di CLOSED yang sama dengan suksesor tersebut
Tambahkan OLD sebagai suksesor BestNode
Bandingkan nilai g(OLD) dengan g(suksesor)
If g(OLD) lebih baik then
Ubah parent OLD ke BestNode
Ubah nilai g dan f yang ada pada OLDPropagasi untuk semua suksesor OLD dengan penelusuran DFS dengan aturan.
loop sampai simpul suksesor tidak ada di OPEN atau simpul tidak punya suksesor
If suksesor ada di OPEN then
Propagasi diteruskan
else
If nilai g via suksesor lebih baik then
Propagasi diteruskan
else
Propagasi dihentikan
end
endend
else {suksesor tidak ada di OPEN maupun CLOSED}
Masukan suksesor ke OPEN
Tambahkan suksesor tersebut sebagai suksesornya BestNode
Hitung f = g(suksesor) + h(suksesor)
endend
endend
function A* (masalah) returns solusiOPEN ← SCLOSED ← array kosong loop sampai gol ditemukan atau sampai tidak ada simpul di dalam OPEN
If OPEN = kosong then Gagal
else BestNode = simpul yang ada di OPEN dengan f minimalPindahkan simpul terbaik tersebut dari OPEN ke CLOSEDIf BestNode = goal then
Sukseselse
Bangkitkan semua suksesor BestNode tapi jangan buat pointer
Untuk setiap suksesor kerjakan :Hitung g(suksesor) = g(BestNode) + actual
cost(dari BestNode ke suksesor){Periksa suksesor}
If suksesor ada di OPEN then {sudah pernah dibangkitkan tapi belum diproses}
OLD = simpul di OPEN yang sama dengan suksesor tersebut
Tambahkan OLD sebagai suksesor BestNode
Buat pointer dari OLD ke BestNode
Bandingkan nilai g(OLD) dengan g(suksesor)
If g(OLD) lebih baik then Ubah parent
OLD ke BestNodeUbah nilai g
dan f yang ada pada OLDend
CONTOH KASUS
n S A B C D E F G H J K L M
h(n) 80 80 60 70 85 74 70 0 40 100 30 20 70
Suatu Kota
Biaya sebenarnya
KOTABiaya Perkiraan
RUTE DI SUATU DAERAH
Carilah rute terpendek dari S menuju ke G, dengan biaya paling minimal!
OPEN :
LANGKAH 1
S CLOSED : SA, B, C, D, E
n S A B C D E F G H J K L M
h(n) 80 80 60 70 85 74 70 0 40 100 30 20 70
OPEN :
LANGKAH 2
CLOSED : SA, B, C, D, E , E, J
n S A B C D E F G H J K L M
h(n) 80 80 60 70 85 74 70 0 40 100 30 20 70
OPEN :
LANGKAH 3
CLOSED : S, EA , B, B, C, D, J, C, D, J, F, K
n S A B C D E F G H J K L M
h(n) 80 80 60 70 85 74 70 0 40 100 30 20 70
OPEN :
LANGKAH 4
CLOSED : S, E, BA, C, D, F, J, KC, D, F, J, K , A, G
n S A B C D E F G H J K L M
h(n) 80 80 60 70 85 74 70 0 40 100 30 20 70
OPEN :
LANGKAH 5
CLOSED : S, E, B, AC, D, F, G, J, KC, D, G, J, K , F
n S A B C D E F G H J K L M
h(n) 80 80 60 70 85 74 70 0 40 100 30 20 70
OPEN :
LANGKAH 6
CLOSED : S, E, B, A, FC, D, G, J, K , K
n S A B C D E F G H J K L M
h(n) 80 80 60 70 85 74 70 0 40 100 30 20 70
BestNode = Goal
SOLUSI TELAH DITEMUKAN !
KESIMPULAN
Rute ini yang telah ditemukan adalah rute terpendek yang ada di graph tersebut. Jadi, algoritma A* dan optimal.
Algoritma A* juga tanpa ada batasan waktu dan memory, jadi Algoritma A* adalah complete (selalu menemukan solusi jika solusinya ada).
Untuk masalah yang lebih kompleks, misalkan pencarian rute terpendek pada graph yang tediri dari 100 juta simpul, A* akan menghadapi masalah waktu, proses dan memory yang dibutuhkan. Jadi, masih terdapat banyak variasi algoritma A* dengan karakteristik yang sesuai dengan permasalahan tersebut.
top related