Μεταβλητες: Q, NSW, V, T, SA, WA, NT. Πεδίο Ορισμού: Για κάθε μεταβλητη το ίδιο. D i ={R, G, B} όπου i= Q, NSW,., NT.

Σχετικά έγγραφα
(50 μον.) πάντοτε Διατυπώστε

===========================================================================

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

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

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

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

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

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

9. Κόκκινα-Μαύρα Δέντρα

Αλγόριθµοι CSPs Κώδικας. Μάθηµα Τεχνητής Νοηµοσύνης ΥΣ02 Χειµερινό εξάµηνο

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

Κατακερματισμός (Hashing)

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

Κατανεμημένα Συστήματα Ι

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

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

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

Λύσεις 1ης Ομάδας Ασκήσεων

Κατανεμημένα Συστήματα Ι

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Σειρά Προβλημάτων 1 Λύσεις

Το Πρόβλημα της Πινακοθήκης (The Art Gallery Problem)

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

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

7 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Διαχείριση Έργων Πληροφορικής

Το Πρόβλημα της Πινακοθήκης (The Art Gallery Problem)

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 11: Μη Ασυμφραστικές Γλώσσες

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Δημιουργία και επεξεργασία διανυσματικών επιπέδων στο QGIS

Ασκήσεις μελέτης της 6 ης διάλεξης

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Διατάξεις με επανάληψη: Με πόσους τρόπους μπορώ να διατάξω r από n αντικείμενα όταν επιτρέπονται επαναληπτικές εμφανίσεις των αντικειμένων; Στην αρχή

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3)

ΜΑΘΗΜΑΤΙΚΑ Ε ΔΗΜΟΤΙΚΟΥ ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΙΩΝ

Παραδείγματα μεταβλητών

Το κείμενο που ακολουθεί αποτελεί επεξεργασία του πρωτότυπου κειμένου του Α. Κάστωρ για την επίλυση των παραδειγμάτων κρίσιμης αλυσίδας που

Δικτυακή Αναπαράσταση Έργων (Δίκτυα ΑΟΑ και ΑΟΝ) & η Μέθοδος CPM. Λυμένες Ασκήσεις & Παραδείγματα

ΕΠΙΛΥΣΗ ΕΚΦΥΛΙΣΜΕΝΩΝ ΚΑΙ ΓΕΝΙΚΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ. 4.1 Επίλυση Εκφυλισμένων Γραμμικών Προβλημάτων

Σειρά Προβλημάτων 3 Λύσεις

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Λύσεις 4ης Σειράς Ασκήσεων

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Εργοστάσιο Ανακύκλωσης


m + s + q r + n + q p + s + n, P Q R P Q P R Q R F G

Επίλυση Προβλημάτων με Χρωματισμό. Αλέξανδρος Γ. Συγκελάκης

Θέματα υπολογισμού στον πολιτισμό

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

Δημιουργία ιστοσελίδας με. Wordpress - Βασικές λειτουργίες

Ασκήσεις μελέτης της 8 ης διάλεξης

Red-Black Δέντρα. Red-Black Δέντρα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Σειρά Προβλημάτων 5 Λύσεις

Σημεία Προσοχής στην Παράγραφο Ε2.

m 1 min f = x ij 0 (8.4) b j (8.5) a i = 1

Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, Τ.Ε.Π Π.Μ, Μάθημα: Γραφικά με Η/Υ

Μη γράφετε στο πίσω μέρος της σελίδας


Σενάριο Χρήσης myschool

Διαχρονικές δομές δεδομένων

Σειρά Προβλημάτων 4 Λύσεις

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

ΟΔΗΓΙΕΣ. Λίγα λόγια παίκτες Διάρκεια 30 Για ηλικίες 10+

Σύγκριση μέσου όρου πληθυσμού με τιμή ελέγχου. One-Sample t-test

Ταυτότητα εκπαιδευτικού σεναρίου

Προετοιμασία του παιχνιδιού

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

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015

Θεωρία Γραφημάτων 6η Διάλεξη

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Σειρά Προβλημάτων 4 Λύσεις

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Θεωρία Γραφημάτων 8η Διάλεξη

Αλγόριθμοι για ανάθεση συχνοτήτων και έλεγχο αποδοχής κλήσεων σε κυψελικά ασύρματα δίκτυα

(18 ο ) ΚΛΑΣΜΑΤΙΚΗ ΑΝΑΓΩΓΗ - ΙI: «διάμεσος &θεσιακή επιλογή στοιχείου»

Δηλώσεις Εργαστηρίων

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

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

ΘΕΜΑ 1: Αλγόριθμος Ford-Fulkerson

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

Αγαπητή κυρία/αγαπητέ κύριε, Στόχος του συγκεκριμένου εγγράφου είναι να σας ενημερώσει σχετικά με τη λειτουργία του νέου Συστήματος Κεντρικής

Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο

Αλγόριθμοι Ταξινόμησης Μέρος 2

Δημιουργία ιστοσελίδας με Wordpress - Βασικές λειτουργίες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Λύσεις για τις ασκήσεις του lab5

Παραδείγματα (2) Διανυσματικοί Χώροι

Chapter 9: NP-Complete Problems

Transcript:

1. Στην άσκηση μας, μας έχει δωθεί ένας γράφος, ο οποίος αντιπροσωπεύει ένα χάρτη και μάλιστα αυτόν της Αυστραλίας. Στον γράφο αυτό υπάρχουν και κόμβοι, οι οποίοι αφορούν με τη σειρά τους τις διάφορες περιοχές της. Στόχος μας ωστόσο είναι να χρωματίσουμε αυτούς, ούτως ώστε ο καθένας να έχει διαφορετικό χρώμα από το γειτονικό του που με αυτούς συνδεέται με τόξα. Τα χρώματα που έχουμε διαθέσιμα είναι τρία: το κόκκινο (R), το πράσινο (G) και το μπλε (B). Ενώ η σειρά που θα χρωματίζουμε κάθε φορά τους κόμβους είναι η εξής: Q, NSW, V, T, SA, WA, NT. Οι παραπάνω είναι και οι μεταβλητές που θα χρησιμοποιήσουμε και πρόκειται και για τα αρχικά της κάθε περιοχής της Αυστραλίας. Οπότε καταλήγουμε στο συμπέρασμα ότι πρόκειται για ένα πρόβλημα ικανοποιήσης περιορισμών! Εφόσον πρόκειται για πρόβλημα ικανοποιήσης περιορισμών θα πρέπει αρχικά να ορίσουμε τις μεταβλητές, τα πεδία ορισμών τους, καθώς και τους αντίστοιχους περιορισμόυς. Ενώ ακόμα θα σχεδιάσουμε και τον αντίστοιχο γράφο περιορισμών. Μεταβλητες: Q, NSW, V, T, SA, WA, NT Πεδίο Ορισμού: Για κάθε μεταβλητη το ίδιο. D i ={R, G, B} όπου i= Q, NSW,., NT. Περιορισμοί: WA NT, WA SA, NT SA, NT Q, SA Q, Q NSW, SA V, NSW V Παρατήρηση: Όλοι οι περιορισμοί είναι δυαδικοί καθώς εμπλέκονται το πολύ δύο μεταβλητές σε κάθε περιορισμό.

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

