1 / 21

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

Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού. Υπολογιστικό Μοντέλο Λογικού Προγραμματισμού. Δέντρο Υπολογισμού Ταυτοποίηση ( unification) Ορισμός: Μια κοινή περίπτωση δυο όρων t1 και t2 είναι ένας όρος t τ.ω. υπάρχουν αντικαταστάσεις θ1 και θ2 τ.ω.: t = t1 θ1 και t = t2 θ2

otylia
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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}

  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}

  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” αλλαγή μεταβλητών.

  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 στο Θ και substitutey for x στη Στοίβα 3. y είναι μεταβλητή που δεν εμφανίζεται στο x: add y=x στο Θ και substitutex 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 Θ.

  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

  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 = 3 Case 2: add Y = 3 στο Θ • Αποτέλεσμα: Θ = {Ζ = 1, L = List, X = 1, Y = 3}

  8. Υπολογισμός Λογικών Προγραμμάτων • Ο υπολογισμός γίνεται με συνδυασμό: • Ταυτοποίησης – unification • Επίλυσης – resolution • Παράδειγμα p (X) :- q (X) q (X) :- r (X) q (b) :- r (b) q (a) :- s (X) ? p(a), r (X) - Ταυτοποίηση με κεφαλή κανόνα - Επίλυση Χ΄= a ? q (a) , r (Χ) X΄΄= a id ? r (a) , r (Χ) ? s (Y) , r (Χ)

  9. Επίλυση (Resolution) ΑνΒ ┐Β Α Α1ν...νΑn B1ν...νBm Α1ν…νΑi-1 νΑi+1ν...νΑnνΒ1ν...Βj-1νBj+1ν...νΒm Bj≡┐Ai • Ορισμός (Επίλυση στο Λ.Π.) Έστω 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 και Α) τότε η επίλυση είναι η κενή ερώτηση

  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))

  11. Γενικές Προδιαγραφές Λογικών Προγραμμάτων • Δεδ. Εισόδου:P – Λογικό Πρόγραμμα Q – Ερώτηση • Δεδ. Εξόδου:No ή (Yes με Θ) Post-conditions:- Αν P ЭQ τότε i) Yes και ii) P QΘ - Αν P ЭQ τότε No

  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.

  13. Δέντρο Υπολογισμού – Χώρος Αναζήτησης Ορισμός • Έστω P πρόγραμμα, Q ερώτηση και R κανόνας επιλογής ατομικού στόχου. Ο χώρος όλων των δυνατών υπολογισμών της Q λέγεται ο χώρος αναζήτησης της Q στο πρόγραμμα P με κανόνα επιλογής R. • Ο χώρος αναζήτησης αποτελεί ένα AND-OR δέντρο που λέγεται δέντρο υπολογισμού (επόμενη διαφάνεια).

  14. Δέντρο Υπολογισμού OR AND AND AND OR AND OR AND AND

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

  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: • Initialize the “resolvent” R to be {Q} • While R is nonempty do: • Choose a literal A from R • Choose a (renamed) clause A’  B1, …, Bn from P • Unify A and A’ with unifier θ (if no clause can be found s.t. A and A’ unify, exit with failure) • Remove A from R, add B1, …, Bn to R • Apply θ to R and Q • If R is empty, output Q, else output failure

  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]) Yes X= [a,b] ?member (a, [])

  18. Δέντρο Υπολογισμού- Παράδειγμα • Κανόνας επιλογής: Άκρο αριστερό ?member (a, X), append ([a], [b], X) X=[Y/Ys] X=[a/Xs] ?append ([a], [b], [a|Xs]) ?member (a, Y5), append ([a], [b], [Y/Ys]) Ys=[a/Zs] ?append ([], [b], [Xs]) ?append ([a], [b], [Y, a|Zs]) Xs=[b] ?append ([], [b], [a|Zs]) . . . Yes X= [a,b]

  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.

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

  21. Prolog • Η πρώτη επιλογή ορίζει το χώρο αναζήτησης.Δεν επηρεάζει την ύπαρξη λύσης ή όχι για την ερώτηση • π.χ. P: p:-p,q • Η δεύτερη επιλογή (του κανόνα από P) ορίζει τον τρόπο αναζήτησης στο δέντρο υπολογισμού. Μια επιλογή μπορεί να μη βρει λύσεις! π.χ. P: p:-p,q p. ?p ?p | | ?p, q ?p, q | | ?p,q ■ | fail .

More Related