Pencarian Berbentuk heuristik Search dan Eksplorasi.

Pencarian Berbentuk /heuristik search dan Eksplorasi.

Nama : Rendy Noviantono
Kelas : 3KA10
Npm : 15115757

1.1 Pencarian
Pencarian merupakan kegiatan mendefinisikan ruang masalah untuk
masalah yang dihadapi. Ruang masalah ini dapat digambarkan sebagai himpunan
keadaan (state) atau bisa juga sebagai himpunan rute dari keadaan awal (initial
state) menuju keadaan tujuan (goal state). Langkah kedua adalah mendefinisikan
aturan produksi yang digunakan untuk mengubah suatu state ke state lainnya.
Langkah terakhir adalah memilih metode pencarian yang tepat sehingga dapat
menemukan solusi terbaik dengan usaha yang minimal.
Metode-metode pencarian pada teknik searching diantaranya[8] :
1. Pencarian tidak berbekal informasi / buta (Blind/Un-informed Search)
a. Breadth-First Search (BFS)
b. Depth-First Search (DFS)
c. Depth-Limited Search (DLS)
d. Uniform Cost Search (USC)
e. Iterative-Deepening Search (IDS)
f. Bi-Directional Search (BDS)

2. Pencarian berbekal informasi (Heuristik)
a. Generate-and-Test
b. Hill Climbing
c. Simulated Annealing
d. Best-First Search (BFS)
e. Greedy Best-First Search
f. A* (A star)

1.2 Metode Pencarian Heuristic
Kata Heuristic berasal dari sebuah kata kerja Yunani, heuriskein, yang
berarti „mencari‟ atau „menemukan‟. Dalam dunia pemrograman, sebagian orang
menggunakan kata heuristic sebagai lawan kata dari algoritmik, di mana kata
heuristic ini diartikan sebagai suatu proses yang mungkin dapat menyelesaikan  suatu masalah tetapi tidak ada jaminan bahwa solusi yang dicari selalu dapat
ditemukan. Heuristic memperbaiki proses pencarian solusi walaupun tidak harus
sampai mengatasi kasus terburuk (worst case scenario). Heuristik ini
mengembangkan efisiensi dalam proses pencarian, namum dengan kemungkinan
mengorbankan kelengkapan (completeness). Algoritma ini biasanya mencari
solusi yang dekat dengan solusi terbaik dan proses pencariannya cepat dan mudah.
Terkadang algoritma ini dapat menjadi akurat dan menemukan solusi terbaik,
tetapi algoritma ini tetap disebut heuristic hingga solusi terbaik itu terbukti untuk
menjadi yang terbaik. Fungsi heuristic h(n) adalah perkiraan biaya termurah dari
node n ke node tujuan. Fungsi heuristic melambangkan cost yang akan
dikeluarkan agent jika memilih node tertentu.

1.3 Metode A* Heuristic
Metode A* dikembangkan oleh Peter Hart, Nils Nilsson, dan Bertram
Raphael, mereka juga menyebut metode tersebut dengan sebutan algoritma A,
dengan menggunakan metode ini dan dengan heuristic yang tepat menghasilkan
sebuah hasil yang optimal, yaitu A*. Secara umum, depth-first search (DFS) dan
breadth-first search (BFS) adalah dua kasus spesial dari metode A*. Algoritma
Djikstra‟s merupakan kasus yang paling special dari A*, di mana h(x) = 0 untuk
semua x [8].
Metode A* tanpa fungsi heuristic yang baik akan memperlambat pencarian
dan dapat menghasilkan rute yang tidak tepat. Fungsi heuristic yang sempurna
akan membuat metode A* langsung menuju final node tanpa harus mencari
kearah lain. Sehingga jika fungsi heuristicnya terlalu underestimate akan
menyebabkan algoritma ini beranggapan bahwa ada rute lain yang lebih baik.
Untuk fungsi heuristic yang underestimate, bila nilainya terlalu rendah akan
menyebabkan algoritma ini seperti algortima Djikstra’s yang mencari ke segala
arah yang mungkin. Hal ini dikarenakan tidak ada informasi yang cukup
mengenai masalah yang dihadapi, sehingga menyebabkan metode A* melakukan
pencarian lebih banyak dan lebih lama.

