PROLOG Εισαγωγή (PROgramming in LOGic)

Σχετικά έγγραφα
(Imperative Programming) Pascal, C, Ada, Pazcal. (Functional Programming) Prolog (Logic Programming) (object-oriented programming) Java, C#

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Γλώσσες & Τεχνικές 4 ο Εξάμηνο. - Ενότητα 2 - Δημοσθένης Σταμάτης Τμήμα Πληροφορικής

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

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

ΕΠΛ 434: Λογικός Προγραμματισμός

Outline. 4 Object-Oriented Programming

(α) Ζητείται να αναπαρασταθεί η παραπάνω γνώση σε Prolog, ώστε να δημιουργηθεί αντίστοιχο πρόγραμμα.

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Περιεχόμενα Πρόλογος 1. Εισαγωγή 2. Τα Βασικά Μέρη ενός Προγράμματος Prolog

Σημαντικότητα της σωστής αναπαράστασης

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

4. Ο,τιδήποτε δεν ορίζεται με βάση τα (1) (3) δεν είναι προτασιακός τύπος.

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Κεφάλαιο 1. Εισαγωγή

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

n true false if t then t else t u t t b t emptylist cons t t t t λx.t u ::= head tail isempty

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ PROLOG Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Πληροφορική 2. Αλγόριθμοι

Τεχνητή Νοημοσύνη Ι. Διαφάνειες Εργαστηρίου. Σγάρμπας Κυριάκος Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών

HY118-Διακριτά Μαθηματικά

Επίλυση Resolution. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: H Μέθοδος της Επίλυσης στον Λογικό Προγραμματισμό

Ηλεκτρονικοί Υπολογιστές

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 2

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Υπολογιστικά & Διακριτά Μαθηματικά

Διαδικασιακός Προγραμματισμός

Μεταγλωττιστές Βελτιστοποίηση

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

ΤΙΜΟΣ ΣΕΛΛΗΣ - ΑΡΗΣ ΤΣΩΗΣ

HY118-Διακριτά Μαθηματικά

Σχεσιακός Λογισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ορισμός Συναρτήσεων στην ΜL

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Κατηγορηματικός Λογισμός (ΗR Κεφάλαιο )

Προγραμματισμός PASCAL

Λογικός Προγραµµατισµός: Η Γλώσσα Prolog

Μαθηματική Λογική και Λογικός Προγραμματισμός

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Αφαίρεση στον FP. Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός

ΗΥ-150. Προγραμματισμός

Σχεσιακός Λογισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Τεχνητή Νοημοσύνη. 12η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

HY118-Διακριτά Μαθηματικά. Προτασιακός Λογισμός. Προηγούμενη φορά. Βάσεις της Μαθηματικής Λογικής. 02 Προτασιακός Λογισμός

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Σχεσιακός Λογισμός. Σχεσιακός Λογισμός Πλειάδων. σχεσιακά πλήρης γλώσσα

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

K15 Ψηφιακή Λογική Σχεδίαση 4+5: Άλγεβρα Boole

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Η γλώσσα προγραμματισμού EEL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Λογικός Προγραμματισμός Ασκήσεις

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

Επαγωγικός Λογικός Προγραμματισμός και Aσαφείς Λογικές Περιγραφής

ΗΥ-150. Προγραμματισμός

HY118-Διακριτά Μαθηματικά

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Μεταγλωττιστές Βελτιστοποίηση

turnin Lab4.pro

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στους Η/Υ και τις Εφαρμογές Ενότητα 5: Επεξεργασία δεδομένων με τη γλώσσα προγραμματισμού python Υπο-ενότητα 5.2: Συμβολοσειρές-Έλεγχος Ροής

ΕΡΩΤΗΜΑΤΑ σε ΓΝΩΣΗ ΚΑΤΗΓΟΡΗΜΑΤΙΚΗ ΛΟΓΙΚΗ. ηµήτρης Ψούνης ΠΛΗ31, Απαντήσεις Ερωτήσεων Quiz - ΓΝΩΣΗ 1. ΣΩΣΤO τo (b): NAI ΕΞΗΓΗΣΗ: ΤΕΣΤ 7 / ΑΣΚΗΣΗ 1.

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 2: Έλεγχος συνθηκών

Λογικός Προγραμματισμός Ασκήσεις

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Παράδειγµα: Οικονοµικός Σύµβουλος

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

ιαφάνειες παρουσίασης #2

Κεφάλαιο 5 Αξιωματική Σημασιολογία και Απόδειξη Ορθότητας Προγραμμάτων

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 5

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Το Σύστημα Κανόνων CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Υπολογισμός - Εντολές Επανάληψης