αναζήτησης με πρώιμο έλεγχο και οπισθοδρόμηση με άλμα (forward checking and backjumping). Πρόκειται για υβριδικό αλγόριθμο και συνδυάζει δύο λειτουργίες που προσθέσαμε στον αλγόριθμο του κατά βάθος έτσι ώστε να τον κάνουμε καλύτερο. Δηλαδή, με τον πρώιμο έλεγχο εξασφαλίζουμε τον έλεγχο όσον αφορά το πεδίο τιμών ούτως ώστε να ελέγξουμε εκ των προτέρων τις διάφορες τιμές του Δέντρου Αναζήτησης και να «κλαδέψουμε» το δέντρο μας, να σημειωθεί ότι ο Forward Checking (ή FC) ανήκει στην οικογένεια των lookahead αλγορίθμων και με την οπισθοδρόμηση με άλμα (backjumping) που ανήκει στην οικογένεια των lookback αλγορίθμων εξασφαλίζουμε την έξυπνη οπισθοδρόμηση του αλγορίθμου σε περίπτωση που χρειαστεί. Μπορούμε εύκολα να παρατηρήσουμε ότι η λειτουργία της οπισθοδρόμησης σε συνδυασμό με τους αλγόριθμους FC και MAC (Maintaining Arc Consistency) δεν έχει ιδιαίτερη εφαρμογή. Ειδικότερα, θα λέγαμε ότι υπάρχει μικρή πιθανότητα να εφαρμοστεί κατά το Forward Checking και σχεδόν αδύνατο κατά την εφαρμογή του Maintaining Arc Consistency. Τα παραπάνω θα τα παρατηρήσουμε μετά το τέλος του αλγορίθμου όπου θα ξανακάνουμε αναφορά. Κάθε φορά που μία περίοχη χρωματίζεται τότε το πεδίο ορισμού των γειτονικών περιοχών αλλάζει, δηλαδή αφαιρούνται από τα πεδία ορισμών τους το εκάστοτε χρώμα, ενώ ταυτόχρονα η περιοχή που το προκάλεσε αυτό εισάγεται στα conflict sets των περιοχών αυτών. Στην αρχική κατάσταση κάμια μεταβλητή δεν έχει τιμή και κάθε μεταβλητή έχει πεδίο ορισμού όλα τα χρώματα. Ξεκινάμε με τον χρωματισμό της περιοχής Q:

Θα επεκταθεί ο αριστερότερος κόμβος και η μεταβλητή Q θα λάβει την τιμή R. Τα πεδία ορισμού των NSW, SA, NT θα αλλάξουν, δηλαδή, NSW, SA, NT= {G,B} ενώ στο conflict set τους θα εισαχθεί η τιμή Q. Conflict set (NSW, SA, NT) = {Q}. Τα πεδία ορισμού των υπολοίπων δεν θα αλλάξουν, αλλά ούτε και στο conflict set θα εισαχθεί κάτι. Δηλαδή για τα πεδία ορισμού θα ισχύει V, T, WA = {R, G, B}, ενώ για τα conflict set (V, T, WA) = { }. Τώρα είναι η σειρά της NSW να χρωματιστεί. Θα επεκταθεί ο αριστερότερος κόμβος και η μεταβλητή NSW θα λάβει την τιμή G. Από το πεδίο ορισμού της V θα αφαιρεθεί το G, δηλαδή, V = {R, B} ενώ στο conflict set της εισάγεται η NSW, δηλαδή, conflict set (V) = {NSW}. Το πεδίο ορισμού της SA θα αλλάξει και αυτό και εκτός της τιμής R, που έχει ήδη αφαιρεθεί, τώρα θα αφαιρεθεί και το G, δηλαδή, SA = {B}. Ενώ στο conflict set της εισάγεται και η NSW, δηλαδή, conflict set (SA) = {Q, NSW}. Τα πεδία ορισμού των T, WA πάλι δεν άλλαξαν, δηλαδή, T, WA = {R, G, B}, αλλά και ούτε στο conflict set τους εισήχθη κάτι, δηλαδή conflict set (T, WA) = { }. Τώρα είναι η σειρά της V να χρωματιστεί.

Θα επεκταθεί ο αριστερότερος κόμβος και η μεταβλητή V θα λάβει την τιμή R. Το πεδίο ορισμού της SA θα παραμείνει ίδιο, δηλαδή, SA = {B}, ενώ στο conflict set της θα εισαχθεί και η V εξαιτίας του κόκκινου, δηλαδή, conflict set (SA) = {Q, NSW, V}. Τα πεδία ορισμού και τα conflict set των υπολοίπων θα παραμείνουν τα ίδια, δηλαδή, πεδίο ορισμού NT = {G, B}, conflict set (NT) = {Q} και πεδίο ορισμού T, WA = {R, G, B}, conflict set (T, WA) = { }, καθώς δεν επηρεάζονται από την V. Τώρα είναι η σειρά της T να χρωματιστεί.

Θα επεκταθεί ο αριστερότερος κόμβος και η μεταβλητή T θα λάβει την τιμή R. Λόγω ότι η περιοχή T δεν ενώνεται, με ακμή, με άλλες περιοχές δεν θα έχουμε καμία αλλαγή στα πεδία ορισμού και στα conflict set των υπόλοιπων περιοχών. Τώρα σειρά έχει να χρωματιστεί η SA.

Θα επεκταθεί ο αριστερότερος και μοναδικός κόμβος και η μεταβλητή SA θα λάβει την τιμή B. Από το πεδίο ορισμού της NT θα αφαιρεθεί και το Β άρα NT = {G}, ενώ στο conflict set της θα εισαχθεί και η SA, δηλαδή, conflict set (NT) = {Q, SA}. Από το πεδίο ορισμού της WA θα αφαιρεθεί το B, δηλαδή, WA = {R, G}, ενώ στο conflict set της θα εισαχθεί η SA, δηλαδή, conflict set (WA) = {SA}. Τώρα σειρά έχει να χρωματιστεί η WA.

