21
Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

  • 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

Page 1: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Page 2: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

• Δέντρο Υπολογισμού• Ταυτοποίηση (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}

Page 3: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

• Επεκτείνουμε τον ορισμό (και άλλους πιο κάτω) σε ατομικούς τύπους

• Παράδειγμα 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}

Page 4: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

• Ορισμός: Ένας όρος 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” αλλαγή μεταβλητών.

Page 5: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Αλγόριθμος Ταυτοποίησης• 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 Θ.

Page 6: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Παράδειγμα ταυτοποίησης• 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

Page 7: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Παράδειγμα ταυτοποίησης• Η Στοίβα τώρα είναι: {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}

Page 8: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Υπολογισμός Λογικών Προγραμμάτων

• Ο υπολογισμός γίνεται με συνδυασμό:– Ταυτοποίησης – 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)

Page 9: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Επίλυση (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

Page 10: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Παραδείγματα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))

Page 11: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Γενικές Προδιαγραφές Λογικών Προγραμμάτων

• Δεδ. Εισόδου: P – Λογικό Πρόγραμμα

Q – Ερώτηση

• Δεδ. Εξόδου: No ή (Yes με Θ)

Post-conditions: - Αν P ЭQ τότε i) Yes

και ii) P QΘ

- Αν P ЭQ τότε No

Page 12: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Αλγόριθμος (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.

Page 13: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Δέντρο Υπολογισμού – Χώρος Αναζήτησης

Ορισμός• Έστω P πρόγραμμα, Q ερώτηση και R

κανόνας επιλογής ατομικού στόχου. Ο χώρος όλων των δυνατών υπολογισμών της Q λέγεται ο χώρος αναζήτησης της Q στο πρόγραμμα P με κανόνα επιλογής R.

• Ο χώρος αναζήτησης αποτελεί ένα AND-OR δέντρο που λέγεται δέντρο υπολογισμού (επόμενη διαφάνεια).

Page 14: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Δέντρο Υπολογισμού

OR

ORAND

AND AND OR AND

ANDAND

Page 15: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Δέντρο Υπολογισμού

• Στρατηγικές Αναζήτησης στο δέντρο υπολογισμού– Depth first – κατά βάθος– Breadth first – κατά πλάτος– α*

Page 16: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

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

Page 17: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Δέντρο Υπολογισμού- Παράδειγμα• ? 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]

Page 18: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Δέντρο Υπολογισμού- Παράδειγμα• Κανόνας επιλογής: Άκρο αριστερό

?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]

.

.

.

Page 19: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

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.

Page 20: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Prolog

• Υπάρχουν δύο επιλογές στη γενική διαδικασία εκτέλεσης λογικών προγραμμάτων:– Επιλογή ατομικού στόχου στην ερώτηση– Επιλογή κανόνα από το πρόγραμμα

• Σε ένα πραγματικό μεταφραστή αυτές οι δύο επιλογές είναι συγκεκριμένες. Συνήθως στην Prolog:– Άκρως αριστερό– Με τη σειρά που έχουν γραφτεί στο πρόγραμμα

Page 21: Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού

Prolog• Η πρώτη επιλογή ορίζει το χώρο αναζήτησης. Δεν επηρεάζει την

ύπαρξη λύσης ή όχι για την ερώτηση • π.χ. P: p:-p,q

• Η δεύτερη επιλογή (του κανόνα από P) ορίζει τον τρόπο αναζήτησης στο δέντρο υπολογισμού. Μια επιλογή μπορεί να μη βρει λύσεις!

π.χ. P: p:-p,q p.

?p ?p

| |

?p, q ?p, q

| |

?p,q ■

| fail

.