Λογικός προγραμματισμός

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

Πληροφορικής και Τηλεπικοινωνιών

Έτος: 2015

Διδάσκων: Παναγιώτης Σταματόπουλος, Ιζαμπώ Καράλη

Περιγραφή Μαθήματος

Στις διαλέξεις του μαθήματος, αρχικά γίνεται μία σύντομη εισαγωγή στη φιλοσοφία του λογικού προγραμματισμού και στη συνέχεια παρουσιάζεται αναλυτικά η γλώσσα προγραμματισμού Prolog. Καλύπτονται θέματα που σχετίζονται με τη θεωρία του λογικού προγραμματισμού, τον λογικό προγραμματισμό με περιορισμούς, τις τεχνικές υλοποίησης συστημάτων λογικού προγραμματισμού και τον παράλληλο λογικό προγραμματισμό. Τέλος, συζητάται η χρήση του λογικού προγραμματισμού για την αναπαράσταση γνώσης, τα έμπειρα συστήματα, οι συμπερασματικές βάσεις δεδομένων και η εφαρμογή του λογικού προγραμματισμού σε θέματα που σχετίζονται με τον παγκόσμιο ιστό.

Video-Διαλέξεις

Διάλεξη 01: Εισαγωγή (2015-02-18)

Λίγα λόγια για το μάθημα. Γενικά στοιχεία, ενδιαφέροντες σύνδεσμοι. Εισαγωγή στην γλώσσα προγραμματισμού Prolog.

Διάλεξη 02: Κατηγορίες προβλημάτων που μπορούν να λυθούν με λογικό προγραμματισμό (2015-02-18)

Προβλήματα αναζήτησης: πρώτα κατά βάθος αναζήτηση. Προβλήματα ικανοποίησης περιορισμών. Προβλήματα συμβολικής παραγώγισης.

Διάλεξη 03: Απλό πρόγραμμα σε Prolog (2015-02-19)

Συνθετες ερωτήσεις, επέκταση προγράμματος.

Διάλεξη 04: Αναδρομικοί κανόνες (2015-02-25)

Ανακατατάξεις προτάσεων και στόχων, δένδρα αναπαράστασης.

Διάλεξη 05: Αλφάβητο της Prolog (2015-02-25)

Άτομα, αριθμοί, μεταβλητές, αναπαράσταση.

Διάλεξη 06: Δομή λίστας (2015-02-26)

Λίστες, παραδείγματα λιστών (απλές εώς σύνθετες), συνένωση λιστών, ενσωματωμένα κατηγορήματα.

Διάλεξη 07: Κατηγορήματα reverse και sublist (2015-03-04)

Τα κατηγόρημα reverse και sublist: παραδείγματα.

Διάλεξη 08: Αναδιάταξη λίστας (2015-03-04)

Συνέχεια στο παράδειγμα της sublist. Εισαγωγή στοιχείου στην αρχή της λίστας. Διαγραφή στοιχείου από τη λίστα.

Διάλεξη 09: Παράδειγμα της flatten (2015-03-05)

Παράδειγμα της flatten στην ECLIPSE.

Διάλεξη 10: Τελεστές (2015-03-05)

Προτεραιότητα ορίσματος, προσεταιριστικότητα (associativity). Μερικοί προκαθορισμένοι τελεστές. Παραδείγματα από παλιά θέματα.

Διάλεξη 11: Μήκος λίστας (2015-03-11)

Το κατηγόρημα length.

Διάλεξη 12: Και άλλα κατηγορήματα αριθμητικής (2015-03-11)

Παραδείγματα κατηγορημάτων: max, maxlist, ordered, subsum, between. Μερικά εσωματωμένα κατηγορήματα.

Διάλεξη 13: Άρνηση στην Prolog (2015-03-12)

Εισαγωγή, παραδείγματα.

Διάλεξη 14: Ανασκόπηση: ενσωματωμένα κατηγορήματα (2015-03-18)

Το κατηγόρημα name. Kατηγορήματα ελέγχου τύπων, χειρισμού όρων, χειρισμού προγράμματος.

Διάλεξη 15: Το πρόβλημα των 8 βασιλισσών (2015-03-18)

Λύση του προβλήματος. Προγραμματισμός με περιορισμούς. 2ος και 3ος τρόπος επίλυσης του προβλήματος.

Διάλεξη 16: Το πρόβλημα των N βασιλισσών (2015-03-26)

Γενίκευση για Ν βασίλισσες. Επίλυση με την ECLPSE.

Διάλεξη 17: Κρυπταριθμητικοί γρίφοι (2015-04-01)

Συνέχεια στα παραδείγματα προγραμματισμού με περιορισμούς.

Διάλεξη 18: Πρόβλημα βελτιστοποίησης (2015-04-01)

Επίλυση με δύο τρόπους.

Διάλεξη 19: Θεωρία λογικού προγραμματισμού (2015-04-02)

Ορισμός όρου (term), ορισμός ατομικού τύπου (atomic formula) ή ατόμου (atom), ορισμός καλοσχηματισμένου τύπου (well-formed formula) ή τύπου, κλειστός τύπος (closed formula). Προτάσεις, σύνταξη και σημασιολογία (syntax and semantics). Σύμπαν Herbrand, Μοντελοθεωρητική σημασιολογία.

