prolog resolution unification cuts
play

Prolog: Resolution, Unification, & Cuts Prof. Tom Austin San - PowerPoint PPT Presentation

CS 152: Programming Language Paradigms Prolog: Resolution, Unification, & Cuts Prof. Tom Austin San Jos State University References for Prolog "Learn Prolog Now", http://www.learnprolognow.org SWI-Prolog website


  1. CS 152: Programming Language Paradigms Prolog: Resolution, Unification, & Cuts Prof. Tom Austin San José State University

  2. References for Prolog • "Learn Prolog Now", http://www.learnprolognow.org • SWI-Prolog website (contains manual and tutorials), http://www.swi-prolog.org • "NLP with Prolog in the IBM Watson System", http://www.cs.nmsu.edu/ALP/2011/03/ natural-language-processing-with-prolog-in- the-ibm-watson-system/

  3. Review: Facts likes(batman, gotham). likes(batman, justice). likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  4. Review: Queries & Variables What do Batman and Ra's al Ghul both like? X is a comma variable is "and" ?- likes(batman,X), likes(ras_al_ghul,X).

  5. How does Prolog resolve queries? Through 2 processes: • Resolution • Unification

  6. Resolution & Unification • Resolution : The process of matching facts & rules to perform inferencing – infer: derive logical conclusions from the rules. – If a subgoal matches the head of another rule, we can replace it with the body of the matching rule. • Unification : Instantiation of variables via pattern matching

  7. Query: likes(batman, X), likes(ras_al_ghul, X). Knowledge Base: likes(batman, gotham). likes(batman, justice). likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  8. Query: likes(batman, X) , likes(ras_al_ghul, X). Finds match for first sub-query; Knowledge Base: sets a marker likes(batman, gotham). likes(batman, justice). likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  9. Query: likes(batman, gotham) , likes(ras_al_ghul, gotham ). Knowledge Base: likes(batman, gotham). X is bound to gotham likes(batman, justice). likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  10. Query: likes(batman, gotham), likes(ras_al_ghul, gotham). No match found: fails and backtracks Knowledge Base: to marker likes(batman, gotham). likes(batman, justice). likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  11. Query: likes(batman, X), likes(ras_al_ghul, X). Knowledge Base: Finds another match for first likes(batman, gotham). sub-query likes(batman, justice). likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  12. Query: likes(batman, justice) , likes(ras_al_ghul, justice ). Knowledge Base: X is bound to likes(batman, gotham). justice likes(batman, justice). likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  13. Query: likes(batman, justice), likes(ras_al_ghul, justice) . Knowledge Base: Match found, likes(batman, gotham). and the result likes(batman, justice). is returned likes(ras_al_ghul, justice). likes(ras_al_ghul, revenge).

  14. villain(joker). villain(penguin). More villain(catwoman). facts: villain(scarecrow). kills_people(joker). kills_people(penguin). power(scarecrow, fear). romantic_interest(catwoman). romantic_interest(talia).

  15. Rules Queries scary(V) :- villain(V), kills_people(V). "Head" of the rule scary(V) :- villain(V), power(V,_).

  16. Who is scary? (in-class)

  17. Math in Prolog

  18. Arithmetic in Prolog heists(joker, 97). heists(penguin, 18). heists(catwoman, 31). heists(scarecrow, 42). combined_heists(X, Y, Total) :- heists(X,XN), heists(Y,YN), Total = XN + YN.

  19. ?- combined_heists(catwoman, scarecrow, T). T = 31+42.

  20. Using "is" operator combined_heists(X, Y, Total) :- heists(X,XN), heists(Y,YN), Total is XN + YN. ... ?- combined_heists(catwoman, scarecrow, T). T = 73.

  21. The Cut Operator "Learn Prolog Now" section 10.2

  22. The Cut Operator Motivation: • Prolog may needlessly backtrack • We wish to stop the backtracking to optimize our code.

  23. max example (no cuts) max(X,Y,Y):- X =< Y. max(X,Y,X):- X > Y.

  24. Using max ?- max(2,3,M). M = 3 ; Why continue false. the search? ?- max(2,1,M). M = 2 ; false.

  25. Two types of cuts ( ! ) • A green cut – improves performance or memory usage – Does not alter results • A red cut – controls resolution to prevent future matches – changes the results – is considered "bad form"

  26. max example (no cuts) max(X,Y,Y):- X =< Y. max(X,Y,X):- X > Y. If true, no need to keep searching

  27. max example, with green cut max(X,Y,Y):- X =< Y, ! . max(X,Y,X):- X > Y.

  28. Red Cut Example Batman is enemies with all villains, unless the villain is also a romantic interest.

  29. Red Cut Example enemy(batman, X) :- romantic_interest(X), ! , No backtracking once fail. we make it here. enemy(batman, X) :- villain(X).

  30. Red Cut Example bad_breakup(batman, talia). bad_breakup(batman, poison_ivy). enemy(batman, X) :- romantic_interest(X), ! , bad_breakup(batman, X) . enemy(batman, X) :- villain(X).

  31. Avoiding red cut bad_breakup(batman, talia). bad_breakup(batman, poison_ivy). enemy(batman, X) :- villain(X), \+ romantic_interest(X). enemy(batman, X) :- villain(X), bad_breakup(batman,X).

  32. Lab For the rest of the class, continue with the lab from last class.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend