Προβλήµατα ικανοποίησης περιορισµών



Σχετικά έγγραφα
Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης

Επίλυση Προβλημάτων 1

ΙΚΑΝΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ

Κεφάλαιο 6. Ικανοποίηση Περιορισµών. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η.

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Επιµέλεια Θοδωρής Πιερράτος

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή.

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

Πρόβληµα ικανοποίησης περιορισµών

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

Γραµµική Αλγεβρα Ι. Ενότητα: Εισαγωγικές Εννοιες. Ευάγγελος Ράπτης. Τµήµα Μαθηµατικών

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

HY118- ιακριτά Μαθηµατικά. Παράδειγµα. Από τα συµπεράσµατα στις υποθέσεις Αποδείξεις - Θεωρία συνόλων. Από τις υποθέσεις στα συµπεράσµατα...

- program p_name(input) - uses crt

Αναπαράσταση Γνώσης και Συλλογιστικές

τη µέθοδο της µαθηµατικής επαγωγής για να αποδείξουµε τη Ϲητούµενη ισότητα.

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

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

2 Ο ΓΕΛ ΣΤΑΥΡΟΥΠΟΛΗΣ ΣΧΟΛΙΚΟ ΕΤΟΣ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Δραστηριότητα Περίπτωσης. Τίτλος: Οι διαφορές της απλής, της σύνθετης και της εμφωλευμένης δομής επιλογής

Ασκήσεις για το µάθηµα «Ανάλυση Ι και Εφαρµογές» (ε) Κάθε συγκλίνουσα ακολουθία άρρητων αριθµών συγκλίνει σε άρρητο αριθµό.

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

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

Ο ΗΓΙΕΣ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ LINDO ΚΑΙ ΤΗΝ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΩΝ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Γραµµική Αλγεβρα Ι. Ενότητα: ιανυσµατικοί χώροι. Ευάγγελος Ράπτης. Τµήµα Μαθηµατικών

Κεφάλαιο 10 ο Υποπρογράµµατα

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

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης

ΚΕΦΑΛΑΙΟ 4 ΤΟ ΕΡΓΑΛΕΙΟ SOLVER

Βασικά στοιχεία της Java

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

2.6 ΟΡΙΑ ΑΝΟΧΗΣ. πληθυσµού µε πιθανότητα τουλάχιστον ίση µε 100(1 α)%. Το. X ονοµάζεται κάτω όριο ανοχής ενώ το πάνω όριο ανοχής.

3.3 ΑΛΓΕΒΡΙΚΗ ΕΠΙΛΥΣΗ ΓΡΑΜΜΙΚΟΥ

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 6: Προβλήματα ικανοποίησης περιορισμών. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

char name[5]; /* define a string of characters */

ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ 11:00-14:00

Αλγεβρικές παραστάσεις - Αναγωγή οµοίων όρων

x=l ηλαδή η ενέργεια είναι µία συνάρτηση της συνάρτησης . Στα µαθηµατικά, η συνάρτηση µίας συνάρτησης ονοµάζεται συναρτησιακό (functional).

Επίλυση προβληµάτων. Αλγόριθµοι Αναζήτησης

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ

3.7 Παραδείγματα Μεθόδου Simplex

Συνάρτηση f, λέγεται η διαδικασία µε βάση την. Παρατηρήσεις - Σχόλια f

Αριθµητική Ανάλυση. ιδάσκοντες: Καθηγητής Ν. Μισυρλής, Επίκ. Καθηγητής Φ.Τζαφέρης ΕΚΠΑ. 16 Ιανουαρίου 2015

Άσκηση 1 Να βρεθούν οι συντεταγμένες του σημείου A(x, y), αν αυτές επαληθεύουν την ισότητα: x 2 6xy + 11y 2 8y + 8 = 0

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Επικοινωνία:

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

ΑΝ.ΕΦ. Γ ΛΥΚΕΙΟΥ Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές που βρίσκονται µεταξύ των λέξεων ΤΟΤΕ και και η εκτέλεση του προγράµµατος συνεχίζετα

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

Βασική Εφικτή Λύση. Βασική Εφικτή Λύση

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Μάθηµα 1. Κεφάλαιο 1o: Συστήµατα. γ R παριστάνει ευθεία και καλείται γραµµική εξίσωση µε δύο αγνώστους.

ΘΕΜΑ Συμβολική γλώσσα 2. Γλώσσες υψηλού επιπέδου 3. Γλώσσες τέταρτής γενιάς 4. Γλώσσα μηχανής

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

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

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

Α. ΑΝΙΣΟΤΗΤΕΣ - ΚΑΝΟΝΕΣ ΑΝΙΣΟΤΗΤΩΝ

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις 24 Ιουνίου 2004

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

ΑΕΠΠ Ερωτήσεις θεωρίας

Ανάπτυξη εφαρμογών/ Βασικές γνώσεις/ πρώτο θέμα ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΟΜΗΣ ΑΠΑΝΤΗΣΗΣ

min f(x) x R n b j - g j (x) = s j - b j = 0 g j (x) + s j = 0 - b j ) min L(x, s, λ) x R n λ, s R m L x i = 1, 2,, n (1) m L(x, s, λ) = f(x) +

Δ/νση Β /θµιας Εκπ/σης Φλώρινας Κέντρο ΠΛΗ.ΝΕ.Τ. Λογάριθµοι ΛΟΓΑΡΙΘΜΟΙ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΛΟΓΑΡΙΘΜΟΥΣ

