Your SlideShare is downloading. ×
ikp213-06-horn-clause
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

ikp213-06-horn-clause

299
views

Published on


0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
299
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Bahasa Pemrograman (IKP213) Pertemuan 5: Prolog, 22 November 2011
  • 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. Contoh Silsilah Keluarga Pemrograman Prolog – IKP213 3
  • 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. 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. 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. Kueri Prolog• Tidak ada atom yang dapat mensubstitusi: falseparent(badu, Y).false. Pemrograman Prolog – IKP213 7
  • 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. 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. 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. 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. 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. 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. 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. Contoh• m(X,Y) :- p(X,Y), f(X).• mp˄f• m ˅ -(p ˄ f)• m ˅ -p ˅ -f Pemrograman Prolog – IKP213 15
  • 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. 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. 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. 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. Akhir Pertemuan 6Rabu, 19 Oktober 2011