Εργαστήριο μαθήματος «Τεχνολογία Γνώσης» Σαντιπαντάκης Γιώργος
Βιβλιογραφία • PROγραμματίζοντας στη LOGική, Μ. Κατζουράκη, Μ. Γεργατσούλης, Σ. Κόκκοτος, Ελληνική Εταιρία Επιστημόνων Η/Υ και Πληροφορικής, Αθήνα 1991 • Prolog : Programming for Artificial Intelligence, Ivan Bratko, Addison-Wesley Ltd. • The Art of Prolog, E. Shapiro and L. Sterling, MIT Press
Οδηγίες εγκατάστασης • Η SWI-prolog είναι διαθέσιμη (δωρεάν) στο – • Αφού ολοκληρωθεί η λήψη του αρχείου, κάνετε διπλό κλικ στο εκτελέσιμο για την έναρξη εγκατάστασης
Εγκατάσταση
Το περιβάλλον της Prolog
Προτιμήστε γραμματοσειρά Courier ή Consolas
Το περιβάλλον εργασίας Prolog • Χρησιμοποιούμε οποιοδήποτε επεξεργαστή απλού κειμένου – π.χ. notepad (Windows) – notepad2 ( ) – nano, kate (Unix, Linux) • Στο αρχείο καταγράφουμε τα γεγονότα και τους κανόνες του προβλήματος που θέλουμε να λύσουμε. • Μπορούμε να επαναχρησιμοποιήσουμε σε κάποιο αρχείο file1.pl γεγονότα και κανόνες που βρίσκονται σε άλλο αρχείο, π.χ. file2.pl, αν στο αρχείο file1.pl γράψουμε: :-consult(‘file2.pl’). • Σχόλια στο αρχείο θεωρούνται γραμμές που ξεκινούν με «%» ή βρίσκονται μεταξύ «/*» και «*/».
Χρήσιμες εντολές • Άνοιγμα αρχείου filename.pl: ?- consult(‘filename.pl’). • Άνοιγμα βοήθειας Prolog: ?- help. • Άνοιγμα παραθύρου γραμμής εντολών: ?- shell. (επιστρέφετε στη Prolog γράφοντας exit). • Εμφάνιση ιστορικού προηγούμενων εντολών πατώντας τα «arrow keys» (πάνω ή κάτω) • Εμφάνιση του προγράμματος που βρίσκεται στη μνήμη: ?- listing. • Τερματισμός λειτουργίας: ?- halt.
Άνοιγμα αρχείου • Από το μενού «File | Consult» και επιλέγουμε το αρχείο ή • γράφοντας στο prompt • consult(‘ ’). ή • [‘<όνομα του αρχείου’]. • Για την εκκίνηση πολλών αρχείων με μια εντολή γράφετε: • ?- [file1, file2, file3, …, filen]. • Χρησιμοποιείτε «’» αν η επέκταση του αρχείου είναι διαφορετική του.pl και πρέπει να συμπεριληφθεί στο όνομα του αρχείου, π.χ. ?- [‘myFile.type’]. Διαφορετικά, το ?- [file1]. και το ?- [‘file1.pl’]. έχουν το ίδιο αποτέλεσμα.
Δίκτυο Πόλεων edge(1,2). edge(1,3). edge(2,4). edge(3,4). path(X,Y):- edge(X,Y). path(X,Y):- edge(X,Z),edge(Z,Y).
Δίκτυο Πόλεων (με κόστος) edge(1,2,50). edge(1,3,20). edge(2,4,30). edge(3,4,40). path(X, Y, Cost):- edge(X, Y, Cost). path(X, Y, Cost):- edge(X, Z, C1), edge(Z, Y, C2), Cost is C1+C2.
Είδη ισότητας • Η Prolog διαθέτει 4 σύμβολα ισότητας, κάθε ένα με διαφορετική χρησιμότητα: – Το = (ελέγχει αν δύο όροι είναι ίδιοι ή μπορούν να ταιριάξουν) • ?- 5=5. • ?- word = word. • ?- X = 5. • ?- 4 = X. (δεν έχει «φορά») • ?- X = Y. • ?- hello = X. • ?- X = ‘this is a test’. • ?- X = (δεν κάνει υπολογισμούς)
Είδη ισότητας • Το «is» αντίθετα κάνει υπολογισμούς στο δεύτερο μέρος της παράστασης και καταχωρεί (ή ταιριάζει) το πρώτο: – ?- X is 3+2. (επιστρέφει X=5) – ?- 5 is 3+2. (επιστρέφει true) – ?- 3+2 is X. (εμφανίζει σφάλμα – γιατί; ) – ?- 3+2 is 5. (επιστρέφει false – γιατί; ) – ?- X is 5, X is X+1. (επιστρέφει false, γιατί; ) – ?- word is word. (επιστρέφει false) – ?- word(X) is word(a). (εμφανίζει σφάλμα – γιατί; )
Είδη ισότητας • Το =:= εκτελεί τους υπολογισμούς και στα δύο μέλη της παράστασης και συγκρίνει τα αποτελέσματα: – ?- 5 =:= 3+2. – ?- 3+2 =:= 2+3. – ?- word =:= word. (δεν κάνει ταίριασμα) – ?- X =:= 3+2. (δεν κάνει καταχώρηση) – ?- word =:= word. (συγκρίνει μόνο αριθμητικές παραστάσεις)
Είδη ισότητας • Τέλος, το == κάνει έλεγχο ισότητας – ?- 5==5. – ?- word ==word. – ?- X==X. – ?- X==Y. (επιστρέφει false – γιατί; )