Υπολογιστική Λογική και Λογικός Προγραμματισμός
|
|
- Πολύμνια Ταρσούλη
- 7 χρόνια πριν
- Προβολές:
Transcript
1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Υπολογιστική Λογική και Λογικός Προγραμματισμός Ενότητα 4: Λογικός Προγραμματισμός: η γλώσσα Prolog: Εισαγωγή, Ιστορική Αναδρομή, Σύνταξη, Εκτέλεση Προγραμμάτων, Αναδρομή. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής
2 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
3 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
4 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Λογικός Προγραμματισμός: η γλώσσα Prolog: Εισαγωγή, Ιστορική Αναδρομή, Σύνταξη, Εκτέλεση Προγραμμάτων, Αναδρομή.
5 Ιστορική Αναδρομή (1/4) Η Prolog (Programming in Logic) είναι μια συμβολική γλώσσα προγραμματισμού που βασίζεται στην κατηγορηματική λογική. Η ανάπτυξη της ξεκίνησε την δεκαετία του '70 στην Ευρώπη. Η πρώτη υλοποίηση οφείλεται στην γαλλική ερευνητική ομάδα του Alain Colmerauer στο πανεπιστήμιο Luminy της Μασσαλίας, η οποία ανέπτυξε ένα πρόγραμμα απόδειξης θεωρημάτων (theorem prover) για επεξεργασία φυσικής γλώσσας. 5
6 Ιστορική Αναδρομή (2/4) Βασίστηκε στις εργασίες του Robert Kowalski, ο οποίος απέδειξε ότι ένα υποσύνολο της λογική πρώτης τάξης (προτάσεις Horn) μπορούν να χρησιμοποιηθεί για μια νέα γενιά γλωσσών προγραμματισμού. Και οι δύο προηγούμενες εργασίες βασίστηκαν στην αρχή της ανάλυσης (Resolution Principle), μια γενική αποδεικτική διαδικασία για την λογική πρώτης τάξης, που είχε προταθεί από τον Robinson, στα μέσα της δεκαετίας του '60. 6
7 Ιστορική Αναδρομή (3/4) Σημαντικό ρόλο στη διάδοσή της αποτέλεσε η υλοποίηση ενός μεταφραστή / διερμηνευτή της γλώσσας από τον D.H.D Warren στο του Εδιμβούργου (1977). Αποτέλεσε την πρώτη αποδοτική υλοποίηση, αποδεικνύοντας ότι είναι δυνατή η χρησιμοποίηση της σαν μια γενική γλώσσα προγραμματισμού, γεγονός το οποίο ήταν υπό αμφισβήτηση από πολλούς επιστήμονες ιδίως στην Αμερική. Η επιτυχία του μεταφραστή αυτού ήταν τόσο μεγάλη ώστε αποτέλεσε πρότυπο για τις επόμενες υλοποιήσεις, καθιερώνοντας παράλληλα τη σύνταξη της γλώσσας (Edinburgh Syntax). 7
8 Ιστορική Αναδρομή (4/4) Πολύ σημαντικός παράγοντας στην εξέλιξη της γλώσσας, ήταν και η υιοθέτηση της από τον Ιαπωνικό πρόγραμμα υπολογιστών πέμπτης γενιάς (Fifth Generation Computing). 8
9 Διαφορές διαδικαστικών γλωσσών και Prolog (1/2) Σε ένα οποιοδήποτε πρόγραμμα, διακρίνουμε το τμήμα της λογικής και το τμήμα του ελέγχου. Σύμφωνα με την κλασική εξίσωση του Kowalski: πρόγραμμα = λογική + έλεγχος. 9
10 Διαφορές διαδικαστικών γλωσσών και Prolog (2/2) Στο συμβατικό (διαδικαστικό) προγραμματισμό (π.χ. C), το τμήμα της λογικής και το τμήμα του ελέγχου είναι αλληλένδετα και δεν διαχωρίζονται. Ο προγραμματιστής πρέπει να καθορίσει επακριβώς τη ροή ελέγχου του προγράμματος, ανάλογα με τη λογική και τα διαθέσιμα δεδομένα του προβλήματος. Στην Prolog, γίνεται διαχωρισμός λογικής-ελέγχου. Χρειάζεται να περιγραφεί μόνο η λογική του προς επίλυση προβλήματος ενώ ο έλεγχος αφήνεται στο σύστημα. 10
11 Προγράμματα στην Prolog Η λογική ενός προβλήματος, δηλαδή ενός προγράμματος, στην Prolog είναι ένα σύνολο προτάσεων που περιγράφει τα δεδομένα του προβλήματος και τις σχέσεις που τα συνδέουν. Οι προτάσεις αυτές λέγονται προτάσεις Horn και αποτελούν υποσύνολο της κατηγορηματικής λογικής πρώτης τάξης. Υπάρχουν δύο είδη προτάσεων: τα γεγονότα και οι κανόνες. 11
12 Γεγονότα Τα γεγονότα εκφράζουν σχέσεις ανάμεσα στα αντικείμενα και αποτελούν κατά ένα τρόπο τα δεδομένα του προβλήματος. Για παράδειγμα, αν θέλουμε να δηλώσουμε ότι "Ο Γιώργος είναι ο πατέρας της Μαρίας", εισάγουμε στην Prolog ένα γεγονός της μορφής: father(george,mary). Αντιστοιχεί στην ακόλουθη έκφραση στη μορφή Kowalski father(george,mary). 12
13 Κανόνες Οι κανόνες εκφράζουν γενικότερες σχέσεις ανάμεσα στα αντικείμενα, οι οποίες ορίζονται με τη βοήθεια άλλων σχέσεων. Για παράδειγμα, η σχέση γονιός, ορίζεται με δύο κανόνες: "Ο Χ είναι γονιός του Υ εάν ο Χ είναι πατέρας του Υ" και "Η Χ είναι γονιός του Υ εάν η Χ είναι μητέρα του Υ", Σε Prolog γράφονται ως εξής: parent(χ,υ) :- father(χ,υ). parent(x,υ) :- mother(x,y). Τα Χ, Υ είναι μεταβλητές. Το σύμβολο ":-" αντιπροσωπεύει το λογικό ΕΑΝ. Σε μορφή Kowalski father(χ,υ) parent(χ,υ) mother(χ,υ) parent(χ,υ) 13
14 Αλληλεπίδραση με την Prolog Η Prolog είναι κατεξοχήν μια διερμηνευόμενη γλώσσα (interpreted). Ο χρήστης αλληλεπιδρά με το σύστημα, θέτοντας ερωτήσεις (queries) ή στόχους (goals), μετά το προτρεπτικό σήμα (prompt) "?-" Το σύστημα προσπαθεί να απαντήσει βάσει γεγονότων και κανόνων. Οι απαντήσεις που λαμβάνει είναι είτε yes/no (Ναι / Όχι). Αν η ερώτηση περιέχει μεταβλητές, τότε η απάντηση περιλαμβάνει τις κατάλληλες τιμές για τις μεταβλητές αυτές, ώστε η ερώτηση να δέχεται καταφατική απάντηση. Σε περίπτωση που υπάρχουν περισσότερες από μία απαντήσεις, ο χρήστης μπορεί να τις λάβει πατώντας το πλήκτρο ";". 14
15 Παράδειγμα Σχέσεις ανάμεσα στα μέλη μιας οικογένειας. father(george,mary). mother(helen,mary). father(george,nick). mother(helen,nick). father(peter,marina). mother(ann,marina). parent(x,y) :- father(χ,υ). parent(χ,υ) :- mother(χ,υ). Έστω ότι οι παραπάνω προτάσεις είναι αποθηκευμένες σε ένα απλό αρχείο κειμένου με όνομα "family.pl". Για να φορτωθούν πρέπει να δοθεί η εντολή consult, συνοδευόμενη από το όνομα του αρχείου,:?- consult('family.pl'). 15
16 Ερωτήσεις Απαντήσεις (1/4) Είναι ο george πατέρας της mary;?- father(george,mary). yes Είναι ο george πατέρας της marina;?- father(george,marina). no Ποιος (Χ) έχει πατέρα τον peter;?- father(peter,x). X=marina Ποια (Χ) είναι η μητέρα της marina;?- mother(χ,marina). X=ann Μορφή Kowalski father(george,mary) 16
17 Ερωτήσεις Απαντήσεις (2/4) Ποιανού (Χ) είναι γονιός ο george;?- parent(george,χ). X=mary; X=nick; no Στην περίπτωση αυτή υπάρχουν δύο απαντήσεις. Προέρχονται από τα δύο σχετικά γεγονότα father(george, ) Επιστρέφεται πρώτα η απάντηση X=mary και αν ο χρήστης πιέσει το πλήκτρο ";" επιστρέφεται η απάντηση Χ=nick. Αν ο χρήστης πιέσει ξανά ";" η Prolog θα απαντήσει no, η οποία σημαίνει "δεν υπάρχουν άλλες εναλλακτικές απαντήσεις". 17
18 Ερωτήσεις Απαντήσεις (3/4) Ποιανού (X) είναι γονιός ο paul;?- parent(paul,χ). no Ποιοι (X) είναι οι γονείς του nick;?- parent(χ,nick). X=george; X=helen; no Οι δύο απαντήσεις προέρχονται από τους δύο κανόνες parent(x,y) 18
19 Ερωτήσεις Απαντήσεις (4/4) Ποια είναι τα ζεύγη ατόμων Χ, Υ, για τα οποία η Χ είναι μητέρα του Υ;?- mother(χ,υ). X=helen, Y=mary; X=helen, Y=nick; X=ann, Y=marina; no Οι τιμές των Χ, Υ πρέπει να συνυπάρχουν στο ίδιο γεγονός. 19
20 Σύνθετες Ερωτήσεις (1/3) Εκτός από απλές ερωτήσεις, υπάρχουν και οι σύνθετες, οι οποίες χωρίζονται μεταξύ τους με κόμμα "," το οποίο αντιστοιχεί στον λογικό τελεστή AND. Η απάντηση σε μια σύνθετη ερώτηση είναι καταφατική μόνο αν αληθεύουν όλες οι επιμέρους κλήσεις που την αποτελούν. Οι mary και nick έχουν κοινό πατέρα; Αν ναι, ποιος (X) είναι αυτός;?- father(x,mary),father(x,nick). X = george 20
21 Σύνθετες Ερωτήσεις (2/3)?- father(x,mary), father(x,nick). X = george Η κοινή μεταβλητή (shared variable) X εκφράζει τη συνθήκη ότι οι mary και nick έχουν κοινό πατέρα. Οι μεταβλητές στην Prolog όταν εμφανίζονται παραπάνω από μία φορά σε μία ερώτηση, παίρνουν τιμή την πρώτη φορά που εμφανίζονται και στη συνέχεια διατηρούν αυτήν την τιμή σε όλες τις επόμενες εμφανίσεις τους στην ίδια ερώτηση. 21
22 Σύνθετες Ερωτήσεις (3/3) Ποια είναι τα ζεύγη ατόμων Χ, Υ, τα οποία έχουν για μητέρα τους την helen;?- mother(helen,x),mother(helen,y). X=mary, Y=mary; X=mary, Y=nick; X=nick, Y=mary; X=nick, Y=nick; no Η χρήση δύο διαφορετικών μεταβλητών δε συνεπάγεται κατ' ανάγκη ότι αυτές πρέπει να πάρουν διαφορετικές τιμές. 22
23 Κανόνες με Σύνθετες Συνθήκες (1/2) Όπως υπάρχουν οι σύνθετες ερωτήσεις, έτσι και οι συνθήκες των κανόνων μπορούν να είναι σύνθετες. Πρέπει να συναληθεύουν δύο ή παραπάνω προϋποθέσεις προκειμένου να αποδεικνύεται το συμπέρασμα. Οι προϋποθέσεις χωρίζονται μεταξύ τους με κόμμα "," το οποίο αντιστοιχεί στον λογικό τελεστή AND. Παράδειγμα: Πότε δύο άνθρωποι είναι αδέλφια? Όταν έχουν κοινό γονέα. sibling(x,y) :- parent(z,x), parent(z,y). 23
24 Κανόνες με Σύνθετες Συνθήκες (2/2) sibling(x,y) :- parent(z,x), parent(z,y).?- sibling(mary,george). yes?- sibling(mary,x). X = mary ; X = nick ; X = mary ; X = nick no 24
25 Σύνταξη της Prolog Τα στοιχεία της γλώσσας είναι: οι όροι, τα γεγονότα, οι κανόνες, οι ερωτήσεις. Ένα Prolog πρόγραµµα είναι ένα σύνολο από προτάσεις. Α. Γεγονός (fact) Α :- Β 1, Β 2,..., Β κ. (κ > 0) Κανόνας (rule)?- Β 1, Β 2,..., Β κ. (κ > 0) Ερώτηση (question) 25
26 Ατοµικοί Τύποι Τα Α και Β i ονοµάζονται ατοµικοί τύποι (όπως στην Κατηγορηματική Λογική) και είναι παραστάσεις της µορφής: όπου το: Ρ(t 1, t 2,, t n ) Ρ ονοµάζεται κατηγόρηµα (predicate). t i : ονοµάζονται ορίσµατα (arguments). O αριθµός των ορισµάτων (n) ονοµάζεται τάξη (arity) του κατηγορήµατος. 26
27 Όροι Τα ορίσµατα ενός κατηγορήµατος είναι όροι (terms) και μπορεί να είναι: Σταθερά. Μεταβλητή. Σύνθετος όρος ή Συναρτησιακός όρος. 27
28 Σταθερές Άτοµα ή αριθµοί. Οι αριθμοί έχουν τη συνήθη μορφή. Π.χ. 2, 3, 6.7, -3, -10 κλπ. Τα άτομα (atoms) είναι συμβολοσειρές. μπορούν να περιλαμβάνουν αριθμούς. πρέπει απαραίτητα να ξεκινούν από πεζό γράμμα ή να περιλαμβάνονται σε μονά εισαγωγικά. Παραδείγματα αποδεκτών ατόμων είναι: anna, x25, x_25, 'Anna', κλπ. Μη-αποδεκτά άτομα: Anna, X25, 25X, _Q, Car 28
29 Μεταβλητές Οι μεταβλητές στην Prolog είναι συμβολοσειρές που μπορεί να περιέχουν ψηφία ή τον χαρακτήρα "_". Χρησιμοποιούνται στη θέση άγνωστων ορισμάτων σε μια πρόταση και πρέπει πάντα να ξεκινούν με κεφαλαίο γράμμα ή με τον χαρακτήρα "_". Παραδείγματα αποδεκτών μεταβλητών είναι: Χ, ListOfStrings, List_of_strings, Obj2, _X1. Μη-αποδεκτές μεταβλητές: x, obj, 2Obj 29
30 Prolog και Διαδικαστικές Γλώσσες Προγραμματισμού (1/2) Υπάρχουν σημαντικές διαφορές ανάμεσα στις μεταβλητές των κλασσικών γλωσσών και της Prolog. Στις κλασσικές γλώσσες μια μεταβλητή μπορεί μετά την πρώτη ανάθεση να μεταβάλλει την τιμή που έχει πάρει (destructive assignment). Αντίθετα στην Prolog, σε μια μεταβλητή η οποία έχει πάρει τιμή δεν μπορεί να δοθεί νέα (non destructive assignment). Π.χ. η συνηθισμένη σε άλλες γλώσσες έκφραση Ν = Ν + 1, δεν έχει κανένα νόημα στην Prolog. 30
31 Prolog και Διαδικαστικές Γλώσσες Προγραμματισμού (2/2) Οι μεταβλητές στην Prolog, δεν έχουν τύπο (typeless) και άρα δεν απαιτούν δηλώσεις και μπορούν σαν τιμή οποιοδήποτε όρο. Υπάρχουν μόνο τοπικές μεταβλητές, των οποίων η εμβέλεια είναι μέσα στον κανόνα τον οποίο εμφανίζονται. 31
32 Σύνθετοι όροι Ο Σύνθετος όρος είναι δοµή της µορφής f(t 1, t 2,, t κ ): f: συναρτησιακό σύµβολο (functor). t i : ορίσµατα του συναρτησιακού συµβόλου και είναι όροι. Ο αριθµός των ορισµάτων (κ) ονοµάζεται τάξη (arity) του συναρτησιακού συµβόλου. 32
33 Παραδείγματα Σύνθετων Όρων (1/2) Αναπαράσταση ημερομηνίας: date(2,august,1997) Πρόκειται για έναν σύνθετο όρο τάξης 3 αφού έχει τρία ορίσματα (ημέρα, μήνας, έτος). Στο παράδειγμα αυτό, όλα τα ορίσματα είναι απλοί όροι. date 2 august
34 Παραδείγματα Σύνθετων Όρων (2/2) Η αναπαράσταση ενός τριγώνου μπορεί να γίνει χρησιμοποιώντας έναν σύνθετο όρο τάξης 3. triangle(point(4,2),point(6,4),point(7,1)) Το κάθε όρισμά του είναι με τη σειρά του ένας άλλος σύνθετος όρος που αναπαριστά μια κορυφή του τριγώνου. Π.χ. point(4,2) point triangle point point
35 Περιπτώσεις Όρων Όρος Απλός Σύνθετος Σταθερή Μεταβλητή Συναρτησιακό Σύμβολο Ορίσματα Αριθμός Άτομο Όροι 35
36 Σχόλια Τα σχόλια στην Prolog εισάγονται είτε με τον χαρακτήρα "%" είτε περικλείονται στους χαρακτήρες "/*" και "*/". % This is a line comment father(jim,mary). % Jim is father of Mary /* father connects a father and his son or his daughter */ 36
37 Γεγονότα (1/2) Η πιo απλή μορφή προτάσεων Horn είναι τα γεγονότα (facts). Ένα γεγονός είναι η "απευθείας" αναπαράσταση μιας σχέσης που συνδέει ένα η περισσότερα αντικείμενα. Π.χ. για να δηλώσουμε ότι η Ελλάδα, η Ιταλία και η Αγγλία είναι χώρες τις Ευρώπης εισάγουμε τα γεγονότα belongs_to(greece,europe). belongs_to(italy,europe). belongs_to(england,europe). H σχέση (relationship) belongs_to συνδέει τα δύο άτομα (atoms) π.χ. greece, europe. 37
38 Γεγονότα (2/2) 2 τάξη belongs_to (greece,europe ). Σχέση / Κατηγόρημα ορίσματα Ατομικός τύπος 38
39 Σύνταξη Γεγονότων Ατομικός τύπος Γεγονός Τελεία (.) Κάθε πρόταση πρέπει να τελειώνει με το σημείο στίξης της τελείας "." Κατηγόρημα Ορίσματα Όροι 39
40 Κανόνες Οι κανόνες (rules) είναι προτάσεις που ορίζουν νέες σχέσεις με τη βοήθεια άλλων σχέσεων που έχουν ήδη οριστεί. Οι κανόνες έχουν την γενική μορφή: Α :- Β 1, Β 2, Β 3,..., B n. (n >= 1). Το Α ονομάζεται κεφαλή (head) του κανόνα Η κεφαλή μπορεί να είναι οποιοσδήποτε ατομικός τύπος. Τα Β 1, Β 2, Β 3,..., B n, ονομάζονται σώμα (body) του κανόνα, και είναι και αυτοί ατομικοί τύποι. Η κεφαλή διαχωρίζεται από το σώμα με τους χαρακτήρες ":-", οι οποίοι μπορούν να διαβαστούν σαν το λογικό συνδετικό της συνεπαγωγής "ΕΑΝ". Η σημασία του σημείου στίξης του κόμματος "," μεταξύ των ατομικών τύπων στο σώμα ενός κανόνα, ή στην ερώτηση είναι αυτή της λογικής σύζευξης (AND). 40
41 Παράδειγμα Κανόνα Δύο άτομα (Χ και Υ) είναι αδέλφια αν ο γονέας του ενός (Ζ) είναι και γονέας του άλλου. Αυτό μπορεί να εκφραστεί με τη βοήθεια ενός κανόνα: % siblings/2 siblings(χ,υ):- parent(ζ,χ), parent(ζ,υ). Συμβολισμός: Κατηγόρημα siblings τάξης 2 Η κοινή μεταβλητή (shared variable) Ζ εκφράζει την συνθήκη ότι οι Χ και Υ έχουν τον ίδιο γονέα. 41
42 Ερμηνεία Προτάσεων Τα προγράμματα στην Prolog μπορούν να γίνουν κατανοητά με δύο τρόπους: δηλωτικά (declaratively) και διαδικαστικά (proceduraly). Π.χ. πρόταση Ρ :- Q, R. μπορεί να ερμηνευτεί: Δηλωτικά: Το Ρ είναι αληθές εάν τα Q είναι αληθές και εάν το R είναι αληθές. Διαδικαστικά: Για να αποδειχθεί ότι το Ρ είναι αληθές, πρέπει πρώτα να αποδειχθεί ότι το Q είναι αληθές και στη συνέχεια ότι και το R είναι αληθές. 42
43 Παρατηρήσεις για τα Κατηγορήματα Η τάξη ενός κατηγορήματος πρέπει να είναι η ίδια, οπουδήποτε και αν εμφανίζεται το κατηγόρημα αυτό μέσα στο πρόγραμμα. Το ίδιο πρέπει να συμβαίνει και με τη σειρά των ορισμάτων του. Αν τα ορίσματα ενός κατηγορήματος δεν είναι συγκεκριμένα, μπορούμε στη θέση τους να τοποθετήσουμε μεταβλητές. 43
44 Ερωτήσεις (1/2) Οι ερωτήσεις είναι η μέθοδος που χρησιμοποιείται στην Prolog για την εξαγωγή γνώσης από ένα πρόγραμμα. Η σύνταξή τους είναι:?- ατομικός τύπος. Ο ατομικός τύπος ονομάζεται κλήση (call). Ανάλογα με τον αριθμό των κλήσεων, οι ερωτήσεις διακρίνονται σε δύο κατηγορίες: τις απλές και τις σύνθετες. 44
45 Ερωτήσεις (2/2) Οι ερωτήσεις μπορούν να θεωρηθούν και σαν λογικές προτάσεις προς απόδειξη. Η Prolog βασισμένη στα ορισμένα κατηγορήματα, προσπαθεί να αποδείξει τη αλήθεια των προτάσεων αυτών. Αν η προς απόδειξη πρόταση (ερώτηση) ικανοποιείται, η απάντηση στην ερώτηση είναι θετική, και περιλαμβάνει τις τιμές για τις μεταβλητές που πιθανόν να περιλαμβάνονται σε αυτή. Στην αντίθετη περίπτωση, το σύστημα απαντά αρνητικά (no). Ουσιαστικά η Prolog υλοποιεί την αποδεικτική διαδικασία της «αρχής της ανάλυσης» συνδυασμένη με την «απαγωγή σε άτοπο». 45
46 Απλές ερωτήσεις (1/2) Περιέχουν μία μόνο κλήση. big(bear). big (elephant). small(cat). brown(bear). gray(elephant). black(cat).?-brown(elephant). no Η κλήση δεν ικανοποιείται αφού το αντίστοιχο γεγονός δεν υπάρχει.?-big(elephant). yes Η κλήση ικανοποιείται αφού το σύστημα, βρίσκει το αντίστοιχο γεγονός. 46
47 Απλές ερωτήσεις (2/2) big(bear). big (elephant). small(cat). brown(bear). gray(elephant). black(cat).?-big(χ). X=bear; X=elephant; no Η μεταβλητή Χ αποκτά την τιμή bear σύμφωνα με την πρώτη πρόταση. Αν ο χρήστης ζητήσει και άλλη λύση, αυτή παίρνει την τιμή elephant από τη δεύτερη πρόταση. 47
48 Σύνθετες ερωτήσεις (1/4) Περιέχουν παραπάνω από μία κλήσεις. Οι κλήσεις συνήθως χωρίζονται μεταξύ τους με κόμμα (",") το οποίο αντιστοιχεί στον λογικό τελεστή AND. Η απάντηση σε μια σύνθετη ερώτηση είναι καταφατική μόνο αν αληθεύουν όλες οι επιμέρους κλήσεις που την αποτελούν. 48
49 Σύνθετες ερωτήσεις (2/4) big(bear). big (elephant). small(cat). brown(bear). gray(elephant).?- small(χ), gray(χ). no black(cat). Σύμφωνα με την τρίτη πρόταση, η μεταβλητή Χ της πρώτης κλήσης θα πάρει την τιμή cat. Τότε, και η μεταβλητή της δεύτερης κλήσης θα αποκτήσει την ίδια τιμή μιας και έχει το ίδιο όνομα με την μεταβλητή της προηγούμενης κλήσης. Έτσι, η ερώτηση γίνεται: gray(cat). Επειδή, όμως, το αντίστοιχο γεγονός λείπει από το πρόγραμμα, η απάντηση που θα επιστρέψει το σύστημα θα είναι αρνητική. 49
50 Σύνθετες ερωτήσεις (3/4) big(bear). big (elephant). small(cat). brown(bear). gray(elephant). black(cat).?-big(χ), gray(χ). X=elephant; no?-big(χ), black(υ). X=bear, Y=cat; X=elephant, Y=cat; no Οι δύο κλήσεις συναληθεύουν για την ίδια τιμή του Χ. Οι δύο μεταβλητές παίρνουν τιμή ανεξάρτητα η μία από την άλλη. Το σύνολο των απαντήσεων είναι το καρτεσιανό γινόμενο των συνόλων τιμών που μπορεί να πάρει η κάθε μεταβλητή ανεξάρτητα. 50
51 Σύνθετες ερωτήσεις (4/4) big(bear). big (elephant). black(cat). black(puma).?-big(χ), black(υ). X=bear, Y=cat; X=bear, Y=puma; X=elephant, Y=cat; X=elephant, Y=puma; no Η δεύτερη μεταβλητή «αλλάζει» τιμή πρώτη, γιατί η οπισθοδρόμηση είναι «χρονολογική», δηλαδή ο υπολογισμός επιστρέφει στο πιο κοντινό χρονικά σημείο που μπορεί να δώσει εναλλακτική λύση. Όταν η οπισθοδρόμηση φθάσει την πρώτη μεταβλητή, η εκτέλεση ξανακυλάει με την κανονική της ροή (από αριστερά προς τα δεξιά). Οι παραπάνω τιμές της Υ έχουν ξεχαστεί και δίνονται με τη σειρά ξανά όπως την πρώτη φορά. 51
52 Άσκηση Γενεαλογικού Δένδρου kyriakos katerina george mary manolis theano father mother father mother father mother helen kostas anna dimitris mother father mother father nick mary2 katerina2 manolis2 father mother dimitris2 52
53 Γενεαλογικό Δένδρο Ερωτήσεις (1/2) Είναι ο Γιώργος πατέρας της Άννας;?- father(george,anna). yes Είναι η Μαρία μητέρα του Δημήτρη;?- mother(mary,dimitris). no Ποιος είναι ο πατέρας της Ελένης;?- father(x,helen). X=kyriakos 53
54 Γενεαλογικό Δένδρο Ερωτήσεις (2/2) Ποιο(-α) είναι τα παιδιά της Μαρίας;?- mother(mary,x). X=kostas; X=anna Ποιοι είναι οι γονείς της Ελένης;?- father(x,helen) ; mother(x,helen). X=kostas; X=anna Σύμβολο της λογικής διάζευξης (OR) 54
55 Γενεαλογικό Δένδρο Ερωτήσεις + Κανόνες Ποιοι είναι οι γονείς της Ελένης; Προσθέτουμε στο πρόγραμμα τους ακόλουθους κανόνες που ορίζουν το κατηγόρημα parent/2. parent(x,y) :- father(x,y). parent(x,y) :- mother(x,y).?- parent(x,helen). X=kostas; X=anna Η διάζευξη είναι «κρυμμένη» μέσα στους πολλαπλούς εναλλακτικούς κανόνες για το parent/2. 55
56 Γενεαλογικό Δένδρο Σχέση grandfather (1/2) Ποιο(-α) είναι τα εγγόνια του Κυριάκου; Το εγγόνι του Κυριάκου Με σύνθετη ερώτηση:?- father(kyriakos, X), (father(x, Y) ; mother(x,y)). X=helen, Y=mary2; X=helen, Y=katerina2?- father(kyriakos, X), parent(x, Y). ή Το παιδί του Κυριάκου 56
57 Με κανόνα: Γενεαλογικό Δένδρο Σχέση grandfather (2/2) grandfather(ζ, Y) :- father(z, X), parent(χ, Y). grandparent(ζ, Y) :- parent(z, X), parent(χ, Y). Ερώτηση:?- grandfather(kyriakos, Y). Y=mary2; Y=katerina2 Z X Y 57
58 Ποιο(-α) είναι τα αδέλφια του Κώστα; Με σύνθετη ερώτηση:?- parent(x, kostas), parent(x, Y). X = george, Y = kostas ; X = george, Y = anna ; X = maria, Y = anna ; X = maria, Y = kostas Γενεαλογικό Δένδρο Σχέση sibling (1/2) Το «άλλο» παιδί του γονιού του Κώστα. Ο γονέας του Κώστα. Ο Κώστας είναι επίσης παιδί του γονιού του Κώστα! Αφού υπάρχουν δυο γονείς, όλες οι λύσεις θα δοθούν 2 φορές. 58
59 Γενεαλογικό Δένδρο Σχέση sibling (2/2)?- parent(x, kostas), parent(x, Y), Υ\=kostas. X = george, Y = anna ; X = maria, Y = anna Δεν μπορούμε να αποφύγουμε να δοθούν 2 φορές οι λύσεις. Κανόνας: sibling(z,y) :- parent(x,z), parent(x,y), Z \= Y. Ζητάμε η τιμή που θα πάρει η μεταβλητή Y να μην ισούται με kostas.?- sibling(kostas,y). Y = anna ; Y = anna Y X Z 59
60 Γενεαλογικό Δένδρο Σχέση aunt/uncle Η σχέση θείος/θεία μπορεί να οριστεί με τη βοήθεια της sibling. aunt_uncle(x,y) :- sibling(x,z), parent(z,y). X Z Y 60
61 Γενεαλογικό Δένδρο - Σχέση cousin Η σχέση «ξάδελφος/η» μπορεί να οριστεί είτε με τη σχέση aunt_uncle/parent, ή με τις sibling/parent. cousin(x,y) :- aunt_uncle(w,x), parent(w,y). ή cousin(x,y) :- parent(z,x), sibling(z,w), parent(w,y). W Y Z X 61
62 Είναι κατηγορήματα χωρίς ορίσματα. Έστω ότι έχουμε τα στοιχεία (και ενώσεις) : MgO, H 2, C και Ο 2 Θέλουμε να δούμε αν μπορούμε να πάρουμε H 2 CO 3 από τις εξισώσεις : MgO + H 2 Mg + H 2 O C + O 2 CO 2 CO 2 + H 2 O H 2 CO 3 Άσκηση Κατηγορήματα με τάξη μηδέν 62
63 Πρόγραμμα Α μαγνήσιο : - οξείδιο_μαγνησίου, υδρογόνο. νερό : - οξείδιο_μαγνησίου, υδρογόνο. διοξείδιο_άνθρακα : - άνθρακας, οξυγόνο. ανθρακικό_οξύ : - διοξείδιο_άνθρακα, νερό. οξείδιο_μαγνησίου. υδρογόνο. άνθρακας. οξυγόνο. Ερώτηση:?- ανθρακικό_οξύ. Απάντηση: Yes 63
64 Πρόγραμμα Β mg : - mgo, h2. h2o : - mgo, h2. co2 : - c, o2. h2co3 : - co2, h2o. mgo. h2. c. o2. Ερώτηση:?- h2co3. Απάντηση: Yes 64
65 Ασκήσεις (1/2) Ένα πρόγραμμα Prolog περιλαμβάνει γεγονότα της μορφής: αγαπά(α1, α2) % ο α1 αγαπά τον α2. Υποβάλλετε στο πρόγραμμα τις ακόλουθες ερωτήσεις: Υπάρχει κάποιος που αγαπά τον εαυτό του; Υπάρχει κάποιος που αγαπά αυτόν που τον αγαπά; Υπάρχουν 2 πρόσωπα που αγαπούν το ίδιο πρόσωπο; Απαντήσεις.?- αγαπά(χ, Χ). % ανακλαστική ιδιότητα?- αγαπά(χ, Υ), αγαπά(υ, Χ). % συμμετρική ιδιότητα?- αγαπά(χ, Ζ), αγαπά(υ, Ζ). 65
66 Ασκήσεις (2/2) Στο προηγούμενο πρόγραμμα προσθέστε τους κανόνες: Όλοι αγαπούν τον εαυτό τους. Αν ο Α αγαπά τον Β και ο Β τον Γ, τότε ο Α αγαπά τον Γ. Αν δύο άνθρωποι αγαπούν το ίδιο πρόσωπο, τότε αγαπιούνται και μεταξύ τους. Απαντήσεις αγαπά(χ, Χ). αγαπά(α, Γ) : - αγαπά(α, Β), αγαπά(β, Γ). αγαπά(χ, Υ) : - αγαπά(υ, Χ). αγαπά(χ, Υ): - αγαπά(χ, Ζ), αγαπά(υ, Ζ). Πρέπει να ισχύει Χ Υ % Γενικευμένο γεγονός έχει μεταβλητές 66
67 Εκτέλεση Προγραμμάτων Η εκτέλεση ξεκινά με μια ερώτηση που υποβάλλει ο χρήστης. Φτάνουμε σε λύση όταν έχουν εξαντληθεί όλες οι κλήσεις της ερώτησης. Η απάντηση είναι το αποτέλεσμα του προγράμματος. Η ερώτηση μπορεί να είναι: απλή, περιέχει μία μόνο κλήση, ή?- friend(x,nick). σύνθετη, αποτελείται από σύζευξη πολλαπλών κλήσεων.?- friend(x,nick), friend(x,john). 67
68 Βήματα Εκτέλεσης (1/2) Έως ότου δεν υπάρχουν άλλες κλήσεις στην ερώτηση, επιλέγονται με τη σειρά, από αριστερά προς τα δεξιά, οι κλήσεις της ερώτησης. Για κάθε κλήση της ερώτησης, ο μηχανισμός ελέγχου αναλαμβάνει να βρει μια πρόταση του προγράμματος της οποίας η κεφαλή έχει το ίδιο κατηγόρημα και τάξη με την επιλεγμένης κλήση. Η ερώτηση θεωρείται ότι απαντήθηκε, όταν απαντηθούν επιτυχώς όλες οι κλήσεις της. Εφόσον οι κλήσεις της ερώτησης περιέχουν κοινές μεταβλητές, θα πρέπει αυτές να πάρουν την ίδια τιμή. 68
69 Βήματα Εκτέλεσης (2/2) Αν δεν υπάρχει άλλη κλήση στην ερώτηση του χρήστη τότε η εκτέλεση του προγράμματος τερματίζεται με επιτυχία (yes) και επιστρέφονται στον χρήστη οι τιμές των μεταβλητών που περιείχε η αρχική ερώτηση. Αυτό προφανώς δεν γίνεται στην αρχική ερώτηση του χρήστη (η οποία δεν είναι κενή), αλλά είναι μια κατάσταση που προκύπτει από την επαναληπτική εφαρμογή των βημάτων εκτέλεσης. 69
70 Ενοποίηση με Γεγονός Όταν η κλήση που εξετάζεται ενοποιείται με ένα από τα γεγονότα του προγράμματος τότε αυτή ικανοποιείται και απομακρύνεται από την ερώτηση. Π.χ.?- father(x,y). father(george,nick). father(x,y) ή father(x,y) father(george,nick) Για την αντικατάσταση {X/george, Y/nick} η κλήση με την πρόταση (γεγονός) γίνονται ταυτόσημα και η κλήση ικανοποιείται και απομακρύνεται. Παραμένει κενή η ερώτηση (χωρίς κλήσεις), άρα η διαδικασία απόδειξης έχει τερματίσει επιτυχημένα. 70
71 Ενοποίηση με Κανόνα Αν η τρέχουσα κλήση ενοποιείται με κάποιον κανόνα, τότε αυτή απομακρύνεται από την ερώτηση και τη θέση της παίρνει το σώμα του κανόνα αυτού. Για την ικανοποίηση της αρχικής κλήσης είναι απαραίτητη η ικανοποίηση των κλήσεων του σώματος του κανόνα που την αντικατέστησε. Π.χ.?- grandfather(nick,w). grandfather(x,y) :- father(x,z), father(z,y). Για {X/nick, Y/W} η κλήση με την κεφαλή της πρότασης (κανόνας) γίνονται ταυτόσημα και η κλήση ικανοποιείται αν ικανοποιηθούν οι προϋποθέσεις (το σώμα) του κανόνα. Γίνεται αντικατάσταση της κλήσης στην ερώτηση με το σώμα?- father(nick,z), father(z, W). 71
72 Ισοδυναμία με την Αρχή της Ανάλυσης στη μορφή Kowalski grandfather(nick,w) father(x,z), father(z,y) grandfather(x,y) father(nick,z), father(z, W) Ισοδυναμία με την Αρχή της Ανάλυσης στην προτασιακή μορφή. grandfather(nick,w) father(x,z) father(z,y) grandfather(x,y) father(x,z) father(z,y) 72
73 Εναλλακτικές Προτάσεις Αν υπάρχουν περισσότερες της μιας προτάσεις με τις οποίες μπορεί να ενοποιηθεί η κλήση, τότε ενοποιείται με την πρώτη. Ονομάζεται σημείο οπισθοδρόμησης και αντιπροσωπεύει πιθανές εναλλακτικές "απαντήσεις" στην κλήση. Σε περίπτωση αποτυχίας εύρεσης λύσης ή σε περίπτωση που ο χρήστης ζητά και άλλη λύση, ο μηχανισμός οπισθοδρόμησης. επιστρέφει στο τελευταίο σημείο οπισθοδρόμησης ακυρώνοντας τα υπολογιστικά βήματα που έπονται και αναζητά στις επόμενες προτάσεις κάποια που να μπορεί να ενοποιηθεί με την κλήση. 73
74 Κατάληξη Εκτέλεσης Αν με την εξάντληση της διαδικασίας αυτής δεν καταλήξουμε σε ερώτηση χωρίς κλήσεις, τότε η απάντηση στην αρχική ερώτηση είναι αρνητική ή αλλιώς αποτυχία (fail). Σε αντίθετη περίπτωση η απάντηση στην ερώτηση είναι θετική ή αλλιώς επιτυχής (yes). Συνοδεύεται από τις αναθέσεις τιμών στις μεταβλητές της αρχικής ερώτησης που προέκυψαν από τις διαδοχικές ταυτοποιήσεις. 74
75 Παράδειγμα χωρίς μεταβλητές Ερώτηση και Πρόγραμμα?- a, b. Αρχική ερώτηση Προτάσεις προγράμματος Prolog a :- c, d. b :- w. b :- z. c :- e. d :- g, h. e. f. g. h. z. 75
76 Παράδειγμα χωρίς μεταβλητές Βήμα 1 (1/2)?- a, b. Η πρώτη κλήση (πιο αριστερή) ταυτοποιείται με κάποιον κανόνα. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. Το σώμα του κανόνα αντικαθιστά την κλήση. e. f. g. h. z. 76
77 Παράδειγμα χωρίς μεταβλητές Βήμα 1 (2/2)?- c, d, b. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. e. f. g. h. z. Το σώμα του κανόνα αντικαθιστά την κλήση. 77
78 Παράδειγμα χωρίς μεταβλητές Βήμα 2?- c, d, b. Η πρώτη κλήση (πιο αριστερή) ταυτοποιείται με κάποιον κανόνα. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. e. f. g. h. z. Το σώμα του κανόνα αντικαθιστά την κλήση. 78
79 Παράδειγμα χωρίς μεταβλητές Βήμα 3?- e, d, b. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. e. f. g. h. z. Η πρώτη κλήση (πιο αριστερή) ταυτοποιείται με κάποιο γεγονός. Το γεγονός αυτό προκαλεί την αφαίρεση της κλήσης. 79
80 Παράδειγμα χωρίς μεταβλητές Βήμα 4?- d, b. Η πρώτη κλήση (πιο αριστερή) ταυτοποιείται με κάποιον κανόνα. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. e. f. g. h. z. Το σώμα του κανόνα αντικαθιστά την κλήση. 80
81 Παράδειγμα χωρίς μεταβλητές Βήμα 5?- g, h, b. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. Η πρώτη κλήση (πιο αριστερή) ταυτοποιείται με κάποιο γεγονός. Το γεγονός αυτό προκαλεί την αφαίρεση της κλήσης. e. f. g. h. z. 81
82 Παράδειγμα χωρίς μεταβλητές Βήμα 6?- h, b. Η πρώτη κλήση (πιο αριστερή) ταυτοποιείται με κάποιο γεγονός. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. Το γεγονός αυτό προκαλεί την αφαίρεση της κλήσης. e. f. g. h. z. 82
83 Παράδειγμα χωρίς μεταβλητές Βήμα 7 *?- b. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. Η πρώτη κλήση (πιο αριστερή) ταυτοποιείται με κάποιον κανόνα. Η Prolog σημειώνει ότι υπάρχει και εναλλακτικός δρόμος, δηλαδή και άλλος υποψήφιος κανόνας για ταυτοποίηση. e. f. g. h. z. Το σώμα του κανόνα αντικαθιστά την κλήση. 83
84 Παράδειγμα χωρίς μεταβλητές Βήμα 8?- w. a :- c, d. b :- w. b :- z. c :- e. d :- g, h.? e. f. g. h. z. Η κλήση δεν μπορεί να ταυτοποιηθεί με κάποιο γεγονός. Προκαλείται αποτυχία στην ικανοποίηση του στόχου. Η αποτυχία προκαλεί την οπισθοδρόμηση της διαδικασίας απόδειξης στο πιο κοντινό (χρονικά) σημείο όπου υπήρχε εναλλακτικός δρόμος στην απόδειξη. 84
85 Παράδειγμα χωρίς μεταβλητές Βήμα 9 *?- b. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. Ακύρωση της προηγούμενης αντικατάστασης. e. f. g. h. z. Η πρώτη κλήση ξανα-ταυτοποιείται με τον εναλλακτικό κανόνα. Το σώμα του εναλλακτικού κανόνα αντικαθιστά εκ νέου την κλήση. 85
86 Παράδειγμα χωρίς μεταβλητές Βήμα 10?- z. Η πρώτη κλήση ταυτοποιείται με κάποιο γεγονός. a :- c, d. b :- w. b :- z. c :- e. d :- g, h. e. f. g. h. z. Το γεγονός αυτό προκαλεί την αφαίρεση της κλήσης. 86
87 Παράδειγμα χωρίς μεταβλητές Βήμα 11?- Δεν υπάρχουν άλλες κλήσεις (κενή κλήση). a :- c, d. b :- w.. b :- z. c :- e. d :- g, h. e. f. g. h. z. Ο αρχικός στόχος θεωρείται ότι έχει ικανοποιηθεί. 87
88 ?- a, b.?- c, d, b.?- e, d, b.?- d, b.?- g, h, b.?- h, b.?- b.?- w.?- z. Δένδρο Εκτέλεσης ή Δένδρο Υπολογισμού fail 88
89 Δένδρο Υπολογισμού (1/2) Κάθε κόμβος του δένδρου αντιστοιχεί στην τρέχουσα ερώτηση. Οι συνδέσεις (κλαδιά) μεταξύ των κόμβων αντιπροσωπεύουν ένα υπολογιστικό βήμα. Χαρακτηρίζονται από τις αντικαταστάσεις των μεταβλητών που γίνονται σε αυτό. Κάθε διαδρομή από τον αρχικό κόμβο μέχρι κάποιο φύλλο του δένδρου (τελικός κόμβος) καταλήγει είτε σε επιτυχία είτε σε αποτυχία. 89
90 Δένδρο Υπολογισμού (2/2) Οι διαδρομές που καταλήγουν σε επιτυχία αντιπροσωπεύουν τις εναλλακτικές απαντήσεις στην ερώτηση του χρήστη. Ο τελικός κόμβος στις διαδρομές αυτές είναι η κενή πρόταση, που συμβολίζεται με το. Σε περίπτωση που μια κλήση ενοποιείται με περισσότερες από μια προτάσεις του προγράμματος, τότε από τον κόμβο αυτόν ξεκινούν περισσότερα του ενός κλαδιά. Το σημείο αυτό είναι ένα σημείο οπισθοδρόμησης. 90
91 Ενοποίηση Επειδή οι κλήσεις μιας ερώτησης, τα γεγονότα και οι κεφαλές των κανόνων μπορεί να περιέχουν μεταβλητές η Prolog για να ελέγξει αν μία κλήση ικανοποιείται από μία πρόταση χρησιμοποιεί τον μηχανισμό ενοποίησης (unification). παρόμοια με την κατηγορηματική λογική. Ο μηχανισμός προσπαθεί να καταστήσει ταυτόσημες μια κλήση και την κεφαλή μιας πρότασης εκτελώντας τις ελάχιστες αναθέσεις τιμών σε μεταβλητές. πιο γενικός ενοποιητής (most general unifier) 91
92 Κανόνες Ενοποίησης (1/2) Μία μεταβλητή που δεν έχει πάρει τιμή μπορεί να ταυτοποιηθεί με σταθερή, μεταβλητή ή σύνθετο όρο. Μία σταθερά μπορεί να ταυτοποιηθεί μόνο με τον εαυτό της. Ένας σύνθετος όρος μπορεί να ταυτοποιηθεί με έναν άλλο σύνθετο μόνο εφόσον έχουν το ίδιο συναρτησιακό σύμβολο και την ίδια τάξη, και με την προϋπόθεση ότι τα αντίστοιχα ορίσματά τους μπορούν να ταυτοποιηθούν. 92
93 Κανόνες Ενοποίησης (2/2) <σταθερά> c1 <μεταβλητή> X1 <σύνθετος όρος> f(t1,,tν) <σταθερά> c2 επιτυχές αν η c1 είναι ίδια με τη c2 η μεταβλητή X1 παίρνει την τιμή c2 {Χ1=c2} αποτυγχάνει <μεταβλητή> X2 η μεταβλητή X2 παίρνει την τιμή c1 {Χ2=c1} η μεταβλητή X1 ενοποιείται με τη X2 {Χ1=Χ2} επιτυχές αν {Χ2=f(u1,,um)} <σύνθετος όρος> f(u1,,uμ) αποτυγχάνει επιτυχές αν {Χ1=f(t1,,tn)} επιτυχές αν ν==μ και u1==t1,,uμ==tν 93
94 Παραδείγματα Ενοποίησης Ατομικών Τύπων (1/2) age(χ, 17) age(tom, 17) {X=tom} age(χ, 17) - age(tom, 18) Δεν ενοποιούνται καθώς το δεύτερο όρισμα έχει διαφορετικές τιμές. age(χ, 17) - agel(χ, 17) Δεν ενοποιούνται καθώς πρόκειται για διαφορετικά κατηγορήματα (functors). a(χ, Χ) - a(bob, Υ) {X=Y=bob} 94
95 Παραδείγματα Ενοποίησης Ατομικών Τύπων (2/2) a(χ, Χ) - a(bob, tom) Δεν ενοποιούνται. Η μεταβλητή Χ μπορεί να πάρει μόνο μια τιμή. a(f (1, Χ), 3) a(f (Υ, k), Ζ) {Υ=1, X=k, Ζ=3} a(3, Χ) a(υ, f(2,υ)) {Υ=3, X=f(2, 3) } a(f(1,2),3) a(f(υ, 2, 3), Ζ) Δεν ενοποιούνται γιατί τα πρώτα ορίσματα στους δύο ατομικούς όρους έχουν διαφορετικό αριθμό ορισμάτων. 95
96 Παράδειγμα εκτέλεσης προγράμματος (1/2) Έστω το πρόγραμμα greek(socrates). human(turing). human(socrates). fallible(x):- human(x). Tίθεται το ερώτημα.?- fallible(y), greek(y). Απάντηση: Y=socrates 96
97 Παράδειγμα εκτέλεσης προγράμματος (2/2) * greek(socrates). human(turing). human(socrates). fallible(x) :- human(x).?-fallible(y), greek(y). {Y=X}?-human(Y), greek(y).? {Y=turing}?-greek(turing). {Y=socrates}?-greek(socrates). αποτυγχάνει Απάντηση: Y=socrates 97
98 Γενεαλογικό Δένδρο (εναλλακτικά) Κυριάκος married Κατερίνα Γιώργος married Μαρία Μανώλης married Θεανώ child_of child_of child_of Ελένη married married Κώστας Άννα Δημήτρης child_of child_of child_of Νίκος married Μαρία2 Κατερίνα2 Μανώλης2 child_of Δημήτρης2 98
99 Γενεαλογικό Δένδρο (εναλλακτικά) Γεγονότα. married('κυριάκος','κατερίνα').... child_of('ελένη','κυριάκος').... Να ορισθεί η σχέση parent/2. parent(x,y) :- child_of(y,x). parent(x,y) :- child_of(y,z), married(z,x). Κατηγορήματα child_of Χ Κυριάκος Ελένη Υ Ζ Υ Χ parent(x,y) :- child_of(y,z), married(x,z). married parent? Χ Χ Ζ Κατερίνα child_of Κώστας Υ Υ 99
100 Γενεαλογικό Δένδρο (εναλλακτικά) Αντιμεταθετική σχέση Η σχέση married/2 είναι μονής κατεύθυνσης. Να ορισθεί μία ανάλογη αντιμεταθετική σχέση. are_married(x,y) :- married(x,y). are_married(x,y) :- married(y,x). Η σχέση parent/2 μπορεί να γραφεί parent(x,y) :- child_of(y,x). Κυριάκος parent(x,y) :- parent child_of(y,z), child_of are_married(z,x). Ελένη are_married Κατερίνα Κώστας child_of 100
101 Γενεαλογικό Δένδρο (εναλλακτικά) Μηχανισμός εκτέλεσης parent(x,y) :- child_of(y,x). parent(x,y) :- child_of(y,z), are_married(z,x). are_married(x,y) :- married(x,y). are_married(x,y) :- married(y,x). married(kiriakos,katerina). child_of(eleni,kiriakos). child_of(kostas,katerina). child_of?- parent(z,eleni),parent(z,kostas). Κυριάκος Ελένη are_married married parent Κατερίνα child_of Κώστας 101
102 ?- parent(z,eleni),parent(z,kostas). * titlos parent(x,y) :- {Z=Χ,Υ=eleni} child_of(y,x).?- child_of(eleni,ζ),parent(z,kostas). child_of(eleni,kiriakos).?- parent(kiriakos,kostas). parent(x,y) :- child_of(y,x). FAIL * {X =kiriakos, Υ =kostas}?- child_of(kostas,kiriakos). {Z=kiriakos,Υ=eleni}? 102
103 ?- parent(kiriakos,kostas). parent(x,y) :- child_of(y,z), are_married(z,x).?- child_of(kostas,z),are_married(z,kiriakos). child_of(kostas,katerina). {X =kiriakos, Υ =kostas} {Z =katerina} * are_married(x,y) :- married(x,y). FAIL {X =katerina, Υ =kiriakos}?- are_married(katerina,kiriakos).?- married(katerina,kiriakos).? 103
104 are_married(x,y) :- married(y,x). {X =katerina, Υ =kiriakos}?- are_married(katerina,kiriakos).?- married(kiriakos,katerina). married(kiriakos,katerina).? yes Z=kiriakos Αν ζητηθεί εναλλακτική λύση, υπάρχει οπισθοδρόμηση στο πιο κοντινό (χρονικά) σημείο εναλλακτικής επιλογής, το οποίο ΔΕΝ έχει χρησιμοποιηθεί σε προηγούμενη οπισθοδρόμηση. 104
105 ?- parent(z,eleni),parent(z,kostas). parent(x,y) :- child_of(y,z ), are_married(z,x). {Z=Χ,Υ=eleni}?- child_of(eleni,ζ ), are_married(z,ζ), parent(z,kostas).... {Z =kiriakos, Z=katerina} yes Z=katerina 105
106 Αναδρομή Η αναδρομή (recursion) αποτελεί βασικό στοιχείο στον προγραμματισμό με Prolog. Με τον όρο αναδρομή εννοούμε τη δυνατότητα ένας κανόνας να περιέχει στο σώμα του μια κλήση προς τον εαυτό του. Οι κανόνες που χρησιμοποιούν αναδρομή χαρακτηρίζονται σαν αναδρομικοί κανόνες. Η χρήση της αναδρομής οδηγεί σε μικρότερα προγράμματα. 106
107 Παράδειγμα Αναδρομής (1/4) Έστω τα γεγονότα: parent(john,george). parent(john,nick). parent(jim,bill). parent(jim,jack). parent(gregory,john). parent(gregory,jim). parent(bob,gregory). parent(joseph,bob). Θέλουμε να ορίσουμε έναν κανόνα predecessor(x,y), ο οποίος να αληθεύει αν ο Χ είναι πρόγονος του Υ. 107
108 Παράδειγμα Αναδρομής (2/4) Χ Λύση με μη αναδρομικούς κανόνες: predecessor(x,z) :- parent(x,z). predecessor(x,z) :- parent(x,y), parent(y,z). Ζ Χ Υ Ζ predecessor(x,z) :- parent(x,y1),parent(y1,y2), parent(y2,z). Δεν μπορούν να γραφούν άπειροι κανόνες ώστε να καλύπτονται όλες οι γενεές. 108 Χ Υ1 Υ2 Ζ
109 Παράδειγμα Αναδρομής (3/4) Με αυτόν τον τρόπο δεν μπορούμε να ορίσουμε τη σχέση για πολύ μακρινούς απογόνους. Π.χ. στην ακόλουθη ερώτηση δεν δίνονται όλες οι απαντήσεις. Λείπει η X=joseph?- predecessor(x, george). X=john; X=gregory; X=bob; no joseph bob gregory john george 109
110 Παράδειγμα Αναδρομής (4/4) Λύση με αναδρομικούς κανόνες: Ο αναδρομικός κανόνας διατρέχει τις γενεές ανεξάρτητα της απόστασής τους. predecessor(x,z):- parent(x,z). predecessor(x,z):- parent(x,y), predecessor(y,z). Παρατήρηση: Όταν ένα κατηγόρημα ορίζεται αναδρομικά, εμφανίζεται πάντα με τουλάχιστον δύο κανόνες. Ο πρώτος συνήθως δεν περιέχει αναδρομική κλήση, λειτουργώντας σαν τερματική συνθήκη. 110
111 Αναδρομική σχέση predecessor Ο Χ είναι πρόγονος του Ζ όταν: είτε ο Χ είναι πατέρας του Ζ, είτε υπάρχει ένα Υ τέτοιο ώστε ο Χ να είναι πατέρας του Υ και ο Υ να είναι πρόγονος του Ζ. predecessor(x,z):- parent(x,z). predecessor(x,z):- parent(x,y), predecessor(y,z). predecessor parent Χ Υ... Ζ predecessor 111
112 Απαντήσεις αναδρομικής σχέσης?- predecessor(x, george). X=john; X=gregory; X=bob; X=joseph; no 112
113 parent(joseph,bob). parent(bob,gregory). parent(gregory,john). predecessor(x,z):- parent(x,z). predecessor(x,z):- parent(x,y), predecessor(y,z). {A=gregory} A=gregory?- predecessor(joseph,a). {X=joseph,Z=A} {X=joseph,Z=A}?- parent(joseph,a). {A=bob} A=bob?- parent(bob,a). {X=gregory,Z=A}?- parent(gregory,a). {A=john} A=john?- parent(joseph,y), predecessor(y,a). {Y=bob}?- predecessor(bob,a). {X=bob,Z=A} {X=bob,Z=A}?- parent(bob,y), predecessor(y,a). {Y=gregory}?- predecessor(gregory,a). {X=gregory,Z=A}?- parent(gregory,y), predecessor(y,a). {Y=john}?- predecessor(john,a). 113
114 parent(joseph,bob). parent(bob,gregory). parent(gregory,john). predecessor(x,z):-???- predecessor(john,a). {X=jonh,Z=A} {X=jonh,Z=A}?- parent(jonh,a).?- parent(jonh,y), predecessor(y,a). parent(x,z). predecessor(x,z):- parent(x,y), predecessor(y,z). fail fail 114
115 Παράδειγμα Γράφου Πόλεων (1/8) a b c d e road(a,b). road(b,c). road(c,d). road(d,e). 115
116 Παράδειγμα Γράφου Πόλεων (2/8) a X b c Y d e connected(x,y):- road(x,y). 116
117 Παράδειγμα Γράφου Πόλεων (3/8) a connected(x,y):- X b Z c Y d e road(x,z), road(z,y). 117
118 Παράδειγμα Γράφου Πόλεων (4/8) a connected(x,y):- road(x,z1), road(z1,z2), road(z2,y). X b c d Z Z2 1 Y e 118
119 Παράδειγμα Γράφου Πόλεων (5/8) a X connected(x,y):- road(x,z1), Z1 b c Z2 d Z3 Y e road(z1,z2), road(z2,z3), road(z3,y). 119
120 Παράδειγμα Γράφου Πόλεων (6/8) a X connected(x,y):- road(x,y). Z 1 b x y Z i Z i+1 Y z connected(x,y):- road(x,z), connected(z,y). 120
121 Παράδειγμα Γράφου Πόλεων a X (7/8) Z 1 b x y Z i Z i+1 Y z connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). 121
122 Παράδειγμα Γράφου Πόλεων (8/8) a X Z 1 b x y Z i Z i+1 Y z connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). 122
123 Κίνδυνοι Αναδρομής Ο βασικότερος κίνδυνος της αναδρομής είναι ο ατέρμονας βρόχος. Συμβαίνει όταν: Δεν υπάρχει τερματικός κανόνας/γεγονός. Υπάρχει τερματικός κανόνας, αλλά δεν ενοποιείται ποτέ με την αναδρομική κλήση ή αποτυγχάνει συνέχεια. Τα δεδομένα πάνω στα οποία «τρέχουν» οι κανόνες έχουν κυκλική αλληλεξάρτηση. 123
124 Μη-ύπαρξη τερματικού κανόνα (1/3) road(a,b). road(b,c). road(c,d). road(d,e). road(e,a). connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). f?- connected(a,e). Αν και έπρεπε να απαντηθεί yes, το ερώτημα δεν θα απαντηθεί ποτέ, γιατί η Prolog θα πέσει σε ατέρμονα βρόχο! 124
125 Μη-ύπαρξη τερματικού κανόνα (2/3)?- connected(a,e).?- road(a,z),connected(z,e). {Z=b}?- connected(b,e).?- road(b,z ),connected(z,e). connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). {Z =c}?- connected(c,e).?- road(c,z ),connected(z,e). {Z =d}?- connected(d,e). 125
126 Μη-ύπαρξη τερματικού κανόνα (3/3)?- connected(d,e).?- road(d,z ),connected(z,e). {Z =e}?- connected(e,e).?- road(e,z ),connected(z,e). {Z =a} connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y).?- connected(a,e). Είναι η αρχική ερώτηση! Η εκτέλεση θα συνεχιστεί επ άπειρω! 126
127 Αποτυχία τερματικού κανόνα (1/3)?- connected(a,e). Αν και έπρεπε να απαντηθεί yes, το road(a,b). f ερώτημα δεν θα απαντηθεί ποτέ, γιατί η road(b,c). Prolog θα πέσει σε road(c,d). ατέρμονα βρόχο! road(d,e). road(e,a). connected(x,χ):- road(x,χ). connected(x,y):- road(x,z), connected(z,y). 127
128 Αποτυχία τερματικού κανόνα (2/3)?- connected(a,e). no?- road(a,z),connected(z,e). {Z=b}?- connected(b,e). no?- road(b,z ),connected(z,e). connected(x,χ):- road(x,χ). connected(x,y):- road(x,z), connected(z,y). no {Z =c}?- connected(c,e).?- road(c,z ),connected(z,e). {Z =d}?- connected(d,e). 128
129 Αποτυχία τερματικού κανόνα (3/3)?- connected(d,e). no?- road(d,z ),connected(z,e). {Z =e}?- connected(e,e).?- road(e,e).?- road(e,z ),connected(z,e). connected(x,χ):- road(x,χ). connected(x,y):- road(x,z), connected(z,y). no {Z =a}?- connected(a,e). Είναι η αρχική ερώτηση! Η εκτέλεση θα συνεχιστεί επ άπειρω! 129
130 Κυκλική Αλληλεξάρτηση Δεδομένων Μεταβατική Ιδιότητα (1/3)?- connected(a,e). yes road(a,b). f?- connected(a,f). Αν και έπρεπε να road(b,c). απαντηθεί no, το ερώτημα road(c,d). δεν θα απαντηθεί ποτέ, γιατί η Prolog θα πέσει σε road(d,e). ατέρμονα βρόχο! road(e,a). connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). 130
131 Κυκλική Αλληλεξάρτηση Δεδομένων Μεταβατική Ιδιότητα (2/3)?- connected(a,f).?- road(a,f). no?- road(b,f).?- road(a,z),connected(z,f). {Z=b}?- connected(b,f).?- road(b,z ),connected(z,f). connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). no?- road(c,f). no {Z =c}?- connected(c,f).?- road(c,z ),connected(z,f). {Z =d}?- connected(d,f). 131
132 Κυκλική Αλληλεξάρτηση Δεδομένων Μεταβατική Ιδιότητα (3/3)?- connected(d,f).?- road(d,f). no?- road(d,z ),connected(z,f). {Z =e}?- connected(e,f). connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y).?- road(e,f). no?- road(e,z ),connected(z,f). {Z =a}?- connected(a,f). Είναι η αρχική ερώτηση! Η εκτέλεση θα συνεχιστεί επ άπειρω! 132
133 Κυκλική Αλληλεξάρτηση Δεδομένων Αντιμεταθετική Ιδιότητα (1/6) Η σχέση married/2 είναι μονής κατεύθυνσης. Πώς μπορεί να γίνει διπλής κατεύθυνσης? (Αντιμεταθετική) Λύσεις: 1. Να γραφούν όλα τα γεγονότα 2 Νίκος φορές: married(kiriakos,katerina). married(katerina,kiriakos). Μειονέκτημα: Πολύς κόπος από τον προγραμματιστή και σπατάλη χώρου Κυριάκος child_of married Ελένη child_of married Δημήτρης2 Κατερίνα Μαρία2 married child_of Γιώργος Κώστας child_of Κατερίνα2 married Άννα Μαρία child_of 133
134 Κυκλική Αλληλεξάρτηση Δεδομένων Αντιμεταθετική Ιδιότητα (2/6) 2. Να γραφεί αναδρομικός κανόνας που να δηλώνει ότι η σχέση είναι αντιμεταθετική. Κυριάκος married Κατερίνα Γιώργος married Μαρία married(kiriakos,katerina). married(maria,george). child_of Ελένη married Κώστας child_of Άννα married(χ,υ) :- married(υ,x). Μειονέκτημα: Η Prolog πέφτει σε ατέρμονα βρόχο λόγω κυκλικής αλληλεξάρτησης δεδομένων. 134
135 Κυκλική Αλληλεξάρτηση Δεδομένων Αντιμεταθετική Ιδιότητα (3/6) Το πρόγραμμα απαντάει yes όταν πρέπει να απαντήσει yes. married(kiriakos,katerina). married(maria,george). married(χ,υ) :- married(υ,x).?- married(kiriakos,katerina). yes % λόγω γεγονότος.?- married(katerina,kiriakos). yes % λόγω κανόνα και γεγονότος. {Χ=katerina, Y=kiriakos} 135
136 Κυκλική Αλληλεξάρτηση Δεδομένων Αντιμεταθετική Ιδιότητα (4/6) Το πρόγραμμα απαντάει no όταν πρέπει να απαντήσει no? married(kiriakos,katerina). married(maria,george). married(χ,υ) :- married(υ,x).?- married(kiriakos,maria). {Χ=kiriakos, Y=maria}?- married(maria,kiriakos). {Χ=maria, Y=kiriakos}?- married(kiriakos,maria). Είναι η αρχική ερώτηση! Η εκτέλεση θα συνεχιστεί επ άπειρω! 136
137 Κυκλική Αλληλεξάρτηση Δεδομένων Αντιμεταθετική Ιδιότητα (5/6) 3. Να γραφούν 2 μη-αναδρομικοί κανόνες που να δηλώνουν ότι η σχέση είναι αντιμεταθετική. married(kiriakos,katerina). married(maria,george). are_married(χ,υ) :- married(x,υ). are_married(χ,υ) :- married(υ,x).?- are_married(kiriakos,katerina). yes?- are_married(katerina,kiriakos). yes % λόγω 1 ου κανόνα + γεγονός % λόγω 2 ου κανόνα + γεγονός?- married(kiriakos,katerina).?- married(kiriakos,katerina). 137
138 Κυκλική Αλληλεξάρτηση Δεδομένων Αντιμεταθετική Ιδιότητα (6/6)?- are_married(kiriakos,maria). {X=kiriakos,Y=maria} {X=kiriakos,Y=maria}?- married(kiriakos,maria).?- married(maria,kiriakos). no married(kiriakos,katerina). married(maria,george). are_married(χ,υ) :- married(x,υ). are_married(χ,υ) :- married(υ,x). no 138
139 Κυκλική Αλληλεξάρτηση Δεδομένων Μεταβατική Ιδιότητα Εναλλακτικά (1/3) Γιατί η μεταβατική ιδιότητα σε γράφους απαιτεί δύο (2) κατηγορήματα; Π.χ. road/2 για τις απευθείας ακμές και connected/2 για τις «μεταβατικές». connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). Γιατί δεν είναι εφικτός ο παρακάτω ορισμός; Η μείξη δηλαδή άμεσων και έμμεσων ακμών; road(a,b). road(b,c). road(x,y) :- road(x,z), road(z,y). 139
140 Κυκλική Αλληλεξάρτηση Δεδομένων Μεταβατική Ιδιότητα Εναλλακτικά (2/3) road(a,b). road(b,c). road(c,a). road(x,y) :- road(x,z), road(z,y). Ένας τέτοιος ορισμός θα έδινε σωστές απαντήσεις στην καταφατική περίπτωση, αλλά θα έπεφτε σε ατέρμονα βρόχο στην αρνητική περίπτωση. Ακριβώς όπως στην περίπτωση της αντιμεταθετικής ιδιότητας.?- road(a,c). yes?- road(a,c). {X=a,Y=c}?- road(a,z), road(z,c). {Z=b}?- road(b,c). 140
141 Κυκλική Αλληλεξάρτηση Δεδομένων Μεταβατική Ιδιότητα Εναλλακτικά (3/3) road(a,b). road(b,c). road(c,a). road(x,y) :- road(x,z), road(z,y).?- road(a,d). Θα έπρεπε να πάρουμε αρνητική απάντηση. Αντ αυτού η Prolog πέφτει σε ατέρμονα βρόχο.?- road(a,d). {X=a,Y=d}?- road(a,z), road(z,d). {X =b, Y =d} {Z=b}?- road(b,d).?- road(b,z), road(z,d). {Z =c}?- road(c,d). {X =c, Y =d}?- road(c,z), road(z,d).?- road(a,d). {Z =a} 141
142 Γενικό «Δίδαγμα» Όταν υπάρχει γράφος και αναδρομή καλό είναι τα κατηγορήματα που απεικονίζουν τις ακμές του γράφου (γεγονότα) να είναι διαχωρισμένα από τα αναδρομικά κατηγορήματα που διασχίζουν το γράφο. Παρ όλα αυτά δεν είναι δυνατόν πάντα να γλυτώσουμε τα προβλήματα με την αναδρομή. Π.χ. κυκλικά δεδομένα. Μια ακόμα περίπτωση είναι ο συνδυασμός αντιμεταθετικής και μεταβατικής ιδιότητας. 142
143 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (1/12) road1(a,b). road1(b,c). road1(c,d). road1(e,f). road2(x,y) :- road1(x,y). road2(x,y) :- road1(y,x). Το κατηγόρημα road1/2 είναι μονής κατεύθυνσης, ενώ το road2/2 αντιμεταθετικό. Το κατηγόρημα connected/2 είναι σωστό; Απαντάει ναι/όχι όταν πρέπει; connected(x,y):- road2(x,y). connected(x,y):- road2(x,z), connected(z,y). 143
144 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (2/12)?- connected(a,c).?- road2(a,z),connected(z,c). road1(a,b). road1(b,c).?- road1(a,z),connected(z,c). road1(c,d). {Z=b} road1(e,f).?- connected(b,c). road2(x,y) :- road1(x,y). road2(x,y) :- road1(y,x).?- road2(b,c). connected(x,y):- road2(x,y). connected(x,y):- road2(x,z), connected(z,y).?- road1(b,c). 144
145 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (3/12)?- connected(c,a). road1(a,b). road1(b,c). road1(c,d). road1(e,f). road2(x,y) :- road1(x,y). road2(x,y) :- road1(y,x). connected(x,y):- road2(x,y). connected(x,y):- road2(x,z), connected(z,y).?- road2(c,z),connected(z,a).?- road1(z,c),connected(z,a). {Z=b}?- connected(b,c).?- road2(b,c).?- road1(b,c). 145
146 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (4/12)?- connected(a,e).?- road2(a,z),connected(z,e). road1(a,b).?- road1(a,z),connected(z,e). road1(b,c). {Z=b} road1(c,d).?- connected(b,e). road1(e,f).?- road2(b,z),connected(z,e). road2(x,y) :- road1(x,y). road2(x,y) :- road1(y,x).?- road1(b,z),connected(z,e). connected(x,y):- road2(x,y). {Z=c} connected(x,y):- road2(x,z), connected(z,y).?- connected(c,e). 146
147 road1(a,b). road1(b,c). road1(c,d). Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (5/12) Η Prolog εισέρχεται σε ατέρμονα βρόχο!?- connected(c,e).?- road2(c,z),connected(z,e).?- road1(c,z),connected(z,e). {Z=d}?- connected(d,e). road1(e,f). road2(x,y) :- road1(x,y).?- road2(d,z),connected(z,e). road2(x,y) :- road1(y,x). connected(x,y):- road2(x,y).?- road1(z,d),connected(z,e). connected(x,y):- road2(x,z), connected(z,y). {Z=c}?- connected(c,e). 147
148 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (6/12) Το πρόβλημα προκαλείται από την αντιμεταθετική ιδιότητα, η οποία δημιουργεί κυκλικά δεδομένα. 148
149 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (7/12) Λύση: Ο διαχωρισμός των κατηγορημάτων για την μεταβατική και αντιμεταθετική ιδιότητα. road(a,b). road(b,c). road(c,d). road(e,f). connected(x,y):- road(x,y). Γεγονότα ακμών απλής κατεύθυνσης. connected(x,y):- road(x,z), connected(z,y). Αναδρομική μεταβατική σχέση «έμμεσων» ακμών «μονής κατεύθυνσης». connected2(x,y):- connected(x,y). connected2(x,y):- connected(y,χ). Αντιμεταθετική σχέση «έμμεσων» ακμών. 149
150 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (8/12)?- connected2(a,c). road(a,b).?- connected(a,c). road(b,c). road(c,d).?- road(a,z),connected(z,c). road(e,f). {Z=b} connected2(x,y):- connected(x,y).?- connected(b,c). connected2(x,y):- connected(y,χ). connected(x,y):- road(x,y).?- road(b,c). connected(x,y):- road(x,z), connected(z,y). 150
151 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (9/12)?- connected2(c,a). road(a,b).?- connected(a,c). road(b,c).?- road(a,z),connected(z,c). road(c,d). {Z=b} road(e,f).?- connected(b,c). connected2(x,y):- connected(x,y). connected2(x,y):- connected(y,χ). connected(x,y):- road(x,y).?- road(b,c). connected(x,y):- road(x,z), connected(z,y). 151
152 Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (10/12) Σημείο οπισθοδρόμησης?- connected2(a,e).?- connected(a,e). road(a,b).?- road(a,z),connected(z,e). road(b,c). {Z=b} road(c,d).?- connected(b,e). road(e,f). connected2(x,y):- connected(x,y).?- road(b,z),connected(z,e). connected2(x,y):- connected(y,χ). {Z=c} connected(x,y):- road(x,y).?- connected(c,e). connected(x,y):- road(x,z), connected(z,y). * 152
153 road(a,b). road(b,c). Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (11/12)?- connected(c,e).?- road(c,z),connected(z,e). {Z=d}?- connected(d,e). road(c,d).?- road(d,z),connected(z,e). road(e,f). connected2(x,y):- connected(x,y). FAIL connected2(x,y):- connected(y,χ). connected(x,y):- road(x,y). connected(x,y):- road(x,z), connected(z,y). Οπισθοδρόμηση σε προηγούμενο σημείο της εκτέλεσης με εναλλακτική επιλογή. 153
154 road(a,b). road(b,c). road(c,d). Συνδυασμός αντιμεταθετικήςμεταβατικής ιδιότητας (12/12) Σημείο οπισθοδρόμησης?- connected2(a,e).?- connected(e,a).?- road(e,z),connected(z,a). {Z=f}?- connected(f,a). road(e,f).?- road(f,z),connected(z,a). connected2(x,y):- connected(x,y). connected2(x,y):- connected(y,χ). FAIL Δεν υπάρχει άλλο connected(x,y):- road(x,y). σημείο οπισθοδρόμησης. connected(x,y):- road(x,z), connected(z,y). no * 154
155 Γράφοι και Προβλήματα Αναδρομής Λύση στα προβλήματα της αναδρομής σε κυκλικούς γράφους μπορεί να δοθεί μόνο αν μπορέσουμε να «θυμόμαστε» με κάποιον τρόπο από ποια σημεία έχουμε «περάσει». Αυτό θα γίνει με τη βοήθεια κάποιων αναδρομικών δομών δεδομένων, όπως είναι οι λίστες. 155
156 Σημείωμα Αναφοράς Copyright, Νίκος Βασιλειάδης. «. Λογικός Προγραμματισμός: η γλώσσα Prolog: Εισαγωγή, Ιστορική Αναδρομή, Σύνταξη, Εκτέλεση Προγραμμάτων, Αναδρομή». Έκδοση: 1.0. Θεσσαλονίκη Διαθέσιμο από τη δικτυακή διεύθυνση:
157 Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο [1]
158 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: Εμμανουήλ Ρήγας Θεσσαλονίκη, Εαρινό Εξάμηνο
159 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα
Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών
Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons και
Διαβάστε περισσότεραΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 11: Λογική πρώτης τάξης. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 11: Λογική πρώτης τάξης Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου
Διαβάστε περισσότεραΕΠΛ 434: Λογικός Προγραμματισμός
ΕΠΛ 434: Λογικός Προγραμματισμός και Τεχνητή Νοημοσύνη Επισκ. Λέκτορας Λοΐζος Μιχαήλ Τμήμα Πληροφορικής ρ Πανεπιστήμιο Κύπρου (Χειμερινό Εξάμηνο 2008 2009) Προγράμματα στην Prolog Αλγόριθμος = Λογική +
Διαβάστε περισσότεραΔιακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 14: Γραμματικές Χωρίς Συμφραζόμενα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Δημήτρης Πλεξουσάκης 4ο μέρος σημειώσεων: Ακολουθίες Επίλυσης, Επίλυση για όρους Horn, Λογικός Προγραμματισμός Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Δημήτρης Πλεξουσάκης 2ο μέρος σημειώσεων: Συστήματα Αποδείξεων για τον ΠΛ, Μορφολογική Παραγωγή, Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης
Διαβάστε περισσότεραΠεριεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ
Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,
Διαβάστε περισσότεραΛογικός Προγραμματισμός Ασκήσεις
Λογικός Προγραμματισμός Ασκήσεις Παναγιώτης Σταματόπουλος Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιεχόμενα 1. Α Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους 2008-09... 3 1.1 Άσκηση 1...
Διαβάστε περισσότεραΕισαγωγή στις Βάσεις Δεδομζνων II
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΣΙΑ ΠΑΝΕΠΙΣΗΜΙΟ ΚΡΗΣΗ Εισαγωγή στις Βάσεις Δεδομζνων II Ενότητα: Λογική και Θεωρία Συνόλων Διδάσκων: Πηγουνάκης Κωστής ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΣΧΟΛΗ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Άδειες Χρήσης
Διαβάστε περισσότεραΥπολογιστικά & Διακριτά Μαθηματικά
Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 2:Στοιχεία Μαθηματικής Λογικής Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 21: Υπολογισμοί ΜΤ - Αναδρομικές Γλώσσες Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Δημήτρης Πλεξουσάκης 3ο μέρος σημειώσεων: Μέθοδος της Επίλυσης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια
Διαβάστε περισσότεραΛογικός Προγραμματισμός Ασκήσεις
Λογικός Προγραμματισμός Ασκήσεις Παναγιώτης Σταματόπουλος Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιεχόμενα 1. Α Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους 2011-12... 3 1.1 Άσκηση 1...
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 24: Μη Ντεντερμινιστικές Μηχανές Turing Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Ενότητα 1: Εισαγωγή Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons
Διαβάστε περισσότεραΤεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή
Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Εισαγωγή Η PROLOG (PROgramming in LOGic) είναι μια συμβολική γλώσσα προγραμματισμού
Διαβάστε περισσότεραPROLOG Εισαγωγή (PROgramming in LOGic)
PROLOG Εισαγωγή (PROgramming in LOGic) Γλώσσα Λογικού Προγραμματισμού Βασίζεται στο Προτασιακό Λογισμό 1 ης τάξης Χρησιμοποιεί προτάσεις Horn αλγόριθμος = λογική + έλεγχος Μέσω της Prolog δίνουμε βάρος
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραHY Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο. Φροντιστήριο 6
HY-180 - Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο 2015-2016 Φροντιστήριο 6 Α) ΘΕΩΡΙΑ Μέθοδος Επίλυσης (Resolution) Στη μέθοδο της επίλυσης αποδεικνύουμε την ικανοποιησιμότητα ενός συνόλου προτάσεων,
Διαβάστε περισσότεραΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 9: Προτασιακή λογική. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 9: Προτασιακή λογική Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου
Διαβάστε περισσότεραΛογική. Φροντιστήριο 3: Συνεπαγωγή/Ισοδυναμία, Ταυτολογίες/Αντινομίες, Πλήρης Αλγόριθμος Μετατροπής σε CNF
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Φροντιστήριο 3: Συνεπαγωγή/Ισοδυναμία, Ταυτολογίες/Αντινομίες, Πλήρης Αλγόριθμος Μετατροπής σε CNF Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Άδειες
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 26: Καθολική Μηχανή Turing Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Φροντιστήριο 4: Μορφολογική Παραγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Φροντιστήριο 4: Μορφολογική Παραγωγή Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης
Διαβάστε περισσότεραΛογική Δημήτρης Πλεξουσάκης Φροντιστήριο 5: Προτασιακός Λογισμός: Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών
Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 5: Προτασιακός Λογισμός: Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης 1. Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons
Διαβάστε περισσότεραΛογικός Προγραμματισμός Ασκήσεις
Λογικός Προγραμματισμός Ασκήσεις Παναγιώτης Σταματόπουλος Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιεχόμενα 1. Α Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους 2012-13... 3 1.1 Άσκηση 1...
Διαβάστε περισσότερα2 n N: 0, 1,..., n A n + 1 A
Θεωρία Υπολογισμού Ενότητα 5: Τεχνικές απόδειξης & Κλειστότητα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΑΛΓΟΡΙΘΜΟΙ Ενότητα 10
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 10: Επαναληπτική Βελτίωση Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Άδειες Χρήσης Το
Διαβάστε περισσότεραΣυστήματα Γνώσης. Θεωρητικό Κομμάτι Μαθήματος Ενότητα 2: Βασικές Αρχές Αναπαράστασης Γνώσης και Συλλογιστικής
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Θεωρητικό Κομμάτι Μαθήματος Ενότητα 2: Βασικές Αρχές Αναπαράστασης Γνώσης και Συλλογιστικής Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα 5: Εντολές επανάληψης Κουκουλέτσος Κώστας Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστικών Συστημάτων
Διαβάστε περισσότεραΤεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή
Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Λογική Αποσαφήνιση και τυποποίηση της διαδικασίας της ανθρώπινης σκέψης Η μαθηματική
Διαβάστε περισσότεραΜαθηματικά. Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής
Μαθηματικά Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΥπολογιστικά & Διακριτά Μαθηματικά
Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 8: Σχέσεις - Πράξεις Δομές Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,
Διαβάστε περισσότεραΚεφάλαιο 1. Εισαγωγή
Κεφάλαιο 1 Εισαγωγή Η λέξη Prolog προκύπτει ως συντομογραφία από τις γαλλικές λέξεις «PROgrammation en LOGique» ή κατ αντιστοιχία στην Αγγλική «PROgramming in LOGic» που σημαίνει «προγραμματισμός σε λογική».
Διαβάστε περισσότεραΠανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 6: Προτασιακός Λογισμός
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Διακριτά Μαθηματικά Ενότητα 6: Προτασιακός Λογισμός Αν. Καθηγητής Κ. Στεργίου e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραK15 Ψηφιακή Λογική Σχεδίαση 3: Προτασιακή Λογική / Θεωρία Συνόλων
K15 Ψηφιακή Λογική Σχεδίαση 3: Προτασιακή Λογική / Θεωρία Συνόλων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Στοιχεία προτασιακής λογικής Περιεχόμενα
Διαβάστε περισσότερα4.3 Ορθότητα και Πληρότητα
4.3 Ορθότητα και Πληρότητα Συστήματα αποδείξεων όπως η μορφολογική παραγωγή και η κατασκευή μοντέλων χρησιμοποιούνται για να δείξουμε την εγκυρότητα εξαγωγών συμπερασμάτων. Ένα σύστημα αποδείξεων μπορεί
Διαβάστε περισσότεραΥπολογιστικά & Διακριτά Μαθηματικά
Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 5: Αναδρομικές σχέσεις - Υπολογισμός Αθροισμάτων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για
Διαβάστε περισσότεραΛογική Δημήτρης Πλεξουσάκης Ασκήσεις στον Κατηγορηματικό Λογισμό Τμήμα Επιστήμης Υπολογιστών
Λογική Δημήτρης Πλεξουσάκης Ασκήσεις στον Κατηγορηματικό Λογισμό Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons και ειδικότερα Αναφορά
Διαβάστε περισσότεραΥπολογιστικά & Διακριτά Μαθηματικά
Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 3: Σύνολα Συνδυαστική Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 13: Ελαχιστοποίηση αυτομάτων Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που
Διαβάστε περισσότεραΕιδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων
Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις
Διαβάστε περισσότεραΗΥ180: Λογική Διδάσκων: Δημήτρης Πλεξουσάκης. Φροντιστήριο 8 Επίλυση για Horn Clauses Λογικός Προγραμματισμός Τετάρτη 9 Μαΐου 2012
ΗΥ180: Λογική Διδάσκων: Δημήτρης Πλεξουσάκης Φροντιστήριο 8 Επίλυση για Horn Clauses Λογικός Προγραμματισμός Τετάρτη 9 Μαΐου 2012 Πληρότητα της μεθόδου επίλυσης Λήμμα: Αν κάθε μέλος ενός συνόλου όρων περιέχει
Διαβάστε περισσότεραΠληρότητα της μεθόδου επίλυσης
Πληρότητα της μεθόδου επίλυσης Λήμμα: Αν κάθε μέλος ενός συνόλου όρων περιέχει ένα αρνητικό γράμμα, τότε το σύνολο είναι ικανοποιήσιμο. Άρα για να είναι μη-ικανοποιήσιμο, θα πρέπει να περιέχει τουλάχιστον
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 7: Πεπερασμένη αναπαράσταση γλωσσών Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων
Ενότητα 13: B-Δέντρα/AVL-Δέντρα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε
Διαβάστε περισσότεραΜαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής
Μαθηματικά Ενότητα 7: Μη Πεπερασμένα Όρια Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΥπολογιστικά & Διακριτά Μαθηματικά
Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 4: Διατάξεις Μεταθέσεις Συνδυασμοί Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΠανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 7: Σχέσεις και Συναρτήσεις
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Διακριτά Μαθηματικά Ενότητα 7: Σχέσεις και Συναρτήσεις Αν. Καθηγητής Κ. Στεργίου e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Διαβάστε περισσότεραΤίτλος Μαθήματος. Ενότητα 1: Γενικά περί λογικού προγραμματισμού
Τίτλος Μαθήματος Ενότητα 1: Παναγιώτης Σταματόπουλος Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιγραφή ενότητας Εισαγωγική ενότητα για τον λογικό προγραμματισμό. 2 Γενικά περί λογικού
Διαβάστε περισσότεραΜαθηματική Λογική και Λογικός Προγραμματισμός
Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων- Σημειώσεις έτους 2007-2008 Καθηγητής Γεώργιος Βούρος Μαθηματική Λογική και Λογικός Προγραμματισμός Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Cretive Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπ
Θεωρία Υπολογισμού Ενότητα 11: Κλειστότητα, ΠΑ & καν. εκφράσεις Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Cretive Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Γλώσσες & Τεχνικές 4 ο Εξάμηνο. - Ενότητα 2 - Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos. Τμήμα Πληροφορικής
Γλώσσες & Τεχνικές 4 ο Εξάμηνο - Ενότητα 2 - Γλώσσες Τεχνητής Νοημοσύνης Λογικός Προγραμματισμός - H Γλώσσα Prolog Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos Τμήμα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ
ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 11: Καθολική μηχανή Turing Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 4: Ισοδυναμία, διάταξη, άπειρα σύνολα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΠεριεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 3: Εισαγωγή και Εμφάνιση Δεδομένων Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες
Διαβάστε περισσότερα2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης
Διαβάστε περισσότεραΜαθηματικά. Ενότητα 6: Ασκήσεις Ορίων Συνάρτησης. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής
Μαθηματικά Ενότητα 6: Ασκήσεις Ορίων Συνάρτησης Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΒιομηχανικοί Ελεγκτές
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τ.Τ Βιομηχανικοί Ελεγκτές Ενότητα #7: Ευφυής Ελεγκτής Μέρος Α Κωνσταντίνος Αλαφοδήμος Τμήματος Μηχανικών Αυτοματισμού Τ.Ε. Άδειες Χρήσης Το παρόν
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 3: Συναρτήσεις - σχέσεις Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 18: Λήμμα Άντλησης για ΓΧΣ Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που
Διαβάστε περισσότεραΠοσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος
Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης
Διαβάστε περισσότεραΠεριεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π.
Θεωρία Υπολογισμού νότητα 15: Συντακτικά Δέντρα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 8: Πεπερασμένα Αυτόματα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΚεφάλαιο 2 Λογικός προγραμματισμός Υπολογισμός με λογική
Κεφάλαιο 2 Λογικός προγραμματισμός Υπολογισμός με λογική Σύνοψη Το κεφάλαιο αυτό χωρίζεται σε δύο ενότητες. Στην πρώτη ενότητα επιχειρείται μια ιστορική αναδρομή στη λογική και τον λογικό προγραμματισμό,
Διαβάστε περισσότεραΤεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές Ενότητα 3: Διαδικασίες λογικών αποφάσεων και βρόγχων εργασιών Αναστάσιος
Διαβάστε περισσότεραHY118-Διακριτά Μαθηματικά
HY118-Διακριτά Μαθηματικά Πέμπτη, 15/02/2018 Το υλικό των διαφανειών έχει βασιστεί σε Αντώνης διαφάνειες Α. Αργυρός του Kees van e-mail: argyros@csd.uoc.gr Deemter, από το University of Aberdeen 15-Feb-18
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ PROLOG Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ PROLOG Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ ΓΕΝΙΚΑ PROLOG PROgramming in LOGic Πρώτη υλοποίηση: Alain Colmerauer, Μασσαλία (Αρχή Επίλυσης, Εργασία R. Kowalski) εύτερη υλοποίηση: D. Warren, Εδιµβούργο
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός
Αντικειμενοστραφής Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 3: Έλεγχος ροής και επαναλήψεις. Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών
Διαβάστε περισσότεραΛογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 2: Σύνολα και σχέσεις Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΣημειώσεις Λογικής I. Εαρινό Εξάμηνο Καθηγητής: Λ. Κυρούσης
Σημειώσεις Λογικής I Εαρινό Εξάμηνο 2011-2012 Καθηγητής: Λ. Κυρούσης 2 Τελευταία ενημέρωση 28/3/2012, στις 01:37. Περιεχόμενα 1 Εισαγωγή 5 2 Προτασιακή Λογική 7 2.1 Αναδρομικοί Ορισμοί - Επαγωγικές Αποδείξεις...................
Διαβάστε περισσότεραK15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων
K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 5: Εντολές επανάληψης Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά
Διαβάστε περισσότεραΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ
ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 5: Μη κανονικές γλώσσες Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ
ΤΕΙ Δυτικής Μακεδονίας ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ 2015-2016 Τεχνητή Νοημοσύνη Λογικοί Πράκτορες Διδάσκων: Τσίπουρας Μάρκος Εκπαιδευτικό Υλικό: Τσίπουρας Μάρκος http://ai.uom.gr/aima/ 2 Πράκτορες βασισμένοι
Διαβάστε περισσότεραΜαθηματικά στην Πολιτική Επιστήμη:
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μαθηματικά στην Πολιτική Επιστήμη: Εισαγωγή Ενότητα 3.2 : Απαρίθμηση Συνδυαστική (ΙΙ). Θεόδωρος Χατζηπαντελής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότερα4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.
4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. Η μετατροπή μιας εντολής επανάληψης σε μία άλλη ή στις άλλες δύο εντολές επανάληψης, αποτελεί ένα θέμα που αρκετές φορές έχει εξεταστεί σε πανελλαδικό
Διαβάστε περισσότεραΜαθηματικά. Ενότητα 2: Διαφορικός Λογισμός. Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)
Μαθηματικά Ενότητα 2: Διαφορικός Λογισμός Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών & Υπολογιστική Φυσική
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 4: Δομές Ελέγχου Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 25: Γραμματικές Χωρίς Περιορισμούς Τμήμα Πληροφορικής ΘΥ 25: Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL
8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to
Διαβάστε περισσότεραΣχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός
7 Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα H Σχεσιακή Άλγεβρα (relational algebra) ορίζει ένα σύνολο πράξεων που εφαρμόζονται σε μία ή περισσότερες σχέσεις
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Διακριτά Μαθηματικά Ι Ενότητα 4: Θεωρία Μέτρησης Po lya Μέρος 1 Διδάσκων: Χ. Μπούρας (bouras@cti.gr) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΗλεκτρονικοί Υπολογιστές II
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Ερωτήματα επιλογής SQL, σύζευξη, διάζευξη, NULL, ταίριασμα κειμένου Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες
Διαβάστε περισσότεραΓραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα
Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα Ενότητα: Διανυσματικοί Χώροι και Υπόχωροι: Βάσεις και Διάσταση Ανδριανός Ε Τσεκρέκος Τμήμα Λογιστικής & Χρηματοοικονομικής
Διαβάστε περισσότεραΛογική. Προτασιακή Λογική. Λογική Πρώτης Τάξης
Λογική Προτασιακή Λογική Λογική Πρώτης Τάξης Λογική (Logic) Αναλογίες διαδικασίας επίλυσης προβλημάτων υπολογισμού και προβλημάτων νοημοσύνης: Πρόβλημα υπολογισμού 1. Επινόηση του αλγορίθμου 2. Επιλογή
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 12: Κανονικότητα ή μη των γλωσσών Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΑριθμητική Ανάλυση και Εφαρμογές
Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Πεπερασμένες και Διαιρεμένες Διαφορές Εισαγωγή Θα εισάγουμε την έννοια των διαφορών με ένα
Διαβάστε περισσότεραΥπολογιστικά & Διακριτά Μαθηματικά
Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΜΑΘΗΜΑ: Μεταγλωττιστές
Comment [h1]: Παράδειγμ α: https://ocp.teiath.gr/modules/ exercise/exercise_result.php?course=pey101&eurid=16 9 ΜΑΘΗΜΑ: Μεταγλωττιστές ΔΙΔΑΣΚΩΝ: Άγγελος Μιχάλας ΤΜΗΜΑ: Τμήμα Μηχανικών Πληροφορικής ΤΕ 1
Διαβάστε περισσότεραΠρόβλημα 29 / σελίδα 28
Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 5ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 Η ΕΝΤΟΛΗ for Με την εντολή for δημιουργούμε βρόχους επανάληψης σε
Διαβάστε περισσότεραΛογική. Δημήτρης Πλεξουσάκης. Ασκήσεις 2ου Φροντιστηρίου: Προτασιακός Λογισμός: Κανονικές Μορφές, Απλός Αλγόριθμος Μετατροπής σε CNF/DNF, Άρνηση
Λογική Δημήτρης Πλεξουσάκης Ασκήσεις 2ου Φροντιστηρίου: Προτασιακός Λογισμός: Κανονικές Μορφές, Απλός Αλγόριθμος Μετατροπής σε CNF/DNF, Άρνηση Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης a. Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΕφαρμογές της Λογικής στην Πληροφορική
Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Εθνικό Μετσόβιο Πολυτεχνείο Εφαρμογές της Λογικής στην Πληροφορική Ενότητα 2 Πέτρος Στεφανέας, Γεώργιος Κολέτσος Άδεια Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 9: Στατιστικά Διάταξης- Στατιστικά σε Μέσο Γραμμικό Χρόνο Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε
Διαβάστε περισσότερα