Selasa, 12 Desember 2017

Metode Pencarian Buta dan Heuristik

Pelacakan adalah teknik untuk pencarian. Didalam pencarian ada dua kemungkinan hasil yang didapat yaitu menemukan dan tidak menemukan. Sehingga pencarian merupakan teknik yang penting dalam AI. Hal penting dalam menentukan keberhasilan sistem berdasarkan kecerdasan adalah kesuksesan dalam pencarian dan pencocokan. Pencarian adalah suatu proses mencari solusi dari suatu permasalahan melalui sekumpulan kemungkinan ruang keadaan (state place). Ruang keadaan merupakan suatu ruang yang berisi semua keadaan yang mungkin.


Untuk mengukur performansi metode pencarian, terdapat empat kriteria yang dapat digunakan :

  • Completeness (Kelengkapan) : apakah metode tersebut menjamin penemuan solusi jika solusinya memang ada ?
  • Time compexity (Kekompleksan waktu) : berapa lama waktu yang diperlukan ?
  • Space complexity (Kekompleksan ruang) : berapa banyak memori yang di perlukan ?
  • Optimality (Optimal) : apakah metode tersebut menjamin menemukan solusi yang terbaik jika beberapa solusi berbeda ?

Ada beberapa teknik pelacakan :

A. Metode Pencarian Buta (Blind Search)

Pencarian buta (blind search) yaitu tidak terdapatnya informasi awal yang digunakan dalam proses pencarian. 2 jenis pencarian buta (blind search) :

a.   Pencarian melebar pertama (Breadth – First Search)

Pada Breadth – First Search semua node pada level n akan dikunjungi terlebih dahulu sebelum mengunjungi node-node pada level n+1. Pencarian dimulai dari node akar terus ke level 1 dari kiri ke kanan, kemudian berpindah ke level berikutnya dari kiri ke kanan hingga solusi ditemukan.
Contoh :
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6VzsFPQOjpGzsp8GCAvbrI9qvz1zFI9SzA9jKeMNgSTorZLN_zFI5Pqa-ubqL0_j9pZVTr21aLdqwhYhbHKE49CESpRuCxpruL-c6kTNTcNDy5G1lN1NwtmLe0XzZAL6R1b1TmLZofTlh/s1600/ai1bfs.JPG
Pada BFS, teknik pencarian pesoalannya adalah dengan membuka node (titik) per levelnya. Sehingga pada persoalan diatas, urutan node yang di lalui pada pencarian BFS adalah. a,b,c,d,e,f,g,h

Keuntungannya :
  • Tidak akan menemui jalan buntu, menjamin ditemukannya solusi (jika solusinya memang ada) dan solusi yang ditemukan pasti solusi yang paling baik
  • Jika ada 1 solusi, maka breadth – first search akan menemukannya
  • Jika ada lebih dari 1 solusi, maka solusi minimum akan ditemukan
Kerugiannya :
  • Membutuhkan memori yang banyak, karena harus menyimpan semua simpul yang pernah dibangkitkan dan hal ini harus dilakukan agar BFS dapat melakukan penelusuran simpul-simpul sampai di level bawah
  • Membutuhkan waktu yang cukup lama

b.   Pencarian mendalam pertama (Depth – First Search)

Pada pencarian Depth – First Search dilakukan pada suatu simpul dalam setiap level dari yang paling kiri. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada simpul sebelah kanan dan simpul yang kiri dapat dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya. Demikian seterusnya sampai ditemukan solusi.
Contoh :
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSK8PJuNm8Zdf7BTzpLYh2EhjvpykBxLI63Tlza3r0CNULvy6q6UUoPBXj-TpS7MQWeRqIl193JENn4ZThy0LS9qptyZk_5LGb_1jhKDRDfPq0sJywzNDtt-1fK-cGkg0iX3C-SdffgwBD/s1600/ai1dfs.JPG
Jadi solusi node yang di lalui pada DFS adalah a,b,e,h

Keuntungannnya :
  • Membutuhkan memori relatif kecil, karena hanya node-node pada lintasan yang aktif saja yang disimpan
  • Dan secara kebetulan, akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan, jadi jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka DFS akan menemukannya dengan cepat (waktunya cepat)
