Υπολογιστική Λογική και Λογικός Προγραμματισμός

Βασιλειάδης Νικόλαoς

Περιγραφή

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

 

CC - Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή
Διδάσκοντες

Διδάσκων: Νικόλαος Βασιλειάδης, Αναπληρωτής Καθηγητής

 

Συνεργάτης ανάπτυξης περιεχομένου: Εμμανουήλ Ρήγας

Μαθησιακοί στόχοι

Γνώσεις: Εξοικείωση με τις αρχές της Μαθηματικής Λογικής, Εξοικείωση με την χρήση της Μαθηματικής Λογικής ως Γλώσσας Προγραμματισμού, Κατάρτιση στην Γλώσσα Προγραμματισμού Prolog.

 

Δεξιότητες: Απόκτηση ικανότητας αναπαράστασης και επίλυσης λογικών εκφράσεων. Απόκτηση ικανότητας προγραμματισμού με την Γλώσσα Προγραμματισμού Prolog.

Προαπαιτούμενα

Απαραίτητες: Βασικές Γνώσεις Προγραμματισμού, Βασικές Γνώσεις Διακριτών Μαθηματικών, Βασικές Γνώσεις Δομών Δεδομένων. Επιθυμητές: Βασικές Γνώσεις Τεχνητής Νοημοσύνης.

Βιβλιογραφία
  • PROγραμματίζοντας στη LOGική, Μ. Κατζουράκη, Μ. Γεργατσούλης, Σ. Κόκκοτος, Ελληνική Εταιρία Επιστημόνων Η/Υ και Πληροφορικής, Αθήνα 1991.
    ή
    Prolog: Προγραμματισμός σε Λογική για Τεχνητή Νοημοσύνη, Μανώλης Μαρακάκης, Εκδόσεις Νέων Τεχνολογιών, ISBN 978-960-6759-98-7, Αθήνα 2014.
  • Σημειώσεις-Διαφάνειες διδάσκοντος για το μάθημα.
  • Πολυμεσικός οδηγός εκμάθησης Prolog.
  • Programming in Prolog, W. Clocksin, C. Mellish, Springer-Verlag.
  • Prolog Programming for Artificial Intelligence, Ivan Bratko, Addison-Wesley, (2nd or 3rd ed.).

 

Επιπλέον συνιστώμενη βιβλιογραφία:

  1. PROγραμματίζοντας στη LOGική, Μ. Κατζουράκη, Μ. Γεργατσούλης, Σ. Κόκκοτος, Ελληνική Εταιρία Επιστημόνων Η/Υ και Πληροφορικής, Αθήνα 1991. (βασικές γνώσεις της γλώσσας Prolog)
  2. Prolog: Προγραμματισμός σε Λογική για Τεχνητή Νοημοσύνη, Μανώλης Μαρακάκης, Εκδόσεις Νέων Τεχνολογιών, ISBN 978-960-6759-98-7, Αθήνα 2014. (βασικές γνώσεις της γλώσσας Prolog)
  3. Σημειώσεις-Διαφάνειες διδάσκοντος για το μάθημα. (βασικές γνώσεις της γλώσσας Prolog- animatedπαραδείγματα εκτέλεσης)
  4. Πολυμεσικός οδηγός εκμάθησης Prolog. (βασικές γνώσεις της γλώσσας Prologanimatedπαραδείγματα εκτέλεσης)
  5. Programming in Prolog, W. Clocksin, C. Mellish, Springer-Verlag. (βασικές γνώσεις της γλώσσας Prolog – χρήσιμα παραδείγματα)
  6. Prolog Programming for Artificial Intelligence, Ivan Bratko, Addison-Wesley, (2nd or 3rd ed.). (βασικές γνώσεις της γλώσσας Prolog, προχωρημένα θέματα,προγραμματισμός εφαρμογών Τεχνητής Νοημοσύνης)
  7. The Art of Prolog, second edition : Advanced Programming Techniques, Leon S. Sterling and Ehud Y. Shapiro, MIT Press, 1994. (πολύ προχωρημένα θέματα προγραμματισμού εφαρμογών Τεχνητής Νοημοσύνης)

 

