Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PROLOG ΜΑΘΗΜΑ 5

2,139 views

Published on

A.Θεωρία
Οπισθοδρόμηση
Μη προσδοκώμενα αποτελέσματα
Το κατηγόρημα ! /0
Βίαιος Τερματισμός Προγράμματος
Το κατήγορημα fail / 0
B.Ασκήσεις

Published in: Education
  • Be the first to comment

  • Be the first to like this

PROLOG ΜΑΘΗΜΑ 5

  1. 1. ΠΛΗ31 PROLOG Μάθηµα 5: Έλεγχος Οπισθοδρόµησης ∆ηµήτρης Ψούνης∆ηµήτρης Ψούνης
  2. 2. ΠΕΡΙΕΧΟΜΕΝΑ A.Θεωρία 1. Οπισθοδρόµηση 1. Μη προσδοκώµενα αποτελέσµατα 2∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης 1. Μη προσδοκώµενα αποτελέσµατα 2. Το κατηγόρηµα ! /0 2. Βίαιος Τερµατισµός Προγράµµατος 1. Το κατήγορηµα fail / 0 B.Ασκήσεις
  3. 3. Α. Θεωρία 1. Οπισθοδρόµηση 1. Μη προσδοκώµενα Αποτελέσµατα Το παρακάτω πρόγραµµα εντοπίζει τον µέγιστο µεταξύ δύο αριθµών: 3∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης Εκτελούµε τις παρακάτω ερωτήσεις: max(X,Y,M):- X>Y, M=X. max(X,Y,M):- X=<Y, M=Y. ?- max(4,5,Ν). Η δεύτερη απάντηση κρίνεται παράλογη και καταχρηστική! ?- max(4,5,Ν). Ν = 5. ?- max(5,4,Ν). Ν = 5 ; false.
  4. 4. Α. Θεωρία 1. Οπισθοδρόµηση 1. Μη προσδοκώµενα Αποτελέσµατα Για να δούµε γιατί συµβαίνει αυτό θα µελετήσουµε το δένδρο εκτέλεσης των δύο ερωτηµάτων: 4∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης Στόχος: max(4,5,Ν). max(X,Y,M):- X>Y, M=X. max(X,Y,M):- X=<Y, M=Y. Στόχος: max(4,5,Ν). Στόχος: 4>5,Ν=4. X=4,Υ=5,Μ=Ν Αποτυχία X=4,Υ=5,Μ=Ν Στόχος: 4=<5,Ν=5. ?- max(4,5,N). N = 5. Στόχος: Ν=5. Απαντά: N=5 ?- max(5,4,N). N = 5 ; false. Στόχος: max(5,4,Ν). Στόχος: 5=<4,Ν=4. X=5,Υ=4,Μ=Ν Αποτυχία Απαντά false X=5,Υ=4,Μ=Ν Στόχος: 5>4,Ν=5. Στόχος: Ν=5. Απαντά: N=5 Περιµένει
  5. 5. Α. Θεωρία 1. Οπισθοδρόµηση 2. To κατηγόρηµα ! / 0 Το κατηγόρηµα ! / 0 (διαβάζεται cut) χρησιµοποιείται για τον έλεγχο της οπισθοδρόµησης: 5∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης οπισθοδρόµησης: Η εκτέλεση του επιτυγχάνει πάντα. Θέτει φραγµό στην οπισθοδρόµηση. Όταν συναντίεται κατά την οπισθοδρόµηση, αυτή σταµατά! Το χρησιµοποιούµε όταν γνωρίζουµε ότι εφόσον επιτυγχάνει ένας δρόµος υπολογισµού δεν πρέπει να γίνει οπισθοδρόµηση από το σηµείο χρήσης του ! και πριν. ∆ιορθώνουµε τον ορισµό του κατηγορήµατος max ως εξής:∆ιορθώνουµε τον ορισµό του κατηγορήµατος max ως εξής: max(X,Y,M):- X>Y,!, M=X. max(X,Y,M):- X=<Y, M=Y.
  6. 6. Α. Θεωρία 1. Οπισθοδρόµηση 2. To κατηγόρηµα ! / 0 Βλέπουµε εκ νέου την εκτέλεση των ερωτηµάτων 6∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης Στόχος: max(4,5,Ν). max(X,Y,M):- X>Y,!, M=X. max(X,Y,M):- X=<Y, M=Y. Στόχος: 4>5,!,Ν=4. X=4,Υ=5,Μ=Ν Αποτυχία X=4,Υ=5,Μ=Ν Στόχος: 4=<5,Ν=5. ?- max(4,5,N). N = 5. Στόχος: Ν=5. Απαντά: N=5 Στόχος: max(5,4,Ν). X=5,Υ=4,Μ=ΝX=5,Υ=4,Μ=Ν ?- max(5,4,N). N = 5.Στόχος: 5=<4,Ν=4. X=5,Υ=4,Μ=ΝX=5,Υ=4,Μ=Ν Στόχος: 5>4,!,Ν=5. Στόχος: Ν=5. Απαντά: N=5 Στόχος: !,Ν=5. ∆εν εξετάζεται
  7. 7. Α. Θεωρία 1. Οπισθοδρόµηση 2. To κατηγόρηµα ! / 0 Με χρήση του ! µπορούµε να έχουµε κοµψές αναπαραστάσεις στα προγράµµατα µας. 7∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης προγράµµατα µας. Στην ουσία προσοµοιώνουµε και το if-else Καλύτερες αναπαραστάσεις του ίδιου κατηγορήµατος: max(X,Y,M):- X>Y,!, M=X. max(X,Y,M):- max(X,Y,M):- X>Y,!, M=X. max(X,Y,M):- max(X,Y,Χ):- X>Y,!. max(X,Y,Υ). max(X,Y,M):- X=<Y, M=Y. max(X,Y,M):- M=Y. max(X,Y,Υ).
  8. 8. Α. Θεωρία 2. Βιαίος Τερµατισµός 1. To κατηγόρηµα fail / 0 Το κατηγόρηµα fail / 0 είναι το κατηγόρηµα της αποτυχίας: 8∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης Η εκτέλεση του αποτυγχάνει πάντα. (άρα εκκινά την οπισθοδρόµηση) Από µόνο του δεν κάνει και πολλά πράγµατα. Ωστόσο αν έχουµε ακολουθιακά τις δηλώσεις ! και έπειτα fail τερµατίζουµε στην ουσία επι τόπου το πρόγραµµα. Είναι χρήσιµο εργαλείο σε µεγάλες αναζητήσεις όταν καταλαβαίνουµε ότι πρέπει να τερµατίσουµε την εκτέλεση του προγράµµατος µε αρνητική απάντηση.
  9. 9. Β. Ασκήσεις Εφαρµογή 1 Έστω το παρακάτω πρόγραµµα Prolog: 9∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης first:- room(X), write(X), nl, fail. Σας δίνονται τα παρακάτω ερωτήµατα: (a1) first. (a2) second.fail. second:- room(X), !, write(X), nl, fail. third:- room(X), write(X), nl, !, fail. fourth:- !, room(X), write(X), (a2) second. (a3) third. (a4) fourth. (a5) fifth. Για κάθε ένα από τα παραπάνω ερωτήµατα αντιστοιχείστε µία από τις παρακάτω απαντήσεις: (1) (2) (3) (4) (5) a a b a a b a b write(X), nl, fail. fifth:- room(X), write(X), nl, fail, !. room(a). room(b). room(c). room(d). Γράψτε την απάντηση σε µορφή ζεύγους, π.χ. a3->2 No c d No No c d No c d No
  10. 10. Β. Ασκήσεις Εφαρµογή 1 10∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης
  11. 11. 11∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης Β. Ασκήσεις Εφαρµογή 2 (α) f(X,Y):- X<0,!, Y=0. (β) f(X,Y):- X<0,!, Y=0. f(_,0). (γ) f(X,Y):- X>=0, !, Y=0. f(_,1). (δ) f(X,Y):- X<0, !, Y=0. f(_,1). (ε) f(_,1). f(X,Y):- X<0, !, Y=0.
  12. 12. Β. Ασκήσεις Εφαρµογή 2 12∆ηµήτρης Ψούνης, ΠΛΗ31, Prolog, Μάθηµα 5: Έλεγχος Οπισθοδρόµησης

×