Θα επεκταθεί ο αριστερότερος κόμβος και η μεταβλητή WA θα λάβει την τιμή R. Το πεδίο ορισμού της NT θα παραμείνει ίδιο, αλλά στο conflict set της θα εισαχθεί και η WA. Δηλαδή το πεδίο ορισμού της NT = {G}, αλλά conflict set (NT) = {Q, SA, WA}. Τώρα σειρά έχει να χρωματιστεί η NT.

Θα επεκταθεί ο αριστερότερος και μοναδικός κόμβος και η μεταβλητή NT θα λάβει την τιμή G και ο αλγόριθμος ολοκληρώνεται με επιτυχία, καθώς βρήκε τη λύση του. Αυτό είναι και το τελίκο μας δέντρο, ενώ οι τελικές τιμές στις μεταβλητές είναι: Q = R, NSW = G, V = R, T = R, SA = B, WA = R, NT = G. Παρατηρούμε ότι κάθε φορά που ο αλγόριθμος απέρριπτε από το πεδίο ορισμού μιας μεταβλητής μία τιμή τότε η ευθυνόμενη γι αυτό μεταβλητή εισάγονταν στο conflict set της. Ενώ όταν μία περιοχή

χρωματιζόταν τα πεδία ορισμού και τα αντίστοιχα conflict sets τους των ήδη χρωματισμένων περιοχών δεν χρειαζόνταν να αλλάξουν. Τέλος, όπως τελικά αποδείχθηκε η οπισθοδρόμηση δεν εφαρμόστηκε στο παράδειγμα της άσκησης μας καθώς ο πρώιμος έλεγχος φρόντιζε έτσι ώστε οι μεταβλητές να βρούν γρήγορα την σωστή τιμή τους. Β. Επίλυση προβλήματος με κατά βάθος αναζήτηση με διάδοση περιορισμών (MAC) Ο αλγόριθμος για κάθε μεταβλητή που παίρνει τιμή, κοιτάει για την κάθε τιμή αυτή αν υπάρχει συμβατή τιμή στους γειτονικούς της κόμβους, αν υπάρχει την κρατάει, αν όχι τις διαγράφει. Ο αλγόριθμος ωστόσο δεν σταματάει εκεί ελέγχει και για τους γειτονικούς αυτούς κόμβους για τις αντίστοιχες τιμές που έχουν αν και αυτών οι τιμές ικανοποιούν το πεδίο ορισμών των αντίστοιχων γειτόνων τους. Γίνεται δηλαδή διάδοση των περιορισμών! Αν όμως προκύψει κάποια αλλαγή στο πεδίο ορισμού κάποιας μεταβλητής, ο αλγόριθμος θα ξαναεξετάσει κάθε ακμή για consistency. Ο αλγόριθμος ξεκινάει έχοντας την αρχική κατάσταση όπου όλες οι μεταβλητές είναι κενές και κάθε μεταβλητή έχει πεδίο ορισμού όλα τα χρώματα Ξεκινάμε με το χρωματισμό της περιοχής Q: Θα επεκταθεί ο αριστερότερος κόμβος και η μεταβλητή Q θα λάβει την τιμή R, και τώρα για Q=R προκύπτουν οι εξής έλεγχοι: Έλεγχος Q-NSW: D NSW = {R, G, B}

Θα σβηστεί η τιμή R από το Domain της NSW, ενώ θα γίνει και αντίστροφος έλεγχος, δηλαδή της NSW με την Q, όπου και διαπιστώνουμε ότι υπάρχουν συμβατές τίμες για κάθε τιμή από το πεδίο ορισμού της. Έλεγχος Q-NT: D NT = {R, G, B} Θα σβηστεί η τιμή R από το Domain της NT, ενώ θα γίνει και αντίστροφος έλεγχος, δηλαδή της NT με την Q, όπου και διαπιστώνουμε ότι υπάρχουν συμβατές τιμές για κάθε τιμή από το πεδίο ορισμού της. Έλεγχος Q-SA: D SA = {R, G, B} Θα σβηστεί η τιμή R από το Domain της SA, ενώ θα γίνει και αντίστροφος έλεγχος, δηλαδή της SA με την Q, όπου και διαπιστώνουμε ότι υπάρχουν συμβατές τιμές για κάθε τιμή από το πεδίο ορισμού της. Έλεγχος NSW-V: D V = {R, G, B} Για κάθε τιμή από το D NSW = {G, B} υπάρχει συμβατή τιμή στο Domain της V. Ενώ θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της V με την NSW, όπου και διαπιστώνουμε ότι για κάθε τίμη της V, υπάρχει συμβατή τιμή στο Domain της NSW. Έλεγχος NSW-SA: D SA = {G, B} Για κάθε τιμή από το D NSW = {G, B} υπάρχει συμβατή τιμή στο Domain της SA. Ενώ θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της SA με την NSW, όπου και διαπιστώνουμε ότι για κάθε τίμη της SA, υπάρχει συμβατή τιμή στο Domain της NSW. Έλεγχος V-SA: D SA = {G, B} Για κάθε τιμή από το D V = {R, G, B} υπάρχει συμβατή τιμή στο Domain της SA. Ενώ θα γίνει και ο αντίστροφος έλεγχος, δηλαδή

της SA με την V, όπου και διαπιστώνουμε ότι για κάθε τίμη της SA, υπάρχει συμβατή τιμή στο Domain της V. Έλεγχος SA-WA: D WA = {R, G, B} Για κάθε τιμή από το D SA = {G, B} υπάρχει συμβατή τιμή στο Domain της WA. Ενώ θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της WA με την SA, όπου και διαπιστώνουμε ότι για κάθε τιμή της WA, υπάρχει συμβατή τιμή στο Domain της SA. Έλεγχος SA-NT: D NT = {G, B} Για κάθε τιμή από το D SA = {G, B} υπάρχει συμβατή τιμή στο Domain της NT. Ενώ θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της NT με την SA, όπου και διαπιστώνουμε ότι για κάθε τιμή της NT, υπάρχει συμβατή τιμή στο Domain της SA. Έλεγχος WA-NT: D NT = {G, B} Για κάθε τιμή από το D WA = {R, G, B} υπάρχει συμβατή τιμή στο Domain της NT. Ενώ θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της NT με την WA, όπου και διαπιστώνουμε ότι για κάθε τιμή της NT, υπάρχει συμβατή τιμή στο Domain της WA. Αφού τελειώσαν οι έλεγχοι και δεν επεστράφει κάποιο άδειο Domain, ο αλγόριθμος θα συνεχίσει με τον χρωματισμό της NSW:

