bingo!

Fairytale


<$BlogItemTitle$>, <$BlogDateHeaderDate$>, <$BlogItemDateTime$>

<$BlogItemBody$>

◄ Older posts
Newer posts ►

Navigate with the bullets above

Selasa, 20 Maret 2012

best-first search


Best-First Search
Pengertian Best-first Search
Best-First Search merupakan sebuah metode yang membangkitkan simpul dari simpul sebelumnya. Best-first search memilih simpul baru yang memiliki biaya terkecil diantara  semua leaf nodes (simpul-simpul pada level terdalam) yang pernah dibangkitkan. Penentuan simpul terbaik dilakukan dengan menggunakan sebuah fungsi yang disebut fungsi evaluasi f(n). fungsi evaluasi best-first search dapat berupa biaya perkiraan dari suatu simpul menuju ke goal atau gabungan antara biaya sebenarnya dan biaya perkiraan tersebut.
Pada setiap langkah proses pencarian terbaik pertama, kita memilih node-node dengan menerapkan fungsi heuristik yang memadai pada setiap node/simpul yang kita pilih dengan menggunakan aturan-aturan tertentu untuk menghasilkan penggantinya. Fungsi heuristic merupakan suatu strategi untuk melakukan proses pencarian ruang keadaan suatu problema secara selektif, yang memandu proses pencarian yang kita lakukan sepanjang jalur yang memiliki kemungkinan sukses paling besar.
Ada beberapa istilah yang sering digunakan pada metode best-first search, yaitu:
  1. Start node adalah sebuah terminology untuk posisi awal sebuah pencarian
  2. Curret node adalah simpul yang sedang dijalankan dalam algoritma pencarian jalan terpendek
  3. Suksesor adalah simpul-simpul yang yang akan diperiksa setelah current node
  4. Simpul (node) merupakan representasi dari area pencarian
  5. Open list adalah tempat menyimpan data simpul yang mungkin diakses dari starting node maupun simpul yang sedang dijalankan
  6. Closed list adalah tempat menyimpan data simpul yang juga merupakan bagian dari jalur terpendek yang telah berhasil didapatkan
  7. Goal node yaitu simpul tujuan
  8. Parent adalah curret node dari suksesor.
Algoritma best-first search
          Pertama kali, dibangkitkan node A. Kemudian semua suksesor A dibangkitan, dan dicari harga paling minimal. Pada langkah 2, node D terpilih karena harganya paling rendah, yakni 1. Langkah 3, semua suksesor D dibangkitkan, kemudian harganya akan dibandingkan dengan harga node B dan C. Ternyata harga node B paling kecil dibandingkan harga node C, E, dan F. Sehingga B terpilih dan selanjutnya akan dibangkitkan semua suksesor B. Demikian seterusnya sampai ditemukan node tujuan. Ilustrasi algoritma best-first search dapat dilihat pada gambar 3.4 dibawah ini.


Untuk mengimplementasikan algoritma pencarian ini, diperlukan dua buah senarai, yaitu: OPEN untuk mengelola node-node yang pernah dibangkitkan tetapi belum dievaluasi dan CLOSE untuk mengelola node-node yang pernah dibangkitkan dan sudah dievaluasi. Algoritma selengkapnya adalah sebagai berikut.
1.      OPEN berisi initial state dan CLOSED masih kosong.
2.      Ulangi sampai goal ditemukan atau sampai tidak ada di dalam OPEN.
      a.      Ambil simpul terbaik yang ada di OPEN.
      b.      Jika simpul tersebut sama dengan goal, maka sukses
      c.       Jika tidak, masukkan simpul tersebut ke dalam CLOSED
      d.      Bangkitkan semua aksesor dari simpul tersebut
      e.      Untuk setiap suksesor kerjakan:
i.  Jika suksesor tersebut belum pernah dibangkitkan, evaluasi suksesor tersebut, tambahkan ke OPEN, dan catat parent.
ii.  Jika suksesor tersebut sudah pernah dibangkitkan, ubah parent-nyajika jalur melalui parent ini lebih baik daripada jalur melalui parent yang sebelumnya. Selanjutnya perbarui biaya untuk suksesor tersebut dn nodes lain yang berada di level bawahnya.
Algoritma yang menggunakan metode best-first search, yaitu:
a.      Greedy Best-First
Greedy Best-First adalah algoritma best-first yang paling sederhana dengan hanya memperhitungkan biaya perkiraan (estimated cost) saja, yakni f(n) = h(n). Biaya yang sebenarnya (actual cost) tidak diperhitungkan. Dengan hanya memperhitungkan biaya perkiraan yang belum tentu kebenarannya, maka algoritma ini menjadi tidak optimal.
b.      A*
A* adalah algoritma best-first search yang menggabungkan Uniform Cost Search dan Greedy Best-First Search. Biaya yang diperhitungkan didapat dari biaya sebenarnya ditambah dengan biaya perkiraan. Dalam notasi matematika dituliskan sebagai f(n)= g(n) + h(n). Dengan perhitungan biaya seperti ini, algoritma A* adalah complete dan optimal.