Upload
otylia
View
47
Download
0
Embed Size (px)
DESCRIPTION
Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού. Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού. Δέντρο Υπολογισμού Ταυτοποίηση ( unification) Ορισμός: Μια κοινή περίπτωση δυο όρων t1 και t2 είναι ένας όρος t τ.ω. υπάρχουν αντικαταστάσεις θ1 και θ2 τ.ω.: t = t1 θ1 και t = t2 θ2 - PowerPoint PPT Presentation
Citation preview
Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού
Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού
• Δέντρο Υπολογισμού• Ταυτοποίηση (unification)
• Ορισμός: Μια κοινή περίπτωση δυο όρων t1 και t2 είναι ένας όρος t τ.ω. υπάρχουν αντικαταστάσεις θ1 και θ2 τ.ω.:
t = t1θ1 και t = t2θ2
Αντικατάσταση θ: Συνάρτηση από μεταβλητές σε όρους θ={Χ1/t1, …, Xn/tn} τ.ω.1) X1,…, Xn διαφορετικές2) Xi ≠ ti για κάθε i=1,…n
• Παράδειγμα 1:t1 = f (charles, X), t2 = f (Υ, harry)
t = f (charles, harry)θ1 = {Χ/harry}θ2 = {Y/charles}
Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού
• Επεκτείνουμε τον ορισμό (και άλλους πιο κάτω) σε ατομικούς τύπους
• Παράδειγμα 2:t1 = append ([1,2], List, [X, 2, Y])t2 = append ([Z,2], L, [1, U, 3])
κ.π: t = append ([1,2], List, [1, 2, 3])θ1 = {Χ/1, Υ/3} θ2 = {Ζ/1, L/List, U/2}
ή t = append ([1,2], [U/W], [1, 2, 3])ή t = append ([1,2], [3/W], [1, 2, 3])ή t = append ([1,2], [3], [1, 2, 3])…
• Ορισμός: Δυο όροι είναι ταυτόσημοι ανν έχουν κοινή περίπτωση. Μια αντικατάσταση που κάνει δυο όρους τους ίδιους λέγεται ταυτοποιητής,
- π.χ. Παρ. 2: Θ = {L/List, Z/1, X/1, U/2, Y/3}
Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού
• Ορισμός: Ένας όρος t1 είναι πιο γενικός από κάποιο άλλο όρο t2 ανν t2 είναι περίπτωση του t1 αλλά ο t1 δεν είναι περίπτωση του t2,
δηλ. Υπάρχει Θ τ.ω. T2 = t1Θ αλλά δεν υπάρχει Θ΄ τ.ω. T1=t2Θ΄
• Παράδειγμα 3:t1 = likes (mary, X) είναι πιο γενικός από t2 = likes (mary, john) …Είναι πιο γενικός και από t3 = likes (ann, john);;
• Ορισμός: Ο πιο γενικός ταυτοποιητής (m.g.u) δυο όρων είναι ο ταυτοποιητής τ.ω. η αντίστοιχη κοινή περίπτωση είναι η πιο γενική περίπτωση.
• Παράδειγμα 4:t1 = likes (Χ, Υ) και t2 = likes (mary, Z) => m.g.u.(t1, t2) = {X/mary. Y/Z}Ειδικός ταυτοποιητής: Θ = {Χ/mary, Y/bob, Z/bob} κτλ.
Πρόταση: Αν δυο όροι είναι ταυτόσημοι τότε υπάρχει μοναδικός m.g.u. – “modulo” αλλαγή μεταβλητών.
Αλγόριθμος Ταυτοποίησης• Pre: Δύο όροι τ1, τ2 • Post: Ο πιο γενικός ταυτοποιητής (mgu), Θ, των τ1, τ2 ή “failure”.• Θ = {}
Στοίβα = {τ1 = τ2} Failure = false
While Στοίβα not empty και no failure do pop x = y από τη Στοίβα case 1. x και y είναι η ίδια σταθερά η μεταβλητή: continue
2. x είναι μεταβλητή που δεν εμφανίζεται στο y: add x=y στο Θ και substitute y for x στη Στοίβα
3. y είναι μεταβλητή που δεν εμφανίζεται στο x: add y=x στο Θ και substitute x for y στη Στοίβα
4. x είναι f (τ1, ..., τn) και y είναι f (τ1, ..., τ n) για κάποιο σύμβολο f και n>0: push τi = τi, i=1, …, n on Στοίβα
5. otherwise: failure = true If Failure then output “failure” else output Θ.
Παράδειγμα ταυτοποίησης• t1 = append ([1, 2], List, [X, 2, Y]) και t2 = append ([Z, 2], L, [Z, 2, 3])
• Αρχικά, Στοίβα = {append ([1,2], List, [X, 2, Y]) = append ([Z,2], L, [Z, 2, 3])} Case 4: add στη Στοίβα [1, 2] = [Ζ, 2]
List = L[X, 2, Y] = [Z, 2, 3]
• pop [1, 2] = [Z, 2] από τη Στοίβα Case 4: add στη Στοίβα 1 = Z
2 = 2
• pop 1 = Z Case 3: add Z = 1 στο Θ
substitute όλες τις εμφανίσεις του Ζ στη στοίβα με 1.([Χ, 2, Υ] = [Ζ, 2, 3] => [Χ, 2, Υ] = [1, 2, 3])
• pop 2 = 2 Case 1: continue
Παράδειγμα ταυτοποίησης• Η Στοίβα τώρα είναι: {List = L, [X, 2, Y] = [1, 2, 3]}
• pop List = L Case 2 ή case 3. Έστω case 3: add L = List στο Θ and substitute …
• pop [X, 2, Y] = [1, 2, 3] Case 4: add στη Στοίβα X = 1
2 = 2 Υ = 3
• pop X = 1 Case 2: add X = 1 στο Θ and substitute …
• pop 2 = 2 Case 1: continue
• pop Y = 3Case 2: add Y = 3 στο Θ
• Αποτέλεσμα: Θ = {Ζ = 1, L = List, X = 1, Y = 3}
Υπολογισμός Λογικών Προγραμμάτων
• Ο υπολογισμός γίνεται με συνδυασμό:– Ταυτοποίησης – unification– Επίλυσης – resolution
• Παράδειγμα- Ταυτοποίηση με κεφαλή κανόνα
- Επίλυση
? p(a), r (X)
Χ΄= a
? q (a) , r (Χ)
? r (a) , r (Χ) ? s (Y) , r (Χ)
idX΄΄ = a
p (X) :- q (X)
q (X) :- r (X)
q (b) :- r (b)
q (a) :- s (X)
Επίλυση (Resolution)
• Ορισμός (Επίλυση στο Λ.Π.) Έστω Q μια ερώτηση και C ένας κανόνας στο πρόγραμμα:
– Q: ? G1, …, Gn (┐G1 ν,..., ν ┐Gn)– C: A:-B1,…, Bm (A ν ┐Β1 ν,... ,ν ┐Βm )
• H επίλυση της Q με τον κανόνα C ορίζεται ανν υπάρχει Gi τ.ω. Gi και Α είναι ταυτόσημοι (Η Q επιλύεται με τον κανόνα C στο Gi ).
• H επίλυση της Q με το C στο Gi είναι η ερώτηση?[G1, …, Gi-1, B1, …, Bm, Gi+1, …, Gn] Θ
όπου Θ είναι ο πιο γενικός ταυτοποιητής (m.g.u) του Gi και Α.
• Αν m=0 και n=1 (δηλ. G1 και Α) τότε η επίλυση είναι η κενή ερώτηση
ΑνΒ ┐ΒΑ
Α1ν...νΑnB1ν...νBmΑ1ν…νΑi-1 νΑi+1ν...νΑnνΒ1ν...Βj-1νBj+1ν...νΒm
Bj≡┐Ai
Παραδείγματα1) Q: ? p(a), q(b) C1:q(c)r(c)
C2:q(b)r(x)C3:q(X)r(X)
– Q δεν επιλύεται με τον C1 στο q(b)– Q επιλύεται με το C2 στο q(b): ?p(a), r(X)– Q επιλύεται με το C3 στο q(b): ?[p(a), r(X)] (X/b) δηλ. ?p(a), q(b)
2) Q: ?p(X) C: p(a)– H επίλυση είναι η κενή ερώτηση:
3) Q: ?p(a) C: p(f(X):-q(a)– Δεν επιλύεται
4) Q: ?p(X), r (X) C: p(f(a):-q(a)– Η επίλυση της Q με του C στο p(X): ?[q(a), r(X)] (X/f(a))
?q(a), r(f(a))
Γενικές Προδιαγραφές Λογικών Προγραμμάτων
• Δεδ. Εισόδου: P – Λογικό Πρόγραμμα
Q – Ερώτηση
• Δεδ. Εξόδου: No ή (Yes με Θ)
Post-conditions: - Αν P ЭQ τότε i) Yes
και ii) P QΘ
- Αν P ЭQ τότε No
Αλγόριθμος (SLD proof procedure)
• Ένας υπολογισμός (derivation) της Q στο πρόγραμμα P είναι μια σειρά από ερωτήσεις (στόχους – goals): Qo, Q1, …, Qi,… τ.ω.
– Qo ≡ Q – Για κάθε i ≥ 1, Qi+1 δημιουργείται από την Qi
επιλέγοντας κάποιο στόχο G από την Qi και Qi+1 είναι η επίλυση της Qi με κάποιο κανόνα C του προγράμματος P στο G:
• Αν Qn, n>0 είναι η κενή ερώτηση, τότε τερματίζουμε με επιτυχία: YES
• Αν ο επιλεγόμενος στόχος G δεν ταυτοποιείται με κανένα κανόνα του P: NO.
Δέντρο Υπολογισμού – Χώρος Αναζήτησης
Ορισμός• Έστω P πρόγραμμα, Q ερώτηση και R
κανόνας επιλογής ατομικού στόχου. Ο χώρος όλων των δυνατών υπολογισμών της Q λέγεται ο χώρος αναζήτησης της Q στο πρόγραμμα P με κανόνα επιλογής R.
• Ο χώρος αναζήτησης αποτελεί ένα AND-OR δέντρο που λέγεται δέντρο υπολογισμού (επόμενη διαφάνεια).
Δέντρο Υπολογισμού
OR
ORAND
AND AND OR AND
ANDAND
Δέντρο Υπολογισμού
• Στρατηγικές Αναζήτησης στο δέντρο υπολογισμού– Depth first – κατά βάθος– Breadth first – κατά πλάτος– α*
An Interpreter for Logic Programs(βλ. SLD αλγόριθμο)
• Input: A logic program P, a query Q• Output: Qθ (answer substitution) if Q is
provable from P, failure otherwise • Algorithm:
1. Initialize the “resolvent” R to be {Q}2. While R is nonempty do:
1. Choose a literal A from R2. Choose a (renamed) clause A’ B1, …, Bn from P3. Unify A and A’ with unifier θ
(if no clause can be found s.t. A and A’ unify, exit with failure)4. Remove A from R, add B1, …, Bn to R5. Apply θ to R and Q
3. If R is empty, output Q, else output failure
Δέντρο Υπολογισμού- Παράδειγμα• ? member (a, X), append ([a], [b], X)
Κανόνας επιλογής: Άκρο δεξιό?member (a, X), append ([a], [b], X)
X=[a/Xs]
?member (a, Xs), append ([ ], [b], Xs)
Xs=[b]
?member (a, [a,b])
?member (a, [b])
?member (a, []) Yes
X= [a,b]
Δέντρο Υπολογισμού- Παράδειγμα• Κανόνας επιλογής: Άκρο αριστερό
?member (a, X), append ([a], [b], X)
X=[a/Xs]
?member (a, Y5), append ([a], [b], [Y/Ys])
Xs=[b]
?append ([a], [b], [a|Xs])
X=[Y/Ys]
?append ([], [b], [Xs])
Yes
X= [a,b]
?append ([a], [b], [Y, a|Zs])
?append ([], [b], [a|Zs])
Ys=[a/Zs]
.
.
.
An Interpreter for Logic Programs(βλ. SLD αλγόριθμο)
• Steps 2.1 and 2.2 are nondeterministic• A given logic programming system fixes this by
providing two additional rules:– Computation rule: “which literal (2.1)”– Search rule: “which clause (2.2)”
• Choosing a different clause (step 2.2) can lead to different solutions (finding solutions in a different order).
• Several alternatives may have to be tried before obtaining one (or all) solutions.
Prolog
• Υπάρχουν δύο επιλογές στη γενική διαδικασία εκτέλεσης λογικών προγραμμάτων:– Επιλογή ατομικού στόχου στην ερώτηση– Επιλογή κανόνα από το πρόγραμμα
• Σε ένα πραγματικό μεταφραστή αυτές οι δύο επιλογές είναι συγκεκριμένες. Συνήθως στην Prolog:– Άκρως αριστερό– Με τη σειρά που έχουν γραφτεί στο πρόγραμμα
Prolog• Η πρώτη επιλογή ορίζει το χώρο αναζήτησης. Δεν επηρεάζει την
ύπαρξη λύσης ή όχι για την ερώτηση • π.χ. P: p:-p,q
• Η δεύτερη επιλογή (του κανόνα από P) ορίζει τον τρόπο αναζήτησης στο δέντρο υπολογισμού. Μια επιλογή μπορεί να μη βρει λύσεις!
π.χ. P: p:-p,q p.
?p ?p
| |
?p, q ?p, q
| |
?p,q ■
| fail
.