Kerugiannya :
  • Memungkinkan tidak ditemukannya atau tidak adanya tujuan yang diharapkan, karena jika pohon yang dibangkitkan mempunyai level yang sangat dalam (tak terhingga)
  • Hanya mendapat 1 solusi pada setiap pencarian, karena jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka DFS tidak menjamin untuk menemukan solusi yang paling baik 

B. Metode Pencarian Heuristik

Pencarian Heuristik yaitu terdapatnya informasi awal yang digunakan dalam proses pencarian. Pencarian buta (blind search) tidak selalu dapat diterapkan dengan baik, disebabkan karena waktu aksesnya yang cukup lama & besarnya memori yang diperlukan. Untuk masalah dengan ruang masalah yang besar, teknik pencarian buta (blind search) bukan teknik yang baik untuk digunakan karena keterbatasan kecepatan komputer dan memori.
Dengan adanya teknik heuristic search diharapkan bisa menyelesaikan permasalahan yang lebih besar. Fungsi dari teknik heuristic search menggunakan suatu fungsi yang menghitung biaya perkiraan (estimasi) dari suatu simpul tertentu menuju ke simpul tujuan. Contoh aplikasi yang menggunakan fungsi heuristic : Google, Deep Blue Chess Machine. 2 jenis pencarian terbimbing (heuristic search) :

a.   Generate and Test

Teknik ini merupakan gabungan dari DFS dan pelacakan mundur (backtracking), yaitu bergerak ke belakang menuju pada suatu keadaan awal. Dimana nilai pengujian berupa jawaban “ya” atau “tidak”. Algoritmanya :
  • Bangkitkan suatu kemungkinan solusi (membangkitkan suatu titik tertentu atau lintasan tertentu dari keadaan awal)
  • Uji untuk melihat apakah node tersebut benar-benar merupakan solusinya dengan cara membandingkan node tersebut atau node akhir dari suatu lintasan yang dipilih dengan kumpulan tujuan yang diharapkan
  • Jika solusi ditemukan, keluar dan jika tidak, ulangi lagi langkah pertama
Salah satu kelemahan teknik Generate and Test adalah perlu membangkitkan semua kemungkinan sebelum dilakukan pengujian, sehingga membutuhkan waktu yang cukup besar dalam pencariannya.

Contoh : “Travelling Salesman Problem (TSP)”
*) Seorang salesman ingin mengunjungi n kota. Jarak antara tiap-tiap kota sudah diketahui. Kita ingin mengetahui ruter terpendek dimana setaip kota hanya  boleh dikkunjungi tepat 1 kali. Misalkan ada 4 kota  dengan jarak antara tiap-tiap kota seperti berikut ini :
Teknik Pencarian Heuristik (Heuristic Search)
Alur pencarian dengan Generate and Test

 

b.   Hill Climbing

Hampir sama dengan teknik Generate and Test dimana roses pengujian dilakukan dengan menggunakan fungsi heuristic. Pembangkitan keadaan berikutnya sangat tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristic ini akan menunjukkan seberapa baik nilai terkaan yang diambil terhadap kesalahan-kesalahan lainnya yang mungkin. Teknik-teknik pada Hill Climbing :
  1. Teknik simple hill climbing
    Algoritma akan berhenti kalau mencapai nilai optimum lokal. Urutan penggunaan operator akan sangat berpengaruh pada penemuan solusi. Tidak diijinkan untuk melihat satupun langkah selanjutnya.
  2. Teknik steepest – ascent hill climbing
    Hampir sama dengan simple hill climbing, hanya saja gerakan pencarian tidak dimulai dari paling kiri. Gerakan selanjutnya dicari berdasarkan nilai heuristic terbaik.
Contoh: TSP dengan Simple Hill Climbing Disini ruang keadaan berisi semua kemungkinan lintasan yang mungkin. Operator digunakan untuk menukar posisi kota-kota yang bersebelahan. Apabila ada n kota, dan kita ingin mencari kombinasi lintasan dengan menukar posisi urutan 2 kota, maka kita akan mendapatkan sebanyak n!/2!(n-2)!  atau sebanyak 6 kombinasi. Fungsi heuristic yang digunakan adalah panjang lintasan yang terjadi.
Teknik Pencarian Heuristik (Heuristic Search)

Sumber : satu, dua, tiga, empat

Tidak ada komentar:

Posting Komentar