Automated Reasoning : Backward Chaining
1. Konsep Penalaran Otomatis
Penalaran (Reasoning) adalah proses berpikir untuk menarik kesimpulan dari fakta dan aturan yang diketahui. Dalam kecerdasan buatan, proses ini dilakukan secara otomatis oleh Mesin Inferensi (Inference Engine).
salah satu Mesin inferensi yang di pakai yaitu Backward Chaning
No | Strategi | Arah | Pertanyaan Kunci |
|---|---|---|---|
2 | Backward Chaining | Hipotesis → Fakta | "Apakah pasien ini menderita flu?" |
2. Backward Chaining (Pelacakan Mundur)
2.1 Pengertian
Backward Chaining adalah metode inferensi yang bekerja dari hipotesis/tujuan menuju fakta (goal-driven). Sistem memulai dengan sebuah hipotesis (tujuan yang ingin dibuktikan), lalu menelusuri mundur untuk mencari fakta-fakta yang mendukung hipotesis tersebut.
2.2 Cara Kerja
LANGKAH-LANGKAH BACKWARD CHAINING:
1. Tentukan HIPOTESIS / TUJUAN yang ingin dibuktikan
2. Cari aturan yang kesimpulannya (THEN) = hipotesis
3. Periksa setiap kondisi (IF) dari aturan tersebut:
→ Jika kondisi ada di fakta → kondisi TERPENUHI ✓
→ Jika kondisi TIDAK ada di fakta → jadikan sub-tujuan baru
→ Ulangi langkah 2 untuk sub-tujuan tersebut
4. Jika semua kondisi terpenuhi → hipotesis TERBUKTI
Jika ada kondisi yang tidak bisa dibuktikan → hipotesis GAGAL
2.3 Contoh Ilustrasi
Diketahui Basis Pengetahuan (sama seperti contoh Forward Chaining):
R1: IF A AND B THEN C
R2: IF C AND D THEN E
R3: IF E THEN F
Diketahui Fakta Awal: A, B, D
Tujuan: Buktikan apakah F benar?
Proses Backward Chaining:
Tujuan: F
│
├─ Cari aturan → R3: IF E THEN F
│ └─ Apakah E ada di fakta? ❌ TIDAK → jadikan sub-tujuan
│
│ Sub-tujuan: E
│ ├─ Cari aturan → R2: IF C AND D THEN E
│ │ ├─ Apakah C ada di fakta? ❌ TIDAK → jadikan sub-tujuan
│ │ │
│ │ │ Sub-tujuan: C
│ │ │ ├─ Cari aturan → R1: IF A AND B THEN C
│ │ │ │ ├─ Apakah A ada di fakta? ✅ YA
│ │ │ │ └─ Apakah B ada di fakta? ✅ YA
│ │ │ └─ C TERBUKTI ✅ (tambahkan ke fakta)
│ │ │
│ │ └─ Apakah D ada di fakta? ✅ YA
│ └─ E TERBUKTI ✅ (tambahkan ke fakta)
│
└─ F TERBUKTI ✅
Kesimpulan: F = BENAR3. Studi Kasus: Sistem Pakar Diagnosa Penyakit
Kita akan menerapkan Forward Chaining dan Backward Chaining pada kasus nyata: diagnosa penyakit berdasarkan gejala.
Basis Pengetahuan:
R1: IF demam AND batuk AND pilek THEN Flu
R2: IF demam AND batuk_kering AND sesak_napas THEN COVID-19
R3: IF demam_tinggi AND nyeri_sendi AND ruam THEN Demam Berdarah
R4: IF demam AND sakit_perut AND diare THEN Tifus
R5: IF nyeri_lambung AND mual AND kembung THEN Maag# === Studi Kasus: Backward Chaining - Diagnosa Penyakit ===
# Basis Pengetahuan: Aturan diagnosa penyakit
rules_penyakit = [
{"id": "R1", "kondisi": ["demam", "batuk", "pilek"],
"kesimpulan": "Flu"},
{"id": "R2", "kondisi": ["demam", "batuk_kering", "sesak_napas"],
"kesimpulan": "COVID-19"},
{"id": "R3", "kondisi": ["demam_tinggi", "nyeri_sendi", "ruam"],
"kesimpulan": "Demam Berdarah"},
{"id": "R4", "kondisi": ["demam", "sakit_perut", "diare"],
"kesimpulan": "Tifus"},
{"id": "R5", "kondisi": ["nyeri_lambung", "mual", "kembung"],
"kesimpulan": "Maag"},
]
def backward_chaining_diagnosa(rules, fakta, tujuan, indent=0):
"""
Backward Chaining untuk memverifikasi apakah pasien
menderita penyakit tertentu.
"""
prefix = " " * indent
# Jika tujuan sudah ada di fakta (gejala yang dialami pasien)
if tujuan in fakta:
print(f"{prefix}✅ Gejala '{tujuan}' → ADA pada pasien")
return True
# Cari aturan yang kesimpulannya = tujuan
for rule in rules:
if rule["kesimpulan"] == tujuan:
print(f"{prefix} {rule['id']}: Untuk membuktikan '{tujuan}', "
f"perlu: {rule['kondisi']}")
semua_terpenuhi = True
for kondisi in rule["kondisi"]:
print(f"{prefix} Cek gejala: '{kondisi}'")
if kondisi in fakta:
print(f"{prefix} ✅ '{kondisi}' ADA pada pasien")
else:
print(f"{prefix} ❌ '{kondisi}' TIDAK ADA pada pasien")
semua_terpenuhi = False
if semua_terpenuhi:
print(f"{prefix}✅ Semua gejala terpenuhi → '{tujuan}' TERBUKTI!")
return True
else:
print(f"{prefix}❌ Gejala tidak lengkap → '{tujuan}' TIDAK terbukti")
return False
print(f"{prefix}❌ Tidak ada aturan untuk '{tujuan}'")
return False
# ===== CONTOH: Verifikasi Hipotesis =====
gejala_pasien = {"demam", "batuk", "pilek"}
# Hipotesis 1: Apakah pasien menderita Flu?
print("=" * 60)
print("BACKWARD CHAINING — Verifikasi Hipotesis")
print("=" * 60)
print(f"Gejala pasien: {gejala_pasien}")
print()
print("━" * 60)
print("Hipotesis 1: Apakah pasien menderita FLU?")
print("━" * 60)
hasil_1 = backward_chaining_diagnosa(rules_penyakit, gejala_pasien, "Flu")
print()
print("━" * 60)
print("Hipotesis 2: Apakah pasien menderita COVID-19?")
print("━" * 60)
hasil_2 = backward_chaining_diagnosa(rules_penyakit, gejala_pasien, "COVID-19")
print()
print("━" * 60)
print("Hipotesis 3: Apakah pasien menderita DEMAM BERDARAH?")
print("━" * 60)
hasil_3 = backward_chaining_diagnosa(rules_penyakit, gejala_pasien, "Demam Berdarah")
# Ringkasan
print()
print("=" * 60)
print("RINGKASAN VERIFIKASI")
print("=" * 60)
hipotesis = [("Flu", hasil_1), ("COVID-19", hasil_2), ("Demam Berdarah", hasil_3)]
for nama, hasil in hipotesis:
status = "✅ TERBUKTI" if hasil else "❌ TIDAK TERBUKTI"
print(f" {nama:20s} → {status}")
print("=" * 60)4. Studi Kasus Lanjutan: Sistem Pakar Rekomendasi Beasiswa
Kasus ini lebih kompleks karena menggunakan aturan berantai (chained rules) — di mana kesimpulan satu aturan menjadi kondisi bagi aturan lain.
Basis Pengetahuan:
Aturan Level 1 (fakta dasar → fakta antara):
R1: IF IPK >= 3.5 AND semester >= 5 THEN akademik_baik
R2: IF penghasilan_ortu_rendah THEN ekonomi_lemah
R3: IF aktif_organisasi AND aktif_lomba THEN non_akademik_baik
R4: IF sertifikat_bahasa AND publikasi THEN prestasi_khusus
Aturan Level 2 (fakta antara → rekomendasi):
R5: IF akademik_baik AND ekonomi_lemah THEN Beasiswa Bidikmisi
R6: IF akademik_baik AND non_akademik_baik THEN Beasiswa Prestasi
R7: IF akademik_baik AND prestasi_khusus THEN Beasiswa LPDP
R8: IF akademik_baik AND ekonomi_lemah AND non_akademik_baik THEN Beasiswa Unggulan
Perhatikan bahwa R5–R8 bergantung pada hasil R1–R4. Ini menunjukkan bagaimana aturan berantai bekerja dalam sistem pakar yang lebih realistis.
Silahkan anda untuk mencoba sendiri dari studi kasus ini