όπου D(f ) = (, 0) (0, + ) = R {0}. Είναι Σχήµα 10: Η γραφική παράσταση της συνάρτησης f (x) = 1/x.

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Γενικό πλάνο. Μαθηµατικά για Πληροφορική. Παράδειγµα αναδροµικού ορισµού. οµική επαγωγή ΠΑΡΑ ΕΙΓΜΑ. 3ο Μάθηµα

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

Μαθηµατικά για Πληροφορική

a = 10; a = k; int a,b,c; a = b = c = 10;

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Οι πραγµατικοί αριθµοί

Αριθµητική Ολοκλήρωση

Γραµµική Άλγεβρα. Εισαγωγικά. Μέθοδος Απαλοιφής του Gauss

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

4. Αναδροµικός τύπος Είναι ο τύπος που συσχετίζει δύο ή περισσότερους γενικούς όρους µιας ακολουθίας

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

3. Σηµειώσεις Access. # Εισαγωγή ψηφίου ή κενού διαστήµατος. Επιτρέπονται τα ση-

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Διαδικασίες και συναρτήσεις. 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1

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

HY118- ιακριτά Μαθηµατικά

Παλαιότερες ασκήσεις

Transcript:

Προβλήµατα Ικανοποίησης Περιορισµών Προβλήµατα ικανοποίησης περιορισµών Λογικός προγραµµατισµός µε περιορισµούς Προβλήµατα Ικανοποίησης Περιορισµών Ένα πρόβληµα ικανοποίησης περιορισµών (constraint satisfaction problem) αποτελείται από: Ένα σύνολο n µεταβλητών V 1, V 2,...,V n. Ένα σύνολο n πεδίων τιµών D 1,...D n, που αντιστοιχούν σε κάθε µεταβλητή έτσι ώστε V i D i, και Ένα σύνολο σχέσεων (περιορισµών) C 1, C 2,...C m όπου C i (V k,...,v m ) µια σχέση µεταξύ των µεταβλητών του προβλήµατος. Λύση αποτελεί µια ανάθεση τιµών στις µεταβλητές του προβλήµατος από τα αντίστοιχα πεδία, έτσι ώστε να ικανοποιούνται οι περιορισµοί Γιάννης Ρεφανίδης 2

Είδη περιορισµών Ανάλογα µε το πόσες µεταβλητές περιλαµβάνει ένας περιορισµός χαρακτηρίζεται ως: µοναδιαίος (unary) όταν περιλαµβάνει µια µεταβλητή, π.χ. V 1 >0 δυαδικός (binary) όταν περιλαµβάνει δύο µεταβλητές, π.χ. V 1 >V 2 ανώτερης τάξης (higher order) όταν περιλαµβάνει περισσότερες, π.χ. V 1 +V 2 +V 3 >0. Γιάννης Ρεφανίδης 3 Εφαρµογές Κατανοµή εργασιών(task allocation) Κατανοµή προσωπικού σε επιχειρήσεις Ωρολόγιο πρόγραµµα (timetable) Γιάννης Ρεφανίδης 4

Παράδειγµα (1/6) Έστω ότι πρέπει να ορισθεί η σειρά µε την οποία θα εκτελεστούν τέσσεριςεργασίεςα, Β, Γ,. Λόγω της φύσης του προβλήµατος, η εργασία Α πρέπει να εκτελεστεί µετά από την, η ΓπριναπότηνΒ, και η Β πριν από την Α. Μεταβλητές: Α, Β, Γ, Πεδία τιµών: D A =D B =D Γ =D ={1,2,3,4} Περιορισµοί: Α Β, Α Γ, Α, Β Γ, Β, Γ Α> Γ<Β Β<Α Γιάννης Ρεφανίδης 5 Παράδειγµα (2/6) Το πρόβληµα έχει τρεις λύσεις, τις ακόλουθες: Α=4, Β=2, Γ=1, =3, δηλαδή η σειρά είναι: ΓΒ Α Α=4, Β=3, Γ=1, =2, δηλαδή η σειρά είναι:γ ΒΑ Α=4, Β=3, Γ=2, =1, δηλαδή η σειρά είναι: ΓΒΑ Το ερώτηµα που τίθεται είναι πώς φθάνει κανείς στις παραπάνω λύσεις. Παραγωγή και δοκιµή Κλασσικοί αλγόριθµοι αναζήτησης Αλγόριθµοι ελέγχου συνέπειας Τοπική αναζήτηση Γιάννης Ρεφανίδης 6

Παραγωγή και οκιµή Η µέθοδος δηµιουργεί όλους τους πιθανούς συνδυασµούς ανάθεσης τιµών. Α=1, Β=1, Γ=1, =1 Α=1, Β=1, Γ=1, =2... Α=4, Β=4, Γ=4, =4 Στο προηγούµενο παράδειγµα οισυνδυασµοί ήταν 4 4 =256. Κάθε συνδυασµός ελέγχεται µέχρις ότου βρεθεί ένας που ικανοποιεί όλους τους περιορισµούς. Μειονέκτηµα: Ελέγχει όλο τον χώρο αναζήτησης. Γιάννης Ρεφανίδης 7 Κλασσικοί Αλγόριθµοι Αναζήτησης Μπορούν να χρησιµοποιηθούν όλοι οι γνωστοί αλγόριθµοι αναζήτησης (κατά βάθος, κατά πλάτος, πρώτα στο καλύτερο κλπ). Στην αρχική κατάσταση οι µεταβλητές δεν έχουν πάρει τιµές. Σε κάθε βήµα δίνουµε µια τιµή σε µια µεταβλητή, αρκεί να µην παραβιάζεται κανένας περιορισµός. Το βάθος του δένδρου αναζήτησης είναι ίσο µε το πλήθος των µεταβλητών. Μειονέκτηµα: Ο έλεγχος για την ικανοποίηση των περιορισµών ενός υποσυνόλου µεταβλητών γίνεται µετά την ανάθεση τιµών σε αυτό το υποσύνολο µεταβλητών. Γιάννης Ρεφανίδης 8