Σχεσιακός Λογισμός. Εισαγωγή. Σχεσιακό Μοντέλο. Τυπικές Γλώσσες Ερωτήσεων Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Πλειάδων Σχεσιακός Λογισμός Πεδίου

Transcript:

PROLOG Εισαγωγή (PROgramming in LOGic) Γλώσσα Λογικού Προγραμματισμού Βασίζεται στο Προτασιακό Λογισμό 1 ης τάξης Χρησιμοποιεί προτάσεις Horn αλγόριθμος = λογική + έλεγχος Μέσω της Prolog δίνουμε βάρος στην λογική του αλγορίθμου και λιγότερο στον έλεγχο Η Prolog παρέχει τον βασικό μηχανισμό ελέγχου για την αποτίμηση των εκφράσεων 2 1

Προγραμματίζοντας με την Prolog Ενα «πρόγραμμα» στην Prolog είναι μια διατεταγμένη σειρά από προτάσεις (clauses) Οι προτάσεις έχουν την μορφή Horn και δηλώνουν αλήθειες για τον κόσμο που περιγράφει το πρόγραμμα. Δεδομένου ενός προγράμματος, ένα σύστημα Prolog μπορεί να αποφανθεί για την αλήθεια των κατηγορημάτων που του δίνονται ως ερωτήσεις 3 Γεγονότα (facts) [1/2] Παραδείγματα child(οιδίπους, ιοκάστη). child(αντιγόνη, ιοκάστη). child(ετεοκλής, ιοκάστη). child(πολυνίκης, ιοκάστη). child(οιδίπους, λάιος). child(αντιγόνη, οιδίπους). child(ετεοκλής, οιδίπους). child(πολυνίκης, λάιος). Ερωτήσεις?- child(οιδίπους, λάιος).?- child(αντιγόνη, ετεοκλής). YES NO 4 2

Γεγονότα (facts) [2/2] Δήλωση Παραδείγματα male(λάιος). male(οιδίπους). male(ετεοκλής). male(πολυνίκης). female(αντιγόνη). female(ιοκάστη). married(λάιος, ιοκάστη). married(ιοκάστη, λάιος). married(οιδίπους, ιοκάστη). married(ιοκάστη, οιδίπους). Ερωτήσεις με μεταβλητές?- married(λάιος, X).?- married(ιοκάστη, Χ). X=ιοκάστη X=λάιος ; X=οιδίπους 5 Κανόνες (rules) Παραδείγματα grandchild(x,y) :- child(x,z), child(z,y). parent(x,y) :- child(υ,χ). mother(x,y) :- parent(x,y), female(x). father(x,y) :- parent(x,y), male(x). Ερωτήσεις?- mother(οιοκάστη, αντιγόνη). YES?- father(x, οιδίπους). X=λάιος Επακόλουθο - Προηγούμενα 6 3

Αναδρομικοί κανόνες Παράδειγμα related(x,x). related(x,y) :- married(x,y). related(x,y) :- child(x,z), related(z,y). related(x,y) :- child(y,z), related(z,x). Ερωτήσεις?- related(ετεοκλής, πολυνίκης). YES 7 Ο έλεγχος στην Prolog Βασικές αρχές από αριστερά προς τα δεξιά απο πάνω πρός τα κάτω Ενοποίηση (unification) Παραγωγή υπο-στόχων - τρέχων υπο-στόχος Οπισθοδρόμηση (backtracking) Διάταξη προτάσεων 8 4

Ενοποίηση θ είναι ο πιο γενικός ενοποιητής Ο θ είναι ένα σύνολο απο αντικαταστάσεις που μετατρέπουν την μια έκφραση στην άλλη. Κανόνες Η ελεύθερη μεταβλητή ενοποιείται με οτιδήποτε. Μια σταθερά ενοποιείται με τον εαυτό της. Ένα κατηγόρημα ενοποιείται με ένα άλλο κατηγόρημα που έχει το ίδιο όνομα και τα αντίστοιχα ορίσματα τους μπορούν να ενοποιηθούν. 9 Παραδείγματα ενοποίησης female(x) με female(αντιγόνη) θ={x=αντιγόνη) parent(x,y) µε parent(z, ιοκάστη) θ ={X=Z,Y= ιοκάστη} person(name, date(month,day,year), Sex) µε person( John, date( July, 7, 1993), male) θ ={Name= John,Month= July,Day=7,Year=1993,Sex=male} 10 5