Θα επεκταθεί ο αριστερότερος κόμβος και η μεταβλητή NSW θα λάβει την τιμή G, και τώρα για NSW=G προκύπτουν οι εξής έλεγχοι: Έλεγχος NSW-V: D V = {R, G, B} Θα σβηστεί η τιμή G από το Domain της V, ενώ θα γίνει και αντίστροφος έλεγχος, δηλαδή της V με την NSW, όπου και διαπιστώνουμε ότι υπάρχουν συμβατές τίμες για κάθε τιμή από το πεδίο ορισμού της. Έλεγχος NSW-SA: D SA = {G, B} Θα σβηστεί και η τιμή G από το Domain της SA, ενώ θα γίνει και αντίστροφος έλεγχος, δηλαδή της SA με την NSW, όπου και διαπιστώνουμε ότι υπάρχει συμβατή τιμή για το B, το G. Σε αυτό το σημείο θα μπορούσαμε να αφαιρέσουμε το B από το πεδίο ορισμού της NSW, εφόσον το G διαγράφτηκε από το Domain της SA και δεν υπάρχει πλέον συμβατή τιμή για να το υποστηρίζει, όμως από τη στιγμή που το NSW έχει πάρει την τιμή G δεν μας επηρεάζει στην λειτουργία του αλγόριθμου. Να επισημανθεί ότι επειδή έμεινε μια τιμή σε ένα σύνολο τιμών μετά από έλεγχο δεν σημαίνει και ότι πήρε αυτή την τιμή, θα πάρει τιμή όταν έρθει η σειρά της και θα κάνει με τη σειρά της διάδοση περιορισμών! Έλεγχος V-SA: D SA = {B} Εξαιτίας της αφαίρεσης του G από το D SA, θα αφαιρεθεί το B από το D V = {R, B} γιατί δεν υπάρχει συμβατή τιμή για V = B που να υποστηρίζεται από την SA. Παρακάτω φαίνεται και ο τρόπος εφαρμογής αυτού:

Ενώ, θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της SA με την V, όπου και διαπιστώνουμε ότι υπάρχει συμβατή τιμή της SA στο Domain της V. Στο σημείο αυτό αξίζει να αναφέρουμε ότι εξαιτίας της διαγραφής του B απ το πεδίο ορισμού της V, ο αλγόριθμος θα βάλει στη σειρά να ξαναελέγξει τις ακμές που έχει ήδη εξετάσει! Με την διαγραφή αυτή της B, διαγράφτηκαν όλοι οι πιθανοί συνδυασμοί για V=B. Έλεγχος SA-NT: D NT = {G, B} Εξαιτίας της αφαίρεσης του G από το D SA, θα αφαιρεθεί το B από το D NT = {G} γιατί δεν υπάρχει συμβατή τιμή για SA = B που να υποστηρίζεται από την NT. Ενώ, θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της NT με την SA, όπου και διαπιστώνουμε ότι υπάρχει συμβατή τιμή της NT στο Domain της SA.

Έλεγχος SA-WA: D WA = {R, G, B} Εξαιτίας της αφαίρεσης του G από το D SA, θα αφαιρεθεί το B από το D WA = {R, G} γιατί δεν υπάρχει συμβατή τιμή για SA = B που να υποστηρίζεται από την NT. Ενώ, θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της WA με την SA, όπου και διαπιστώνουμε ότι για κάθε τιμή της WA, υπάρχει συμβατή τιμή στο Domain της SA. Έλεγχος WA-NT: D NT = {G} Εξαιτίας της αφαίρεσης του B από το D NT, θα αφαιρεθεί το G από το D WA = {R, G}. Ενώ, θα γίνει και ο αντίστροφος έλεγχος, δηλαδή της NT με την WA, όπου και διαπιστώνουμε ότι υπάρχει συμβατή τιμή της NT στο Domain της WA. Παρατηρούμε ότι ο αλγόριθμος έχει βρει τη λύση του γιατί όλες οι περιοχές θα έχουν διαφορετικό χρώμα από τις γειτονικές τους (εκτός της T η οποία δεν επηρεάζεται από καμία περιοχή) αλλά ο αλγοριθμος θα ολοκληρωθεί μόλις επεκταθούν και οι υπόλοιπες περιοχές. Αφού τελειώσαν οι έλεγχοι και δεν επεστράφει κάποιο άδειο Domain, ο αλγόριθμος θα συνεχίσει με τον χρωματισμό της V:

Θα επεκταθεί ο αριστερότερος και μοναδικός κόμβος και η μεταβλητή V θα λάβει την τιμή R, και τώρα για V=R προκύπτουν οι εξής έλεγχοι: Παρόλο που έχουν βρεθεί οι σωστές τιμές για κάθε μεταβλητή καιδεν θα υπάρξουν αλλαγές, ο αλγόριθμος θα συνεχίσει με τους ελέγχους και πάλι μεταξύ των περιοχών. Έλεγχος V-SA: D SA = {B} Η SA έχει συμβατή τιμή το B για V=R. Ενώ, θα γίνει και πάλι ο αντίστροφος έλεγχος της SA με την V. Έλεγχος SA-WA: D WA = {R} Η SA έχει συμβατή τιμή στο WA. Ενώ θα γίνει και πάλι ο αντίστροφος έλεγχος. Έλεγχος SA-NT: D NT = {G} Η SA έχει συμβατή τιμή στο NT. Ενώ θα γίνει και πάλι ο αντίστροφος έλεγχος. Έλεγχος WA-NT: D NT = {G} Η WA έχει συμβατή τιμή στο NT. Ενώ θα γίνει και πάλι ο αντίστροφος έλεγχος. Αφού τελειώσαν οι έλεγχοι και δεν επεστράφει κάποιο άδειο Domain, ο αλγόριθμος θα συνεχίσει με τον χρωματισμό της T:

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

Ο αλγόριθμος θα συνεχίσει με τον χρωματισμό της SA: Θα επεκταθεί ο αριστερότερος και μοναδικός κόμβος και η μεταβλητή SA θα λάβει την τιμή B, και τώρα για SA=B προκύπτουν οι εξής έλεγχοι: Έλεγχος SA-NT: D NT = {G} Η SA έχει συμβατή τιμή στο NT. Ενώ θα γίνει και πάλι ο αντίστροφος έλεγχος. Έλεγχος SA-WA: D WA = {R} Η SA έχει συμβατή τιμή στο WA. Ενώ θα γίνει και πάλι ο αντίστροφος έλεγχος. Έλεγχος WA-NT: DNT = {G}

Η WA έχει συμβατή τιμή στο NT. Ενώ θα γίνει και πάλι ο αντίστροφος έλεγχος. Αφού τελειώσαν οι έλεγχοι και δεν επεστράφει κάποιο άδειο Domain, ο αλγόριθμος θα προχωρήσει με τον χρωματισμό της WA: Θα επέκταθεί ο αριστερότερος κόμβος και μοναδικός κόμβος και η μεταβλητή WA θα πάρει την τιμή R. Ενώ για WA=R προκύπτει ο εξής έλεγχος: Έλεγχος WA-NT: D NT = {G} Η τιμή που είχε εναπομείνει είναι συμβατή και ο αλγόριθμός θα κάνει και τον αντίστροφο έλεγχο.

