180 likes | 328 Views
Εργαστήριο μαθήματος «Τεχνολογία Γνώσης». Σαντιπαντάκης Γιώργος gsant@aegean.gr. Περιεχόμενα. Σύντομη εισαγωγή στη Prolog Βασικές αρχές προγραμματισμού σε Prolog Σταθερές, μεταβλητές και λογικοί τελεστές Γεγονότα και κανόνες. Εισαγωγή στη Prolog. Κατηγορηματική Λογική Πρώτης Τάξης.
E N D
Εργαστήριομαθήματος «Τεχνολογία Γνώσης» Σαντιπαντάκης Γιώργος gsant@aegean.gr
Περιεχόμενα • Σύντομη εισαγωγή στη Prolog • Βασικές αρχές προγραμματισμού σε Prolog • Σταθερές, μεταβλητές και λογικοί τελεστές • Γεγονότα και κανόνες
Εισαγωγή στη Prolog • Κατηγορηματική Λογική Πρώτης Τάξης Κάθε άνθρωπος είναι θνητός Ο Σωκράτης είναι άνθρωπος Ο Σωκράτης είναι θνητός Η γλώσσα προγραμματισμού PROLOG (PROgramminginLOGic) ακολουθεί μεθόδους της λογικής για την αναπαράσταση γνώσης και την επίλυση προβλημάτων, χρησιμοποιώντας για τον προγραμματισμό την απλή λογική. Ο προτασιακός λογισμός και ειδικότερα ένα υποσύνολό του οι προτάσεις Horn, αποτελούν τη βάση ανάπτυξης της PROLOG.
Εισαγωγή στη Prolog • Ο προγραμματισμός σε PROLOG διαφέρει από τις υπόλοιπες γλώσσες προγραμματισμού • δεν περιγράφουμε κάποιο αλγόριθμο (μια σειρά από διαδοχικά βήματα που επιλύουν κάποιο πρόβλημα) • Περιγράφουμε το ίδιο το πρόβλημα (τις σχέσεις που ισχύουν και τα δεδομένα) • Η εκτέλεση του προγράμματος διερευνά το αληθές των σχέσεων και την επίλυση του προβλήματος
Βασικές αρχές • Για την επίλυση ενός προβλήματος με τη βοήθεια ενός προγράμματος Prolog, θα πρέπει: • Να διατυπώσουμε τα γεγονότα που αφορούν τα αντικείμενα και τις σχέσεις τους • Να ορίσουμε κανόνες που διέπουν τα αντικείμενα και τις σχέσεις τους • Να διατυπώσουμε τα ερωτήματα που πρέπει να απαντηθούν από τη Prolog
Σταθερές (constants ή atoms) • Για τη Prolog, σταθερά θεωρείται κάθε αλφαριθμητικό που ξεκινά με μικρό γράμμα • my_computer • student001 • john (κλπ) • Κάθε αριθμός • 5, -10, 33.333, κλπ • Κάθε αλφαριθμητικό ανάμεσα σε «’»: • ‘Test’ • ‘hello world’
Μεταβλητές • Κάθε λέξη που ξεκινά με κεφαλαίο γράμμα, ή υπογράμμιση (underscore) • Person, • Student • X1 • _a001 (κλπ) • Οι μεταβλητές που ξεκινούν με υπογράμμιση λέγονται και «ανώνυμες μεταβλητές»
Λογικοί τελεστές • Για την κωδικοποίηση ενός προβλήματος λογικής, είναι απαραίτητοι οι λογικοί τελεστές: • «και» (and), συμβολίζεται στη Prolog «,» • «ή» (or), συμβολίζεται στη Prolog «;» • «άρνηση» (not), συμβολίζεται στη Prolog «\+»
Σύνθετα Αντικείμενα • περιγράφουν γεγονότα, π.χ. • father(john, helen). • part_of(greece, europe). • student(kostas). • fact001(event002, position(12,15)). • date(thursday,8,november,2012). • Η δήλωση κάθε γεγονότος ολοκληρώνεται με «.» • father(john, helen). όνομα (functor) ορίσματα (arguments)
Κανόνες • Οι λογικοί τελεστές χρησιμοποιούνται για τη σύνθεση κανόνων. Η γενική μορφή είναι: • H :- P1, P2;P3,… , Pn • Το σύμβολο «:-» χωρίζει τον κανόνα σε δύο μέρη: • τη κεφαλή (head) • το σώμα (body) • Η κεφαλή ενός κανόνα είναι αληθής, αν αποδεικνύεται ότι το σώμα είναι αληθές • Ένας κανόνας χωρίς κεφαλή, • :- P1, P2;P3,… , Pn • έχει την έννοια της «άμεσα εκτελέσιμης εντολής», δηλαδή θα εκτελεστεί κατά την ανάγνωση του προγράμματος από τη Prolog
Παράδειγμα • Γεγονότα: • mother(maria,john). • father(kostas,john). • Κανόνας: • pair(X,Y) :- mother(X,Z),father(Y,Z). • Ερωτήματα: • pair(maria,kostas)? pair(W,kostas)? pair(maria,Y)? • pair(kostas,maria)?
Παραδείγματα • Γεγονότα: • mother(maria,john). • father(kostas,john). • Κανόνας: • pair(X,Y) :- • mother(X,Z),father(Y,Z) ; mother(Y,Z),father(X,Z). • Ερωτήματα: • pair(kostas,maria)?
Παραδείγματα • Γεγονότα: • mother(maria,john). • father(kostas,john). • mother(sue,kostas). • father(peter,kostas). • Κανόνας: • parent(X,Y) :- • mother(X,Y); father(X,Y). • ancestor(X,Y) :- parent(X,Y). • ancestor(X,Y):-parent(X,Z),parent(Z,Y). • Ερωτήματα: • ancestor(X,kostas)? ancestor(sue,X)?
Ταίριασμα • Το ταίριασμα είναι μια ένα-προς-ένα αντιστοίχιση δύο όρων (π.χ. του όρου της ερώτησης και του γεγονότος) • Για να αντιστοιχισθούν δύο όροι, πρέπει: • να έχουν το ίδιο όνομα functor • και το ίδιο arity (πλήθος ορισμάτων). • Αυτό θα πρέπει να συμβαίνει και για κάθε ένα από τα oρίσματάτoυς.
Παραδείγματα • Γεγονός: • now(date(thursday,8,november,2012),time(20,15,00)). • Ερώτημα: • ?- now(Date,time(Hour,Minute,Second)). Date=date(thursday,8,november,2012) Hour=20 Minute=15 Second=00
Παραδείγματα • Γεγονός: • now(date(thursday,8,november,2012),time(20,15,00)). • Ερωτήματα: • ?- now(date(Day,8,november,2012),time(20,Min,Sec)). Day=thursday Min=15 Sec=00 • ?-now(date(Day,8,november,2012),time(Hour)). ??? • ?-now(date(Day,8,november,2012),time(Hour,_,_)). ???
Παραδείγματα • Γεγονότα: • value(5). • value(4+2). • Ερωτήματα: • ?-value(X). X=5 X=4+2 (οι πράξεις δεν γίνονται μόνες τους!) • ?-value(3+X). No • ?-value(4+X). X=2 • ?-value(3+2). No