Αλγόριθµοι ελέγχου συνέπειας (1/2) Η βασική ιδέα των αλγορίθµων ελέγχου συνέπειας είναι η όσο το δυνατόν µεγαλύτερη µείωση του χώρου αναζήτησης πριν την ανάθεση τιµών. Γενικός αλγόριθµος: Για κάθε περιορισµό αφαίρεσε από τα πεδία τιµών των µεταβλητών τις τιµές εκείνες που δεν µπορούν να συµµετέχουν στην τελική λύση. Στο µειωµένο χώρο αναζήτησης που προκύπτει από το προηγούµενο βήµα εφάρµοσε έναν κλασσικό αλγόριθµο αναζήτησης για να βρεθεί η λύση (π.χ. πρώτακατάβάθος). Σε κάθε βήµα (ανάθεση τιµής) αυτής της αναζήτησης εφάρµοσε ξανά τον αλγόριθµο ελέγχου συνέπειας έτσι ώστε να αφαιρεθούν τυχόν τιµές από τα πεδία των µεταβλητών οι οποίες δεν µπορούν να συµµετέχουν στην λύση. Γιάννης Ρεφανίδης 9 Γράφος περιορισµών Περιορισµοί: Α > Γ < Β Β < Α Α Α>Β Β<Α Β Β>Γ Γ<Β Γ Α> <Α Γιάννης Ρεφανίδης 10

Παράδειγµα (3/6) Α Β (C1) Β Γ (C4) Α > (C7) Α Γ (C2) Β (C5) Γ < Β (C8) Α (C3) Γ (C6) Β < Α (C9) Τα αρχικά πεδία τιµών των µεταβλητών: Α {1,2,3,4} Β {1,2,3,4} Γ {1,2,3,4} {1,2,3,4} Γιάννης Ρεφανίδης 11 Παράδειγµα (4/6) Λόγω Β < Α (C9), η µεταβλητή Β δε µπορεί σε καµιά περίπτωση να πάρει την τιµή 4, αλλά ούτε και η Α να πάρει την τιµή 1: Α {2,3,4} Β {1,2,3} Γ {1,2,3,4} {1,2,3,4} Λόγω Γ < Β (C8), η Γδενµπορεί να πάρει την τιµή 3 ούτε και την τιµή 4, ενώ η Β δε µπορεί να πάρει την τιµή 1: Α {2,3,4} Β {2,3} Γ {1,2} {1,2,3,4} Γιάννης Ρεφανίδης 12

Παράδειγµα (5/6) Λόγω Α > (C7) η δενµπορεί να πάρει την τιµή 4: Α {2,3,4} Β {2,3} Γ {1,2} {1,2,3} Το πεδίο της Β έχει µεταβληθεί, οπότε ο περιορισµός C9 πρέπει να επανεξεταστεί. Λόγω του Β < Α (C9) δεν µπορεί να υπάρχει η τιµή 2 στο πεδίο της Α: Α {3,4} Β {2,3} Γ {1,2} {1,2,3} Τώρα οι πιθανοί συνδυασµοί γίνονται 2 2 2 3=24, σε σχέση µε τους 256 που υπήρχαν αρχικά. Γιάννης Ρεφανίδης 13 Αλγόριθµοι ελέγχου συνέπειας (2/2) Στο σηµείο αυτό τα πεδία τιµών των µεταβλητών δεν µπορούν να περιοριστούν παραπέρα. Επιλέγεται στην τύχη µια µεταβλητή και της αποδίδεται αυθαίρετα µία από τις τιµές της. Αυτό προκαλεί επιπλέον περιορισµούς στα πεδία των υπολοίπων µεταβλητών Η παραπάνω διαδικασία επαναλαµβάνεται µέχρι: Όλες οι µεταβλητές να πάρουν µία τιµή. Κάποια µεταβλητή να µείνει χωρίς τιµές Το σηµείο αυτό αποτελεί σηµείο υπαναχώρησης Γιάννης Ρεφανίδης 14

