Skip to main content

Pencarian Depth-limited search dalam Kecerdasan Buatan

Kelemahan fatal dalam DFS (depth-first search) dalam di state spaces (ruang keadaan) yang tak terbatas dapat dikurangi dengan cara memberikan DFS suatu batas kedalaman yang telah ditentukan misalnya l (limit). Artinya, node pada kedalaman l dianggap seolah-olah tidak lagi memiliki node penerus (successors). Pendekatan ini disebut depth-limited search. Dengan adanya batas kedalaman maka akan memecahkan masalah penelusuran jalur yang tak terbatas. Sayangnya, itu juga memiliki kompensasi lain yaitu adanya potensi incompleteness jika kita memilih l < d, yang artinya, goal yang paling dangkal berada di luar batas kedalaman. Depth-limited search juga tidak akan optimal jika kita memilih l > d. Kompleksitas waktunya (execution time) adalah O(bl) dan kompleksitas ruangnya (memori) adalah O(bl). DFS dapat dilihat sebagai kasus khusus dari depth-limited search dengan l = ∞.

Terkadang, batasan kedalaman dapat didasarkan pada pengetahuan tentang masalah tersebut. Misalnya, di peta Rumania ada 20 kota. Oleh karena itu, kita tahu bahwa jika ada solusi, itu pasti memiliki maksimum 19 untuk yang paling dalam, jadi l = 19 adalah pilihan yang memungkinkan. Tetapi kenyataannya jika kita mempelajari peta dengan teliti, kita akan menemukan bahwa kota apa pun dapat dicapai dari kota lain mana pun dengan maksimal 9 langkah. Angka ini, disebut sebagai diameter dari ruang keadaan, dan memberi kita batas kedalaman yang lebih baik, yang mengarah ke depth-limited search yang lebih efisien. Namun, untuk sebagian besar masalah, kita tidak bisa mengetahui batas kedalaman yang baik sampai kita menyelesaikan masalah tersebut.

Depth-limited search dapat diimplementasikan sebagai modifikasi sederhana pada algoritma pencarian berbasis graph atau tree secara umum. Alternatif lainnya, depth-limited search dapat diimplementasikan sebagai algoritma rekursif sederhana seperti yang ditunjukkan pada gambar di bawah ini. Perhatikan bahwa pencarian dengan kedalaman terbatas dapat diakhiri dengan dua jenis kegagalan: 1) kegagalan standar yaitu menunjukkan tidak ada solusi; 2) nilai batas kedalaman menunjukkan tidak ada solusi dalam batas kedalaman tersebut.

Implementasi rekursif dari depth limited search

Comments

Popular posts from this blog

Pengertian Binding dalam Bahasa Pemrograman dan Kapan Terjadinya

Binding dimaksudkan sebagai pengikatan (association) antara suatu entity dengan atributnya, misalnya binding/pengikatan antara suatu variable dengan tipe datanya atau dengan nilainya, atau dapat juga antara suatu operasi dengan simbol, misalnya simbol + dikenali sebagai operasi penjumlahan atau simbol ^ dikenali sebagai operasi pangkat, dll.  Peristiwa binding dan kapan terjadinya binding (biasanya disebut dengan binding time ) berperan penting dalam membicarakan semantics suatu bahasa pemrograman. Beberapa kemungkinan binding time adalah:

Latihan Soal Jawab Matematika Diskrit

Berikut di bawah ini adalah latihan soal jawab untuk matematika diskrit dengan topik-topik: Pernyataan Logika Circuits dan Ekspresi Boolean Argumen (valid/tidak valid) Teori Himpunan Permutasi Fungsi --o0o-- Pernyataan Logika 1. Buatlah tabel kebenaran untuk menentukan yang mana tautology dan yang mana contradiction dalam pernyataan logika (a) dan (b) di bawah ini: a. (p ∧ q) ∨ (∼p ∨ (p ∧ ∼q)) b.  (p ∧ ∼q) ∧ (∼p ∨ q)

Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF

Dalam posting tulisan tentang: “Tujuan dan Manfaat Normalisasi dalam Perancangan Database” , kita sudah mempelajari tentang: “Apa itu normalisasi” dan “Mengapa kita perlu melakukan normalisasi”. Kedua pertanyaan itu sudah terjawab dalam tulisan tersebut.  Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database” , kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan di at