Ενότητες

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

 

Λέξεις κλειδιά: λογική, μαθηματική λογική, υπολογιστική λογική, τυπικό σύστημα, μαθηματική απόδειξη, λογικός προγραμματισμός, δηλωτικός προγραμματισμός, Prolog.

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

 

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

Η ενότητα αυτή παρουσιάζει λεπτομερώς τους λόγους για τους οποίους είναι αναγκαία η επέκταση της προτασιακής λογικής στην κατηγορηματική κατηγορηματικής λογική. Γίνεται εκτενής παρουσίαση του συντακτικού, της σημασιολογίας και της συλλογιστικής της κατηγορηματικής λογικής, συγκρίνοντάς την με την προτασιακή, και παρατίθενται σχετικά παραδείγματα και ασκήσεις.

 

Λέξεις κλειδιά:κατηγορηματική λογική, μεταβλητή, όρος, ατομικός τύπος, συναρτησιακός όρος, ποσοδείκτης, υπαρξιακός ποσοδείκτης, καθολικός ποσοδείκτης, αντικατάσταση, ενοποίηση, ισοδύναμοι τύποι, προσημασμένη κανονική μορφή, Προτασιακή Μορφή της Κατηγορηματικής Λογικής, Κανονική Μορφή κατά Skolem, Κανόνες Συμπερασμού, αρχή της ανάλυσης, μορφή Kowalski, Προτάσεις Horn.

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

 

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

 

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

 

Λέξεις κλειδιά:σύνθετος όρος, αναδρομικός όρος, λίστα, κεφαλή, ουρά, ταυτοποίηση λιστών, χειρισμός λιστών, τελευταίο στοιχείο λίστας (last/2), τερματικός κανόνας, έλεγχος συμπερίληψης σε λίστα (member/2), συνένωση λιστών (append/3), υπολίστες (sublist/2), αναστροφή λιστών (reverse/2). 

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

 

Λέξεις κλειδιά:ενσωματωμένα κατηγορήματα, ενοποίηση όρων, σύγκριση όρων, μαθηματικές εκφράσεις και συναρτήσεις, κατηγόρημα is/2,αριθμητικές διαδικασίες, βελτιστοποίηση ουραίας κλήσης, Αριθμητικές Διαδικασίες και Λίστες, διαδικασίες εισόδου-εξόδου, Χειρισμός Συμβολοσειρών.

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

 

Λέξεις κλειδιά: έλεγχος τύπου δεδομένων, σύνθεση/διάσπαση σύνθετου όρου,  κατηγόρημα =../2, Κατηγόρημα functor/3, Κατηγόρημα arg/3,  μεταβλητή κλήση, σύνθετοι όροι και ατομικοί τύποι, Μετα-προγραμματισμός, Προσθαφαίρεση προτάσεων, κατηγόρημα assert/1, κατηγόρημα retract/1,  διαχείριση συνόλου λύσεων, κατηγόρημα findall/3, κατηγόρημα bagof/3, κατηγόρημα setof/3.

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

 

Λέξεις κλειδιά: αποκοπή, Επίπτωση Αποκοπής στο Δένδρο Εκτέλεσης, Χρήσεις Αποκοπής, Παράλειψη άσκοπων ελέγχων, Τερματισμός παραγωγής εναλλακτικών λύσεων, εξαναγκασμός σε αποτυχία, άρνηση αποτυχία, δομές ελέγχου, είδη αποκοπής, επανάληψη μέσω οπισθοδρόμησης, κατηγόρημα repeat/0, κατηγόρημα fail/0.

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

 

Λέξεις κλειδιά:ταξινόμηση λίστας, επιπεδοποίηση λίστας, αντιμετάθεση πίνακα, δυαδικά δένδρα, πρόβλημα λαβυρίνθου, βέλτιστη λύση.

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

 

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

Ανοικτό Ακαδ. Μάθημα

Ανοικτά Ακαδημαϊκά Μαθήματα
Επίπεδο: A-

Αρ. Επισκέψεων :  5975
Αρ. Προβολών :  32524