Παράδειγµα (6/6) Α {3,4} Β {2,3} Γ {1,2} {1,2,3} Α= 3 Α = 4 Περιορισµοί Γ Β Γ <Β Α > Αποτυχία Α=3 Β {2,3} Γ {1,2} {1,2,3} Α = 4 Β {2,3} Γ {1,2} {1,2,3} Β = 2 Β = 3 Περιορισµοί Γ Β Γ < Β Α = 4 Β = 2 Γ {1,2} {1,2,3} Α = 4 Β = 3 Γ {1,2} {1,2,3} Περιορισµοί Β Λύση: Α=4, Β=2, Γ=1, =3 Γ = 1 Γ = 2 Περιορι σµοί Γ Β Α = 4 Β = 3 Γ = 1 Α = 4 Β = 3 Γ = 2 Περιορισµοί Γ {1,2,3} {1,2,3} Β Γιάννης Ρεφανίδης 15 Λύση: Α=4, Β=3, Γ=1, =2 Λύση: Α=4, Β=3, Γ=2, =1 Παρατηρήσεις Ο γράφος αναζήτησης διασχίζεται συνήθως πρώτα-κατά-βάθος. Ευρετικές τεχνικές για αύξηση της απόδοσης: Επιλέγουµε ναδώσουµε τιµή πρώτα στις µεταβλητές µε τις λιγότερες τιµές. Εναλλακτικά, επιλέγουµε ναδώσουµε τιµή πρώτα στις µεταβλητές εκείνες που συµµετέχουν στους περισσότερους περιορισµούς. Αφού επιλέξουµε µια µεταβλητή, στη συνέχεια επιλέγουµε νατης αναθέσουµε πρώτα την τιµήεκείνηπουπροκαλείτη µικρότερη απόρριψη τιµών από τα πεδία των υπολοίπων µεταβλητών. Γιάννης Ρεφανίδης 16

Παράδειγµα: Το πρόβληµα των 8 βασιλισσών (1/3) Παριστάνουµε το πρόβληµα µε 8 µεταβλητές, µια για κάθε βασίλισσα. Κάθε βασίλισσα είναι σε διαφορετική στήλη. Το πεδίο ορισµού κάθε βασίλισσας είναι οι 8 θέσεις στη στήλη της. Γραφική αναπαράσταση των περιορισµών: 1 2 3 4 5 6 7 8 Q 1 Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 8 Γιάννης Ρεφανίδης 17 Παράδειγµα: Το πρόβληµα των 8 βασιλισσών (2/3) Ανάθεση τιµής στην πρώτη βασίλισσα: Ανάθεση τιµών στις δύο πρώτες βασίλισσες: Γιάννης Ρεφανίδης 18

Παράδειγµα: Το πρόβληµα των 8 βασιλισσών (3/3) Ανάθεση τιµών που δεν οδηγεί σε λύση: Λύση στο πρόβληµα των8 βασιλισσών: Γιάννης Ρεφανίδης 19 Επίλυση µε τοπική αναζήτηση(1/3) Τα προβλήµατα ικανοποίησης περιορισµών µπορούν να αντιµετωπισθούν και µε χρήση τοπικής αναζήτησης (local search). Ως τοπική αναζήτηση θεωρείται ο αλγόριθµος αναρρίχησης λόφων και διάφορες παραλλαγές του, µε χρήση κατάλληλης ευρετικής συνάρτησης. Σε πάρα πολλές περιπτώσεις η τοπική αναζήτηση δίνει εξαιρετικά αποτελέσµατα. Η γενική φιλοσοφία της τοπικής αναζήτησης είναι η εξής: ηµιούργησε µια αρχική ανάθεση τιµών για όλες τις µεταβλητές. Μέτρησε πόσοι περιορισµοί παραβιάζονται. Επέλεξε µια µεταβλητή και άλλαξέ της τη τιµή, έτσι ώστε να µειωθεί κατά το δυνατόν περισσότερο το πλήθος των περιορισµών που παραβιάζονται (ευρετική συνάρτηση). Επανέλαβε τα βήµατα 2 και 3 µέχρι να βρεις λύση. Γιάννης Ρεφανίδης 20

Επίλυση µε τοπική αναζήτηση(2/3) Ξαναθυµίζουµε έναπαράδειγµα από παλαιότερο µάθηµα. Θέλουµε ναβάλουµε 4 βασίλισσες σε µια σκακιέρα 4x4, έτσι ώστε καµία να µην απειλεί τις άλλες. Προφανώς σε κάθε στήλη θα υπάρχει µία µόνο βασίλισσα. Ξεκινάµε µε όλες τις βασίλισσες στην κάτω γραµµή. Σε κάθε βήµα µπορούµε να µετακινήσουµε µια βασίλισσα σέ µια άλλη θέση στη στήλη της, άρα οι δυνατές κινήσεις είναι 4x3=12. Χρησιμοποιούμε ως ευρετική συνάρτηση το πόσες απειλές υπάρχουν κάθε φορά (όλες οι απειλές είναι διπλές, εμείςτιςμετράμεωςμία απειλή κάθε φορά). Γιάννης Ρεφανίδης 21 Επίλυση µε τοπική αναζήτηση(3/3) 6 3 1 Στο συγκεκριµένο παράδειγµα είµασταν τυχεροί, µιας και όλες οι επιλογές µας βγήκαν σωστές. οκιµάστε να λύσετε το ίδιο πρόβληµα σε σκακιέρα 8x8 µε 8 βασίλλισες. 0 Γιάννης Ρεφανίδης 22

Προβλήµατα Ικανοποίησης Περιορισµών Προβλήµατα ικανοποίησης περιορισµών Λογικός προγραµµατισµός µε περιορισµούς Λογικός Προγραµµατισµός µε Περιορισµούς (1/3) Έστω για παράδειγµα ο παρακάτω κανόνας: triangle(x,y,z) :- X>=0, Y>=0, Z>=0, X+Y>=Z, X+Z>=Y, Y+Z>=X. Εάν υποβάλλουµε την ερώτηση:?- triangle(3,4,5). στην κλασσική Prolog θα πάρουµε τηναπάντηση: yes. Αν όµως υποβάλλουµε την ερώτηση:?- triangle(3,4,ζ). δεν θα πάρουµε καµία απάντηση (εκτόςίσωςαπόκάποιο µήνυµα λάθους). Ο λόγος είναι ότι στην κλασσική Prolog οι αριθµητικές σχέσεις (ισότητες, ανισότητες) µπορούν να ελεγχθούν µόνο εφόσον οι µεταβλητές έχουν όλες πάρει τιµή. Γιάννης Ρεφανίδης 24

