ΕΠΛ 434 – Λογικός Προγραμματισμός και Τεχνητή Νοημοσύνη Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου
Γενικά Αλγόριθμος = λογική + έλεγχος Prolog Προγράμματα στην Prolog Kowalski Prolog Γλώσσα τεχνητής νοημοσύνης Προγράμματα στην Prolog Προτάσεις (clauses) Γεγονότα (Facts) Kανόνες (Rules)
Γεγονότα Είναι η απλούστερη μορφή πρότασης Π.χ. father (dias, aris) Father -> κατηγόρημα (Predicate) (dias, aris) -> Ορίσματα (Arguments) Τάξη (arity)=2 Π.χ. woman (eva) woman -> κατηγόρημα (Predicate) (eva) -> Ορίσματα (Arguments) Τάξη (arity)=1 Εκφράζουν μια ιδιότητα των ορισμάτων τους
Γεγονότα
Πρόγραμμα 1: Γεγονότα father (dias, aris) father (dias, dionysus) father (aris, armonia) father (kadmos, semeli) mother (eva, aris) mother (armonia, semeli) mother (semeli, dionysus) mother (aphrodite, armonia) woman (armonia) woman (era) woman (semeli) woman (aphrodite) man (aris) man (dias) man (dionysus) man (kadmos)
Eρωτήσεις Απλές (simple) Ερωτήσεις με μεταβλητές (variables) Π.χ. ? father (dias, aris) Yes Ερωτήσεις με μεταβλητές (variables) Π.χ. ? father (x ,armonia) X = aris; No Π.χ. ? father (dias , X ) X = aris ; X =dionysos Yes.
Eρωτήσεις Σύνθετες (Conjunctive Queries) Π.χ. ? father (aris, armonia), woman (armonia). Yes %Query with two calls (κλήσεις) Ερωτήσεις με μεταβλητές (Queries with variables) Π.χ. ? mother (era ,X), man(X). X = aris; no Π.χ. ? mother (era ,X), man(Y). X = aris Y= aris; X = aris Y = dias; X = aris Y = dionysus; Η μεταβλητή Χ είναι κοινή (shared)
Κανόνες (Rules) ? father (aris, X), woman (X) Rule: X = armonia ? daughter (X, aris) ≡ (ισοδύναμες ερωτήσεις) Rule: daughter (X, Y) :- father (Y, X), woman (X) Λογική συνεπαγωγή (:- ≡ ←) Λογική σύζευξη (, ≡ και) Έκφραση σύνθετων ερωτήσεων σε απλές
Κανόνες (Rules) Κανόνες: και (and) Α :- B1, …, Bk Διαδικασία (Procedure) = προτάσεις που ορίζουν μια σχέση Π.χ. parent (X, Y) :- father (X, Y) parent (X, Y) :- mother (X, Y) Οι μεταβλητές είναι τοπικές σε μια πρόταση Κανόνες: και (and) Α :- B1, …, Bk Κεφαλή (Head) Αν (If) Σώμα (Body) A, B1,.. ,Bk είναι ατομικοί τύποι
Γενικευμένα Γεγονότα likes (music, X). |?- likes (music, tom) Yes |?- likes (music, mary) |?- likes (music, car)
Αναδρομικοί κανόνες (Recursive rules) a→b f c→d→e g edge (a,b) edge (d, e) edge (c,d) edge (b, d) edge (a,c) edge (f, g) connected (Node, Node). connected (Node1, Node2) ← edge(Node1, Link), connected (Link, Node2). |?- connected (a, e) yes |?- connected (c, f) no
Μεταβλητές στην Prolog Αντιπροσωπεύουν όρους οι οποίοι είναι άγνωστοι κατά τη στιγμή διατύπωσης τής πρότασης Οι μεταβλητές είναι τοπικές για κάθε πρόταση Δεν έχουν τύπο Σε κάθε χρονική στιγμή της εκτέλεσης μια μεταβλητή μπορεί να έχει τιμή (instantiated) ή να μην έχει (un-instantiated)
Σύνθετοι Όροι (Compound Terms) Ορίσματα (arguments) Άτομα Αριθμοί Μεταβλητές Σύνθετοι όροι: Φ (τ1, .., τκ) Συναρτησιακό σύμβολο (functor), Απλοί/Σύνθετοι Όροι staff_info(names(name (Name), surname(SName), fname(Fname)), addrs(street(Street), num(Num), town(Town), tel(Tel)), salary (basic(Bsalary), tax(Tax))) Απλοί όροι
Σύνθετοι Όροι (Compound Terms) staff_info: σχέσης σε βάσεις δεδομένων