Διάλεξη 20: Περίπτωση τύπων οι οποίοι είναι προτάσεις (2015-04-22)

Σημασιολογία σταθερού σημείου, απεικόνιση σε ένα σύνολο. Παραδείγματα: επίλυση παλαιών θεμάτων.

Διάλεξη 21: Λειτουργική σημασιολογία (2015-04-23)

Στιγμιότυπο (instance), Παραλλαγή (variant), Σύνθεση (composition) αντικαταστάσεων, Ενοποίηση (unification).

Διάλεξη 22: Παράδειγμα ενοποίησης (2015-04-23)

Κανόνας συμπερασμού της SLD-ανάλυσης.

Διάλεξη 23: Έμπειρα συστήματα και λογικός προγραμματισμός (2015-04-30)

Μεθοδολογία αναπαράστασης της γνώσης. Ένα πρόβλημα διάγνωσης. Οπίσθια συλλογιστική με απλή Prolog. Αρχιτεκτονική των εμπείρων συστημάτων και δομικά στοιχεία. If-then κανόνες.

Διάλεξη 24: Εμπρόσθια συλλογιστική σε μέτα-επίπεδο με απλή Prolog (2015-04-30)

Παραδείγματα

Διάλεξη 25: Ανακεφαλαίωση προηγούμενου μαθήματος (2015-05-06)

Λογικός προγραμματισμός για την αναπαράσταση γνώσης, έμπειρα συστήματα. Παροχή εξηγήσεων, πως αποδείχθηκε κάτι.

Διάλεξη 26: Χειρισμός αβέβαιης πληροφορίας (2015-05-06)

Εισαγωγή ποσοτικού μέτρου βεβαιότητας σε γεγονότα και if-then κανόνες. Επέκταση του μέτα-διερμηνέα για οπίσθια συλλογιστική.

Διάλεξη 27: Αναπαράσταση γνώσης και συλλογιστική (2015-05-07)

Αναπαράσταση Γνώσης μέσω Σημασιολογικών Δικτύων. Κληρονόμηση ιδιοτήτων σε σημασιολογικά δίκτυα: στοιχειώδης προσέγγιση.

Διάλεξη 28: Κληρονόμηση ιδιοτήτων σε σημασιολογικά δίκτυα: στοιχειώδης προσέγγιση, γενικευμένη προσέγγιση (2015-05-07)

Κώδικας, παραδείγματα ερωτημάτων, πλαίσια.

Διάλεξη 29: Απλός υπολογισμός των τιμών των σχισμών (2015-05-14)

Υπολογισμός των τιμών των σχισμών καλύπτοντας και την περίπτωση των διαδικασιών.

Διάλεξη 30: Εισαγωγή στις επαγωγικές βάσεις βάσεις δεδομένων - datalog (2015-05-14)

Δεδομένα (απλά ή σύνθετα) VS γνώση, σύνταξη προγραμμάτων datalog. Προτάσεις datalog, κατηγορήματα IDB – κατηγορήματα EDB, παραδείγματα.

Διάλεξη 31: Υλοποίηση συστημάτων λογικού προγραμματισμού (2015-05-20)

Διερμηνέας, μεταγλωτιστής. Αναπαράσταση στην περιοχή προγράμματος των προτάσεων. Εισαγωγή στον παράλληλο λογικό προγραμματισμό.

Διάλεξη 32: Δυαδικά δένδρα (2015-05-20)

Στοιχείο μέλος ενός δυαδικού δέντρου, δυαδικό λεξικό.

Διάλεξη 33: Επαγωγικές βάσεις βάσεις δεδομένων - datalog (2015-05-21)

Σημασιολογία των προγραμμάτων datalog. Παραδείγματα. Επεκτάσεις της datalog.

Διάλεξη 34: Semantic web (2015-05-21)

Semantic web, αναπαράσταση γνώσης, τεχνολογίες και ο λογικός προγραμματισμός.

Διάλεξη 35: Εισαγωγή κόμβου (2015-05-27)

Εισαγωγή και διαγραφή κόμβων σε δυαδικό λεξικό, διαγραφή κόμβου από φύλλο, διαγραφή κόμβου από οπουδήποτε. Εισαγωγή κόμβου στη ρίζα. Εισαγωγή κόμβου οπουδήποτε (μη ντετερμινιστικά).

Διάλεξη 36: Γράφοι (2015-05-27)

Αναπαραστάσεις γράφων, αναπαραστάσεις κατευθυνόμενων γράφων (με κόστος ακμών). Εύρεση μονοπατιού σε γράφο, εύρεση μονοπατιού Hamilton (μονοπάτι χωρίς κύκλους που περιλαμβάνει όλους τους κόμβους του γράφου).

Διάλεξη 37: Εύρεση μονοπατιού με κόστος (2015-05-28)

Συνέσεια στους γράφους. Εύρεση μονοπατιού ελαχίστου κόστους από node1 σε node2. Παραδείγματα.

Διάλεξη 38: Επίλυση παλαιών θεμάτων (2015-05-28)

Μεταβλητές, κατηγορήματα επεξεργασίας λιστών, άρνηση, προγραμματισμός με περιορισμούς.