Λογικός Προγραµµατισµός µε Περιορισµούς (2/3) Οι νεώτερες εκδόσεις των πιο γνωστών υλοποιήσεων της Prolog έχουν επεκτείνει τη γλώσσα µε τη δυνατότητα να χειρίζεται µεταβλητές µε πεδίο ορισµού και περιορισµούς µεταξύ των µεταβλητών (Constraint Logic Programming ή CLP). Έτσι η ερώτηση:?- triangle(3,4,ζ). αναµένεται να δώσει την απάντηση: 1=<Z=<7 Μία λύση σε ένα πρόβληµα λογικού προγραµµατισµού µε περιορισµούς είναι το σύνολο των πιο συγκεκριµένων περιορισµών πάνω στις µεταβλητές της ερώτησης. Γιάννης Ρεφανίδης 25 Λογικός Προγραµµατισµός µε Περιορισµούς (3/3) Τα συστήµατα λογικού προγραµµατισµού µε περιορισµούς συνδυάζουν την ευκολία στην περιγραφή προβληµάτων που παρέχει ο λογικός προγραµµατισµός µε τις αυξηµένες δυνατότητες επίλυσης προβληµάτων που παρέχουν οι τεχνικές ικανοποίησης περιορισµών. Φυσικά υπάρχουν πλατφόρµες επίλυσης προβληµάτων ικανοποίησης περιορισµών που δεν βασίζονται στον λογικό προγραµµατισµό. Τα διάφορα συστήµατα διαφέρουν συνήθως στο είδος των περιορισµών που υποστηρίζουν (π.χ. γραµµικές ανισότητες, µηισότητα µεταξύ 2 ή πολλών µεταβλητών κλπ). Γιάννης Ρεφανίδης 26

ECLiPSe Prolog Η ECLiPSe Prolog υποστηρίζει πολλές περιπτώσεις περιορισµών. Ειδικότερα, µεταξύ άλλων υποστηρίζει: Βιβλιοθήκη ic (Interval Constraints) Ακέραιοι και πραγµατικοί αριθµοί µε πεδία ορισµού διαστήµατα. Βιβλιοθήκη ic_global Περιορισµοί µε περισσότερες από δύο µεταβλητές Βιβλιοθήκες ic_cumulative, ic_edge_finder Ειδικοί περιορισµοί µε πολλές µεταβλητές για προβλήµατα χρονοπρογραµµατισµού Βιβλιοθήκη ic_sets Περιορισµοί σχετικοί µε πεπερασµένα σύνολα ακεραίων κλπ Γιάννης Ρεφανίδης 27 Φόρτωση βιβλιοθήκης Για να χρησιµοποιήσουµε τις δυνατότητες των βιβλιοθηκών της ECLiPSe, πρέπει πρώτα να τις «φορτώσουµε». Γιαναφορτώσουµε µια βιβλιοθήκη στην ECLiPSe, π.χ. την ic, έχουµε δύοεπιλογές. Μέσα στο πρόγραµµά µας να τοποθετήσουµε µια από τις παρακάτω εντολές: :-lib(ic). :-use_module(library(ic)). ή στην γραµµή ερωτήσεων της ECLiPSe να δώσουµε µία από τις παρακάτω «ερωτήσεις»: lib(ic). use_module(library(ic)). Γιάννης Ρεφανίδης 28

Γενική µορφή προγράµµατος Η γενική µορφή ενός προγράµµατος για επίλυση προβληµάτων ικανοποίησης περιορισµών είναι η εξής: solve(variables):- read_data(data), setup_constraints(data, Variables), labeling(variables). Το κατηγόρηµα read_data/1 ορίζεται από εµάς και διαβάζει κάποια δεδοµένα σχετικά µε το πρόβληµα. Το κατηγόρηµα setup_constraints/2 ορίζεται από εµάς και ορίζει τους περιορισµούς επί των µεταβλητών, βάσει των δεδοµένων που διαβάσαµε. Το κατηγόρηµα labeling/1 είναι ενσωµατωµένο στην ECLiPSe και λύνει το πρόβληµα. Γιάννης Ρεφανίδης 29 Παράδειγµα (1/2) Έστω το πρόβληµα κρυπταριθµητικής SEND + MORE = MONEY το οποίο ορίζεται ως εξής: Βρείτε µια ένα-προς-ένα αντιστοίχιση µεταξύ των γραµµάτων S,E,N,D,M,O,R,Y και των αριθµών 0,1,2,...,9, έτσι ώστε να ισχύει η παραπάνω ισότητα. Οι µεταβλητές µας είναι τα γράµµατα S,E,N,D,M,O,R,Y. Τα πεδία τιµών τους είναι το σύνολο ακεραίων 0,1,...,9. Οι περιορισµοί είναι ότι οι µεταβλητές πρέπει να πάρουν διαφορετικές τιµές µεταξύ τους και ότι πρέπει να ισχύει η εξίσωση. Γιάννης Ρεφανίδης 30

