Senin, 21 September 2015

Kecerdasan Buatan - Uniform Cost Search & Iterative Deepening Search

Uniform Cost Search

Uniform Cost Search adalah algoritma terbaik untuk masalah pencarian, yang tidak melibatkan penggunaan heuristik. Hal ini dapat memecahkan grafik umum untuk biaya yang optimal. Uniform Cost Search kedengarannya pencarian di cabang yang kurang lebih sama dalam biaya.
Uniform Cost Search lagi menuntut penggunaan antrian prioritas. Ingat bahwa cari pertama kedalaman menggunakan antrian prioritas dengan kedalaman upto node tertentu menjadi prioritas dan jalur dari akar ke simpul menjadi elemen yang tersimpan. Antrian prioritas yang digunakan di sini adalah sama dengan prioritas menjadi biaya kumulatif upto node. Berbeda cari pertama kedalaman dimana kedalaman maksimum memiliki prioritas maksimum, Uniform Cost Search memberikan biaya kumulatif minimum prioritas maksimal.
Pencarian dengan Breadth First Search akan menjadi optimal ketika nilai pada semua path adalah sama. Dengan sedikit perluasan, dapat ditemukan sebuah algoritma yang optimal dengan melihat kepada nilai tiap path di antara node-node yang ada. Selain menjalankan fungsi algoritma Breadth First Search, Uniform Cost Search melakukan ekspansi node dengan nilai path yang paling kecil. Hal ini bisa dilakukan dengan membuat antrian pada successor yang ada berdasar kepada nilai path-nya (node disimpan dalam bentuk priority queue).

Proses ekspansi pada Uniform Cost Search dihitung berdasarkan nilai lintasan g(n) sehingga proses akan berjalan sebagai berikut:
f = {S};
f = {C, A, K};             // 1, 2, 2
f = {A, K, D};           // 2, 2, 2
f = {K, D, B};          // 2, 2, 4
f = {D, L, B};         // 2, 3, 4
f = {L, E, B};        // 3, 3, 4
f = {E, B};           // 3, 4
f = {B, F};          // 4, 4
f = {F, H, G};   // 4, 6, 7
f = {G, H, G}; // 5, 6, 7
f = {H, G};    // 6, 7
Proses eksplorasi node dimulai dari S sebagai initial state. Eksplorasi node dari S akan menuju ke A, C, K sebagai successornya. Pada simulasi eksplorasi di atas, untuk mempermudah proses eksplorasi maka dituliskan dengan C, A, K karena urutannya dituliskan secara ascending dari nilai g(n) terkecil sehingga akan dihasilkan urutan node yang akan dieksplorasi selanjutnya. Pada eksplorasi node selanjutnya, nilai g(n) diakumulasikan dari node awal sampai pada node current yang baru dieksplorasikan.
Dari proses di atas, maka dihasilkan jumlah ekspansi node sebanyak 10 kali, dan path yang dilalui dengan menggunakan algoritma Uniform Cost Search adalah S-C-D-E-F-G.


Iterative Deepening Search


Iterative Deepening Search (IDS) adalah pencarian ruang strategi di mana pencarian mendalam terbatas dijalankan berulang kali, meningkatkan batas kedalaman dengan setiap iterasi sampai mencapai, kedalaman negara tujuan dangkal. Iterative Deepening Search setara dengan luas-pertama pencarian, tetapi menggunakan memori lebih sedikit. Pada setiap iterasi, ia mengunjungi node dalam pohon pencarian dalam urutan yang sama seperti depth-first search, tapi urutan kumulatif di mana node pertama kali mengunjungi secara efektif luasnya pertama. Iterative Deepening Search merupakan metode yang menggabungkan kelebihan Breadth First Search (Complete dan Optimal) dengan kelebihan Depth First Search (space complexity rendah atau membutuhkan sedikit memori). Tetapi konsekwensinya adalah time complexitynya menjadi tinggi.
Iterative Deepening Search menggabungkan depth-first pencari ruang efisiensi dan kelengkapan luas-pertama pencarian ini (ketika faktor percabangan terbatas). Ini adalah optimal ketika biaya jalan adalah fungsi non-penurunan kedalaman node. Kompleksitas ruang Iterative Deepening Search adalah, di mana merupakan faktor percabangan dan kedalaman dangkal gawang. Karena berulang memperdalam kunjungan menyatakan beberapa kali, hal itu mungkin tampak sia-sia, tapi ternyata menjadi tidak begitu mahal, karena di pohon sebagian besar node berada di tingkat bawah, sehingga tidak terlalu menjadi masalah jika tingkat atas yang dikunjungi beberapa kali. 
Keuntungan utama dari Iterative Deepening Search dalam mencari permainan pohon adalah bahwa pencarian sebelumnya cenderung meningkatkan heuristik yang biasa digunakan, seperti heuristik pembunuh dan pemangkasan alpha-beta, sehingga perkiraan yang lebih akurat dari skor berbagai node pada pencarian kedalaman akhir dapat terjadi, dan pencarian selesai lebih cepat karena dilakukan dalam urutan yang lebih baik. Misalnya, alpha-beta pemangkasan yang paling efisien jika ia mencari langkah terbaik pertama. 



Iterative Deepening
   Expanded  Queue
L=1   S      [<S>]

L=2   S      [<S>]
      A      [<A,S> <M,S>]
      M      [<M,S>]

L=3   S      [<S>]
      A      [<A,S> <M,S>]
      B      [<B,A,S> <C,A,S> <I,A,S> <M,S>]
      C      [<C,A,S> <I,A,S> <M,S>]
      I      [<I,A,S> <M,S>]
      M      [<M,S>]
      G      [<G,M,S> <L,M,S>]
      goal reached!


Iterative Deepening
   Expanded  Queue
 L=1   S      [<S>]

 L=2   S      [<S>]
       A      [<A,S> <M,S>]
       M      [<M,S>]

 L=3   S      [<S>]
       A      [<A,S> <M,S>]
       B      [<B,A,S> <C,A,S> <I,A,S> <M,S>]
       C      [<C,A,S> <I,A,S> <M,S>]
       I      [<I,A,S> <M,S>]
       M      [<M,S>]
       G      [<G,M,S> <L,M,S>]
    
  goal reached!