Berdasarkan ilmu komputer, A* (disebut “A star”) adalah sebuah graph
atau metode tree search yang digunakan untuk mencari jalan dari sebuah node
awal ke node tujuan (goal node) yang telah ditentukan, metode ini menggunakan
“estimasi heuristic” h(x) pada setiap node untuk mengurutkan setiap node x
berdasarkan estimasi rute terbaik yang melalu node tersebut. Dalam prosesnya
metode ini akan mengunjungi setiap node berdasarkan urutan yang dihasilkan dari
estimasi heuristic ini. Metode A* adalah salah satu contoh dari metode best-first
search.
Masalah pencarian rute di mana metode A* sering digunakan, A* secara
bertahap membangun semua rute yang mengarah mulai dari titik awal sampai
akhirnya mencapai titik akhir. Metode A* hanya membangun rute yang mungkin
digunakan untuk mencapai tujuan. Untuk mengetahui rute mana yang
memungkinkan mengarah ke titik akhir, A* menggunakan estimasi heuristic jarak
dari sembarang node ke node tujuan. Dalam kasus pencarian rute, ini bisa jadi
sama dengan jarak lurus antara dua titik, di mana biasanya merupakan perkiraan
dari jarak jalan.

Hubungan antara heuristic dengan algoritma A* [8]:
1. Apabila h(n) selalu bernilai 0, maka hanya g(n) yang akan berperan, dan
A* berubah menjadi Algoritma Dijkstra, yang menjamin selalu akan
menemukan jalur terpendek.
2. Apabila h(n) selalu lebih rendah atau sama dengan ongkos perpindahan
dari titik n ke tujuan, maka A* dijamin akan selalu menemukan jalur
terpendek. Semakin rendah nilai h(n), semakin banyak titik-titik yang
diperiksa A*, membuatnya semakin lambat.
3. Apabila h(n) tepat sama dengan ongkos perpindahan dari n ke tujuan,
maka A* hanya akan mengikuti jalur terbaik dan tidak pernah memeriksa
satupun titik lainnya, membuatnya sangat cepat. Walaupun hal ini belum
tentu bisa diaplikasikan ke semua kasus, ada beberapa kasus khusus yang
dapat menggunakannya.
4. Apabila h(n) kadangkala lebih besar dari ongkos perpindahan dari n ke
tujuan, maka A* tidak menjamin ditemukannya jalur terpendek, tapi
prosesnya cepat.
5. Apabila h(n) secara relatif jauh lebih besar dari g(n), maka hanya h(n)
yang memainkan peran, dan A* berubah menjadi BFS.