Εφόσον δεν επεστράφει και πάλι κενό Domain, ο αλγόριθμος θα προχωρήσει στον χρωματισμό της τελευταίας περιοχής της NΤ: Θα επεκταθεί ο αριστερότερος και μοναδικός κόμβος και η περιοχή NT θα πάρει την τιμή G. Αυτό είναι και το τελικό δέντρο αναζήτησης καθώς ο αλγόριθμος ολοκληρώνεται και με τον χρωματισμό της NT.

Γ. Επίλυση προβλήματος με Min Conflicts (τοπική αναζήτηση) Πριν την επίλυση του προβλήματος θα αναφερθούμε συνοπτικά στον τρόπο λειτουργίας του αλγορίθμου δηλαδή αυτού της τοπικής αναζήτησης. Ο αλγόριθμος ξεκινά έχοντας ως αρχική κατάσταση τον τυχαίο χρωματισμό όλων των περιοχών με τιμές από το πεδίο ορισμού τους. Μία καλή αρχική ανάθεση τιμών στις μεταβλητές μπορεί να αποβεί πολύ κρίσιμη ώστε ο αλγόριθμος να φτάσει πιο γρήγορα στο στόχο του, ενώ μία κακή αρχική ανάθεση μπορεί ακόμα και να καθυστερήσει τον αλγόριθμο να βρει τη λύση του. Μετά την ανάθεση τιμών, ο αλγόριθμος παρατηρεί πόσες συγκρούσεις έχουμε με τη βοήθεια των περιορισμών που υπάρχουν και επιλέγει μια μεταβλητή στην οποιά αλλάζει τιμή ώστε να μειωθεί όσον το δυνατόν περισσότερο το πλήθος των περιορισμών που παραβιάζονται. Ο αλγόριθμος επαναλαμβάνει τα παραπάνω μετά την αρχική ανάθεση τιμών μέχρι να φτάσει στη λύση του προβλήματος Ο αλγόριθμος θα μπορούσε να χρησιμοποιούσε το random restart δηλαδή αν δεν έβρισκε γρήγορα τη λύση, να ξεκινούσε εκ νέου με μία διαφορετική κατάσταση και να ξαναεκτελέσει τα ίδια βήματα ευελπιστώντας να φτάσει στο στόχο του. Ακόμα θα μπορούσε να κάνει τη random walk, να κάνει βήματα στη τύχη ώστε να βρει γειτονικές καταστάσεις οι οποίες έχουν μικρότερο πλήθος περιορισμών που παραβιάζονται. Ωστόσο, τόσο το random restart, όσο και το random walk είναι παραλλαγές του αλγορίθμου της τοπικής αναζήτησης (Min Conflicts) που δεν θα χρησιμοποιήσουμε στη λύση του προβλήματος. Ο αλγόριθμος θα χρησιμοποιεί επίσης μία ευριστική η οποία θα είναι η εξής: Σε κάθε κατάσταση ο αλγόριθμος κάθε φορά ελέγχει τον αριθμό των συγκρούσεων για κάθε μεταβλητή ξεχωριστά. Έπειτα επιλέγει τη μεταβλητή με το μεγαλύτερο πλήθος συγκρούσεων με βάση των περιορισμών που έχει η κάθε

μία και ελέγχει όλες τις πιθανές τιμές από το πεδίο ορισμού της και επιλέγει αυτή που έχει τις λιγότερες συγκρούσεις. Αν ο αριθμός των συγκρούσεων είναι ίδιος για δύο ή περισσότερες τιμές τότε αυτή που θα επιλέγεται θα είναι βάση λεξικογραφικής σειράς. Όλα τα βήματα του αλγορίθμου που παραθέτονται παρακάτω γίνονται με βάση την ευριστική που μόλις ορίσαμε. Βήματα του αλγορίθμου: Αρχίζουμε με τον ορισμό ως αρχικής κατάστασης πως όλες οι περιοχές να χρωμαστιστούν πράσινες. Παρατηρούμε από το γράφο ότι ο κόμβος SA παραβιάζει 5 περιορισμούς με τους κόμβους V, NSW, Q, NT και WA. Άρα, ο κόμβος SA επιλέγεται και αλλάζει η τιμή του σε κόκκινο διότι και οι δύο επιλογές του πεδίου τιμών του SA έχουν πλήθος παραβιάσεων 0. Απ την στιγμή που ο κόμβος SA έχει διαφορετική τιμή απ τους υπόλοιπους ο αριθμός παραβίασεων όλων των υπόλοιπων (εκτός του T) μειώνεται κατά ένα. Για την επόμενη αλλαγή κόμβου παρατηρούμε ότι οι περιοχές NSW, Q και NT έχουν όλες αριθμό παραβιάσεων ίσο με 2, όπως έχουμε ορίσει βάση λεξικογραφικής σειράς ο κόμβος που θα επιλεχθεί είναι ο NSW. Αν ο κόμβος NSW πάρει την τιμή R (κόκκινη) τότε υπάρχει μία σύγκρουση με τον SA, ενώ αν πάρει την τιμή B (μπλε) δεν υπάρχει καμία σύγκρουση, άρα επιλέγουμε να χρωματίσουμε τον κόμβο NSW με μπλε. Ο επόμενος κόμβος που επιλέγεται είναι ο NT διότι είναι ο μόνος που έχει αριθμό παραβιάσεων ίσο με 2. Παρατηρούμε ότι αν ο πάρει την τιμή R (κόκκινη), βλέπουμε ότι παραβιάζεται ένας περιορισμός ενώ αν πάρει μπλε δεν παραβιάζεται κανένας, επομένως, θα επιλέξουμε το μπλε. Είναι προφανές ότι κανένας κόμβος πλέον δεν παραβιάζει κανένα περιορισμό άρα έχουμε φτάσει στη λύση του προβλήματος.

Παρουσιάζουμε το τελικό Δέντρο Αναζήτησης της λύσεως:

2. Στην άσκηση μας, μας έχει δωθεί μία λίστα με τα ονόματα επτά ιστορικών φυσιογνωμιών (Alan Turing, Ada Lovelace, Niels Bohr, Marie Curie, Σωκράτης, Πυθαγόρας, Isaac Newton) που πρόκειται να δώσουν διάλεξη στην ετήσια συγκέντρωση της ομάδας ταξιδιού στο χρόνο του Πα.Πει (ΟΧ-ΠΠ), ωστόσο υπάρχουν μόνο 4 διαθέσιμες περιόδοι (Π1, Π2, Π3 Π4) που οι επισκέπτες μπορούν να μιλήσουν καθώς και κάποιοι περιορισμοί για τον τρόπο διεξαγωγής των διαλέξεων ώστε να κρατήσουμε το ακροατήριο ικανοποιημένο. Οι περιορισμοί προέκυψαν από κάποιες σημειώσεις που βρέθηκαν και θα μας βοηθήσουν στο να επιτύχουμε να κρατήσουμε το ακροατήριο ικανοποιημένο. Θα αντιμετωπίσουμε το παραπάνω ως πρόβλημα ικανοποιήσης περιορισμών. Α. Διατύπωση ως πρόβλημα ικανοποίησης περιορισμών Όπως έχουμε ήδη αναφέρει, αφού πρόκειται για πρόβλημα ικανοποίησης περιορισμών θα πρέπει αρχικά να αναφέρουμε τις μεταβλητές, τα πεδία ορισμών τους, καθώς και τους αντίστοιχους περιορισμούς. Ενώ ακόμα θα σχεδιάσουμε και το γράφο περιορισμών. Μεταβλητές: T, L, B, C, Σ, Π, N (προκύπτουν απ τα αρχικά των προσκεκλημένων) Πεδίο Ορισμού: D i = {Π1, Π2, Π3, Π4} Όπου i=t, L,., N. Περιορισμοί: Θα τους τυποιήσουμε έτσι ώστε να τους χρησιμοποίησουμε και στο γράφο περιορισμών.

1. Τ = Π1 O Turing πρέπει να μιλήσει στην 1 η διάλεξη 2. B N Ο Bohr και ο Newton δεν μπορούν να έχουν διάλεξη ταυτόχρονα 3. i. L Π Η Lovelace και ο Πυθαγόρας δεν μπορούν να έχουν διάλεξη ταυτόχρονα ii. L N Η Lovelace και ο Newton δεν μπορούν να έχουν διάλεξη ταυτόχρονα iii.π N Ο Πυθαγόρας και ο Newton δεν μπορούν να έχουν διάλεξη ταυτόχρονα 4. Σ Π Ο Σωκράτης και ο Πυθαγόρας δεν μπορούν να έχουν διάλεξη ταυτόχρονα 5. L C Η Lovelace και η Curie δεν μπορούν να έχουν διάλεξη ταυτόχρονα 6. i. T L Ο Turing και η Lovelace δεν μπορούν να έχουν διάλεξη ταυτόχρονα ii.t N Ο Turing και ο Newton δεν μπορούν να έχουν διάλεξη ταυτόχρονα iii.l N Η Lovelace και ο Newton δεν μπορούν να έχουν διάλεξη ταυτόχρονα 7. C Π Η Curie και ο Πυθαγόρας δεν μπορούν να έχουν διάλεξη ταυτόχρονα

Γράφος Περιορισμών Πάνω από κάθε ακμή υπάρχει το νούμερο του κανόνα (περιορισμού) που κάθε φορά εφαρμόζουμε.

Αυτός είναι ένας τρόπος διατύπωσης ως πρόβλημα ικανοποίησης περιορισμών τώρα θα ορίσουμε έναν εναλλακτικό τρόπο διατύπωσης προβλήματος. Ορίζουμε πάλι τις μεταβλητές, το πεδίο ορισμού τους καθώς και τους αντίστοιχους περιορισμούς. Ενώ, θα σχεδιάσουμε εκ νέου το γράφο περιορισμών. Σε αυτή την περίπτωση θα ορίσουμε ως μεταβλητές τις περιόδους των διαλέξεων και ως πεδίο ορισμού θα ορίσουμε θεωρητικά το δυναμοσύνολο των {T, L, B, C, Σ, Π, N}. Μεταβλητές: Π1, Π2, Π3, Π4. Πεδίο ορισμού: T, L, B, C, Σ, Π, N. Όπως αναφέραμε είναι το δυναμοσύνολο αυτών.λόγω των περιορισμών αυτό μεταβάλλεται, οι περιορισμοί είναι ανα ζεύγη οι {(Β, Ν), (L, Π), (L, N), (Π, Ν),(Σ, Π),(L, C), (T, L), (T, N), (L, N), (C, Π)} δεν μπορούν να είναι στην ίδια περίοδο όπως και οι συνδυασμοί τους από το δυναμοσύνολο. Για παράδειγμα, ο συνδυασμός (T, L, N), (T, L, N, Π)κοκ δεν μπορεί να είναι στην ίδια περίοδο λόγω του περιορισμού (L, N) και πρέπει να αφαιρεθούν από το πεδίο ορισμού των μεταβλητών. Περιορισμοί: Π1 = Τ Π i DΠ j = Όπου i = 1, 2, 3, 4 j = 1, 2, 3, 4 και i j

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

Β. Επίλυση προβλήματος με κατά βάθος αναζήτηση με πρώιμο έλεγχο Θα εφαρμόσουμε τον κάτα βάθος αλγόριθμο με πρώιμο έλεγχο του οποίου την λειτουργία έχουμε ήδη αναφέρει σε προηγούμενο ερώτημα. Θα ξεκινήσουμε να αναθέτουμε τιμές στους επισκέπτες μας, ελέγχοντας κάθε φορά αν ικανοποιούνται οι περιορισμοί. Σε περίπτωση που υπάρχουν πολλαπλές επιλογές, θα επιλέξουμε την νωρίτερη περίοδο ώστε να μην κρατάμε τους επισκέπτες μας στην σημερινή εποχή. Η σειρά με την οποία θα δίνουμε τίμες στους επισκέπτες μας, είναι αυτή που μας έχει δωθεί: T, L, B, C, Σ, Π, N. Οπότε, ο αλγόριθμος ξεκινά, με την αρχική κατάσταση όπου όλες οι μεταβλητές δεν έχουν καμία τιμή και το πεδίο ορισμού τους είναι όλοι οι περίοδοι. Αρχίζουμε με την ανάθεση τιμής στη μεταβλητή T: Για την μεταβλητή T αποφασίσαμε σαν προεπεξεργαστικό βήμα να εφαρμόσουμε συνέπεια κόμβου λόγω του 1 ου κανόνα, ο οποίος αναφέρει πως ο Turing μπορεί να μιλήσει στην 1 η περίοδο μόνο. Επομένως, μετά την συνέπεια κόμβου το D T = {Π1, Π2, Π3, Π4}, και θα απομείνει μόνο η τιμή Π1 που μας ενδιαφέρει από το πεδίο ορισμού. Ο αλγόριθμος τώρα θα επεκτείνει τον αριστερότερο και μοναδικό κόμβο και η μεταβλητή T θα πάρει την τιμή Π1.