Παράδειγµα (2/2) Ένα πρόγραµµα που λύνει το πρόβληµα είναι το εξής: :-lib(ic). sendmore(digits):- Digits=[S,E,N,D,M,O,R,Y], Digits :: [0..9], alldifferent(digits), S #\= 0, M #\= 0, 1000*S+100*E+10*N+D + 1000*M+100*O+10*R+E #= 10000*M+1000*O+100*N+10*E+Y, labeling(digits). Γιάννης Ρεφανίδης 31 Η βιβλιοθήκη ic Η βιβλιοθήκη ic (interval constraints) υποστηρίζει περιορισµούς επί ακεραίων και πραγµατικών αριθµών, των οποίων τα πεδία ορισµού είναι διαστήµατα. Γιάννης Ρεφανίδης 32

ηλώσεις περιορισµών (1/3) ήλωση πεδίου ορισµού µιας ή περισσοτέρων µεταβλητών: Vars :: Domain. όπου: Vars µια µεταβλητή ή µια λίστα µεταβλητών Domain ένα διάστηµα της µορφής Low..High ή µια λίστα τέτοιων διαστηµάτων καθώς και µεµονωµένων τιµών. Παραδείγµατα: X :: -10..10. X :: [-2..3, 8..15, 19]. [Χ, Υ] :: -20..1.0Inf. Χ :: -10.0..15.0. Εάν όλα τα διαστήµατα στο domain είναι ακέραια, η µεταβλητή θεωρείται ακέραια (integer), αλλιώς θεωρείται πραγµατική (real). Γιάννης Ρεφανίδης 33 ηλώσεις περιορισµών (2/3) υο παραλλαγές δήλωσης του πεδίου ορισµού είναι οι: Vars #:: Domain. Vars $:: Domain. Η πρώτη δήλωση καθορίζει ότι οι µεταβλητές της Vars είναι υποχρεωτικά ακέραιες ενώ η δεύτερη ότι είναι υποχρεωτικά πραγµατικές. Μπορούµε να δηλώσουµε ότι µια µεταβλητή είναι ακέραια, χωρίς να ορίσουµε πεδίο ορισµού µε δήλωσησαντην: integer(x). Παρόµοια, µπορούµε να δηλώσουµε ότι µια µεταβλητή είναι πραγµατική, χωρίς να ορίσουµε πεδίο ορισµού µε δήλωση σαν την: real(x). Γιάννης Ρεφανίδης 34

ηλώσεις περιορισµών (3/3) Τέλος, µπορούµε να µην δηλώσουµε καθόλου το πεδίο ορισµού µιας µεταβλητής. Αρκεί να την χρησιµοποιήσουµε µέσα σε έναν περιορισµό. Εάν βρίσκεται µέσα σε περιορισµούς που αφορούν πραγµατικούς, τότε η µεταβλητή είναι πραγµατική. Y+X $>0. Εάν βρίσκεται µέσα σε περιορισµούς που αφορούν ακεραίους, τότε η µεταβλητή είναι ακέραια. Y+X #>0. Γιάννης Ρεφανίδης 35 Παρατήρηση Έστω οι δύο παρακάτω περιορισµοί: X/2+Y/2 #= 1. και X+Y #= 2. Και οι δύο περιορισµοί ορίζουν δύο µεταβλητές ακέραιες. Ωστόσο ο πρώτος επιβάλλει να είναι ακέραια και τα X/2, Y/2, άρα επιβάλλειταχκαιυναείναιάρτιοιαριθµοί! Γενικά, κάθε περιορισµός που αφορά ακεραίους επιβάλλει όλες οι εκφράσεις/υποεκφράσεις που εµφανίζονται στον περιορισµό να είναι ακέραιες ποσότητες. Γιάννης Ρεφανίδης 36

Περιορισµοί διαστηµάτων Οι παρακάτω περιορισµοί αφορούν ακέραιες εκφράσεις και υποεκφράσεις. ExprX #= ExprY ExprX #>= ExprY ExprX #=< ExprY ExprX #> ExprY ExprX #< ExprY ExprX #\= ExprY Οι παρακάτω περιορισµοί αφορούν πραγµατικές εκφράσεις και υποεκφράσεις. ExprX $= ExprY ExprX $>= ExprY ExprX $=< ExprY ExprX $> ExprY ExprX $< ExprY ExprX $\= ExprY Γιάννης Ρεφανίδης 37 Λογικοί σύνδεσµοι Μπορούµε να συνδυάσουµε περιορισµούς µε τους λογικούς συνδέσµους and, or, neg και =>. Παρακάτω φαίνονται µερικά παραδείγµατα: and: X$> 3 and X$<8 or: X$<3 or X$>8 neg: neg X$>3 =>: X $>3 => Y$<8 Γιάννης Ρεφανίδης 38