1.4 Aplikasi Metode A* Heuristic
Metode A* biasanya diaplikasikan dalam kasus pathfinding. Terdapat
beberapa hal yang perlu didefinisikan terlebih dahulu dalam kasus pathfinding
dengan penerapan algoritma A*. Adapun istilah-istilah yang akan dibahas yaitu
path, open list, closed list, nilai f, g dan n.
Algoritma ini menggunakan dua senarai yaitu open dan closed. open
adalah senarai (list) yang digunakan untuk menyimpan simpul-simpul yang
pernah dibangkitkan dan nilai heuristiknya telah dihitung tetapi belum terpilih
sebagai simpul terbaik (best node) dengan kata lain, open berisi simpul-simpul
masih memiliki peluang untuk terpilih sebagai simpul terbaik, sedangkan closed
adalah senarai untuk menyimpan simpul-simpul yang sudah pernah dibangkitkan
dan sudah pernah terpilih sebagai simpul terbaik. Artinya, closed berisi simpulsimpul
yang tidak mungkin terpilih sebagai simpul terbaik (peluang untuk terpilih
sudah tertutup).
1. Open list adalah list yang menyimpan kemungkinan path yang akan
diperiksa. Open list dibuat terurut berdasarkan nilai f. Open list digunakan
untuk menentukan secara selektif (berdasarkan nilai f) jalan yang dikira
lebih dekat menuju pada path tujuan. Open berisi simpul-simpul yang
masih memiliki peluang untuk terpilih sebagai simpul terbaik (best node).
2. Closed adalah senarai (list) untuk menyimpan simpul-simpul yang sudah
pernah dibangkitkan dan sudah pernah terpilih sebagai simpul terbaik (best
node) atau senarai yang menyimpan jalan yang sudah diperiksa dari open
list. Artinya, closed berisi simpul-simpul yang tidak mungkin terpilih
sebagai simpul terbaik (peluang untuk terpilih sudah tertutup). Kedua list
(open list dan closed list) ini bertujuan juga untuk menghindari
penelusuran jalan (rute) berulangkali yang memang sudah diidentifikasi
agar tidak masuk kembali ke dalam open list.
3. Nilai F adalah cost perkiraan suatu path yang teridentifikasi. Nilai F
merupakan hasil dari f(n).
4. Nilai G hasil dari fungsi g(n), adalah banyaknya langkah yang diperlukan
untuk menuju ke path sekarang.
5. Nilai N untuk setiap simpul (node) harus memiliki informasi nilai h(n),
yaitu estimasi harga simpul tersebut dihitung dari simpul tujuan yang
hasilnya menjadi nilai H.
Fungsi f sebagai estimasi fungsi evaluasi terhadap node n, dapat dituliskan
[8] :
f(n) = g(n) + h(n)….[2.1]
dengan :
f(n) = fungsi evaluasi ( jumlah g(n) dengan h(n) )
g(n) = biaya (cost) yang dikeluarkan dari keadaan awal sampai keadaan n
h(n) = estimasi biaya untuk sampai pada suatu tujuan mulai dari n
Pergerakan diagonal diperbolehkan, maka digunakan fungsi heuristic
Non-Manhattan Distance. Maka fungsi heuristic yang digunakan adalah sebagai
berikut :
h_diagonal(n) = – (abs(n.x-goal.x) + abs(n.y-goal.y))….[2.2]
h_orthogonal(n) = (abs(n.x-goal.x) + abs(n.y-goal.y))….[2.3]
h(n) = h_diagonal(n) + (h_orthogonal (n) – (2 * h_diagonal(n)))….[2.4]
dengan :
x = representasi titik absis
y = representasi titik ordinat
2.3.3.4 Metode Simplified Memory-Bounded A* (SMA*)
Simplified Memory-Bounded A* (SMA*) merupakan pengembangan dari
algoritma A*. Algoritma SMA* merupakan penggabungan dari greedy search
yang meminimalisir perkiraan pencarian harga dan uniform cost search yang
meminimalisir harga sampai selesai [8].

Algoritma SMA* bersifat admissible. Ini berarti apabila solusi ada, solusi
yang ditemukan pertama adalah solusi yang optimal. SMA* bersifat admissible
bila memenuhi syarat-syarat, yaitu: di dalam graph state space setiap node
memiliki successor yang terbatas, setiap arc pada graph memiliki biaya yang
lebih besar dari 0, dan heuristic untuk setiap node n, h(n) < h*(n). SMA *
dikatakan complete dan optimal dengan mengasumsikan sebuah heuristic yang
admissible dan konsisten.
Simplified Memory-Bounded A* ini dikembangkan karena algoritma A*
menggunakan banyak memory sehingga menghabiskan memory untuk pencarian.
Algoritma ini menjalankan best first search selama memory masih tersedia,
apabila memory penuh maka node dengan nilai terburuk dibuang, namun nilai
terbaik disimpan pada node atasnya. Jika ruang memory mencukupi untuk semua
node pada tree dalam jalur pencarian, maka repeated states tidak akan diulang
sehingga pencarian akan menjadi optimal.
Aturan-aturan SMA* [8]:
1. Jika mempunyai lebih dari satu simpul, maka pilih salah satu yang
mempunyai f-cost terkecil. Jangan hapus dulu simpul tersebut sebelum
mengeceknya terlebih dahulu, karena bisa jadi simpul tersebut akan
dipakai dulu oleh simpul yang lain.
2. Jika hasil f-cost dari suksesor baru yang telah dibangkitkan hasilnya lebih
kecil, maka suksesor-suksesor sebelumnya dihapus. Tetapi jika lebih
besar, maka lanjutkan dulu pencarian ke suksesor yang lebih kecil,
sebelum menghapus suksesor yang lebih besar tersebut.
3. Jika menemukan state di level yang lebih dangkal, dan mmpunyai f-cost
lebih besar, maka state tersebut juga harus dihapus.


REFERENSI : http://elib.unikom.ac.id/files/disk1/623/jbptunikompp-gdl-aerajatras-31102-10-13.unik-2.pdf


Komentar

Postingan populer dari blog ini

Penyelesaian masalah melalui proses pencarian atau searching