Τα πεδία ορισμού των N, L θα αλλάξουν, δηλαδή D N, L = {Π2, Π3, Π4} λόγω του FC. Ενώ, τα πεδία ορισμού των υπολοίπων θα μείνουν ως έχουν. Στο επόμενο βήμα θα αναθέσουμε τιμή στη μεταβλητή L: Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και συνεπώς η μεταβλητή L θα πάρει την τιμή Π2. Τα πεδία ορισμού των C, Π, N θα αλλάξουν, δηλαδή D C = {Π1, Π3, Π4} D Π = {Π1, Π3, Π4} D N = {Π3, Π4} Τα πεδία ορισμού των υπόλοιπων θα παραμείνουν ίδια και προχωράμε στην ανάθεση τιμής της μεταβλητής B:

Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και συνεπώς η μεταβλητή B θα πάρει την τιμή Π1. Η μεταβλητή B συνδέεται με ακμή μόνο με τη μεταβλητή N, ενώ η τιμή Π1 έχει ήδη αφαιρεθεί από το Domain της N σε προηγούμενο βήμα. Επομένως, τα Domain των υπόλοιπων μεταβλητών παραμένουν ίδια, D C = {Π1, Π3, Π4} D Π = {Π1, Π3, Π4} D N = {Π3, Π4} D Σ = {Π1, Π2, Π3, Π4} Συνεχίζουμε στην ανάθεση τιμή της επόμενης μετάβλητής, της C:

Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και έτσι η μεταβλητή C θα πάρει την τιμή Π1. Η μεταβλητή C ενώνεται με ακμή με τις μεταβλητές L, Π. Η L έχει λάβει ήδη τιμή άρα δεν θα αλλάξει κάτι γι αυτήν, ενώ από το Domain της Π θα σβηστεί και η τιμή Π1. Δηλαδή, D Π = {Π3, Π4} Ενώ τα πεδία ορισμού των υπόλοιπων θα παραμείνουν ίδια, D Σ = {Π1, Π2, Π3, Π4} D N = {Π3, Π4} Συνεχίζουμε με την ανάθεση τιμή της επόμενης μεταβλητής, δηλαδή της Σ:

Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και έτσι η μεταβλητή Σ θα πάρει την τιμή Π1. Η μεταβλητή Σ ενώνεται μόνο με την Π, στης οποίας το Domain έχει ήδη αφαιρεθεί η τιμή Π1. Άρα το Domain της Π θα παραμείνει ίδιο, όπως και των υπόλοιπων μεταβλητών D Π = {Π3, Π4} D N = {Π3, Π4} Συνεχίζουμε με την ανάθεση τιμής στην επόμενη μεταβλητή δηλάδή στην Π:

Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και έτσι η μεταβλητή Π θα πάρει την τιμή Π3. Το Domain της τελευταίας μεταβλητής της N θα αλλάξει καθώς οι δύο μεταβλητές ενώνονται και πλεόν το Domain της N θα είναι: D N = {Π4} Συνεχίζουμε στην ανάθεση τιμής στην τελευταία μεταβλητή, της N:

Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο και μοναδικό κόμβο και έτσι η μεταβλητή N θα πάρει την τιμή Π4. Αυτο είναι και το τελικό μας Δέντρο Αναζήτησης. Με την επέκταση και της τελευταίας μεταβλητής, ο αλγόριθμος ολοκληρώνεται και παρατηρούμε ότι οι μεταβλητές μας έχουν

όλες λάβει τιμή σύμφωνα με τους περιορισμούς μας και έτσι καταφέραμε να ικανοποιήσουμε το ενδιαφέρον όλων των φοιτητών μας. Παρακάτω ακολουθεί και ο πίνακας, που μας βοήθησε στην επίλυση του προβλήματος και αφορά τις αλλαγές που έγιναν στα πεδία ορισμού των μεταβλητών λόγω του Forward Checking: T L B C Σ Π N Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Τ=Π1 Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π2Π3Π4 Τ=Π1 L=Π2 Π1Π2Π3Π4 Π1Π3Π4 Π1Π2Π3Π4 Π1Π3Π4 Π3Π4 Τ=Π1 L=Π2 B=Π1 Π1Π3Π4 Π1Π2Π3Π4 Π1Π3Π4 Π3Π4 Τ=Π1 L=Π2 B=Π1 C=Π1 Π1Π2Π3Π4 Π3Π4 Π3Π4 Τ=Π1 L=Π2 B=Π1 C=Π1 Σ=Π1 Π3Π4 Π3Π4 Τ=Π1 L=Π2 B=Π1 C=Π1 Σ=Π1 Π=Π3 Π4 Τ=Π1 L=Π2 B=Π1 C=Π1 Σ=Π1 Π=Π3 N=Π4 Το τελικό πρόγραμμα ομιλιών της ΟΧ-ΠΠ θα είναι: Π1: T, B, C, Σ. Π2: L. Π3: Π. Π4: N. Γ. Ένας διαφορετικός τρόπος προσέγγισης Βλέποντας ότι το πρόβλημα είναι η σειρά με την οποία εξετάζουμε τη λίστα των ομιλητών και με βάση την αλλαγή που προέκυψε, δηλαδή δεν χρειάζεται πλέον ο Turing να μιλήσει 1η περίοδο, άρα δεν περιοριζόμαστε στο να τον βάλουμε πρώτο στη σειρά. Αποφασίζουμε να επαναεξετάσουμε τη σειρά με την οποία θα ορίζουμε τις διαλέξεις των ομιλητών μας και αποφασίζουμε να ορίσουμε μια νέα σειρά, η οποία θα βασίζεται στον αριθμό των