Καθολικοί περιορισµοί Οι καθολικοί περιορισµοί αφορούν συνήθως περισσότερες από δύο µεταβλητές. Υλοποιούνται στη βιβλιοθήκη ic_global. Ο πιο γνωστός περιορισµός είναι ο alldifferent: alldifferent(list): Ο περιορισµός alldifferent επιβάλλει ότι όλες οι µεταβλητές της λίστας List θα πάρουν ξεχωριστές τιµές. ΠΡΟΣΟΧΗ: Το alldifferent ορίζεται τόσο στη βιβλιοθήκη ic όσο και στην ic_global. Για να είµαστε σίγουροι ότι το πρόγραµµά µας χρησιµοποιεί τη βιβλιοθήκη ic_global το καλούµε ως: ic_global:alldifferent(list). Το alldifferent της βιβλιοθήκης ic δεν θα ανακάλυπτε ότι τρεις µεταβλητές, κάθε µια από τις οποίες έχει το ίδιο πεδίο ορισµού µε δύοµόνο τιµές, παραβιάζουν τον περιορισµό. Γιάννης Ρεφανίδης 39 Εύρεση λύσεων Υπάρχουν δύο κατηγορήµατα που ξεκινούν τη διαδικασία εύρεσης ανάθεσης τιµών στις µεταβλητές: indomain(x): Η µεταβλητή Χ είναι µια µεταβλητή για την οποία έχουν ορισθεί κάποιοι περιορισµοί. Η κλήση indomain(x) αναθέτει στην Χ µια από τις τιµές που αυτή µπορεί να πάρει, ενώ ταυτόχρονα ενηµερώνει όλες τις µεταβλητές που συµµετέχουν σε περιορισµούς µε την Χ. labeling(list): Η λίστα List περιλαµβάνει ένα σύνολο µεταβλητών για τις οποίες έχουν ορισθεί κάποιοι περιορισµοί. Η κλήση στην labeling επιχειρεί να βρει µια ανάθεση τιµών στις µεταβλητές της List, η οποία να είναι συµβατή µε όλους τους περιορισµούς όπου συµµετέχουν οι µεταβλητές. Συνήθως καλούµε τηνlabeling µε όλεςτιςµεταβλητές του προβλήµατος. Γιάννης Ρεφανίδης 40

Παράδειγµα Το παρακάτω πρόγραµµα βρίσκει µαγικά τετράγωνα 3x3. :-lib(ic). :-lib(ic_global). magic(digits):- Digits=[ A,B,C, D,E,F, G,H,I], Digits :: [1..9], ic_global:alldifferent(digits), A+B+C #= 15, D+E+F #= 15, G+H+I #= 15, A+D+G #= 15, B+E+H #= 15, C+F+I #= 15, A+E+I #= 15, C+E+G #= 15, labeling(digits). Γιάννης Ρεφανίδης 41 Πράξεις µε πραγµατικούς αριθµούς (1/2) Όταν η ECLiPSe εκτελεί πράξεις µε πραγµατικούς αριθµούς και εξάγει αποτελέσµατα, τα αποθηκεύει εσωτερικά ως ένα διάστηµα τιµών. Για παράδειγµα:?- 3*Χ $=4. X = 1.3333333333333333 1.3333333333333335 Το διάστηµα τιµών παριστάνεται µε δύοόρια, το κάτω και το πάνω όριο, τα οποία διαχωρίζονται µεταξύ τους µε δύο παύλες. Η µορφή αυτή των πραγµατικών αριθµών ονοµάζεται «φραγµένοι πραγµατικοί» (bounded reals). Μπορούµε να µετατρέψουµε µόνοι µας έναν απλό πραγµατικό αριθµό σε φραγµένο, ως εξής:?- X is breal(2). X = 2.0 2.0 Γιάννης Ρεφανίδης 42

Πράξεις µε πραγµατικούς αριθµούς (2/2) Ο λόγος χρήσης των φραγµένων πραγµατικών είναι για να µην δηµιουργούνται εσφαλµένα αποτελέσµατα λόγω περιορισµένης ακρίβειας των υπολογισµών του υπολογιστή. Συγκρίνετε τα παρακάτω δύο παραδείγµατα:?- Y is 1 / 10, X is Y + Y + Y + Y + Y + Y + Y + Y + Y + Y. X = 0.99999999999999989 Y = 0.1?- Y is breal(1) / 10, X is Y + Y + Y + Y + Y + Y + Y + Y + Y + Y. X = 0.99999999999999978 1.0000000000000007 Y = 0.099999999999999992 0.1 Μερικές φορές επιστρέφονται ιδιαίτερα µεγάλα διαστήµατα τιµών. Ωστόσο είναι προτιµότερο από το να επιστρέφεται µια συγκεκριµένη αλλά εσφαλµένη τιµή. Γιάννης Ρεφανίδης 43 Παρατηρήσεις Όταν εργαζόµαστε µε φραγµένους πραγµατικούς, χρειάζεται προσοχή όταν χρησιµοποιούµε συγκρίσεις αριθµών (προσοχή: απλές συγκρίσεις, όχι επιβολή περιορισµών), ιδιαίτερα όταν τα διαστήµατά τους επικαλύπτονται. Γενικά η ECLiPSe συγκρίνει δύο φραγµένους πραγµατικούς των οποίων τα διαστήµατα επικαλύπτονται µε βάση το κάτω τους όριο. Στο παρακάτω παράδειγµα, το κατηγόρηµα compare/3 επιστρέφει στο πρώτο του όρισµα τη σχέση διάταξης που υπάρχει µεταξύ των δύο επόµενων ορισµάτων του.?- X = 0.1 0.4, Y = 0.2 0.3, compare(r, X, Y). R = < X = 0.1 0.4 Y = 0.2 0.3 Γιάννης Ρεφανίδης 44

