1 / 61

Βάσεις Γνώσεων

Βάσεις Γνώσεων. Datalog Proof Theory – Evaluation Paradigms Πάνος Βασιλειάδης pvassil@cs.uoi.gr Απρίλης 200 3. www.cs.uoi.gr/~pvassil/courses/knowledge_bases/. Model vs. Proof Theory. Θυμηθείτε τη διαφορά :

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. ΒάσειςΓνώσεων Datalog Proof Theory – Evaluation Paradigms Πάνος Βασιλειάδης pvassil@cs.uoi.grΑπρίλης 2003 www.cs.uoi.gr/~pvassil/courses/knowledge_bases/

  2. Model vs. Proof Theory • Θυμηθείτε τη διαφορά: • Model theory & Interpretation: μια πρόταση είναι αληθής αν είναι true για κάθε πιθανό κόσμο • Proof theory: ... αν η πρόταση προκύπτει ως παραγωγή από ένα κανόνα και κάποια αξιώματα • Οι τεχνικές είναι ισοδύναμες

  3. Datalog Proof Theory • ΈστωR ένας κανόνας της μορφής L0:- L1,…,Ln, και F1,…,Fn μια λίστα από ground facts. Αν υπάρχει μια αντικατάσταση θτ.ώ. L1θ=F1,…, Lnθ=Fn, μπορούμε σε ένα βήμα να συνάγουμε το L0θ. • Μόλις περιγράψαμε ένα γενικό μηχανισμό παραγωγών, ανξάρτητο από τους εμπλεκόμενους κανόνες και γεγονότα, τον οποίο ονομάζουμε Στοιχειώδη Παραγωγή (Elementary Production – EP)

  4. Παράδειγμα Έστω R: p(X,Z) :- p(X,Y), p(Y,Z) και τα ground facts p(a,b) και p(b,c) Με την αντικατάσταση θ={X/a,Y/b,Z/c}μπορώ σε ένα βήμα να υπολογίσω τονέοfactp(a,c) Έστω R’: p(X,Y) :- p(Y,X) και το ground fact p(a,a) Με την αντικατάσταση θ={X/a,Y/a}μπορώ σε ένα βήμα να υπολογίσω τογνωστόfactp(a,a) και τίποτε άλλο!

  5. Αλγόριθμος • Υπάρχει αλγόριθμος που ελέγχει αν ο κανόνας ΕΡ μπορεί να εφαρμοστεί σε ένα Datalog rule και ένα σύνολο από ground facts. • Αν το ΕΡ εφαρμόζεται, ο αλγόριθμος επιστρέφει τα ground facts που παράγονται από τον ΕΡ. Αλλιώτικα, επιστρέφει το dummy  • Παραθέτουμε ξανά και τον MGU (για επανάληψη)

  6. Αλγόριθμος Produce(R,F1,…,Fn) INPUT: Datalog rule L0:-L1,…,Lnκαι μια λίστα από ground facts F1,…,Fn OUTPUT: τα ground facts που παράγονται από την εφαρμογή του EP αν ο ΕΡ εφαρμόζεται -- a dummy , αλλιώς BEGIN FOR i=0 TO n DO Ki Li ;//copy Li στο βοηθητικό Ki FOR i=1 TO n DO{ λ = MGU(Ki,Fi); IF λ =  THEN RETURN ; ELSE FOR j = 0 TO n DO Kj = Kjλ ; } RETURN K0 END

  7. Αλγόριθμος MGU(L,M) INPUT: literals L=ψ(t1,...,tn),M=ψ(t'1,...,t'n) OUTPUT: ο mgu θ αν τα L,M είναι unifiable, a dummy , αλλιώς BEGIN θ={} i=1; unifies=true; REPEAT IF tiθti'θ IF ti'θ is a variable θ  θ{ti'θ/tiθ} ELSEIF tiθ is a variable θ  θ{tiθ/ti'θ} ELSE unifies  false; i  i + 1; UNTIL i> n OR unifies = false; IF unifies RETURN θ, ELSE RETURN  END

  8. Παράδειγμα Έστω R: p(X,Z) :- p(X,Y), p(Y,Z)και τα ground facts p(a,b) και p(b,c), ήτοι, έχουμε ότι n = 2 L0: p(X,Z) L1: p(X,Y) L2:p(Y,Z) F1:p(a,b) F2:p(b,c) K0: p(X,Z) K1: p(X,Y) K2:p(Y,Z) i = 1, οπότε λ = MGU(K1,F1) που βγάζει λ = {Χ/a,Y/b} ΤότεK0: p(a,Z) K1: p(a,b) K2:p(b,Z) i = 2,οπότε λ = MGU(K2,F2) που βγάζει λ = {Z/c} ΤότεK0: p(a,c) K1: p(a,c) K2:p(b,c) Ο αλγόριθμος τότε σταματά (n=2) και επιστρέφει p(a,c)

  9. Η σειρά είναι σημαντική!!! • ΠΡΟΣΟΧΗ: η σειρά των facts στον αλγόριθμο PRODUCE είναι σημαντική!! • Αν αλλάξουμε τη σειρά, μπορεί να μη βγει το ίδιο αποτέλεσμα! • Προσέξτε ότι στον αλγόριθμο λέμε «λίστα» και όχι «σύνολο»

  10. Παράδειγμα Έστω R: p(X,Z) :- p(X,Y), p(Y,Z)και τα ground facts p(b,c) καιp(a,b), ήτοι, απλώς αλλάξαμε τη σειρά των ground facts L0: p(X,Z) L1: p(X,Y) L2:p(Y,Z) F1: p(b,c) F2: p(a,b) K0: p(X,Z) K1: p(X,Y) K2:p(Y,Z) i = 1, οπότε λ = MGU(K1,F1) που βγάζει λ = {Χ/b,Y/c} ΤότεK0: p(b,Z) K1: p(b,c) K2:p(c,Z) i = 2,οπότε λ = MGU(K2,F2) που βγάζει λ =  [διότι K2:p(c,Z) και F2: p(a,b)] Ο αλγόριθμος τότε σταματά (n=2) και επιστρέφει 

  11. 1ος Αλγόριθμος Παραγωγής • Υπάρχει απλός αλγόριθμος ο οποίος, δοθέντος ενός πεπερασμένου συνόλου Sαπό κανόνες και ground facts, παράγει όλα τα ground facts που μπορούν να παραχθούν σε ένα βήμααπό το S, εφαρμόζοντας τον κανόνα ΕΡ. • Ο αλγόριθμος, για κάθε κανόνα, ελέγχει αν κάθε δυνατός συνδυασμόςground facts μπορεί να κάνει match με τα literals του body του κανόνα αυτού.

  12. Αλγόριθμος Infer1(S) INPUT: ένα πεπερασμένο σύνολο S από rules και ground facts OUTPUT: όλα τα ground facts που παράγονται από την εφαρμογή του EP σε ένα βήμα BEGIN result  {} ; FOR each rule R: L0 :- L1,…,Ln of S DO FOR each possiblen-tuple <F1,…,Fn> of ground facts of S DO{ new  PRODUCE(R,F1,…,Fn); IF new  THEN result  result  {new}; } RETURN result END

  13. Παράδειγμα Έστω οι κανόνες R1: p(X,Z) :- p(X,Y), p(Y,Z), R2: p(X,Y) :- p(Y,X)και τα ground facts p(a,b), p(b,c), p(c,d), p(d,e) Με τον αλγόριθμο INFER1 μπορούμε, σε ένα βήμα να υπολογίσουμε τα εξής ground facts: p(a,c), p(b,d), p(c,e), p(b,a), p(c,b), p(d,c), p(e,d) από R1 από R2

  14. Παραγόμενα γεγονότα (inferred facts) • Έστω ότι το Sείναι ένα σύνολο από Datalog clauses (rules & facts). Τότε, ένα ground fact G, παράγεται (can be inferred) από το Sαν • το GS, ή • το G μπορεί να παραχθεί από το S, εφαρμόζοντας τον κανόνα ΕΡ για ένα πεπερασμένο αριθμό επαναλήψεων • Συμβολισμός: S├G

  15. Τυπικός Ορισμός • Η σχέση ├ για ένα σύνολο από Datalog clauses Sκαι ένα ground fact G, μπορεί να ορισθεί τυπικά: • S├G αν GS. • S├G αν υπάρχει ένας κανόνας R και ένα σύνολο από ground facts F1,…, Fn τ.ώ., i[1..n]S├Fiκαιτο G μπορεί να παραχθεί σε ένα βήμα από την εφαρμογή του ΕΡ στα R και F1,…, Fn • σε καμία άλλη περίπτωση δεν έχω S├G. • Η αναδρομή κρύβεται στην ύπαρξη των ground facts F1,…, Fn.

  16. Παράδειγμα • Έστω το σύνολο S από clauses με τους κανόνες R1: p(X,Z):- p(X,Y), p(Y,Z), R2: p(X,Y) :- p(Y,X)και τα ground facts p(a,b), p(b,c), p(c,d), p(d,e) • Αφού p(a,b)Sτότε S ├ p(a,b) • Αφού σε ένα βήμα μπορούμε να παράξουμε το p(b,a) από το R2και p(a,b), τότε S ├ p(b,a) • Από τα p(a,b) και p(b,a), και από το R1 μπορούμε να παράξουμε το p(a,a), οπότε S ├ p(a,a)

  17. Απόδειξη • Η ακολουθία διαδοχικών εφαρμογών του ΕΡ, την οποία ακολουθούμε για να παράξουμε ένα ground fact G, την ονομάζουμε απόδειξη (proof). • Κάθε απόδειξη μπορεί να αναπαρασταθεί από ένα δέντρο, αποκαλούμε δέντρο απόδειξης (proof tree). • Οι κόμβοι του δέντρου αναπαριστούν clauses και οι ακμές του δέντρου αναπαριστούν παραγωγές.

  18. Δέντρο Απόδειξης - Κόμβοι • Υπάρχουν δύο ειδών κόμβοι • Κάποιοι που αναπαριστούν τα clauses του αρχικού συνόλου S • Κάποιοι που αναπαριστούν τα ground facts που παράγονται από το S • Τα φύλλα του δέντρου είναι τα clauses (rules & facts) του S. • Το επόμενο επίπεδο (ακριβώς πάνω από τα φύλλα) είναι τα ground facts που παράγονται σε ένα βήμα από το S • Κάθε εσωτερικό επίπεδο περιέχει • κόμβους που αναπαριστούν ground facts που παράγονται σε ένα βήμα από τους κόμβους του αμέσως επόμενου (χαμηλότερου) επιπέδου, ή • κόπιες κόμβων από χαμηλότερα επίπεδα

  19. Δέντρο απόδειξης -- Ακμές • Κάθε παραγωγή είναι ένα σύνολο ακμών του δέντρου που συνδέει το παραγόμενο γεγονός με τα παράγωγα clauses του αμέσως επόμενου χαμηλότερου επιπέδου. • Επειδή πρόκειται για δέντρο, κάθε κόμβος ενός επιπέδου συνδέεται με ακριβώς ένα κόμβο του αμέσως ανώτερου επιπέδου => • Αν κάποιο clause εμπλακεί σε πολλές παραγωγές, απλά δημιουργούμε όσες κόπιες του χρειάζονται

  20. Παράδειγμα – Δείξτε το p(a,a) • Έστω το σύνολο S από clauses με τους κανόνες R1: p(X,Z):- p(X,Y), p(Y,Z), R2: p(X,Y) :- p(Y,X)και τα ground facts p(a,b), p(b,c), p(c,d), p(d,e) • Αφού p(a,b)Sτότε S ├ p(a,b) • Αφού σε ένα βήμα μπορούμε να παράξουμε το p(b,a) από το R2και p(a,b), τότε S ├ p(b,a) • Από τα p(a,b) και p(b,a), και από το R1 μπορούμε να παράξουμε το p(a,a), οπότε S ├ p(a,a)

  21. Proof Tree για το p(a,a) Κόπιες τουp(a,b) p(a,a) R1:p(X,Z):- p(X,Y), p(Y,Z) p(a,b) p(b,a) R2: p(X,Y) :- p(Y,X) p(a,b) Μέλη του S

  22. Θεώρημα • Ο κανόνας ΕΡ είναι πλήρης και συνεπής (sound and complete)ή • Για ένα σύνολο από Datalog clauses Sκαι ένα ground fact G, S├Gαν και μόνο αν S╞ G • ή ακόμα, αν cons(S)είναι όλα τα ground facts που συνάγονται λογικά από το S, τότε cons(S)={G|G ground fact και S├G} • Για πεπερασμένα σύνολα clauses (π.χ., το S) το cons(S) είναι πεπερασμένο και μπορεί να υπολογισθεί από τον παρακάτω αλγόριθμο

  23. Αλγόριθμος Infer(S) INPUT: ένα πεπερασμένο σύνολο S από rules και ground facts OUTPUT: όλα τα ground facts που παράγονται από την εφαρμογή του EP, ήτοι, το cons(S) [ΠΡΟΣΟΧΗ: όχι σε ένα βήμα, αλλά όλα] BEGIN old  {} ; new  S ; WHILE new  old DO { old  new ; new  new  INFER1(new); } RETURN all ground facts of new END

  24. Παράδειγμα Έστω οι κανόνες R1:p(X,Z) :- p(X,Y), p(Y,Z), R2: p(X,Y) :- p(Y,X)και τα ground facts p(a,b), p(b,c), p(c,d), p(d,e) new1 = S INFER1(S)=p(a,b), p(b,c),p(c,d), p(d,e), R1:p(X,Z) :- p(X,Y), p(Y,Z), R2: p(X,Y) :- p(Y,X),p(a,c), p(b,d), p(c,e), p(b,a), p(c,b), p(d,c), p(e,d), new2 = new1  INFER1(new1)=… new3 = new2  INFER1(new2)=… new4 = new3. //algorithm stops.

  25. Χαρακτηρισμοί υπολογιστικής μεθόδου • Bottom-up: ο αλγόριθμος INFER ξεκινά από τα φύλλα του δέντρου απόδειξης (τα ground facts του S) και χτίζει το δέντρο προς τα πάνω • Forward chaining: αν πούμε ότι α => β, ο INFER1 πρώτα υπολογίζει το α και μετά το β (ήτοι, κινείται εμπρόσθια – forward σε σχέση με την κατεύθυνση του βέλους της λογικής συνεπαγωγής).

  26. Inference Engine • Inference engine: αν υλοποιήσουμε τα προηγούμενα, έχουμε μια στοιχειώδη μηχανή παραγωγών. • Το αποτέλεσμα της εφαρμογής ενός προγράμματος Pσε μια EDBθα είναι τα IDB facts που προκύπτουν από το INFER(P  EDB).

  27. Backward Chaining • Έστω ένα πρόγραμμα Pκαι ένας goal (query, δηλ.) G: ? - p(t1,…,tn)όπου το pανήκει στα IDB predicates. Ποια ground instancesτουG ικανοποιούν το P  EDB? • Πολλοί τρόποι να απαντήσουμε την ερώτηση: • Βρες όλα τα cons(S) και απέρριψε ότι ΔΕΝ συνάγεται από το p(t1,…,tn) • Χρησιμοποίησε κάποια βελτιστοποιημένη bottom-up μέθοδο • Χρησιμοποίησε κάποια top-downμέθοδο

  28. Backward Chaining • Backward Chainingείναι μια top-downμέθοδος που σκοπό έχει να κατασκευάσει ένα proof tree, ξεκινώντας από μια ρίζα που αναπαριστά τον προς υπολογισμό goal G, και καταλήγοντας σε φύλλα που ανήκουν είτε στο P είτε στο EDB. • Υπενθυμίσεις: • Ύψος δέντρου: Αριθμός επιπέδων – 1 • Το proof tree στα φύλλα έχει τα clauses (rules & facts) τουP  EDB

  29. Backward Chaining • Θα περιγράψουμε μία μία τις έννοιες & τεχνικές • Θα δώσουμε παραδείγματα σε κάθε βήμα • Στο τέλος θα δώσουμε το γενικό αλγόριθμο • Παράδειγμα: Έστω η EDBμε τα ground facts p(a,b), p(b,c), p(c,d), p(d,e)και το πρόγραμμα Pμε τους κανόνες R1: p(X,Z):- p(X,Y), p(Y,Z), καιR2: p(X,Y) :- p(Y,X) • Στόχος: Υπολογίστε το goal ? – p(a,X)

  30. Backward Chaining • Ο σκοπός είναι να κατασκευάσουμε ένα proof tree, με ρίζα τον goal G, και φύλλα που ανήκουν είτε στο P είτε στο EDB. • Ξεκινάμε από τον goal G. Αν έχει instances που ανήκουν στο P  EDB, φτιάχνουμε ένα proof tree για κάθε ένα από αυτά, το οποίο έχει μοναδικό κόμβο τον εαυτό τους. • Το δέντρο έχει ύψος 0 και προφανώς περιέχει ένα υποσύνολο της απάντησης στον goal

  31. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,b) p(a,Χ) Το μόνο proof tree ύψους 0 που προκύπτει είναι αυτό με το instance του goal, p(a,b) [τα υπόλοιπα ground facts, προφανώς δεν υπάρχει αντικατάσταση που να τα κάνει instances του goal] Φτιάχνουμε ένα κόμβο με το goal. Ο κόμβος αποκαλείται και top goal

  32. Backward Chaining • Μετά τα proof trees ύψους 0, θα φτιάξουμε δέντρα ύψους 1. Η διαδικασία λέγεται επέκταση (expansion). • Διαλέγουμε ένα rule R: L0:- L1,…,Lkτέτοιον ώστε το Gκαι το L0να είναι unifiable (να υπάρχει θ=mgu(G, L0), δηλ.). • Προσθέτουμε k παιδιά L1θ,…,Lkθ στον κόμβο G. • Προσθέτουμε και ένα παιδί R στον κόμβο G. • Αυτό το κάνουμε για όλες τις δυνατές επιλογές κανόνων που έχουμε

  33. Backward Chaining • O κόμβος της ρίζας Gκαι τα παιδιά L1θ,…,Lkθ λέγονταιgoal-nodes • Ο κόμβοςR λέγεται rule identifier • Τα δέντρα που προκύπτουν ονομάζονται search trees • O κόμβος της ρίζας Gλέγεται top-goal • Οι υπόλοιποι κόμβοι λέγονται subgoals • Τα search trees ΔΕΝ είναι proof trees (στα δεύτερα, τα φύλλα ανήκουν στο P  EDB)!!!

  34. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,Χ) Τ1.1 R1:p(X’,Z):- p(X’,Y), p(Y,Z) ύψος α/α δέντρου p(a,Υ) p(Υ,Χ) 1η επιλογή: χρησιμοποιούμε τον κανόνα R1και βάζουμε 2 παιδιά στο p(a,X) καθώς και τον κόμβο του ίδιου του κανόνα.θ={X’/a, Z/X} ΠΡΟΣΟΧΗ: ΜΕΤΟΝΟΜAΣΑΜΕ ΤΗ ΜΕΤΑΒΛΗΤΗ Χ ΤΟΥ R1. H X ΣΤΟ SEARCH TREE ΕΊΝΑΙ PLACEHOLDER ΤΙΜΩΝΧ TOY R1 !!!!

  35. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,Χ) Τ1.2 R2: p(X’,Y):- p(Y,X’) p(X,a) 2η επιλογή: χρησιμοποιούμε τον κανόνα R2και βάζουμε 1 παιδί στο p(a,X) καθώς και τον κόμβο του ίδιου του κανόνα. θ={X’/a, Υ/X} ΠΡΟΣΟΧΗ: ΜΕΤΟΝΟΜAΣΑΜΕ ΤΗ ΜΕΤΑΒΛΗΤΗ Χ ΤΟΥ R2. H X ΣΤΟ SEARCH TREE ΕΊΝΑΙ PLACEHOLDER ΤΙΜΩΝΧ TOY R1 !!!!

  36. Backward Chaining • Στη συνέχεια, μετατρέπουμε τα search trees σε proof trees. • Ψάχνουμε για αντικαταστάσεις λ, τ.ώ., για όλα τα φύλλα, έστω Ci, το Ciλ να ανήκει στο P  EDB. • Αν βρούμε μια τέτοια λ, για κάθε goal-node κάνουμε την αντικατάσταση λ, και έχουμε το proof tree • Ο top goal κόμβος Gλ ανήκει στο αποτέλεσμα (απαντά το ? - G).

  37. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,Χ) Τ1.1 R1 p(a,Υ) p(Υ,Χ)

  38. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,c) Τ1.1 R1 p(a,b) p(b,c) G1.1 Για το Τ1.1 βρίσκουμε ότι λ={Y/b,X/c}κάνει όλα τα φύλλα να ανήκουν στο PEDB. Επιβάλουμε την αντικατάσταση σε όλα τα goal-nodes και το top node p(a,c) το βάζουμε στο αποτέλεσμα. Για το Τ1.2 δεν θα βρούμε σχετική αντικατάσταση.

  39. Backward Chaining • Ας υποθέσουμε ότι έχουμε υπολογίσει όλα τα search & proof trees ύψους i. • Για να βρούμε τα search trees ύψους i+1 επεκτείνουμε όπως και πριν τα αντίστοιχα search trees ύψους i. • Στη συνέχεια, μετατρέπουμε τα search trees ύψους i+1 στα αντίστοιχα proof trees

  40. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,Χ) Τ1.1 R1 p(a,Υ) p(Υ,Χ) T2.1 R2 p(X,Y)

  41. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,a) T2.1 R1 p(a,b) p(b,a) G2.1 Search to Proof Tree: λ={Υ/b,X/a} Result = Result p(a,a) R2 p(a,b)

  42. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,Χ) Τ1.2 R2 p(X,a) T2.2 R2 p(a,X)

  43. Backward Chaining EDB: p(a,b), p(b,c), p(c,d), p(d,e) P: R1: p(X,Z):- p(X,Y), p(Y,Z) R2: p(X,Y) :- p(Y,X) p(a,b) T2.2 R2 p(b,a) G2.2 Search to Proof Tree: λ={X/b} Result = Result p(a,b) ? Το p(a,b) ήδη ανήκει στο result… R2 p(a,b)

  44. Μερικοί Ορισμοί • nconst(P,EDB):ο αριθμός των διακριτών σταθερών συμβόλων που συναντάμε στο P  EDB • nconst(P): ο αριθμός των διακριτών predicate συμβόλων που συναντάμε στο P • maxgrads(P): το μέγιστο arity predicate συμβόλου που συναντάμε στο P • maxdepth(P,EDB): το μέγιστο βάθος δέντρου που χρειάζεται να παράξουμε για να σταματήσουμε το backward chaining maxdepth(P,EDB)=npreds(P)xnconst(P,EDB)maxgrads(P)

  45. Γενικός Αλγόριθμος BackwardChaining(P,EDB,G) INPUT: ένα πρόγραμμαP, μια EDBκαι ένας goal G: ?- p(t1,…,tn)όπου τοpανήκει στα IDB predicates. OUTPUT: τα ground instances του Gπου ικανοποιούν το P  EDB BEGIN result  {} ; Φτιάξε τα proof trees του G σε ύψος 0;//τα instances του G στοPEDB result  result  {top goals of proof trees}; FOR i=0 TO maxdepth(P,EDB){ expand search trees of depth i to depth i+1; transform these search trees in all possible ways to proof trees; result  result  {top goals of proof trees}; } RETURN result END

  46. Backward & Forward Chaining • Μπορεί κανείς να δείξει ότι το backward και το forward chaining είναι ισοδύναμα. • Ήτοι, παράγουν ακριβώς τα ίδια αποτελέσματα. • Με ελάχιστη τροποποίηση του παραπάνω αλγορίθμου, μπορούμε να παράγουμε, δηλ., όλα τα ground facts που συνάγονται από ένα πρόγραμμαP και μια EDB (όπως και στην περίπτωση του forward chaining, δηλ.)

  47. Εξειδικεύσεις του Backward Chaining • Ο αλγόριθμος που περιγράψαμε είναι ο πιο γενικός. Υπάρχουν διάφορες εξειδικεύσεις σε θέματα όπως • Τι δέντρα παραγωγών χρησιμοποιούνται ? • Αν η διάσχιση & παραγωγή των δέντρων γίνεται με BFS, DFS, κλπ • Ποια η συνθήκη τερματισμού? • Subtree factoring: η αποφυγή επανυπολογισμού δέντρων που έχουν ήδη υπολογισθεί

  48. SLD-refutation • Η SLD-refutation είναι μια ειδική περίπτωση top-down τεχνικής. • Η γενική ιδέα είναι ότι αν σου δώσω ένα goalG, έστω το ?- p(a,X), τότεαυτός αναπαριστά τη δήλωση Χp(a,X).Ο σκοπός της τεχνικής είναι να ανταποδείξει τον goal (να βγάλει το goal false), ήτοι, να βρει σταθερές α τ.ώ., PEDB╞p(a,α). • Κάθε τέτοια ανταπόδειξη λέγεται αναίρεση (refutation)του Gαπό το PEDB.

  49. SLD-refutation • “Linear Refutation with Selection Function for Definite Clauses” • Η γενική ιδέα είναι ότι κατασκευάζω ένα δέντρο με top-down τρόπο. • Ζωγραφίζω το δέντρο ανάποδα: • τα φύλλα που ζωγραφίζω στην κορυφή αναπαριστούν τον αρχικό goal που θέλω να ανταποδείξω • Η ρίζα που ζωγραφίζεται στον πάτο αναπαριστά μια λογική αντίφασητην οποία συμβολίζω με □

  50. SLD-refutation • Συνάρτηση Επιλογής (Selection function): ένα mapping, που δοθέντος ενός goal, επιστρέφει ένα από τα literals του • Συνήθως (π.χ., στην Prolog) αυτό είναι το πιο αριστερό στον ορισμό του goal • Άλλη εναλλακτική είναι αυτό που έχει μέσα τα πιο πολλά constants

More Related