Παράδειγμα αποτίμησης ερώτησης f1: child(οιδίπους,ιοκάστη). f2: child(οιδίπους,λάιος). f3: child(αντιγόνη,ιοκάστη). f4: child(ετεοκλής,ιοκάστη). f5: child(ετεοκλής,οιδίπους). r1: descendant(d,a) :- child(d,a). r2: descendant(d,a) :- child(d,p), descendant(p,a).?-descendant(ετεοκλής λάιος). Δέντρο εκτέλεσης 11 descendant (ετεοκλής, λάιος) r1 r2 child (ετεοκλής, λάιος ) child (ετεοκλής, Χ) descendant (X, λάιος) X=ιοκαστη f4 X=οιδίπους f5 descendant (ιοκάστη, λάιος) descendant (οιδίπους, λάιος) r1 r2 r1 child (ιοκάστη, λάιος) child (ιοκάστη, Χ) descendant (X, λάιος) child (οιδίπους, λάιος) f2 [ ] ΝΑΙ 12 6

PROLOG και Λογική Προτάσεις Horn : διάζευξη με ένα μόνο θετικό κατηγόρημα. Αντιστοιχία εκφράσεων : p:- q1, q2, q3. q1 q2 q3 p p q1 q2 q3 mother(x,y) :- parent(x,y), female(x). X,Y parent(x,y) female(x) mother(x,y) Υπόθεση κλειστού κόσμου 13 Συντακτικό Σταθερές άτομα, αριθμοί Μεταβλητές είναι τοπικές για κάθε πρόταση δεν έχουν τύπο δυο καταστάσεις : δεσμευμένες και ελεύθερες μπορούν να δεσμευτούν μόνο μια φορά Κατηγορήματα 14 7

Τελεστές Οι τελεστές είναι κατηγορήματα (τάξης 1 ή 2) που μπορούν να συνταχθούν διαφορετικά +(3,7) = 3 + 7 not(x) = not X Ο χρήστης μπορεί να ορίσει και δικούς του τελεστές related(x,y) = X related Y αν έχουμε ορίσει το related να είναι και διαδικός τελεστής 15 Λίστες Τρείς μορφές δήλωσης και χρήσης : [] [] nil.(a,[]) [a] a.nil.(a,b) [a b] a.b.(a,.(b,[])) [a,b] a.b.nil Συνήθως χρησιμοποιούνται έχοντας το [] ως τελευταίο στοιχείο 16 8

Χρήση λιστών length([],0). length([h T],N):- length(t, M), N is M + 1. member(x,[x Tail]). member(x,[h T]):- member(x,t). append([],l,l). append([h T],L,[H P]):- append(t,l,p). 17 Αριθμητική στην Prolog Σωστές εκφράσεις Χ is 3 με θ={χ = 3} X is 5 + 7 με θ={χ = 12} 7 =:= 2 + 5 8 + 2 =:= 3 + 7 Όμως Χ = 2 + 3 με θ={χ = +(2,3)} Λανθασμένες εκφράσεις 5 is X 7 =:= X + 8 18 9

Κατηγορήματα ελέγχου ροής -! Το κατηγόρημα! (cut) διαγραφή σημείων οπισθοδρόμησης δομή if then else A:- B,!, C A:- D. οριστική αποτυχία κατηγορήματος Μπορεί να επιταχύνει την εκτέλεση ή να μεταβάλει το νόημα του προγράμματος 19 Παραδείγματα χρήσης του! f(x,0):- X < 3. f(x,0):- X < 3,!. f(x,2):- 3=<X, X<6. f(x,2):- X<6,!. f(x,4):- 6=<X. f(x,4). not(p):- P,!, fail ; true. «υπόθεση κλειστού κόσμου» class(x,good):- beat(x,_), beat(_,x),!. class(x,perfect):- beat(x,_),!. class(x,poor):- beat(_,x). 20 10

Κατηγορήματα ελέγχου ροής - repeat Προσφέρει άπειρα σημεία οπισθοδρόμησης Ορίζεται ως : repeat. repeat:- repeat. Χρήσιμο στην δημιουργία βρόχων - με την βοήθεια κατηγορημάτων που αποτυχαίνουν (π.χ. fail). Η έξοδος από το βρόχο μπορεί να γίνει και με το κατηγόρημα!. 21 Παράδειγμα χρήσης του repeat writesquares:- repeat, read(x), ( integer(x), Y is X*X, write(y) ; true ) X = stop. 22 11

Έυρεση και χρήση όλων των λύσεων findall(+var, +Goal, -Bag)?- findall(x,child(οιδίπους,x),res). Res=[ιοκάστη,λάιος] bagof(+var, +Goal, -Bag), setof(+var, +Goal, -Set) forall(+cond, +Action).?- forall(member(result = Formula,[2 = 1 + 1, 4 = 2 * 2 ]), Result =:= Formula). YES 23 Βασικά ενσωματωμένα κατηγορήματα halt consult(+filename) listing listing(+predicate) true false help appropos(+word) X = Y X is Y X ; Y X == Y not(+x) \+(X) atom(+x) var(+x) integer(+x) 24 12