Skip to main content

Algoritma Forward Chaining Pada Agen Berbasis Logika Dalam Kecerdasan Buatan

Algoritma forward-chaining menentukan apakah suatu proposisi (kalimat) tunggal dengan simbol q — sebagai query — didaptkan bernilai true (benar) berdasarkan konsekwensi logis oleh suatu basis pengetahuan yang berisi klausa-klusa tertentu. Algoritma ini mulai prosesnya berawal dari fakta yang diketahui (fakta = proposisi/kalimat yang bernilai true, atau sering disebut dengan literal positif, yaitu kalimat yang bukan negasi atau not dalam logika matematika) dalam basis pengetahuan. Jika semua premis implikasi diketahui, maka konklusi atau kesimpulan-nya ditambahkan ke sekumpulan fakta yang sudah diketahui [lihat catatan di bagian bawah artikel tentang yang dimaksud implikasi, premis, dan konklusi]. 

Proses ini berlanjut terus sampai queri q ditambahkan/didapatkan atau sampai tidak ada kesimpulan lebih lanjut yang dapat dihasilkan. Algoritma yang detil  ditunjukkan pada gambar di bawah ini.
Detil algoritma forward chaining
Poin utama yang perlu diingat adalah bahwa algoritma ini berjalan dalam waktu yang linier.

Cara terbaik (atau termudah) untuk memahami algoritma forward chaining adalah melalui contoh dan gambar di bawah ini. 
(a) adalah sekumpulan klausa dan (b) visualisasi berupa grafik AND - OR
Gambar bagian kiri (a) menunjukkan basis pengetahuan sederhana yang berisi sekumpulan klausa dengan A dan B sebagai fakta yang diketahui. Gambar bagian kanan (b) menunjukkan basis pengetahuan yang sama dengan grafik AND – OR. Dalam grafik AND – OR, beberapa link yang digabungkan dengan busur menunjukkan konjungsi (AND) — dan setiap link harus dibuktikan — sementara beberapa link tanpa busur menunjukkan disjungsi (OR) — link apa pun dapat dibuktikan. Memang mudah untuk melihat bagaimana forward chaining bekerja dalam grafik. Leave/node yang diketahui (misalnya dalam gambar tersebut, A dan B atau disebut sebagai fakta) ditetapkan, dan inferensi/penarikan kesimpulan merambat ke grafik ke atas sejauh mungkin. Di mana pun konjungsi muncul, propagasi menunggu sampai semua konjungsinya diketahui sebelum bisa melanjutkan ke atas.

Sangat mudah untuk melihat bahwa forward chaining adalah masuk akal: karena setiap kesimpulan pada dasarnya adalah penerapan dari Modus Ponens. [lihat catatan di bagian bawah artikel tentang yang dimaksud Modus Ponens]. Forward chaining juga berkarakteristik komplit: yaitu setiap kalimat atom yang disyaratkan (di dapatkan bernilai true) maka akan diturunkan ke kalimat berikutnya.

Forward chaining adalah contoh konsep umum penalaran berbasis data — yaitu, penalaran di mana fokus perhatian dimulai dengan data yang diketahui (fakta). Algoritma ini dapat digunakan pada agen yang digunakan untuk memperoleh kesimpulan dari percepts (input) yang masuk. Pada manusia, penalaran berbasis data seperti ini terjadi ketika ada informasi baru yang masuk ke otak. Misalnya, jika saya berada di dalam ruangan dan mendengar hujan turun, mungkin terpikir oleh saya bahwa piknik akan dibatalkan. Namun mungkin tidak akan terpikir oleh saya bahwa kelopak bunga ketujuh belas pada mawar terbesar di kebun tetangga saya akan menjadi basah; manusia terus menalar maju (forward chaining) secara hati-hati, supaya jangan sampai manusia dibanjiri dengan konsekuensi-konsekwensi yang tidak relevan.

Contoh deskripsi gambar di atas

Deskripsi yang lebih praktis dalam pendekatan contoh gambar di atas bisa diterjemahkan sebagai contoh kasus seperti berikut.

Ada lima rule dalam gambar di atas yaitu:
  • Rule 5: P ⇒ Q
  • Rule 4: L ∧ M ⇒ P
  • Rule 3: B ∧ L ⇒ M
  • Rule 2: A ∧ P ⇒ L
  • Rule 1: A ∧ B ⇒ L
Ada dua fakta yaitu:
  • Fakta: A (true)
  • Fakta: B (true)
Query: Q apakah bernilai true? (goal yang dicari)
  • dari rule 1: jika A dan B bernilai true maka L bernilai true
  • dari rule 3:  jika B dan L bernilai true maka M bernilai true
  • dari rule 4:  jika L dan M bernilai true maka P bernilai true
  • dari rule 5:  jika P bernilai true maka Q bernilai true   
Query terjawab dengan proses forward chaining


Daftar catatan: 
1. Implikasi (implication) dalam logika matematika seringkali disebut dengan kondisional atau biasa disajikan dengan "jika ... maka..." yang disimbulkan dengan =>. Bagian jika... sering disebut dengan premis, bagian maka...sering disebut dengan konklusi/kesimpulan"
2. Modus Ponens (dari bahasa Latin MODUS PONENS yang artinya adalah mode yang menegaskan) dan ditulis dalam bentuk α ⇒ β. Notasi tersebut berarti bahwa, setiap kali kalimat dalam bentuk α ⇒ β dan jika α diketahui/diberikan, maka kalimat β dapat disimpulkan. Atau, jika Î± adalah true maka Î² disimpulkan true.

--o0o--

Artikel terkait:

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 d...