Περιορισµοί µε πραγµατικούς αριθµούς (1/6) Μπορούµε ναχρησιµοποιήσουµε τηνeclipse για να λύσουµε συστήµατα αριθµητικών εξισώσεων µε πολλούς αγνώστους πραγµατικούς αριθµούς. Για παράδειγµα:?- 3*Χ $=4. X = 1.3333333333333333 1.3333333333333335 Για λίγο πιο σύνθετα όµως προβλήµατα, χρειάζεται να χρησιµοποιήσουµε το κατηγόρηµα locate/2. Γιάννης Ρεφανίδης 45 Περιορισµοί µε πραγµατικούς αριθµούς (2/6) Συγκρίνετε τα παρακάτω τρία παραδείγµατα:?- X ^ 2 + Y ^ 2 $= 4, (X - 1) ^ 2 + (Y - 1) ^ 2 $= 4. X = X{-1.0000000000000004.. 2.0000000000000004} Y = Y{-1.0000000000000004.. 2.0000000000000004} There are 12 delayed goals.?- X ^ 2 + Y ^ 2 $= 4, (X - 1) ^ 2 + (Y - 1) ^ 2 $= 4, labeling([x, Y]). Abort?- X ^ 2 + Y ^ 2 $= 4, (X - 1) ^ 2 + (Y - 1) ^ 2 $= 4, locate([x, Y], 0.0001). X = X{-0.82287566035526938.. -0.82287564484820042} Y = Y{1.8228756448482004.. 1.8228756603552694} There are 12 delayed goals. Yes (0.01s cpu, solution 1, maybe more) Γιάννης Ρεφανίδης 46

Περιορισµοί µε πραγµατικούς αριθµούς (3/6) Στο προηγούµενο παράδειγµα προσπαθήσαµε να βρούµε τα σηµεία τοµής δύο κύκλων, µε κέντρατα(0,0) και (1,1) αντίστοιχα και ακτίνα 2. Το κατηγόρηµα locate/2 λειτουργεί καλά όταν υπάρχει πεπερασµένος αριθµός διακριτών λύσεων. Το δεύτερο όρισµα του locate/2 είναι η ακρίβεια µε την οποία θέλουµε ναπροσεγγίσουµε τις λύσεις. Γιάννης Ρεφανίδης 47 Περιορισµοί µε πραγµατικούς αριθµούς (4/6) 2 1-2 -1 1 2-1 -2 Γιάννης Ρεφανίδης 48

Περιορισµοί µε πραγµατικούς αριθµούς (5/6) Εάν υπάρχει άπειρος αριθµός συνεχών λύσεων, τότε χρησιµοποιούµε τοκατηγόρηµα squash/3. Στο παρακάτω παράδειγµα επιχειρούµε να βρούµε την περιοχή τοµής των δύο κυκλικών δίσκων η οποία είναι από την επάνω πλευρά της ευθείας Y=X.?- X^2 + Y^2 $=< 4, (X-1)^2 + (Y-1)^ 2 $=< 4, Y $>= X, squash([x, Y], 0.0001, lin). X = X{-1.0000000000000004.. 1.4142135999632601} Y = Y{-0.41421359996326.. 2.0000000000000004} Γιάννης Ρεφανίδης 49 Περιορισµοί µε πραγµατικούς αριθµούς (6/6) Y=X 2 1-2 -1 1 2-1 -2 Γιάννης Ρεφανίδης 50

Η βιβλιοθήκη ic_sets (1/2) Η βιβλιοθήκη ic_sets χειρίζεται σύνολα ακεραίων. Ένα σύνολο ακεραίων είναι µια διατεταγµένη λίστα ακεραίων αριθµών. S1 = [1, 3, 7] S2= [ ] Ορίζουµε µια µεταβλητή συνόλου δίνοντας τα σίγουρα και τα περισσότερα δυνατά στοιχεία της:?- S1 :: [2, 3].. [1, 2, 3, 4]. S1 = S1{[2, 3] \/ ([].. [1, 4]) : _313{2.. 4}} Η παραπάνω δήλωση σηµαίνει ότι η µεταβλητή S1 είναι ένα σύνολο το οποίο περιέχει σίγουρα τα στοιχεία 2 και 3, ενώ µπορεί ενδεχοµένως να περιέχει και τα 1 και 4. Στην απάντησή της η ECLiPSe µας δίνει και τον πληθικό αριθµό του συνόλου. Γιάννης Ρεφανίδης 51 Η βιβλιοθήκη ic_sets (2/2) Προσοχή: Εάν έχουµε φορτώσει και τη βιβλιοθήκη ic, η παραπάνω δήλωση θα έπρεπε να γραφεί ως: ic_sets:( S1 :: [ 2, 3]..[1,2,3,4] ) Γιάννης Ρεφανίδης 52

Περιορισµοί συνόλων Μπορούµε να θέσουµε περιορισµούς µεταξύ συνόλων ή µεταξύ ακεραίων και συνόλων.?x in?set : Ο ακέραιος Χ είναι µέλος του συνόλου Set?X notin?set : Ο ακέραιος Χ δεν είναι µέλος του συνόλου Set #(?Set,?Card) : Ο πληθικός αριθµός του συνόλου Set είναι Card?Set1 sameset?set2 : Τα σύνολα Set1 και Set2 είναι ίδια.?set1 disjoint?set2 : Τα σύνολα Set1 και Set2 είναι ξένα.?set1 includes?set2 : Το σύνολο Set1 είναι υπερσύνολο του Set2.?Set1 subset?set2 : Το σύνολο Set1 είναι υποσύνολο του Set2. intersection(?set1,?set2,?set3) : Το Set3 είναι τοµή τωνset1 και Set2. union(?set1,?set2,?set3) : Το Set3 είναι ένωση των Set1 και Set2. difference (?Set1,?Set2,?Set3) : Το Set3 είναι διαφορά των Set1 και Set2. symdiff (?Set1,?Set2,?Set3) : Το Set3 είναι συµµετρική διαφορά των Set1 και Set2. Γιάννης Ρεφανίδης 53