ikp213-06-horn-clause

553 views

Published on

  • Be the first to comment

ikp213-06-horn-clause

  1. 1. Bahasa Pemrograman (IKP213) Pertemuan 5: Prolog, 22 November 2011
  2. 2. Pemrograman Prolog• Pemrograman Deklaratif – Fakta; Aturan-aturan deduksi• First-Order Predicate Logic• Execution Engine – unification; resolution• Horn Clause• Disjunctive Normal Forms Pemrograman Prolog – IKP213 2
  3. 3. Contoh Silsilah Keluarga Pemrograman Prolog – IKP213 3
  4. 4. Fakta Silsilah Keluargaparent(tom,bob).parent(pam,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).• Relasi dengan arity 2• parent/2 Pemrograman Prolog – IKP213 4
  5. 5. Kueri Prologparent(tom, X).X = bob ;X = liz ;false.• Siapa yang memiliki tom sebagai orang tua?parent(Y, ann).Y = bob ;false.• Siapa orang tua dari ann? Pemrograman Prolog – IKP213 5
  6. 6. Kueri Prologparent(X, Y).• Menampilkan semua fakta• Cari semua X dan Y yang memenuhi relasi parent• Substitusi variabel dengan atom di dalam fakta yang ada Pemrograman Prolog – IKP213 6
  7. 7. Kueri Prolog• Tidak ada atom yang dapat mensubstitusi: falseparent(badu, Y).false. Pemrograman Prolog – IKP213 7
  8. 8. Fakta-fakta Barufemale(pam).female(liz).female(pat).female(ann).male(tom).male(bob).male(jim).• Relasi dengan arity 1 Pemrograman Prolog – IKP213 8
  9. 9. Konjungsi Kueri• Siapa grandparent dari jim? – Siapa parent dari jim? Y – Siapa parent dari Y? X – X adalah grandparent dari jim• parent(Y, jim), parent(X, Y).• Cari seseorang, Y, yang menjadi parent dari jim dan cari X yang menjadi orang tua dari Y Pemrograman Prolog – IKP213 9
  10. 10. Rulesoffspring(X, Y) :- parent(Y, X).• X adalah offspring dari Y, jika Y adalah parent dari Xmother(X,Y) :- parent(X,Y), female(X).• X adalah mother dari Y, jika X adalah parent dari Y dan X adalah female Pemrograman Prolog – IKP213 10
  11. 11. Horn Clause• u :- p, q, r, .. t.• u  (p ˄ q ˄ r . . ˄ t)• to show U holds, • show P holds and show Q holds . . and show T holds Pemrograman Prolog – IKP213 11
  12. 12. Horn Clause• Logical clause – A set of disjuncts – a set of literals, combined with logical OR• Easy to prove – one literal True, the whole clause must be True• Horn Clause – Logical clause with at most 1 positive literals – -a ˅ -b ˅ -c ˅ . . . –y ˅ z Pemrograman Prolog – IKP213 12
  13. 13. Logical Equivalence• PQ – -Q  -P• -P ˅ Q• Back to Horn Clause: • u  (p ˄ q ˄ r ˄ . . . ˄ t) – u ˅ -(p ˄ q ˄ r ˄ . . . ˄ t) – u ˅ -p ˅ -q ˅ -r ˅ . . . ˅ -t Pemrograman Prolog – IKP213 13
  14. 14. Computational Complexity• It is linear time solvable – Diberikan data sejumlah N, ada waktu yang cukup untuk mendapatkan jawaban yang dicari• NP-Complete – Seberapa banyak pun waktu yang kita miliki, tak akan cukup untuk mendapatkan jawaban yang dicari Pemrograman Prolog – IKP213 14
  15. 15. Contoh• m(X,Y) :- p(X,Y), f(X).• mp˄f• m ˅ -(p ˄ f)• m ˅ -p ˅ -f Pemrograman Prolog – IKP213 15
  16. 16. Unifikasi• parent(X, liz). – Periksa semua fakta yang diberikan – Untuk fakta yang sama, terapkan algoritma Unifikasi – Disagreement set• parent(X, liz) dengan parent(tom, bob). – disagreement set {X, tom} – fail• parent(X, liz) dengan parent(tom, liz). – disagreement set {X, tom} – success Pemrograman Prolog – IKP213 16
  17. 17. Resolusi• offspring(X, liz) – Terapkan algoritma unifikasi untuk rule offspring(X, Y) – disagreement set {liz, Y} – resolusi / menggantikan Head Goal offspring(X, Y) dengan sub-goal parent(Y, X) – unifikasi Y dengan liz pada sub-goal parent(Y, X)• Unifikasi sub-goal parent(liz, X) Pemrograman Prolog – IKP213 17
  18. 18. Latihan• Siapa grandparent dari ann?• Siapa grandchild dari bob?• Tuliskan rule aunt(X, Y)• Tuliskan rule hastwochildren(X)• Tuliskan rule hasdaughter(X)• Tuliskan rule grandchildren(X, Y) Pemrograman Prolog – IKP213 18
  19. 19. Pustaka• SWI-Prolog, http://www.swi-prolog.org/• GNU-Prolog• Ivan Bratko, "Prolog Programming for Artificial Intelligence"• http://tjerdastangkas.blogspot.com/search/label/ikp213 Pemrograman Prolog – IKP213 19
  20. 20. Akhir Pertemuan 6Rabu, 19 Oktober 2011

×