περιορισμών που εμπλέκεται ο κάθε ομιλητής μας. Έτσι, οι ομιλητές που έχουν μεγαλύτερο αριθμό περιορισμών να βρίσκουν γρήγορα τη σωστή τιμή(δίαλεξη) τους και με τη σειρά τους να επηρεάζουν το πεδίο ορισμού των συσχετισμένων σε αυτούς άλλους ομιλητές. Σκεφτόμενοι αυτά, βλέπουμε ότι η Lovelace και ο Newton έχουν το μεγαλύτερο αριθμό περιορισμών. Οπότε και θα είναι αυτοί οι πρώτοι οι οποίοι θα μπουν στη σειρά για να τους ορίσουμε περίοδο ομιλίας. Ωστόσο, έχουν τον ίδιο αριθμό περιορισμών, τώρα η επιλογή ανάμεσα τους θα γίνει με βάση λεξικογραφική σειρά. Οπότε, πρώτα θα μπει στη σειρά η Lovelace και έπειτα ο Newton. Στη συνέχεια, βλέπουμε ότι ο Πυθαγόρας έχει το μεγαλύτερο αριθμό με 4, μετά ίδιο αριθμό έχουν οι Curie και Turing, o Turing λόγω του τηλεφωνήματος έχει πλέον 2 περιορισμούς από 3 καθώς δεν ισχύει πλέον ο κανόνας 1, εδώ πάλι λόγω λεξικογραφικής σειράς θα πάει πρώτα η Curie και μετά ο Turing. Τέλος Bohr και ο Σωκράτης που εμπλέκονται με έναν περιορισμό, πάλι λόγω λεξικογραφικής σειράς θα πάει πρώτα ο Bohr και μέτα ο Σωκράτης τελευταίος. Καταλήγουμε επομένως, πως η σειρά με την οποία θα εξετάσουμε τους ομιλητές μας θα είναι η εξής: L, N, Π, C, T, B, Σ. Επομένως, έχουμε πλέον ένα διαφορετικό πρόβλημα στο οποίο θα εφαρμόσουμε πάλι τον κατά βάθος αλγόριθμο με πρώιμο έλεγχο. Ο αλγόριθμος ξεκινά και πάλι έχοντας όλες τις τιμές των μεταβλητών κενές και το πεδίο ορισμού της κάθες μεταβλητής είναι όλοι οι περίοδοι. Θα ξεκινήσουμε με την ανάθεση τιμής στη πρώτη μεταβλητή που ορίσαμε, δηλαδή της L: Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και έτσι η μεταβλητή L θα πάρει την τιμή Π1.

Με την ανάθεση αυτή τα πεδία ορισμού των N, Π, C, T θα αλλάξουν και προκύπτει: D N = {Π2, Π3, Π4} D Π = {Π2, Π3, Π4} D C = {Π2, Π3, Π4} D T = {Π2, Π3, Π4} Ενώ το πεδίο ορισμού των υπόλοιπων θα παραμείνουν ίδια δηλαδή, D B = {Π1, Π2, Π3, Π4} D Σ = {Π1, Π2, Π3, Π4} Συνεχίζουμε με την ανάθεση τιμής της επόμενης μεταβλητής, δηλαδή της N: Ο αλγόριθμος επιλέγει να επεκτείνει των αριστερότερο κόμβο και έτσι η μεταβλητή N θα πάρει την τιμή Π2. Με την ανάθεση της τιμής αυτής το πεδίο ορισμού των Π, T, B θα αλλάξουν και προκύπτει: D Π = {Π3, Π4} D T = {Π3, Π4} D B = {Π1, Π3, Π4}

Ενώ το πεδίο ορισμού των υπόλοιπων θα παραμείνει ίδιο δηλαδή, D C = {Π2, Π3, Π4} D Σ = {Π1, Π2, Π3, Π4} Ο αλγόριθμος θα συνεχίσει με την ανάθεση τιμής της επόμενης μεταβλητής, δηλαδή της Π: Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και έτσι η μεταβλητή Π θα πάρει την τιμή Π3. Τα πεδία ορισμού των C, Σ θα αλλάξουν προκύπτει δηλαδή: D C = {Π2, Π4} D Σ = {Π1, Π2, Π4} Ενώ τα πεδία ορισμού των υπόλοιπων θα παραμείνουν ίδια, δηλαδή: D T = {Π3, Π4} D B = {Π1, Π3, Π4}

Συνεχίζουμε και πάλι με την επόμενη μεταβλητή, δηλαδή την C: Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και έτσι η μεταβλητή C θα πάρει την τιμή Π2. Τα πεδία ορισμού που επηρεάζει η C είναι αυτά των L, Π τα οποία έχουν ήδη επεκταθεί, ενώ τα πεδία ορισμού των υπόλοιπων θα παραμείνουν ίδια. D T = {Π3, Π4} D B = {Π1, Π3, Π4} D Σ = {Π1, Π2, Π4} Συνεχίζουμε με την επόμενη μεταβλητή, δηλαδή με την T:

Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο, έτσι η μεταβλητή T θα πάρει την τιμή Π3. Τα πεδία ορισμού που επηρεάζει η T είναι αυτά των L, C τα οποία έχουν ήδη επεκταθεί, τα πεδία ορισμού των υπόλοιπων θα μείνουν πάλι ίδια, D B = {Π1, Π3, Π4} D Σ = {Π1, Π2, Π4} Ο επόμενος κόμβος που θα επεκταθεί είναι ο B:

Ο αλγόριθμος επιλέγει να επεκτείνει τον αριστερότερο κόμβο και έτσι η μεταβλητή B θα πάρει την τιμή Π1. Η μεταβλητή B επηρεάζει μόνο το πεδίο ορισμού της N η οποία έχει ήδη επεκταθεί, ενώ το πεδιο ορισμού της τελευταίας μεταβλητής θα παραμείνει ίδιο D Σ = {Π1, Π2, Π4}. Στο επόμενο βήμα, θα επεκταθεί και ο τελευταίος κόμβος, δηλαδή ο Σ:

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

έγιναν στα πεδία ορισμού των μεταβλητών λόγω του Forward Checking: L N Π C T B Σ Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 L=Π1 Π2Π3Π4 Π2Π3Π4 Π2Π3Π4 Π2Π3Π4 Π1Π2Π3Π4 Π1Π2Π3Π4 L=Π1 N=Π2 Π3Π4 Π2Π3Π4 Π3Π4 Π1Π3Π4 Π1Π2Π3Π4 L=Π1 N=Π2 Π=Π3 Π2Π4 Π3Π4 Π1Π3Π4 Π1Π2Π4 L=Π1 N=Π2 Π=Π3 C=Π2 Π3Π4 Π1Π3Π4 Π1Π2Π4 L=Π1 N=Π2 Π=Π3 C=Π2 Τ=Π3 Π1Π3Π4 Π1Π2Π4 L=Π1 N=Π2 Π=Π3 C=Π2 Τ=Π3 Β=Π1 Π1Π2Π4 L=Π1 N=Π2 Π=Π3 C=Π2 Τ=Π3 Β=Π1 Σ=Π1 Το τελικό πρόγραμμα ομιλιών της ΟΧ-ΠΠ θα είναι: Π1: L, Σ, Β. Π2: N, C. Π3: Π, T. Παρατηρούμε ότι υπάρχει διαφορετική κατανομή των προσκεκλημένων ομιλητών μας στις περιόδους που θα δώσουν τις διαλέξεις. Με αυτόν τον τρόπο, θα μπορέσουν να επιστρέψουν και πιο γρήγορα πίσω στο χρόνο τους καθώς η τελευταία περίοδος θα είναι κενή!