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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΑΥΤΟΜΑΤΗ ΠΑΡΑΓΩΓΗ ΣΤΑΥΡΟΛΕΞΩΝ ΑΠΟ ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ ΕΛΛΗΝΙΚΩΝ ΛΕΞΕΩΝ"

Transcript

1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΑΥΤΟΜΑΤΗ ΠΑΡΑΓΩΓΗ ΣΤΑΥΡΟΛΕΞΩΝ ΑΠΟ ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ ΕΛΛΗΝΙΚΩΝ ΛΕΞΕΩΝ Δ Ι Π Λ Ω Μ Α Τ Ι Κ Η Ε Ρ Γ Α Σ Ι Α ΣΠΥΡΙΔΩΝΑ Δ. ΤΡΑΥΛΟΥ ΕΠΙΒΛΕΠΩΝ: Κ. ΣΓΑΡΜΠΑΣ ΑΡΙΘΜΟΣ ΔΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ ΠΑΤΡΑ - ΣΕΠΤΕΜΒΡΙΟΣ

2 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα Ανάπτυξη Εφαρμογής Για Την Αυτόματη Παραγωγή Σταυρολέξων Από Βάση Δεδομένων Ελληνικών Λέξεων Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Τραυλού Σπυρίδωνα Αριθμός Μητρώου:6393 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../../ Ο Επιβλέπων Ο Διευθυντής του Τομέα Κ. Σγάρμπας Ν. Φακωτάκης Επ. Καθηγητής Καθηγητής 2

3 ΤΙΤΛΟΣ: Ανάπτυξη Εφαρμογής Για Την Αυτόματη Παραγωγή Σταυρολέξων Από Βάση Δεδομένων Ελληνικών Λέξεων ΣΥΓΓΡΑΦΕΑΣ: Σπυρίδων Δ. Τραυλός (Α.Μ. 6393) ΠΕΡΙΛΗΨΗ: Στην παρούσα διπλωματική εργασία παρουσιάζεται η διαδικασία ανάπτυξης μιας εφαρμογής για την αυτόματη παραγωγή σταυρολέξων από μια βάση δεδομένων ελληνικών λέξεων. Πιο αναλυτικά, το πρόβλημα αντιμετωπίζεται ως ένα πρόβλημα ικανοποίησης περιορισμών (CSP) και ως μεταβλητές θεωρούνται ολόκληρες λέξεις πάνω στο πλέγμα του σταυρολέξου. Στα πλαίσια αυτά επιλέγεται η μέθοδος της αναζήτησης με υπαναχώρηση για την επίλυση του προβλήματος. Κατά την διαδικασία της αναζήτησης γίνεται χρήση διάφορων ευρετικών μηχανισμών για προβλήματα ικανοποίησης περιορισμών, προσαρμοσμένων στις ανάγκες του συγκεκριμένου προβλήματος και στις ιδιαιτερότητες της ελληνικής γλώσσας. Η εφαρμογή είναι ανεπτυγμένη σε γλώσσα προγραμματισμού Java, υποστηρίζει διάφορα μεγέθη σταυρολέξων και έχει ικανοποιητική απόδοση σε ρεαλιστικά προβλήματα. Επίσης, είναι η πρώτη αντίστοιχη εφαρμογή για την ελληνική γλώσσα. ABSTRACT: This diploma dissertation presents the development process of an application for the automatic generation of crossword puzzles from a database of Greek words. More specifically, the problem is treated as a constraint satisfaction problem (CSP) and word slots on the crossword grid are considered as variables. Therefore, the method of backtracking search is used to solve the problem. During the search process various heuristic mechanisms for constraint satisfaction problems are being used. Those mechanisms are then adapted to the needs of the specific problem and the particularities of the Greek language. The application is developed in the Java programming language. It also supports several crossword grid sizes and has good performance in realistic problems. Furthermore this is the first such application for the Greek language. 3

4 Περιεχόμενα.4 Κεφάλαιο 1: Εισαγωγή 1.1 Σκοπός και δομή Χρησιμότητα Πρακτικές δυσκολίες στην υλοποίηση Παρόμοιες προσεγγίσεις... 7 Κεφάλαιο 2: Γενικές Γνώσεις 2.1 Σταυρόλεξα Ορισμοί και ιστορικά στοιχεία Το σταυρόλεξο ως πρόβλημα τεχνητής νοημοσύνης Προβλήματα Ικανοποίησης Περιορισμών Γενικά Τεχνικές αναζήτησης στα προβλήματα ικανοποίησης περιορισμών Αναζήτηση με υπαναχώρηση Τοπική αναζήτηση Κανονικές εκφράσεις Η γλώσσα προγραμματισμού Java...22 Κεφάλαιο 3: Εφαρμογή 3.1 Αρχικές ιδέες Γενική λειτουργία Ο αλγόριθμος Δημιουργία πλέγματος Αξιολόγηση πλέγματος Αναζήτηση με υπαναχώρηση Προτεραιότητα μεταβλητών Επιλογή τιμής Πρώιμος έλεγχος Υπαναχώρηση Διεπαφή Χρήστη Γραφικό περιβάλλον...43 Κεφάλαιο 4: Παραδείγματα Χρήσης 4.1 Εκτέλεση αρχείου Μενού επιλογών - Γραφικό Περιβάλλον Κεφάλαιο 5: Γενικές Μετρήσεις 5.1 Εισαγωγή Μετρήσεις Μέγεθος 5x Μέγεθος 6x Μέγεθος 8x Μέγεθος 10x Μέγεθος 12x Μέγεθος 15x Μέγεθος 20x Ανάλυση αποτελεσμάτων Μικρή αναλογία μαύρων κελιών Μεγάλη αναλογία μαύρων κελιών

5 Κεφάλαιο 6: Συμπεράσματα & Μελλοντικές Βελτιώσεις 6.1. Γενικά συμπεράσματα Μελλοντικές βελτιώσεις Βιβλιογραφία Παράρτημα

6 ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ 1.1 Σκοπός και δομή Ο σκοπός εκπόνησης της παρούσας διπλωματικής εργασίας είναι η ανάπτυξη μιας εφαρμογής για την αυτόματη παραγωγή σταυρολέξων [1], [3], [4], [5], [9] από βάση δεδομένων ελληνικών λέξεων. Παρόλο που τα σταυρόλεξα υπάρχουν στην ζωή μας εδώ και έναν αιώνα, οι τεχνικές για την δημιουργία τους έχουν μείνει σχετικά στάσιμες όλο αυτό το διάστημα. Ακόμα και από την πλευρά της επιστήμης των υπολογιστών, η έρευνα για την αυτόματη παραγωγή σταυρολέξων δεν είναι τόσο εκτεταμένη όσο θα περίμενε κανείς. Στα πλαίσια της εργασίας αυτής γίνεται μια προσπάθεια συνεισφοράς στον τομέα αυτό υπό το πρίσμα της ελληνικής γλώσσας. Το κείμενο της διπλωματικής εργασίας αποτελείται από έξι συνολικά κεφάλαια, κάθε ένα από τα οποία αναφέρεται σε ένα μέρος της ερευνητικής διαδικασίας που ακολουθήθηκε, τόσο από θεωρητικής όσο και από πρακτικής απόψεως, με την χρήση αναλυτικών παραδειγμάτων για την καλύτερη δυνατή κατανόηση του περιεχομένου από τον αναγνώστη. Τα έξι αυτά κεφάλαια είναι τα εξής: 1. Εισαγωγή 2. Γενικές γνώσεις 3. Ανάπτυξη της εφαρμογής 4. Παραδείγματα χρήσης 5. Γενικές μετρήσεις 6. Συμπεράσματα και μελλοντικές βελτιώσεις Επίσης περιλαμβάνονται παραρτήματα, τόσο με τον κώδικα που αναπτύχθηκε για την εφαρμογή, όσο και με διάφορα βοηθητικά δεδομένα που χρησιμοποιήθηκαν κατά την διαδικασία της ανάπτυξης. 1.2 Χρησιμότητα Όπως αναφέρθηκε και προηγουμένως η έρευνα πάνω στον τομέα της αυτόματης παραγωγής σταυρολέξων δεν είναι ιδιαίτερα διαδεδομένη. Ειδικότερα, για την ελληνική γλώσσα, δεν έχει αναπτυχθεί μέχρι στιγμής, τουλάχιστον εις γνώσιν του συγγραφέα, κάποια αντίστοιχη εφαρμογή. Οπότε η μελέτη του προβλήματος αυτού υπό το πρίσμα των ιδιαίτερων μορφολογικών χαρακτηριστικών των λέξεων της ελληνικής γλώσσας μπορεί να οδηγήσει σε ορισμένα αρκετά ενδιαφέροντα και χρήσιμα συμπεράσματα. Επιπλέον, το πρόβλημα της αυτόματης παραγωγής σταυρολέξων ανήκει σε μια γενικότερη κατηγορία προβλημάτων της επιστήμης της Τεχνητής Νοημοσύνης, τα προβλήματα ικανοποίησης περιορισμών. Το είδος αυτό των προβλημάτων εμφανίζεται πολύ συχνά στα πλαίσια της επιστήμης της Τεχνητής Νοημοσύνης και 6

7 έχει πολλαπλές εφαρμογές. Επομένως, το απαραίτητο θεωρητικό υπόβαθρο, οι τεχνικές που χρησιμοποιούνται κατά την διαδικασία ανάπτυξης μιας τέτοιας εφαρμογής καθώς και τα συμπεράσματα που θα προκύψουν από αυτή είναι πολύ πιθανό να μπορούν να χρησιμοποιηθούν και σε πλήθος άλλων αντίστοιχων εφαρμογών της Τεχνητής Νοημοσύνης. 1.3 Πρακτικές δυσκολίες στην υλοποίηση Η δημιουργία ενός σταυρολέξου είναι μια απαιτητική διαδικασία, η οποία χρειάζεται αρκετή εμπειρία. Ακόμα και ένα φαινομενικά απλό σταυρόλεξο μπορεί να κρύβει από πίσω του πολλές ώρες προσπάθειας. Αν και θα περίμενε κανείς πως με την ανάπτυξη των ηλεκτρονικών υπολογιστών οι όποιες δυσκολίες θα εξαλειφόντουσαν, κάτι τέτοιο δεν ισχύει. Η φύση του προβλήματος είναι τέτοια που έχει μεγάλες απαιτήσεις σε υπολογιστική ισχύ και πόρους. Το ταίριασμα λέξεων πάνω σε ένα προκαθορισμένο πλέγμα επιφέρει πολλούς περιορισμούς οι οποίοι προέρχονται τόσο από την δομή των λέξεων μιας γλώσσας όσο και από τα χαρακτηριστικά του χρησιμοποιημένου πλέγματος. Πιο συγκεκριμένα, όσο μεγαλύτερες είναι οι διαστάσεις του πλέγματος και όσο μεγαλύτερο ποσοστό των κελιών του διατίθεται προς συμπλήρωση, τόσο πιο δύσκολη και χρονοβόρα είναι η διαδικασία της δημιουργίας. Από τον προγραμματιστή ενός τέτοιου προβλήματος απαιτείται να βρει την κατάλληλη ισορροπία ανάμεσα στην ταχύτητα και την πολυπλοκότητα της εφαρμογής. Προς τον σκοπό υπάρχουν διαθέσιμες αρκετές βελτιωτικές τεχνικές από την βιβλιογραφία της Τεχνητής Νοημοσύνης τις οποίες ο προγραμματιστής μπορεί να χρησιμοποιήσει, παρόλα αυτά υπάρχει πάντα περιθώριο για την ανάπτυξη καινοτόμων ιδεών. 1.4 Παρόμοιες προσεγγίσεις Η πλειοψηφία των προσπαθειών για την ανάπτυξη εφαρμογών αυτόματης παραγωγής σταυρολέξων αφορούν την αγγλική γλώσσα. Για την ελληνική γλώσσα δεν υπάρχει κάποια αντίστοιχη εφαρμογή. Ορισμένες από τις κυριότερες προσπάθειες[3] καθώς και τα γενικά χαρακτηριστικά αυτών παρουσιάζονται παρακάτω. Στην έρευνα του Mazlack το πρόβλημα προσεγγίζεται από την οπτική γωνία του κελιού. Δηλαδή γίνεται συμπλήρωση του πλέγματος γράμμα-γράμμα. Στην έρευνα των Ginsberg et al. το πρόβλημα προσεγγίζεται σε επίπεδο λέξης. Στο πλέγμα συμπληρώνονται ολόκληρες λέξεις. Η λίστα των υποψηφίων λέξεων ανανεώνεται δυναμικά ανάλογα με τα ήδη συμπληρωμένα κελιά του πλέγματος. Οι Meehan και Gray συνέκριναν τις δυο παραπάνω προσεγγίσεις και κατέληξαν στο συμπέρασμα ότι η δεύτερη είναι πιο αποδοτική. Από τους Beacham et al. Έγιναν οι πρώτες προσπάθειες συνδυασμού συνδυασμού των δύο αυτών προσεγγίσεων με σκοπό την ακόμα καλύτερη απόδοση. Στην έρευνα του Botea εξελίχθηκε ακόμα περισσότερο η ιδέα του υβριδικού μοντέλου και αναπτύχθηκε η πιο αποτελεσματική έως σήμερα εφαρμογή 7

8 αυτόματης παραγωγής σταυρολέξων. Επίσης, μια λίστα με προγράμματα ανεπτυγμένα για παιχνίδια λέξεων μπορεί να βρει κανείς στην τοποθεσία [23]. Στα πλαίσια της εργασίας αυτής επιλέγεται η προσέγγιση της συμπλήρωσης του πλέγματος σε επίπεδο λέξης με χρήση, σε ορισμένα σημεία, και ελέγχων σε επίπεδο γράμματος. 8

9 ΚΕΦΑΛΑΙΟ 2 ΓΕΝΙΚΕΣ ΓΝΩΣΕΙΣ 2.1 Σταυρόλεξα Ορισμοί και ιστορικά στοιχεία Το σταυρόλεξο[16],[19] είναι ένα παιχνίδι γνώσεων με λέξεις το όποιο συνήθως παίρνει την μορφή ενός τετραγωνικού ή ορθογωνίου πλέγματος το οποίο αποτελείται από λευκά και μαύρα κελιά. Σκοπός του παιχνιδιού είναι να συμπληρωθούν όλα τα λευκά κελιά με γράμματα, ούτως ώστε να σχηματιστούν λέξεις, οι οποίες συνήθως διαβάζονται από αριστερά προς τα δεξιά και από πάνω προς τα κάτω. Για την εύρεση των λέξεων του πλέγματος ο παίκτης έχει στην διάθεση του μια σειρά από ορισμούς οι οποίοι τις περιγράφουν περιφραστικά, και οι οποίοι μπορούν είτε να βρίσκονται πάνω στο σταυρόλεξο είτε, συνηθέστερα, τυπωμένοι κάτω από το πλέγμα και αριθμημένοι. Τα μαύρα κελιά υπάρχουν για να διαχωρίζουν τις λέξεις μεταξύ τους. Το μέγεθος του πλέγματος είναι συνήθως τυποποιημένο. Τα πιο ευρέως χρησιμοποιούμενα μεγέθη είναι 10x10, 15x15, 20x20 και 23x23. Ως προς την μορφή του πλέγματος τα σταυρόλεξα χωρίζονται σε διάφορα είδη, ανάλογα με το πλήθος και την θέση των μαύρων κελιών καθώς και το είδος και την θέση των στοιχείων. Παρακάτω αναφέρονται τα πιο διαδεδομένα από αυτά, αν και υπάρχουν και άλλες παραλλαγές. Σχήμα 2.1: Παράδειγμα πλέγματος αμερικανικού τύπου. 9

10 Υπάρχουν τα αμερικανικού τύπου σταυρόλεξα [12], [19], [24] το πλέγμα των οποίων περιέχει συμπαγείς περιοχές με λευκά κελιά. Το πλήθος των μαύρων κελιών αντιστοιχεί περίπου στο ένα έκτο του πλέγματος, και ο αριθμός των συνεχόμενων λευκών κελιών, δηλαδή το μήκος των λέξεων, είναι συνήθως μεγαλύτερος ή ίσος του τρία. Επιπλέον το κάθε λευκό κελί πρέπει να ανήκει και σε οριζόντια αλλά και σε κάθετη λέξη. Εξαιτίας της μορφής τους, τα αμερικανικού τύπου σταυρόλεξα εμπεριέχουν πολλούς περιορισμούς σε ότι αφορά τις λέξεις που θα τα αποτελούν. Για τον λόγο αυτό, ακόμα και οι πιο ικανοί δημιουργοί σταυρολέξων αναγκάζονται να χρησιμοποιήσουν έναν περιορισμένο αριθμό λέξεων που δεν περιλαμβάνονται σε λεξικό. Για παράδειγμα μπορούν να χρησιμοποιηθούν συντομογραφίες λέξεων η ακόμα και ακολουθίες γραμμάτων που δεν έχουν κάποιο εννοιολογικό νόημα και δεν χρησιμοποιούνται στην γλώσσα. Σε άλλες περιοχές, όπως η Μεγάλη Βρετανία[19], τα πλέγματα έχουν μορφή παρόμοια με αυτή ενός συρματοπλέγματος και ο αριθμός των μαύρων κελιών είναι αρκετά μεγαλύτερος, καλύπτοντας ορισμένες φορές μέχρι και την μισή επιφάνεια του πλέγματος. Στα σταυρόλεξα αυτού του τύπου το κάθε κελί μπορεί να ανήκει είτε σε μία είτε σε δύο λέξεις. Ένα μορφολογικό χαρακτηριστικό το οποίο είναι κοινό σε όλα τα είδη σταυρολέξων είναι ότι συνήθως το πλέγμα πρέπει να έχει μια περιστροφική συμμετρία 180 μοιρών. Ένας τρίτος τύπος πλέγματος είναι αυτός ο οποίος συναντάται στην Ιαπωνία[19], όπου εκτός από τους παραπάνω κανόνες, ισχύει ότι τα πλέγματα πρέπει να έχουν τα γωνιακά τους κελιά λευκά και επίσης δεν επιτρέπεται 2 μαύρα κελιά να έχουν κοινές πλευρές. Σχήμα 2.2: Παράδειγμα πλέγματος βρετανικού τύπου. 10

11 Ένας ακόμη τύπος σταυρολέξου είναι το σκανδιναβικό[19], όπου το πλέγμα δεν περιλαμβάνει μαύρα κελιά, αλλά στην θέση τους υπάρχουν οι ορισμοί των λέξεων. Για τον λόγο αυτό τα τετράγωνα είναι μεγαλύτερα σε μέγεθος από ότι στα άλλα είδη πλέγματος που αναφέρθηκαν. Στα σταυρόλεξα αυτού του τύπου δεν υπάρχει συμμετρία. Τέλος υπάρχουν τα λευκά σταυρόλεξα, στα οποία δεν υπάρχουν εξαρχής μαύρα κελιά. Ο παίκτης καλείται να βρει εκτός από τις λέξεις και τις θέσεις των μαύρων κελιών στο πλέγμα. Σε όλα τα είδη σταυρολέξων κατά την συμπλήρωση των απαντήσεων δεν γίνεται διαχωρισμός σε ότι αφορά κεφαλαία και πεζά γράμματα. Οι απαντήσεις καταχωρούνται με κεφαλαία γράμματα. Επίσης δεν λαμβάνονται υπόψιν ορισμένοι ειδικοί χαρακτήρες που υπάρχουν σε ορισμένες γλώσσες καθώς και ο τονισμός των λέξεων. Σχήμα 2.3: Ιαπωνικό σταυρόλεξο. Ένα άλλο χαρακτηριστικό το οποίο διαχωρίζει τα σταυρόλεξα μεταξύ τους είναι ο τύπος των στοιχείων που δίνονται στον παίκτη. Αρκετά συχνά τα στοιχεία δίνονται με έναν άμεσο η ευθύ τρόπο. Δηλαδή, τα στοιχεία είναι συνήθως οι ορισμοί των λέξεων που πρέπει να βρεθούν. Τα στοιχεία πρέπει να είναι σε συνέπεια με τις απαντήσεις ως προς τον γραμματικό χρόνο και τον αριθμό. Για παράδειγμα ένα άμεσο στοιχείο είναι το πρωτεύουσα της Σουηδίας το οποίο έχει ως απάντηση την λέξη ΣΤΟΚΧΟΛΜΗ. Άλλες φορές τα στοιχεία δίνονται με τρόπο μη άμεσο και περιφραστικό. Λέξεις μπορεί να χρησιμοποιούνται με την μεταφορική τους έννοια και απαιτούν την χρήση 11

12 φαντασίας από τον παίκτη. Για παράδειγμα το στοιχείο αρχή του έτους μπορεί να έχει ως απάντηση την λέξη ΕΨΙΛΟΝ. Ένας τελευταίος τύπος είναι τα κρυπτογραφικά σταυρόλεξα, όπου οι ορισμοί αποτελούν από μόνοι τους γρίφους. Κάποιες φορές, σε κάθε γράμμα της αλφαβήτου αποδίδεται αυθαίρετα ένας αριθμός και ο παίκτης καλείται να βρει την αντιστοιχία αυτή. Άλλες φορές τα στοιχεία δίνονται με την μορφή λεξιλογικών γρίφων, όπου υπάρχουν ορισμοί με γραμματική άλλα όχι εννοιολογική συνέπεια. Επίσης χρησιμοποιούνται ομόηχες λέξεις και αναγραμματισμοί. Σχήμα 2.4: Παράδειγμα πλέγματος σκανδιναβικού τύπου. Αν και ήδη από το 19ο αιώνα είχαν αρχίσει να γίνονται δημοφιλή διάφορα παιχνίδια με λέξεις, το πρώτο σταυρόλεξο με τα χαρακτηριστικά και τις ιδιότητες που γνωρίζουμε σήμερα και αναφέρθηκαν προηγουμένως δημοσιεύθηκε στις 21 Δεκεμβρίου του 1913 από τον Arthur Wynne στην εφημερίδα New York World [4][19]. Παρόλο που αρχικά τα σταυρόλεξα αντιμετώπισαν αρκετές επικριτικές κριτικές από τον τύπο της εποχής εκείνης, στις δεκαετίες που ακολούθησαν η δημοφιλία τους άρχισε να αυξάνεται συνεχώς και στις μέρες μας αποτελούν ένα παγκόσμιο φαινόμενο με εκατομμύρια θαυμαστές και αναπόσπαστο κομμάτι της πλειοψηφίας 12

13 των εφημερίδων και των περιοδικών που κυκλοφορούν. Παρά το ότι τα σταυρόλεξα έχουν σχεδόν έναν αιώνα ζωής, οι τεχνικές για την δημιουργία τους δεν έχουν εξελιχθεί όσο θα περίμενε κανείς. Ο δημιουργός, ο οποίος πρέπει να είναι άριστος γνώστης του λεξιλογίου της γλώσσας, συνήθως χρησιμοποιεί έναν προαποφασισμένο σκελετό από λέξεις και με βάση αυτόν προσπαθεί να ταιριάξει και άλλες λέξεις. Πολλές φορές μάλιστα, αναγκάζεται να χρησιμοποιήσει ξενόγλωσσες λέξεις, συντομογραφίες ή ακόμα και ακολουθίες γραμμάτων χωρίς εννοιολογικό νόημα. Η διαδικασία αυτή είναι αρκετά χρονοβόρα και απαιτεί πολλές δοκιμές μέχρι να φτάσει το σταυρόλεξο στην τελική του μορφή Το σταυρόλεξο ως πρόβλημα τεχνητής νοημοσύνης Η φύση του προβλήματος της δημιουργίας σταυρολέξων, όπως παρουσιάστηκε και παραπάνω, το καθιστά ιδανικό ως αντικείμενο πειραματισμού στον τομέα της τεχνητής νοημοσύνης, παρόλα αυτά έχει λάβει περιορισμένο ενδιαφέρον από του ακαδημαϊκούς ερευνητές, ιδιαίτερα σε σύγκριση με άλλα παιχνίδια. Όσο πιο μεγάλο είναι το πλέγμα του σταυρολέξου και όσο μικρότερος είναι ο αριθμός των μαυρισμένων κελιών, τόσο πιο πολλοί περιορισμοί υπάρχουν σε ότι αφορά την επιλογή λέξεων. Έτσι ακόμα και ο πιο ισχυρός υπολογιστής δύσκολα θα βρει κάποιο αποτέλεσμα αν δεν έχει προγραμματιστεί κατάλληλα. Η εξέλιξη στην επιστήμη της τεχνητής νοημοσύνης δίνει πλέον στην διάθεση του ερευνητή έναν μεγάλο αριθμό από τεχνικές προς αυτή την κατεύθυνση. Στην μέχρι σήμερα βιβλιογραφία το πρόβλημα έχει εξεταστεί υπό διάφορες οπτικές γωνίες [3]. Μια πρώτη προσέγγιση ήταν αυτή κατά την οποία το πλέγμα συμπληρώνεται σε επίπεδο κελιού, δηλαδή, γράμμα-γράμμα. Αργότερα εξετάστηκε η εισαγωγή ολόκληρων λέξεων στο πλέγμα, η οποία αποδείχθηκε και πιο αποτελεσματική. Τελευταία εξετάζονται τεχνικές στις οποίες ο τρόπος επίλυσης αποτελεί συνδυασμό των δύο προηγούμενων μεθόδων, δηλαδή το πλέγμα εξετάζεται και σε επίπεδο λέξης και σε επίπεδο γράμματος. Κοινό χαρακτηριστικό όλων των προσπαθειών είναι ότι το πρόβλημα εξετάζεται συνήθως ως πρόβλημα ικανοποίησης περιορισμών. Σε γενικές γραμμές η αποτελεσματικότητα μιας υλοποίησης δεν εξαρτάται μόνο από την μέθοδο που χρησιμοποιεί, αλλά και από διάφορα χαρακτηριστικά του σταυρολέξου, όπως το μέγεθος του πλέγματος, η διάταξη και ο αριθμός των μαύρων κελιών, την γλώσσα που χρησιμοποιείται, καθώς και από το μέγεθος του λεξικού που έχει στη διάθεση της η εφαρμογή 2.2 Προβλήματα Ικανοποίησης Περιορισμών Γενικά Τα προβλήματα ικανοποίησης περιορισμών (constraint satisfaction problems, CSP) [8], [18] είναι μαθηματικά προβλήματα, τα οποία ορίζονται από ένα σύνολο μεταβλητών X i, οι οποίες έχουν ένα μη κενό πεδίο ορισμού D i, και από ένα σύνολο περιορισμών C i. Ο κάθε περιορισμός καθορίζει τους επιτρεπτούς συνδυασμούς τιμών για ένα υποσύνολο των μεταβλητών του προβλήματος. Ως κατάσταση του προβλήματος ορίζουμε την ανάθεση τιμών σε μερικές ή όλες τις μεταβλητές αυτού. Όταν από μια ανάθεση τιμής δεν παραβιάζεται κάποιος περιορισμός τότε αυτή ονομάζεται συνεπής. Όταν έχουν ανατεθεί τιμές σε όλες τις μεταβλητές του προβλήματος ικανοποίησης περιορισμών λέμε ότι έχουμε μια πλήρη ανάθεση και όταν αυτή είναι συνεπής, δηλαδή ικανοποιεί όλους τους περιορισμούς του προβλήματος, τότε χαρακτηρίζεται ως λύση αυτού. 13

14 Το πιο απλό είδος προβλήματος ικανοποίησης περιορισμών αποτελείται από μεταβλητές οι οποίες είναι διακριτές και το πεδίο τους είναι πεπερασμένο. Ο αριθμός των δυνατών πλήρων αναθέσεων για ένα τέτοιο πρόβλημα είναι εκθετικός ως προς τον αριθμό των μεταβλητών του. Οι διακριτές μεταβλητές μπορούν ακόμη να έχουν άπειρα πεδία. Στην περίπτωση αυτή, επειδή δεν είναι δυνατόν να απαριθμηθούν όλοι οι περιορισμοί, χρησιμοποιείται μια γλώσσα περιορισμών για την περιγραφή τους. Οι περιορισμοί μπορεί να είτε γραμμικοί είτε μη γραμμικοί. Εκτός από προβλήματα ικανοποίησης περιορισμών με διακριτές μεταβλητές, υπάρχουν και αυτά με συνεχή πεδία. Η πιο διαδεδομένη κατηγορία αυτών είναι τα προβλήματα γραμμικού προγραμματισμού, στα οποία οι περιορισμοί πρέπει να είναι γραμμικές ανισότητες που σχηματίζουν μια κυρτή περιοχή. Παράδειγμα τέτοιου προβλήματος είναι ο χρονοπρογραμματισμός εργασιών. Σε ότι αφορά του περιορισμούς που εμφανίζονται στα προβλήματα ικανοποίησης περιορισμών υπάρχουν τα παρακάτω είδη. Μοναδιαίοι ονομάζονται οι περιορισμοί οι οποίοι αναφέρονται σε μία μόνο μεταβλητή του προβλήματος, για παράδειγμα Χ<3. Δυαδικοί ονομάζονται οι περιορισμοί οι οποίοι συσχετίζουν δύο μεταβλητές του προβλήματος, για παράδειγμα Χ Υ. Όταν ένα πρόβλημα αποτελείται αποκλειστικά από δυαδικούς περιορισμούς τότε ονομάζεται δυαδικό. Τέλος υπάρχουν περιορισμοί υψηλότερης τάξης οι οποίοι περιλαμβάνουν παραπάνω από δύο μεταβλητές του προβλήματος, για παράδειγμα Χ+Υ Ζ. Ένα απλό παράδειγμα ενός προβλήματος ικανοποίησης περιορισμών είναι το παρακάτω. Θεωρούμε τις μεταβλητές Χ, Υ, Ζ οι οποίες έχουν ως πεδίο τιμών το (1,2,3,4,5). Οι περιορισμοί που ισχύουν είναι οι εξής: Χ Υ, Χ Ζ, Υ Ζ. Οι σχέσεις αυτές φαίνονται και στο παρακάτω γράφημα περιορισμών, το οποίο χρησιμοποιείται για να μας βοηθήσει να αντιληφθούμε καλύτερα το πρόβλημα και τους περιορισμούς που το διέπουν. Μια πλήρης ανάθεση, η οποία αποτελεί και λύση του προβλήματος είναι η Χ=1, Υ=2, Ζ=3. Σχήμα 2.5: Γράφημα περιορισμών. Σε γενικές γραμμές, η αντιμετώπιση ενός προβλήματος ως προβλήματος ικανοποίησης περιορισμών παρουσιάζει σημαντικά πλεονεκτήματα. Η αναπαράσταση των μεταβλητών γίνεται με βάση ένα καθιερωμένο πρότυπο και για αυτό η συνάρτηση διαδόχων και ο έλεγχος στόχου μπορούν και αυτά να γραφούν με έναν γενικό τρόπο. Ακόμη, υπάρχει η δυνατότητα ανάπτυξης αποτελεσματικών ευρετικών μηχανισμών, οι οποίοι σε συνδυασμό με το γράφημα περιορισμών μπορούν να μειώσουν την πολυπλοκότητα και να απλοποιήσουν την διαδικασία 14

15 εύρεσης λύσης για το πρόβλημα. Στις μέρες μας, η θεωρία των προβλημάτων ικανοποίησης περιορισμών χρησιμοποιείται σε ένα ευρύ φάσμα εφαρμογών τόσο στην ερευνά όσο και στη βιομηχανία. Ορισμένα παραδείγματα είναι: Εφαρμογές τύπου παζλ (σταυρόλεξα, κρυπταριθμιτική κτλ.) Χρωματισμός γράφων Ανάλυση και σύνθεση αναλογικών κυκλωμάτων Χρηματιστηριακή ανάλυση Χρονοπρογραμματισμός Προγραμματισμός πόρων Τεχνικές αναζήτησης στα προβλήματα ικανοποίησης περιορισμών Θεωρώντας τα προβλήματα ικανοποίησης περιορισμών ως μια παραλλαγή προβλημάτων αναζήτησης, θα μπορούσε κανείς να θεωρήσει ότι αυτά μπορούν να επιλυθούν από όλους τους αλγορίθμους αναζήτησης που εμφανίζονται στην βιβλιογραφία της Τεχνητής Νοημοσύνης. Κάτι τέτοιο είναι θεωρητικά σωστό, στην πράξη όμως δύο είναι τα είδη αναζήτησης που επιτυγχάνουν στο να εκμεταλλευτούν τα ιδιαίτερα χαρακτηριστικά των προβλημάτων ικανοποίησης περιορισμών: η αναζήτηση με υπαναχώρηση και η τοπική αναζήτηση. Κάθε μια από τις τεχνικές αυτές έχει τα δικά της χαρακτηριστικά, καθώς και τα δικά της πλεονεκτήματα και μειονεκτήματα. Όλα αυτά αποτελούν το αντικείμενο της ενότητας αυτής Αναζήτηση με υπαναχώρηση Ένα πολύ σημαντικό χαρακτηριστικό των προβλημάτων ικανοποίησης περιορισμών είναι πως ανήκουν στην κατηγορία των αντιμεταθετικών προβλημάτων. Αυτό σημαίνει ότι η σειρά με την οποία αναθέτουμε τιμές σε μεταβλητές δεν επηρεάζει το αποτέλεσμα, καταλήγουμε, δηλαδή, στην ίδια μερική ανάθεση τιμών. Για αυτό τον λόγο, όλοι οι αλγόριθμοι αναζήτησης των προβλημάτων ικανοποίησης περιορισμών παράγουν διαδόχους εξετάζοντας τις δυνατές αναθέσεις τιμών για μία μόνο μεταβλητή σε κάθε κόμβο αναζήτησης.[8]. Ως αναζήτηση με υπαναχώρηση (backtracking search) [2], [7], [8], [17]χαρακτηρίζεται μια αναζήτηση πρώτα σε βάθος (Depth-first search), η οποία επιλέγει τιμές για μια μόνο μεταβλητή κάθε φορά και αν δεν βρει κάποια συνεπή ανάθεση τιμών υπαναχωρεί, δηλαδή επιστρέφει σε μια προηγούμενη μεταβλητή και αλλάζει την τιμή που τις είχε δοθεί. Ο γενικός αλγόριθμος για την αναζήτηση με υπαναχώρηση είναι αυτός του σχήματος 2.6. Η διατύπωση αυτή του αλγορίθμου είναι αρκετά γενική και απλοϊκή και η απόδοση της σε γενικές γραμμές δεν είναι ικανοποιητική. Για τον λόγο αυτό έχει αναπτυχθεί μια σειρά από μεθόδους γενικής χρήσης που σκοπό έχουν την βελτίωση της απόδοσης της αναζήτησης, τόσο από πλευράς χρονικής διάρκειας όσο και από την άποψη της διαχείρισης μνήμης. Από την επισκόπηση του αλγορίθμου στο σχήμα 2.6 προκύπτει ότι η σειρά με την οποία επιλέγονται οι προς συμπλήρωση μεταβλητές στην απλή αναζήτηση με 15

16 υπαναχώρηση είναι τυχαία. Όμως, από την έρευνα που έχει γίνει σχετικά με το ζήτημα αυτό, έχει προκύψει ότι η σειρά με την οποία επιλέγονται οι μεταβλητές μπορεί να έχει σημαντικό αντίκτυπο στην πολυπλοκότητα και την διάρκεια της αναζήτησης. Η ταξινόμηση της προτεραιότητας των μεταβλητών [2], [8] μπορεί να γίνει με δύο τρόπους: Στατικά, όπου η σειρά με την οποία επιλέγονται οι προς συμπλήρωση μεταβλητές καθορίζεται πριν να αρχίσει η αναζήτηση και παραμένει αμετάβλητη κατά τη διάρκεια της. Δυναμικά, όπου το ποια μεταβλητή πρόκειται να συμπληρωθεί επόμενη εξαρτάται από την κατάσταση στην οποία βρίσκεται η αναζήτηση την στιγμή εκείνη. Σχήμα 2.6: Γενική μορφή αλγορίθμου αναζήτησης με υπαναχώρηση. Ο πιο συνηθισμένος μηχανισμός για τον καθορισμό της προτεραιότητας των μεταβλητών ακολουθεί την λογική first-fail [2], [7], [8], δηλαδή επιλέγει την τιμή που μπορεί να οδηγήσει πιο γρήγορα στην αποτυχία. Το να επιλέγουμε αρχικά την μεταβλητή εκείνη που θα μας οδηγήσει πρώτα σε αποτυχία μπορεί να μην ακούγεται και τόσο αποδοτικό, αφού προφανώς σκοπός μας δεν είναι να αποτύχουμε άλλα να βρούμε μια ή περισσότερες λύσεις του προβλήματος. Η λογική πάνω στην οποία βασίζεται αυτός ο ευρετικός μηχανισμός είναι ότι αν μια μερική λύση δεν οδηγεί σε μια πλήρη λύση του προβλήματος, τότε όσο νωρίτερα το διαπιστώσουμε τόσο το καλύτερο, αφού θα αποφύγουμε έτσι άσκοπους ελέγχους μεταβλητών. Επίσης, αν η μερική λύση μπορεί να οδηγήσει σε λύση, τότε επιλέγοντας την μεταβλητή που είναι πιο πιθανό να οδηγήσει σε αποτυχία, επιλέγουμε αυτή που είναι πιθανότατα και πιο 16

17 δύσκολο να συμπληρωθεί, και λαμβάνοντας υπόψιν ότι όλες οι μεταβλητές θα πρέπει κάποια στιγμή να συμπληρωθούν, κάτι τέτοιο κάνει πολύ πιο αποδοτική την αναζήτηση. Ένας ευρετικός μηχανισμός ο οποίος υλοποιεί την ιδέα αυτή είναι αυτός των ελάχιστων απομενουσών τιμών (minimum remaining values) [2], [7], [8]. Όπως προκύπτει και από την ονομασία του, ο μηχανισμός επιλέγει προς συμπλήρωση την μεταβλητή με το μικρότερο πεδίο τιμών. Υπάρχει επίσης ο ευρετικός μηχανισμός βαθμού [2], [7] που και αυτός βασίζεται στην fail-first λογική. Ο μηχανισμός αυτός, επιλέγει κάθε φορά την μεταβλητή η οποία ενέχεται στο μεγαλύτερο αριθμό περιορισμών ως προς τις μεταβλητές στις οποίες δεν έχει ανατεθεί ακόμα κάποια τιμή. Με τον τρόπο αυτό, ο μηχανισμός καταφέρνει να μειώσει τον παράγοντα διακλάδωσης των μελλοντικών επιλογών του δένδρου της αναζήτησης. Μία τρίτη εναλλακτική είναι να επιλέγεται κάθε φορά η μεταβλητή η οποία ενέχεται στο μεγαλύτερο αριθμό περιορισμών ως προς τις μεταβλητές στις οποίες έχει ανατεθεί ήδη τιμή. Ο μηχανισμός χρησιμοποιείται σε περίπτωση που χρειάζεται να κάνουμε στατική ταξινόμηση μεταβλητών [7]. Αφού γίνει επιλογή της μεταβλητής η οποία πρόκειται να αρχικοποιηθεί, το επόμενο ερώτημα που προκύπτει είναι πια από τις υποψήφιες τιμές πρόκειται να επιλεχθεί. Η σειρά με την οποία ταξινομούνται οι υποψήφιες τιμές καθορίζει την σειρά με την οποία θα εξετασθούν οι διάφοροι κλάδοι του δένδρου αναζήτησης. Αυτό που επιθυμούμε είναι να εξετασθούν πρώτα οι κλάδοι οι οποίοι αφήνουν την μέγιστη δυνατή ευελιξία για τις μελλοντικές αναθέσεις τιμών και που είναι πιο πιθανό να οδηγήσουν σε μια πλήρη λύση. Ο μηχανισμός που χρησιμοποιούμε για να επιτύχουμε τον στόχο αυτό είναι ο ευρετικός μηχανισμός της λιγότερο δεσμευτικής τιμής (least constraining value) [2], [7], [8]. Η τιμή που επιλέγεται κάθε φορά από το μηχανισμό αυτό, είναι αυτή η οποία αποκλείει τις λιγότερες τιμές για τις μη συμπληρωμένες μεταβλητές του προβλήματος. Είναι προφανές πως ο μηχανισμός αυτός δεν έχει πρακτική χρησιμότητα στην περίπτωση που μας ενδιαφέρει να βρούμε όλες τις πιθανές λύσεις του προβλήματος ή αν το πρόβλημα δεν έχει κάποια λύση. Μια ακόμα αδυναμία του γενικού αλγορίθμου υπαναχώρησης είναι πως οι περιορισμοί που ισχύουν για μια μεταβλητή εξετάζονται μόνο κατά την στιγμή κατά την οποία αυτή επιλέγεται προς συμπλήρωση. Για το λόγο αυτό εξετάζουμε μερικούς από τους περιορισμούς πιο νωρίς η ακόμα και πριν να αρχίσει η αναζήτηση, μειώνοντας έτσι σημαντικά τον χώρο αναζήτησης. Μια μέθοδος που αξιοποιεί την παραπάνω λογική ονομάζεται πρώιμος έλεγχος (forward checking) [2], [7], [8]. Η μέθοδος αυτή κάθε φορά που ανατίθεται τιμή σε μια μεταβλητή του προβλήματος εξετάζει όλες τις μεταβλητές που συνδέονται με κάποιον περιορισμό με την επιλεχθείσα μεταβλητή και αφαιρεί από το πεδίο τιμών τους όσες μεταβλητές δεν είναι συμβατές με τους περιορισμούς που ισχύουν για αυτό το ζεύγος μεταβλητών. Ο μηχανισμός του πρώιμου έλεγχου μπορεί να βελτιώσει αισθητά την απόδοση του ευρετικού μηχανισμού των ελαχίστων απομενουσών τιμών που αναφέρθηκε προηγουμένως. Αν και ανιχνεύει αρκετές από τις ασυνέπειες που μπορεί να εμφανιστούν, ο πρώιμος έλεγχος δεν τις ανιχνεύει όλες επειδή δεν κοιτάζει αρκετά μπροστά. Ο γενικός όρος που χρησιμοποιείται για την διάδοση των επιπτώσεων ενός περιορισμού που ισχύει 17

18 για κάποια μεταβλητή σε άλλες μεταβλητές του ίδιου προβλήματος είναι διάδοση περιορισμού (constraint propagation). Μια μέθοδος η οποία διαδίδει γρήγορα τους περιορισμούς και είναι συνήθως αρκετά πιο ισχυρή από τον πρώιμο έλεγχο ονομάζεται συνέπεια τόξου (arc consistency) [2], [8], [13]. Αυτό που εννοούμε με τον όρο τόξο είναι ένα προσανατολισμένο τόξο στο γράφημα περιορισμών του προβλήματος. Το τόξο θεωρείται συνεπές όταν, για κάθε τιμή από το πεδίο τιμών της μεταβλητής που βρίσκεται στην αρχή του τόξου, υπάρχει μια συνεπής τιμή στο πεδίο τιμών της μεταβλητής που βρίσκεται στο τέλος του τόξου. Η μεθοδολογία αυτή μπορεί να εφαρμοστεί είτε πριν ξεκινήσει η αναζήτηση είτε κατά την διάρκεια αυτής, μετά από κάθε ανάθεση τιμής. Σε κάθε περίπτωση η συνέπεια τόξου εφαρμόζεται επαναληπτικά μέχρι να μην υπάρχουν πλέον ασυνέπειες, αφού κάθε φορά που αφαιρείται μια τιμή από το πεδίο κάποιας μεταβλητής μια καινούργια ασυνέπεια τόξου μπορεί να προκύψει στις σχετιζόμενες με αυτή μεταβλητές. Ο αλγόριθμος που χρησιμοποιείται για την εφαρμογή της συνέπειας τόξου ονομάζεται AC-3 [2], [8], [13]. Για να παρακολουθεί ποια τόξα χρειάζεται να ελεγχθούν για ασυνέπεια ο αλγόριθμος χρησιμοποιεί μια ουρά. Κάθε τόξο, αφού ελεγχθεί και βρεθεί ότι είναι συνεπές, αφαιρείται από την ουρά, αν κατά τον έλεγχο διαπιστωθεί ότι κάποια μεταβλητή έχει ασυνεπείς τιμές στο πεδίο της τότε όλα τα τόξα που περιλαμβάνουν την τιμή αυτή επανεισάγονται στην ουρά και ελέγχονται ξανά ως προς την συνέπεια τους. Στην χειρότερη περίπτωση η πολυπλοκότητα του αλγορίθμου είναι O(ed 3 ), παρόλη όμως την πολυπλοκότητα του συνήθως η αποτελεσματικότητα του τον κάνει μια αρκετά αξιόπιστη λύση. Μια ακόμη πιο ισχυρή μορφή διάδοσης περιορισμών ορίζεται με την χρήση της k- συνέπειας (k-consistency). Για να θεωρηθεί ένα πρόβλημα ικανοποίησης περιορισμών ως k-συνεπές, θα πρέπει για οποιοδήποτε σύνολο k-1 μεταβλητών του προβλήματος αυτού και για οποιαδήποτε συνεπή ανάθεση τιμών στις μεταβλητές αυτές, η k-οστή μεταβλητή του προβλήματος να έχει συνεπείς τιμές στο πεδίο τιμών της. Όσο το k προσεγγίζει τον αριθμό των μεταβλητών του προβλήματος τόσο αυξάνεται ο χρόνος που χρειάζεται για τον έλεγχο και μειώνεται ο παράγοντας διακλάδωσης της αναζήτησης. Ο προγραμματιστής θα πρέπει να επιλέξει το κατάλληλο επίπεδο ελέγχου συνέπειας ώστε να υπάρχει ισορροπία ανάμεσα στον χρόνο και την πολυπλοκότητα της αναζήτησης. Αυτό επιτυγχάνεται κυρίως με εμπειρικό τρόπο. Ένα ακόμη μη επιθυμητό χαρακτηριστικό του γενικού αλγορίθμου υπαναχώρησης είναι ότι ο τρόπος με τον οποίο υπαναχωρεί είναι αρκετά απλοϊκός. Πιο συγκεκριμένα, όταν η αναζήτηση φτάσει σε κάποιο αδιέξοδο ο αλγόριθμος υπαναχωρεί στην πιο πρόσφατα αρχικοποιημένη μεταβλητή του προβλήματος. Η διαδικασία αυτή ονομάζεται χρονολογική υπαναχώρηση (chronological backtracking) και επιδέχεται αρκετών βελτιώσεων. Μια λύση είναι να επιστρέψουμε σε μια από τις μεταβλητές που προκάλεσαν την αποτυχία. Το σύνολο των μεταβλητών αυτών ονομάζεται σύνολο συγκρούσεων (conflict set) και αποτελείται από όσες μεταβλητές έχουν ήδη λάβει τιμή και συνδέονται με την μεταβλητή στην οποία υπήρξε αποτυχία μέσω κάποιου περιορισμού. Η μέθοδος η οποία αξιοποιεί την λογική αυτή ονομάζεται υπαναχώρηση με άλμα (backjumping). Παρόλο που η μέθοδος αυτή βελτιώνει τον γενικό αλγόριθμο υπαναχώρησης είναι αρκετά παρωχημένη, αφού κάνει ακριβώς την ίδια δουλειά που κάνει και ο πρώιμος έλεγχος ο οποίος επίσης ανιχνεύει το πότε οι τιμές ενός πεδίου μιας μεταβλητής συγκρούονται με την τρέχουσα ανάθεση. Επομένως σε περιπτώσεις που χρησιμοποιείται πρώιμος έλεγχος η υπαναχώρηση με άλμα δεν έχει πρακτική 18

19 χρησιμότητα. Βελτιώνοντας ακόμα περισσότερο την ιδέα αυτή καταλήγουμε στην υπαναχώρηση με άλμα κατευθυνόμενο από την σύγκρουση(conflict-directed backjumping) [8]. Η μέθοδος αυτή χρησιμοποιεί μια βαθύτερη έννοια του συνόλου συγκρούσεων. Πλέον, ως σύνολο συγκρούσεων μιας μεταβλητής θεωρούμε το σύνολο των προηγούμενων μεταβλητών που έκαναν την μεταβλητή αυτή, μαζί με οποιεσδήποτε επόμενες μεταβλητές, να μην έχουν συνεπή τιμή. Σχήμα 2.6: Γενική μορφή αλγορίθμου AC-3. Ο τρόπος με τον οποίο βρίσκουμε τα νέα σύνολα συγκρούσεων αναλύεται παρακάτω. Αποτυχία ενός κλάδου της αναζήτησης έχουμε επειδή το πεδίο κάποιας μεταβλητής θα είναι κενό. Αυτό που κάνει ο αλγόριθμος είναι κάθε φορά που γίνεται υπαναχώρηση σε κάποια μεταβλητή αυτή να απορροφά το κανονικό σύνολο συγκρούσεων της προηγούμενης μεταβλητής στο δικό της κανονικό σύνολο συγκρούσεων. Η διαδικασία αυτή επαναλαμβάνεται μέχρι η υπαναχώρηση να γυρίσει στο σωστό σημείο του δένδρου αναζήτησης. 19

20 Τοπική αναζήτηση Μια άλλη κατηγορία αλγορίθμων που μπορεί να χρησιμοποιηθεί αποτελεσματικά στα προβλήματα ικανοποίησης περιορισμών είναι αυτή των αλγορίθμων τοπικής αναζήτησης (local search) [8], [21]. Οι αλγόριθμοι αυτοί χρησιμοποιούν μια διατύπωση με πλήρεις καταστάσεις. Η αρχική κατάσταση αναθέτει κάποια τιμή σε όλες τις μεταβλητές του προβλήματος και η συνάρτηση διαδόχων αναλαμβάνει να μεταβάλλει τις τιμές καθεμίας μεταβλητής μέχρι να φτάσουμε σε κάποια κατάσταση στην οποία δεν θα ικανοποιούνται όλοι οι περιορισμοί. Ο πιο συχνά χρησιμοποιούμενος ευρετικός μηχανισμός για την επιλογή νέας τιμής για μια μεταβλητή είναι αυτός των ελαχίστων συγκρούσεων (min-conflicts). Ο μηχανισμός αυτός ελέγχει τον αριθμό των συγκρούσεων με άλλες μεταβλητές για κάθε πιθανή τιμή και επιλέγει αυτήν για την οποία ο αριθμός αυτός έχει την μικρότερη τιμή. Σχήμα 2.7: Γενική μορφή αλγορίθμου ελαχίστων συγκρούσεων. Η μέθοδος των ελαχίστων συγκρούσεων είναι ιδιαίτερα αποτελεσματική για έναν μεγάλο αριθμό προβλημάτων ικανοποίησης περιορισμών. Έχει παρατηρηθεί ότι για προβλήματα στα οποία οι λύσεις είναι πυκνά κατανεμημένες στον χώρο καταστάσεων ο αριθμός των βημάτων που χρειάζεται για να βρεθεί μια λύση είναι πρακτικά ανεξάρτητος από το μέγεθος του προβλήματος. Επίσης, έχει το πλεονέκτημα ότι μπορεί να χρησιμοποιηθεί για προβλήματα με μεταβαλλόμενο περιβάλλον, όπως για παράδειγμα προβλήματα χρονοπρογραμματισμού στα οποία επιφέρει σημαντική βελτίωση της απόδοσης. 2.3 Κανονικές εκφράσεις Οι κανονικές εκφράσεις (regular expressions) [6], [22], [25] αποτελούν την πρότυπη σημειογραφία για τον χαρακτηρισμό ακολουθιών κειμένου. Στην ουσία, είναι μια γλώσσα που χρησιμοποιείται για τον καθορισμό στοιχείων αναζήτησης κειμένου. Γλώσσες κανονικών εκφράσεων με παρόμοια χαρακτηριστικά χρησιμοποιούνται σε μια σειρά εργαλείων όπως οι κειμενογράφοι του λειτουργικού Unix, ο κειμενογράφος Microsoft Word, οι γλώσσες προγραμματισμού Python, Java, Ruby,.NET καθώς και σε μηχανές διαδικτυακής αναζήτησης. Οι κανονικές εκφράσεις αποτελούν ένα σημαντικό εργαλείο τόσο της επιστήμης των υπολογιστών όσο και της γλωσσολογίας. Η προέλευση τους βρίσκεται στην θεωρία αυτομάτων και στην θεωρία των τυπικών γλωσσών, οι οποίες είναι μέρος της θεωρητικής επιστήμης των υπολογιστών. Ο πρώτος που περιέγραψε μια γλώσσα κανονικών εκφράσεων ήταν ο Kleene την δεκαετία του '50. 20

21 Οι κανονικές εκφράσεις αποτελούν μια τυπική αλγεβρική σημειογραφία για τον προσδιορισμό απλών κλάσεων αλφαριθμητικών ακολουθιών (γράμματα, αριθμοί, κενά, ειδικοί χαρακτήρες). Δηλαδή, μας δίνουν την δυνατότητα και να καθορίσουμε ακολουθίες αναζήτησης αλλά και να ορίσουμε μια γλώσσα με τυπικό τρόπο. Για να γίνει αναζήτηση με την χρήση κανονικών εκφράσεων, χρειάζεται να έχουμε ένα σώμα κειμένων μέσα στο οποίο θα γίνει η αναζήτηση, καθώς και ένα πρότυπο (pattern) το οποίο θα αναζητήσουμε. Η συνάρτηση αναζήτησης θα διαβάσει όλο το σώμα κειμένου και θα επιστρέψει τα κομμάτια που αντιστοιχούν στο pattern. Στην περίπτωση που έχουμε αναζήτηση σε ένα πρόγραμμα επεξεργασίας κειμένου το αποτέλεσμα της αναζήτησης μπορεί να είναι λέξεις ή γραμμές ενός κειμένου, ενώ στην περίπτωση που έχουμε αναζήτηση πληροφορίας (μηχανές διαδικτυακής αναζήτησης) τα αποτελέσματα μπορεί να περιέχουν ολόκληρα κείμενα. Η αναζήτηση δύναται να τροποποιηθεί ώστε να επιστρέφει ένα η περισσότερα αποτελέσματα. Παρακάτω φαίνεται η σύνταξη που χρησιμοποιείται για τις κανονικές εκφράσεις. Έκφραση Περιγραφή Παράδειγμα. Επιστρέφει οποιοδήποτε χαρακτήρα ^ Αρχή της γραμμής $ Τέλος της γραμμής [...] Οποιοδήποτε χαρακτήρα εντός της αγκύλης [.-.] Οποιοδήποτε χαρακτήρα εντός του εύρους [^... [^.-.] Οποιοδήποτε χαρακτήρα δεν βρίσκεται εντός της αγκύλης Οποιοδήποτε χαρακτήρα δεν βρίσκεται εντός του εύρους αυτ. ταιριάζει με αυτή, αυτά κτλ. [αβγ] ταιριάζει με α, β ή γ [α-γ] ταιριάζει με α, β ή γ [^αα] ταιριάζει με όσους χαρακτήρες δεν είναι α ή Α [^Α-Ω] ταιριάζει με όσους χαρακτήρες δεν είναι κεφαλαία γράμματα Έκφραση? Η έκφραση μία ή καμία φορά Αυτός? Επιστρέφει αυτό ή αυτός Έκφραση* Έκφραση+ Η έκφραση μηδέν ή περισσότερες φορές Η έκφραση μία ή περισσότερες φορές Α* ταιριάζει με, Α, ΑΑ κτλ. Α* ταιριάζει με Α, ΑΑ κτλ. Έκφραση{n Η έκφραση n φορές Α{2 ταιριάζει με ΑΑ Έκφραση{n, Έκφραση{n,m Η έκφραση τουλάχιστον n φορές Α{2,ταιριάζει με ΑΑ, ΑΑΑ κτλ. Η έκφραση τουλάχιστον n αλλά όχι περισσότερες από m φορές Α{2,4ταιριάζει με ΑΑ, ΑΑΑ, ΑΑΑΑ Έκφραση1 Έκφραση2 Η έκφραση1 ή η έκφραση2 Α Β ταιριάζει με Α ή Β (Έκφραση) Το περιεχόμενο στην παρένθεση \t Ο χαρακτήρας tab 21

22 \n Ο χαρακτήρας newline \r Ο χαρακτήρας carriage return \d Ψηφίο \D Μη ψηφίο \s Κενό \S Μη κενό \w Οποιοδήποτε αλφαριθμητικό ή underscore \W Οποιοδήποτε μη αλφαριθμητικό ή underscore Πινάκας με στοιχεία σύνταξης κανονικών εκφράσεων 2.4 Η γλώσσα προγραμματισμού Java Η Java [10], [14], [15], [20] είναι μια γλώσσα προγραμματισμού η οποία αναπτύχθηκε από τον James Gosling για λογαριασμό της εταιρείας Sun Microsystems και κυκλοφόρησε το επίσημα το Η γλώσσα μοιάζει συντακτικά με τις προγενέστερες C και C++ έχει όμως ένα διαφορετικό μοντέλο αντικειμένων και λιγότερες λειτουργίες χαμηλού επιπέδου. Κατά την δημιουργία της οι κύριοι στόχοι των σχεδιαστών ήταν οι εξής[παραπομπή]: 1. Η γλώσσα θα πρέπει να είναι απλή, αντικειμενοστραφής και οικεία. 2. Η γλώσσα θα πρέπει να είναι ισχυρή και ασφαλής 3. Η γλώσσα θα πρέπει να είναι αρχιτεκτονικά ουδέτερη και φορητή 4. Η γλώσσα θα πρέπει να εκτελεί με υψηλή απόδοση 5. Η γλώσσα θα πρέπει να είναι ερμηνεύσιμη, με νήματα και δυναμική Η Java είναι μια γενικού σκοπού, αντικειμενοστραφής γλώσσα προγραμματισμού η οποία βασίζεται σε κλάσεις και παρέχει την δυνατότητα ταυτόχρονου προγραμματισμού. Ο σχεδιασμός της έγινε με σκοπό να εξαρτάται όσο το δυνατόν λιγότερο από την αρχιτεκτονική του συστήματος στο οποίο πρόκειται να τρέξει. Ο τρόπος με τον οποίο επιτυγχάνεται αυτό είναι ο εξής, ο μεταγλωττιστής της γλώσσας δημιουργεί ένα αριθμό από αρχεία byte και όταν η εφαρμογή πρόκειται να εκτελεστεί η εικονική μηχανή της Java (Java virtual machine) αναλαμβάνει να διαβάσει τα αρχεία αυτά και να τα μετατρέψει στην γλώσσα μηχανής του συγκεκριμένου συστήματος. Σε γενικές γραμμές τα πλεονεκτήματα της Java είναι: Η δυνατότητα της να τρέχει σε πλήθος διαφορετικών συστημάτων, η οποία εξηγήθηκε παραπάνω. Η πολύ μεγάλη βιβλιοθήκη έτοιμων κλάσεων που διαθέτει. 22

23 Η χρησιμοποίησή της σε μεγάλο αριθμό ερευνητικών και αναπτυξιακών προγραμμάτων. Η δυνατότητα της να χρησιμοποιηθεί για προγραμματισμό στο διαδίκτυο. 23

24 ΚΕΦΑΛΑΙΟ 3 Η ΕΦΑΡΜΟΓΗ 3.1 Αρχικές ιδέες Προτού ξεκινήσει η ανάπτυξη της εφαρμογής για την αυτόματη παραγωγή σταυρολέξων [1], [3], [4], [5], [9] από βάση δεδομένων ελληνικών λέξεων υπήρχαν αρκετές αποφάσεις που έπρεπε να ληφθούν τόσο σε ότι αφορά την λογική με την οποία θα αντιμετωπιζόταν το πρόβλημα όσο και σε σχέση με τα εργαλεία που επρόκειτο να χρησιμοποιηθούν. Η συντριπτική πλειοψηφία των προγενέστερων εφαρμογών αυτόματης παραγωγής σταυρολέξων αφορούν την αγγλική γλώσσα, ενώ για την ελληνική γλώσσα δεν υπήρχε, τουλάχιστον εις γνώσιν του συγγραφέα, άλλη αντίστοιχη εφαρμογή. Επομένως, πολλές από τις αποφάσεις λήφθηκαν χωρίς να λαμβάνονται υπόψιν τα ιδιαίτερα χαρακτηριστικά της ελληνικής γλώσσας και το τι συνέπειες θα μπορούσαν αυτά να επιφέρουν κατά την ανάπτυξη των αντίστοιχων μηχανισμών. Αρχικά, έπρεπε να ξεκαθαριστεί πως θα αντιμετωπιζόταν το πρόβλημα από την σκοπιά της τεχνητής νοημοσύνης. Όπως έχει ήδη αναφερθεί και στα προηγούμενα κεφάλαια το πρόβλημα της αυτόματης παραγωγής σταυρολέξων στην υπάρχουσα βιβλιογραφία αντιμετωπίζεται κατά κύριο λόγο ως πρόβλημα ικανοποίησης περιορισμών. Μάλιστα, για την κατηγορία των προβλημάτων αυτών αποτελεί και κλασσικό παράδειγμα. Επομένως, στο κομμάτι αυτό η απόφαση που έπρεπε να ληφθεί ήταν ξεκάθαρη, το πρόβλημα επρόκειτο να αντιμετωπιστεί ως ένα πρόβλημα ικανοποίησης περιορισμών. Το επόμενο κομβικό σημείο ήταν η επιλογή των μεταβλητών μέσω των οποίων θα εξεταζόταν το πρόβλημα. Όπως και σε κάθε πρόβλημα ικανοποίησης περιορισμών, η επιλογή αυτή παίζει πολύ σημαντικό ρόλο στην απόδοση των μηχανισμών αναζήτησης που θα χρησιμοποιηθούν. Οι επιλογές ήταν δύο, να θεωρηθούν ως μεταβλητές τα λευκά κελιά του πλέγματος, δηλαδή να προσεγγιστεί το πρόβλημα σε επίπεδο γράμματος (προσέγγιση χαμηλού επιπέδου) ή να θεωρηθούν ως μια μεταβλητή τα συνεχόμενα κελιά του πλέγματος, δηλαδή να προσεγγιστεί το πρόβλημα σε επίπεδο λέξης σταυρολέξου (προσέγγιση υψηλού επιπέδου). Η προσέγγιση η οποία τελικά προτιμήθηκε ήταν η δεύτερη, καθώς αποδεδειγμένα είναι πιο αποτελεσματική από την πρώτη [3]. Η απόφαση αυτή όμως δεν ήταν απόλυτη, καθώς δεν αγνοήθηκε τελείως το χαμηλό επίπεδο, κατά την διάρκεια της ανάπτυξης της εφαρμογής, σε ορισμένα κρίσιμα σημεία αποφασίστηκε να εξετάζεται το πρόβλημα και σε επίπεδο γράμματος. Από την στιγμή που αποφασίστηκε η προσέγγιση του προβλήματος ως προβλήματος ικανοποίησης περιορισμών, για την εξεύρεσή των λύσεων θα έπρεπε να επιλεχθεί μια από τις καθιερωμένες μεθόδους αναζήτησης για προβλήματα ικανοποίησης περιορισμών, οι οποίες παρουσιάστηκαν αναλυτικά στο δεύτερο κεφάλαιο. Επιλέχθηκε η αναζήτηση με υπαναχώρηση, καθώς θεωρήθηκε ότι ταιριάζει καλύτερα στα χαρακτηριστικά του συγκεκριμένου προβλήματος και επίσης προσφέρει έναν μεγάλο αριθμό βελτιωτικών μηχανισμών οι οποίοι μπορούν να αυξήσουν την αποδοτικότητα της αναζήτησης. Επίσης, η αναζήτηση με υπαναχώρηση είναι η μέθοδος που έχει προτιμηθεί στην πλειοψηφία των αντίστοιχων ξενόγλωσσων εφαρμογών. Τέλος, η γλώσσα προγραμματισμού η οποία αποφασίστηκε να χρησιμοποιηθεί για την συγγραφή του κώδικα ήταν η Java. Η γλώσσα αυτή προτιμήθηκε λόγω της πλούσιας βιβλιοθήκης την οποία παρέχει, καθώς και της ευκολίας την οποία 24

25 προσφέρει στην δημιουργία απλών γραφικών και τρόπων αλληλεπίδρασης με τον χρήστη. Ρόλο έπαιξε, τέλος, και η εξοικείωση του συγγραφέα με την γλώσσα αυτή, καθώς επίσης και με το περιβάλλον ανάπτυξης λογισμικού Eclipse, το οποίο είναι πολύ ισχυρό, παρέχει σημαντικές ευκολίες και δίνει πάρα πολλές δυνατότητες στον χρήστη. Σε ότι αφορά τους τρόπου αναπαράστασης των δεδομένων του προβλήματος και των δομών που θα χρησιμοποιούνταν για αυτό, δεν προαποφασίστηκε κάτι. Όλες οι επιλογές έγιναν κατά την διάρκεια της ανάπτυξης της εφαρμογής με βάση τις ανάγκες που προέκυπταν την εκάστοτε στιγμή. 3.2 Γενική λειτουργία Οι γενικές λειτουργίες τις οποίες επιτελεί η εφαρμογή, χωρίς να γίνεται αναφορά στον τρόπο με τον οποίο τις κάνει, είναι οι εξής: Δίνει την δυνατότητα στον χρήστη να επιλέξει το μέγεθος του πλέγματος του σταυρολέξου καθώς επίσης και την αναλογία των μαυρισμένων κελιών πάνω σε αυτό. Δημιουργεί ένα πλέγμα σύμφωνο με την επιλογή του χρήστη. Δίνει την δυνατότητα στον χρήστη να διαλέξει το λεξικό από το οποίο θα επιλεχθούν οι λέξεις με τις οποίες θα συμπληρωθεί το πλέγμα του σταυρολέξου που μόλις δημιουργήθηκε. Κάνει αναζήτηση με υπαναχώρηση για να βρει λύση για το πλέγμα και το λεξικό τα οποία έχουν επιλεχθεί. Δίνει την δυνατότητα στον χρήστη να επιλέξει την εύρεση πολλαπλών λύσεων για το ίδιο πλέγμα. Δίνει την δυνατότητα στον χρήστη να επιλέξει την δημιουργία άλλου πλέγματος. Ο τρόπος λειτουργίας που μόλις περιγράψαμε στο διάγραμμα ροής του σχήματος Ο αλγόριθμος Σε αυτό το υποκεφάλαιο γίνεται, αρχικά, μια σύνοψη της διάρθρωσης του κώδικα σε επιμέρους κλάσεις, καθώς επίσης και της γενικής λειτουργικότητας του. Έπειτα, εξετάζεται και επεξηγείται διεξοδικά η λειτουργία των επιμέρους κομματιών της εφαρμογής με την χρήση αναλυτικών παραδειγμάτων. Το πρόγραμμα Java αποτελείται από δώδεκα κλάσεις, τα χαρακτηριστικά των οποίων παρουσιάζονται παρακάτω. Γίνεται επίσης αναφορά στις κύριες μεθόδους που περιέχει η κάθε κλάση, καθώς επίσης και στην λειτουργικότητα την οποία οι μέθοδοι αυτές επιτελούν. Κλάση MyMain: Η κλάση αυτή αποτελεί τον κορμό της εφαρμογής. Περιέχει την μέθοδο main, μέσα από την οποία, εκτελείται το πρόγραμμα και καλούνται οι εκείνες οι μέθοδοι των άλλων κλάσεων οι οποίες επιτελούν τις βασικές λειτουργίες της εφαρμογής. 25

26 Σχήμα 3.1: Διάγραμμα ροής γενικής λειτουργίας εφαρμογής. 26

27 Κλάση Crossword: Η κλάση αυτή αποτελεί την πιο σημαντική κλάση της εφαρμογής. Αναπαριστά το σταυρόλεξο και περιέχει τις μεθόδους που δημιουργούν το πλέγμα σταυρολέξου (μέθοδος Crossword), διαβάζουν το πλέγμα και το αξιολογούν (μέθοδος CheckCross), πραγματοποιούν την αναζήτηση με υπαναχώρηση και βρίσκουν τις λέξεις του λεξικού οι οποίες αποτελούν λύση που αντιστοιχεί στο συγκεκριμένο πλέγμα που έχει δημιουργηθεί (μέθοδος Search). Κλάση Cell: Η κλάση αυτή αποτελεί βοηθητική κλάση. Αναπαριστά τα κελιά του πλέγματος και δεν επιτελεί σημαντικές λειτουργίες. Δεν περιέχει κάποια μέθοδο. Κλάση FileReader: Η κλάση αυτή αποτελεί και αυτή βοηθητική κλάση. Η μόνη λειτουργία που επιτελεί είναι το διάβασμα αρχείων λέξεων, οι οποίες λέξεις πρόκειται να χρησιμοποιηθούν για το λεξικό της εφαρμογής (μέθοδος Read). Κλάση Dictionary: Η κλάση αυτή αποτελεί την αναπαράσταση του λεξικού μέσα από το οποίο πρόκειται να επιλεχθούν οι προς εισαγωγή λέξεις. Επιτελεί λειτουργίες ανάγνωσης (μέθοδος Read), ελέγχου του λεξικού με βάση διάφορα κριτήρια και εύρεσης υποψηφίων λέξεων (μέθοδοι Validate και Matching_words). Κλάση Dword: Η κλάση αποτελεί αναπαράσταση των λέξεων οι οποίες βρίσκονται στο λεξικό. Επιτελεί λειτουργίες σύγκρισης (μέθοδοι hashcode και equals), καθώς και αξιολόγησης των λέξεων αυτών (μέθοδος Frequency_value). Κλάση Editor: Η κλάση αυτή αποτελεί τον συνδετικό κρίκο μεταξύ λεξικού και σταυρολέξου. Επιτελεί τις λειτουργίες της εισαγωγής (μέθοδος Insert) και της αφαίρεσης των λέξεων (μέθοδος Remove) του λεξικού από το πλέγμα του σταυρολέξου. Κλάση Word: Μία από τις κύριες κλάσεις της εφαρμογής. Αναπαριστά τις λέξεις όπως φαίνονται από την οπτική γωνία του σταυρολέξου. Επιτελεί λειτουργίες εύρεσης τιμής (μέθοδος regexval), σύγκρισης (μέθοδοι CommonLetter, CommonPosition, CommonCell), αξιολόγησης (μέθοδος Cmeasure) καθώς και ελέγχου της εγκυρότητας (μέθοδοι isready, isvalid) των λέξεων αυτών. Κλάση StItem: Η κλάση αυτή είναι ειδικού σκοπού. Χρησιμοποιείται για την αναπαράσταση και αποθήκευση δεδομένων τα οποία χρειάζονται κατά την διάρκεια της αναζήτησης σε περίπτωση υπαναχώρησης. Δεν περιέχει κάποια μέθοδο. Κλάση UsedWords: Άλλη μια κλάση ειδικού σκοπού. Χρησιμοποιείται για την αναπαράσταση και αποθήκευση των λέξεων του λεξικού που έχουν ήδη χρησιμοποιηθεί για μια συγκεκριμένη αναπαράσταση του πλέγματος σταυρολέξου. Περιέχει την μέθοδο AddWord. Κλάση IO: Η κλάση αυτή επιτελεί τις λειτουργίες εισόδου-εξόδου της εφαρμογής. Περιλαμβάνει μεθόδους για την λήψη δεδομένων (μέθοδοι getinput, Options) και την αποστολή μηνυμάτων προς τον χρήστη (μέθοδος Message). 27

28 Κλάση Gui: Η κλάση αυτή επιτελεί λειτουργίες δημιουργίας γραφικής διεπαφής χρήστη. Είναι υπεύθυνη για την γραφική αναπαράσταση του πλέγματος σταυρολέξου. Κατά την διάρκεια την αναλυτικής παρουσίασης του τρόπου με τον οποίο λειτουργεί η εφαρμογή πρόκειται να γίνουν συνεχείς αναφορές σε ορισμένες έννοιες. Ακολουθεί επεξήγηση των εννοιών αυτών. Πλέγμα σταυρολέξου: Αναφέρεται στην αναπαράσταση του σταυρολέξου από την πλευρά της εφαρμογής. Στην ουσία, αποτελεί έναν δισδιάστατο πίνακα αποτελούμενο από κελιά, δηλαδή στιγμιότυπα της κλάσης Cell. Κάθε ένα από τα κελιά μπορεί να είναι είτε λευκό είτε μαύρο. Ενώ το κάθε λευκό κελί μπορεί να είναι είτε συμπληρωμένο, δηλαδή να αναπαριστά την στιγμή εκείνη κάποιον χαρακτήρα, είτε να είναι κενό, δηλαδή διαθέσιμο προς συμπλήρωση. Η κλάση η οποία αναπαριστά την δομή αυτή είναι η κλάση Crossword. Λέξη λεξικού: Αναφέρεται σε λέξεις όπως τις βλέπουμε από την οπτική γωνία του λεξικού, δηλαδή ως ακολουθίες χαρακτήρων. Τα χαρακτηριστικά γνωρίσματα μιας λέξη λεξικού είναι η τιμή της, δηλαδή η ακολουθία των χαρακτήρων από τους οποίους αποτελείται, και το μήκος της, δηλαδή ο αριθμός των χαρακτήρων από τους οποίους αποτελείται. Ανάλογα με τους χαρακτήρες από τους οποίους αποτελείται μια λέξη λεξικού αξιολογείται ως προς το πόσο επιθυμητή είναι η τιμή της. Η κλάση η οποία αναπαριστά την δομή αυτή είναι η κλάση Dword. Λέξη σταυρολέξου: Αναφέρεται σε λέξεις όπως τις βλέπουμε από την οπτική γωνία του σταυρολέξου. Μια λέξη σταυρολέξου είναι στην ουσία μια οριζόντια η κάθετη ακολουθία λευκών κελιών στο πλέγμα η οποία διακόπτεται είτε από κάποιο μαύρο κελί είτε από τα όρια του πλέγματος. Τα χαρακτηριστικά γνωρίσματα μιας λέξης σταυρολέξου είναι το κελί από το οποίο ξεκινά, το κελί στο οποίο τελειώνει και το μήκος της, δηλαδή τον πλήθος των λευκών κελιών από τα οποία αποτελείται. Η κλάση η οποία αναπαριστά την δομή αυτή είναι η κλάση Word. Πρότυπο λέξης: Αναφέρεται στην απεικόνιση μιας λέξης σταυρολέξου σε μορφή αναγνωρίσιμη από το λεξικό, δηλαδή σε μορφή λέξης λεξικού. Στην ουσία, πρόκειται για μια κανονική έκφραση η οποία αντιστοιχίζει τα κελιά της λέξης σταυρολέξου σε χαρακτήρες. Ένα ήδη συμπληρωμένο κελί αντιστοιχίζεται στον χαρακτήρα που περιέχει, ενώ ένα μη συμπληρωμένο κελί αντιστοιχίζεται στην έκφραση '.', δηλαδή μπορεί να περιέχει οποιοδήποτε χαρακτήρα Δημιουργία πλέγματος Η πρώτη λειτουργία που καλείται να εκτελέσει η εφαρμογή είναι η δημιουργία του πλέγματος σταυρολέξου για το οποίο πρόκειται να αναζητηθούν οι λύσεις. Οι διαστάσεις του πλέγματος καθορίζονται από τον χρήστη μέσω μιας απλής φόρμας επικοινωνίας. Αμέσως μετά καλείται ο δημιουργός (constructor) της κλάσης Crossword. Όπως αναφέρθηκε και προηγουμένως, το σταυρόλεξο αναπαρίσταται ως ένας πίνακας κελιών δύο διαστάσεων. Για τον καθορισμό του πλήθους και της θέσης των μαύρων κελιών στο πλέγμα σταυρολέξου ακολουθούνται, κατά κύριο λόγο, οι γενικοί κανόνες 28

29 σχετικά με την μορφολογία του πλέγματος των σταυρολέξων, οι οποίοι αναφέρθηκαν στο δεύτερο κεφάλαιο. Πιο συγκεκριμένα, σε ότι αφορά το πλήθος των μαύρων κελιών, η προεπιλογή είναι να ακολουθείται το αμερικανικό πρότυπο, δηλαδή ο αριθμός των μαύρων κελιών αντιστοιχεί περίπου στο 1/6 των συνολικών κελιών του πλέγματος, υπάρχει όμως και η δυνατότητα δημιουργίας ενός λιγότερο περιοριστικού πλέγματος όπου τα μαύρα κελιά αντιστοιχούν στα 2/6 των συνολικών κελιών. Η θέση των μαύρων κελιών καθορίζεται με τυχαίο τρόπο μέσω μιας ψευδοτυχαίας γεννήτριας (αντικείμενο της κλάσης Random της βιβλιοθήκης της Java), όμως όταν ένα κελί επιλεχθεί ως μαύρο, τότε επιλέγεται αυτόματα και το συμμετρικό αυτού κελί ως μαύρο. Για αυτό το λόγο, το πλήθος των μαύρων κελιών θα είναι, προφανώς, πάντοτε άρτιος αριθμός. Παρόλο που μέχρι τώρα κατά την δημιουργία του πλέγματος σταυρολέξου ακολουθήθηκε το αμερικανικό πρότυπο σε ότι αφορά την δομή του πλέγματος, η υλοποίηση μας σε ένα σημείο παρεκκλίνει από αυτό. Πιο συγκεκριμένα, δεν υπάρχει περιορισμός και δεν γίνεται κανένας έλεγχος σε ότι αφορά το ελάχιστο μήκος μιας λέξης σταυρολέξου, το οποίο και δεν καθορίζεται. Ακόμα και ένα λευκό κελί που περιβάλλεται από μαύρα κελιά, είτε οριζοντίως είτε καθέτως, θεωρείται ως μία λέξη μήκους ένα. Η μέθοδος της δημιουργίας πλέγματος με τυχαίο τρόπο έχει το πλεονέκτημα ότι μας δίνει την δυνατότητα να δοκιμάσουμε πολλά σταυρόλεξα, από την άλλη όμως υπάρχει ο κίνδυνος να δημιουργηθεί κάποιο πολύ δύσκολο ή και μη επιλύσιμο πλέγμα Αξιολόγηση πλέγματος Αφού δημιουργηθεί το πλέγμα σταυρολέξου πάνω στο οποίο θα γίνει η αναζήτηση, το επόμενο βήμα είναι η αξιολόγηση του. Με τον όρο αξιολόγηση, εννοούμε τον καθορισμό των λέξεων σταυρολέξου από τις οποίες αποτελείται το πλέγμα, οι οποίες και πρόκειται να αποτελέσουν τις μεταβλητές του προβλήματος μας. Την λειτουργία αυτή επιτελεί η μέθοδος CheckCross της κλάσης Crossword. Η μέθοδος αυτή σαρώνει το πλέγμα οριζοντίως και καθέτως, αναζητώντας ακολουθίες συνεχόμενων λευκών κελιών. Κάθε τέτοιου είδους ακολουθία θεωρείται ως μια λέξη σταυρολέξου. Για κάθε λέξη σταυρολέξου καλείται ο δημιουργός της κλάσης Word μέσω του οποίου και αποθηκεύεται το κελί αρχής, το κελί τέλους καθώς και το μήκος της λέξης αυτής. Αποθηκεύεται, επίσης, και ο συνολικός αριθμός των λέξεων σταυρολέξου από τις οποίες αποτελείται το πλέγμα του σταυρολέξου. Επειδή ο αριθμός των λέξεων σταυρολέξου είναι διαφορετικός για κάθε πλέγμα για την αποθήκευση αυτών επιλέχθηκε μια δομή δεδομένων τύπου vector (διάνυσμα). Σε ότι αφορά την βιβλιοθήκη της Java, η κλάση vector υλοποιεί έναν μεταβλητού μεγέθους πίνακα από Objects (αντικείμενα). Όπως και στους πίνακες κάθε στοιχείο μπορεί να ανακτηθεί μέσω ενός ακεραίου δείκτη, ο οποίος καθορίζει την θέση του αντικειμένου ως προς την αρχή του vector. Σε αντίθεση με τους απλούς πίνακες όμως, το μέγεθος ενός vector μπορεί να αυξηθεί και να μειωθεί, ακόμα και μετά την δημιουργία του, δίνοντας έτσι την δυνατότητα της προσθήκης και αφαίρεσης στοιχείων Αναζήτηση με υπαναχώρηση Μετά την αξιολόγηση του πλέγματος το μόνο που απομένει είναι να βρεθεί μια λύση για το συγκεκριμένο στιγμιότυπο του προβλήματος. Όπως έχει αναφερθεί η μέθοδος που χρησιμοποιείται για αυτό είναι η αυτή της αναζήτησης με υπαναχώρηση για προβλήματα ικανοποίησης περιορισμών. 29

30 Για να γίνει καλύτερα κατανοητός ο τρόπος με τον οποίο λειτουργεί ο αλγόριθμος θα χρησιμοποιηθεί ένα σταυρόλεξο-παράδειγμα στο οποίο θα γίνονται αναφορές όποτε αυτό κρίνεται σκόπιμο. Η μέθοδος η οποία επιτελεί τις σχετικές με την αναζήτηση λειτουργίες, είναι η μέθοδος Search της κλάσης Crossword. Η μέθοδος αυτή είναι και η πιο σημαντική μέθοδος της εφαρμογής Προτεραιότητα μεταβλητών Όπως σε κάθε πρόβλημα ικανοποίησης περιορισμών η σειρά με την οποία επιλέγονται οι προς συμπλήρωση μεταβλητές από την αναζήτηση με υπαναχώρηση παίζει πολύ σημαντικό ρόλο στην απόδοση της αναζήτησης. Σχήμα 3.2: Το πλέγμα που πρόκειται να χρησιμοποιηθεί για το σταυρόλεξοπαράδειγμα. Ο αλγόριθμος κάνει την επιλογή της επόμενης προς συμπλήρωση λέξης σταυρολέξου βασιζόμενος σε ένα μέτρο επιλεξιμότητας το οποίο έχουμε καθορίσει. Ο τρόπος με τον οποίο υπολογίζεται το μέτρο αυτό αποτελεί έναν συνδυασμό του ευρετικού μηχανισμού των ελαχίστων απομενουσών τιμών και του ευρετικού μηχανισμού βαθμού. Οι μηχανισμοί αυτοί αποτελούν κλασσικά κομμάτια μιας αναζήτησης με υπαναχώρηση και η λογική πάνω στην οποία βασίζονται έχει εξηγηθεί στο δεύτερο κεφάλαιο. Κάθε φορά που χρειάζεται να επιλεγεί η επόμενη προς συμπλήρωση λέξη σταυρολέξου, ο αλγόριθμος διαβάζει το διάνυσμα που περιέχει όλες τις λέξεις σταυρολέξου του συγκεκριμένου πλέγματος σταυρολέξου και όταν συναντά κάποια μη συμπληρωμένη λέξη σταυρολέξου καλεί την μέθοδο Cmeasure της κλάσης Word. Η μέθοδος αυτή επιστρέφει έναν δεκαδικό αριθμό, η τιμή του οποίου προκύπτει ως συνάρτηση του αριθμού των υποψηφίων λέξεων λεξικού για την συγκεκριμένη λέξη σταυρολέξου (ευρετικός μηχανισμός ελαχίστων απομενουσών τιμών) και του μεγέθους της λέξης σταυρολέξου (ευρετικός μηχανισμός βαθμού). Πιο αναλυτικά αν θεωρήσουμε ότι: w είναι μια μη συμπληρωμένη λέξη σταυρολέξου C(w) είναι το μέτρο επιλεξιμότητας της λέξης σταυρολέξου w. N(w) είναι το πλήθος των υποψηφίων λέξεων λεξικού την λέξη σταυρολέξου w. 30

31 L(w) είναι το μήκος της λέξης λεξικού w. Τότε η μαθηματική σχέση από την οποία προκύπτει το μέτρο επιλεξιμότητας θα είναι: C (w)=1, αν N (w)=1 C (w)=1+ N (w), αν N (w) 1 2 L (w) Η μαθηματική αυτή σχέση είναι αντίστοιχη αυτής που χρησιμοποιείται από τον Adi Botea [1][3]. Η λέξη σταυρολέξου την οποία θα επιλέξει ο αλγόριθμος προς συμπλήρωση θα είναι αυτή με το μικρότερο μέτρο επιλεξιμότητας C(w). Ας υποθέσουμε ότι στο πλέγμα σταυρόλεξου του παραδείγματος μας έχουν εισαχθεί οι λέξεις λεξικού ΑΥΤΙΑ και ΑΠΛΩΝ, δηλαδή είναι στην κατάσταση που φαίνεται στο σχήμα 3.3 (σημείωση: σε αυτό αλλά και σε όσα παραδείγματα πρόκειται να ακολουθήσουν, δεν εξετάζεται το πως έχει προκύψει η συγκεκριμένη κατάσταση του πλέγματος, εξετάζεται μόνο το πως επιδρά κάποιος από τους μηχανισμούς της εφαρμογής στην κατάσταση αυτή). Ας υποθέσουμε, επίσης, ότι το λεξικό εκτός από τις δύο ήδη συμπληρωμένες λέξεις περιέχει και τις παρακάτω: ΑΔΕΙΑ, ΑΕΡΑΣ, ΑΚΡΟΥ, ΑΝΤΙΟ, ΑΥΛΗΣ, ΑΥΤΟΣ, ΑΧΝΟΣ, ΛΑΒΑΣ, ΛΑΒΡΑ, ΛΑΙΚΟ, ΛΕΓΕΙ, ΛΕΚΚΕ, ΛΕΞΗΣ, ΛΙΓΟΣ, ΛΙΤΤΟ, ΛΙΩΝΩ, ΛΥΝΕΙ, ΝΑΞΟΣ, ΝΑΝΟΣ, ΝΑΟΥΣ, ΝΑΥΤΗ, ΝΕΟΥΣ, ΝΕΠΑΛ, ΝΙΟΤΗ, ΝΙΩΘΩ, ΝΟΝΟΣ, ΝΟΤΟΣ, ΝΥΧΙΑ, ΤΑΒΛΙ, ΤΑΣΤΟ, ΤΑΧΥΣ, ΤΕΚΚΕ, ΤΕΜΝΩ, ΤΗΝΟΣ, ΤΙΜΑΩ, ΤΙΜΙΟ, ΤΟΜΟΣ, ΤΟΠΟΣ, ΤΡΑΥΜΑ, ΤΡΕΜΩ, ΤΡΕΝΟ, ΤΡΕΧΩ, ΤΣΙΤΑ, καθώς επίσης και όλα τα γράμματα του ελληνικού αλφαβήτου. Α Υ Τ Ι Α Π Λ Ω Ν Σχήμα 3.3: Αρχική κατάσταση σταυρολέξου παραδείγματος. Για τον χαρακτηρισμό των λέξεων ως προς την θέση τους πάνω στο πλέγμα του σταυρολέξου θα χρησιμοποιηθεί η εξής σημειολογία. Ως δείκτης για το αν μια λέξη βρίσκεται οριζόντια ή κάθετη θέση, χρησιμοποιούμε είτε το γράμμα Ο (για οριζόντιες) είτε το γράμμα Κ (για κάθετες). Ένας ακέραιος αριθμός ν χρησιμοποιείται ως δείκτης για την ν-οστή λέξη είτε οριζόντια είτε κάθετα. Οι οριζόντιες λέξεις μετριούνται από 31

32 πάνω προς τα κάτω και οι οριζόντιες από αριστερά προς δεξιά. Στο παράδειγμα μας είναι ήδη συμπληρωμένες οι οριζόντιες λέξεις Ο1, Ο2, Ο6 και οι κάθετες λέξεις Κ1, Κ2, Κ6 ενώ υπάρχουν έξι ασυμπλήρωτες οριζόντιες λέξεις και έξι ασυμπλήρωτες κάθετες λέξεις. Υπενθυμίζεται ότι και ένα ανεξάρτητο κελί θεωρείται ως λέξη, όπως για παράδειγμα η λέξη Ο2. Οι υποψήφιες τιμές για κάθε λέξη σταυρολέξου είναι: Μεταβλητή Πεδίο τιμών Ο3 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Ο4 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Ο5 ΛΑΒΑΣ, ΛΑΒΡΑ, ΛΑΙΚΟ, ΛΕΓΕΙ, ΛΕΚΚΕ, ΛΕΞΗΣ, ΛΙΓΟΣ, ΛΙΤΤΟ, ΛΙΩΝΩ, ΛΥΝΕΙ Ο7 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Ο8 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Ο9 ΝΑΞΟΣ, ΝΑΝΟΣ, ΝΑΟΥΣ, ΝΑΥΤΗ, ΝΕΟΥΣ, ΝΕΠΑΛ, ΝΙΟΤΗ, ΝΙΩΘΩ, ΝΟΝΟΣ, ΝΟΤΟΣ, ΝΥΧΙΑ Κ3 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Κ4 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Κ5 ΤΑΒΛΙ, ΤΑΣΤΟ, ΤΑΧΥΣ, ΤΕΚΚΕ, ΤΕΜΝΩ, ΤΗΝΟΣ, ΤΙΜΑΩ, ΤΙΜΙΟ, ΤΟΜΟΣ, ΤΟΠΟΣ, ΤΡΑΥΜΑ, ΤΡΕΜΩ, ΤΡΕΝΟ, ΤΡΕΧΩ, ΤΣΙΤΑ Κ7 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Κ8 Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω Κ9 ΑΔΕΙΑ, ΑΕΡΑΣ, ΑΚΡΟΥ, ΑΝΤΙΟ, ΑΥΛΗΣ, ΑΥΤΟΣ, ΑΧΝΟΣ Πινάκας με την αντιστοιχία λέξεων σταυρολέξου και υποψηφίων λέξεων λεξικού για το παράδειγμα μας. Με βάση τα παραπάνω τα μέτρα επιλεξιμότητας για τις λέξεις σταυρολέξου του πλέγματος του παραδείγματος μας όπως υπολογίζονται από την μέθοδο Cmeasure θα είναι: Λέξη Ο3: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. Λέξη Ο4: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. 32

33 Λέξη Ο5: έχει πλήθος υποψήφιων λέξεων N(w)=10 μήκος L(w)=5, άρα μετρό επιλεξιμότητας C(w)=1,4. Λέξη Ο7: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. Λέξη Ο8: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. Λέξη Ο9: έχει πλήθος υποψήφιων λέξεων N(w)=11, μήκος L(w)=5, άρα μετρό επιλεξιμότητας C(w)=1,44. Λέξη Κ3: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. Λέξη Κ4: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. Λέξη Κ5: έχει πλήθος υποψήφιων λέξεων N(w)=15, μήκος L(w)=5, άρα μετρό επιλεξιμότητας C(w)=1,6. Λέξη Κ7: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. Λέξη Κ8: έχει πλήθος υποψήφιων λέξεων N(w)=24, μήκος L(w)=1, άρα μετρό επιλεξιμότητας C(w)=25. Λέξη Κ9: έχει πλήθος υποψήφιων λέξεων N(w)=7, μήκος L(w)=5, άρα μετρό επιλεξιμότητας C(w)=1,28. Άρα η επόμενη λέξη σταυρολέξου που πρόκειται να συμπληρωθεί από τον αλγόριθμο θα είναι η Κ9 και οι υποψήφιες προς συμπλήρωση λέξεις λεξικού θα είναι: ΑΔΕΙΑ, ΑΕΡΑΣ, ΑΚΡΟΥ, ΑΝΤΙΟ, ΑΥΛΗΣ, ΑΥΤΟΣ, ΑΧΝΟΣ Επιλογή τιμής Αφού αποφασιστεί ποια θα είναι η επόμενη προς συμπλήρωση λέξη σταυρολέξου, πρέπει να δούμε με τι κριτήριο επιλέγεται ποια από τις υποψήφιες λέξεις λεξικού θα δοκιμαστεί πρώτη. Όπως και η σειρά με την οποία επιλέγονται οι μεταβλητές έτσι και η σειρά με την οποία εξετάζεται το πεδίο τιμών μπορεί να επηρεάσει σημαντικά την απόδοση της αναζήτησης. Ο πιο συχνά εφαρμοζόμενος ευρετικός μηχανισμός, σε τέτοιες περιπτώσεις προβλημάτων ικανοποίησης περιορισμών, είναι αυτός της λιγότερο δεσμευτικής τιμής. Στην περίπτωση της εφαρμογής μας, για την υλοποίηση του μηχανισμού αυτού αποφασίστηκε να εξετάζονται τα συστατικά στοιχεία των λέξεων λεξικού δηλαδή τα γράμματά τα οποία τις αποτελούν. Αρχικά όμως, θα πρέπει να βρεθεί ποίες ακριβώς είναι οι υποψήφιες λέξεις λεξικού. Το πρώτο βήμα προς αυτή την κατεύθυνση είναι η δημιουργία ενός πρότυπου λέξης που να περιγράφει την μορφή της λέξης σταυρολέξου την στιγμή που επιλέγεται για συμπλήρωση. Η μέθοδος μέσω της οποίας επιτελείται η λειτουργία αυτή είναι η regexval της κλάσης Word, η οποία ελέγχει ένα προς ένα τα κελιά της λέξης σταυρολέξου ως προς το περιεχόμενο τους και δημιουργεί το αντίστοιχο πρότυπο 33

34 λέξης με βάση το οποίο θα γίνει και η αναζήτηση των υποψηφίων τιμών. Για παράδειγμα η λέξη Κ9 του παραδείγματος την στιγμή που επιλέγεται αντιστοιχεί στο πρότυπο λέξης Α.... Έπειτα καλείται η μέθοδος Read της κλάσης Dictionary η οποία αναλαμβάνει να βρει όλες τις λέξεις του λεξικού που αντιστοιχούν στο πρότυπο λέξης που μόλις δημιουργήθηκε και δεν έχουν χρησιμοποιηθεί σε κάποια άλλη λέξη σταυρολέξου. Κάθε μια τέτοια λέξη που βρίσκει η μέθοδος την αποθηκεύει σε ένα διάνυσμα. Αφού βρεθούν όλες οι υποψήφιες λέξεις ο αλγόριθμος είναι έτοιμος να επιλέξει ποια από αυτές θα δοκιμαστεί πρώτη. Σχήμα 3.3: Συχνότητα εμφάνισης γραμμάτων όπως προκύπτει από την έρευνα του Χ. Τζήμα Για την υλοποίηση του ευρετικού μηχανισμού, ως βάση χρησιμοποιήθηκαν ορισμένα από τα αποτελέσματα μιας έρευνας που δημοσιεύθηκε τον Ιανουάριο του 2008 από τον Χρήστο Τζήμα [11]. Η έρευνα αυτή αφορούσε ένα άλλο παιχνίδι λέξεων το Scrabble (Σκραμπλ). Πιο συγκεκριμένα, εξετάστηκε αν η κατανομή των γραμμάτων και η αριθμητική τους αξία στο παιχνίδι ήταν ανάλογη με την συχνότητα εμφάνισης 34

35 τους στην ελληνική γλώσσα. Για να καταλήξει στα συμπεράσματα του ο συγγραφέας εξέτασε την συχνότητα εμφάνισης του κάθε γράμματος στα λήμματα τριών λεξικών (Σχήμα 3.3). Γράμμα Αξία Α 10 Β 4 Γ 4 Δ 4 Ε 8 Ζ 1 Η 4 Θ 4 Ι 10 Κ 8 Λ 4 Μ 4 Ν 8 Ξ 1 Ο 10 Π 4 Ρ 8 Σ 10 Τ 8 Υ 8 Φ 4 Χ 4 Ψ 1 Ω 4 Πινάκας αντιστοίχισης γραμμάτων σε τιμές με βάση την συχνότητα εμφάνισης τους. Ο ευρετικός μηχανισμός που θέλουμε να υλοποιήσουμε προσπαθεί να βρει την τιμή μιας μεταβλητής που αποκλείει τις λιγότερες τιμές για τις μεταβλητές με τις οποίες συνδέεται με κάποιον περιορισμό. Η παραδοχή που έγινε και με βάση την οποία υλοποιήθηκε ο μηχανισμός είναι ότι όσο πιο συχνά εμφανίζεται ένα γράμμα στην ελληνική γλώσσα τόσο πιο πιθανό είναι να υπάρχουν λέξεις που να το περιέχουν. Έτσι από τον αλγόριθμο επιλέγεται πάντα η λέξη που αποτελείται από τα πιο συχνά εμφανιζόμενα γράμματα. Την λειτουργία της αξιολόγησης της κάθε λέξης επιτελεί η μέθοδος Frequency_value της κλάσης Dword. Η συχνοτική αξία κάθε λέξης προκύπτει με βάση έναν πίνακα 35

36 αντιστοίχησης γραμμάτων με αξία. Σε ότι αφορά τον τρόπο με τον οποίο έγινε η αντιστοίχιση αυτή τα γράμματα χωρίστηκαν σε 4 κατηγορίες με βάση την συχνότητα εμφάνισης τους. Ο λόγος που επιλέχθηκε αυτός ο γενικός διαχωρισμός είναι γιατί μπορεί μεν η συχνότητα ενός γράμματος να είναι ενδεικτικό μέτρο, από την άλλη όμως στην ελληνική γλώσσα ορισμένα γράμματα, παρόλο που συναντώνται αρκετά συχνά, εμφανίζονται κυρίως σε συγκεκριμένα σημεία των λέξεων. Για παράδειγμα, το γράμμα Τ, παρόλο που έχει συχνότητα εμφάνισης 6%, σπάνια θα το συναντήσει κανείς ως τελευταίο γράμμα μιας λέξης. Για να εξηγηθεί καλύτερα η λειτουργία αυτού του ευρετικού μηχανισμού, επιστρέφουμε στο παράδειγμα που χρησιμοποιήσαμε στο προηγούμενο υποκεφάλαιο. Η λέξη σταυρολέξου που έχει επιλεγεί προς συμπλήρωση είναι η Κ9. Η γενική μορφή του δένδρου αναζήτησης με τις διάδοχες καταστάσεις φαίνεται στο σχήμα 3.4. Α Υ Τ Ι Α Π Λ Ω Ν Α Υ Τ Ι Α Α Υ Τ Ι Α Α Υ Τ Ι Α Π Δ Π Ε Π Χ Λ Ε Λ Ρ... Λ Ν Ω Ι Ω Α Ω Ο Ν Α Ν Σ Ν Σ Σχήμα 3.4: Γενική μορφή δένδρου αναζήτησης για το σταυρόλεξο του παραδείγματος. Με βάση την μέθοδο Frequency_value οι συχνοτικές αξίες των υποψηφίων λέξεων λεξικού θα είναι: ΑΔΕΙΑ:42 ΑΕΡΑΣ:46 36

37 ΑΚΡΟΥ:44 ΑΝΤΙΟ:46 ΑΥΛΗΣ:36 ΑΥΤΟΣ:46 ΑΧΝΟΣ:42 Η λέξη λεξικού η οποία τελικά επιλέγεται προς εισαγωγή θα είναι με βάση τις αξίες η λέξη ΑΕΡΑΣ. Για να γίνει η εισαγωγή της λέξης στο πλέγμα καλείται η μέθοδος Insert της κλάσης Editor. Η μέθοδος αυτή εισάγει το κάθε γράμμα της λέξης λεξικού στο αντίστοιχο κελί της λέξης σταυρολέξου. Η μορφή την οποία λαμβάνει το πλέγμα του σταυρολέξου μετά από τις παραπάνω διαδικασίες είναι αυτή του σχήματος 3.5. Α Υ Τ Ι Α Π Ε Λ Ρ Ω Α Ν Σ Σχήμα 3.5: Κατάσταση σταυρολέξου παραδείγματος μετά από την επιλογή της λιγότερο δεσμευτικής τιμής Πρώιμος έλεγχος Αφού επιλεχθεί η λέξη λεξικού που θα συμπληρωθεί στο σταυρόλεξο, ο αλγόριθμος δεν προχωρά κατευθείαν στην επιλογή της επόμενης προς συμπλήρωση λέξεις σταυρολέξου. Το βήμα που ακολουθεί είναι ο πρώιμος έλεγχος για την εύρεση τυχόν συγκρούσεων και την αποφυγή μελλοντικής επανάληψης των ίδιων λαθών από τον αλγόριθμο. Ο αλγόριθμος ελέγχει μία προς μία τις λέξεις σταυρολέξου ως προς την εγκυρότητα τους. Ο τρόπος με τον οποίο γίνεται αυτό είναι μέσω της μεθόδου isvalid της κλάσης Word. Η μέθοδος αυτή αρχικά δημιουργεί το πρότυπο λέξης που αντιστοιχεί στην συγκεκριμένη λέξη σταυρολέξου με χρήση της μεθόδου regexval της ίδιας κλάσης. Έπειτα, καλείται η μέθοδος Validate της κλάσης Dictionary, η οποία σαρώνει το λεξικό ψάχνοντας να βρει μια λέξη που να αντιστοιχεί στο συγκεκριμένο πρότυπο λέξης (μια λέξη αρκεί για να θεωρηθεί το πρότυπο λέξης έγκυρο, οπότε η μέθοδος σταματά εκεί 37

38 την σάρωση του λεξικού και δεν ψάχνει για άλλες, κερδίζοντας έτσι πολύτιμο χρόνο για την αναζήτηση). Αν το πρότυπο λέξης βρεθεί πως είναι έγκυρο, δηλαδή δεν υπάρχουν συγκρούσεις η μέθοδος επιστρέφει επιτυχία, σε αντίθετη περίπτωση επιστρέφεται αποτυχία. Στην περίπτωση που από τον έλεγχο διαπιστωθεί πως η ανάθεση τιμών είναι συνεπής ο αλγόριθμος δημιουργεί ένα αντικείμενο τύπου StItem το οποίο αντιστοιχεί σε ένα ζεύγος λέξης σταυρολέξου και πρότυπου λέξης. Η λέξη σταυρολέξου του ζεύγους αντιστοιχεί στην λέξη στην οποία ανατέθηκε τιμή ενώ το πρότυπο λέξης στο πρότυπο με βάση το οποίο επιλέχθηκε η τιμή που συμπληρώθηκε. Έπειτα το αντικείμενο τύπου StItem αποθηκεύεται σε μια δομή δεδομένου τύπου στοίβας (στην επιστήμη των υπολογιστών η στοίβα είναι μια δομή δεδομένων τύπου last in, first out), για να είναι εύκολη η ανάκτηση του σε περίπτωση που μελλοντικά υπάρξει υπαναχώρηση στο σημείο αυτό. Επίσης, η τιμή της λέξης λεξικού η οποία επιλέχθηκε αποθηκεύεται ούτως ώστε να μην ξαναχρησιμοποιηθεί για κάποια άλλη λέξη σταυρολέξου. Στην περίπτωση του παραδείγματος μας, οι τιμές των αντικειμένων του ζεύγους θα ήταν η λέξη σταυρολέξου Κ9 με τα χαρακτηριστικά γνωρίσματα της(κελί αρχής κελί τέλους, μήκος) και το πρότυπο λέξης Α... με βάση το οποίο επιλέχθηκε η τιμή ΑΕΡΑΣ από τις υποψήφιες λέξεις λεξικού (στην πραγματικότητα η ανάθεση τιμών που έγινε δεν είναι συνεπής, οπότε οι ενέργειες αυτές δεν θα γίνουν ποτέ στο παράδειγμα μας). Αν, από την άλλη, διαπιστωθεί ότι η ανάθεση τιμών δεν είναι συνεπής, τότε ο αλγόριθμος προχωρά σε μια σειρά ενεργειών οι οποίες διασφαλίζουν την άρση της ασυνέπειας καθώς και την μη επανεμφάνιση της. Αρχικά, μέσω της μεθόδου CommonPosition της κλάσης Word, γίνεται έλεγχος για να διαπιστωθεί ποια είναι η θέση του κοινού κελιού της λέξης σταυρολέξου στην οποία ανατέθηκε τιμή και της λέξης σταυρολέξου στην οποία εμφανίστηκε το μη έγκυρο πρότυπο λέξης. Έπειτα βρίσκεται το γράμμα το οποίο έχει εισαχθεί στο κελί αυτό με χρήση της μεθόδου CommonLetter της κλάσης Word. Αφού ο αλγόριθμος έχει πλέον στην διάθεση του το γράμμα το οποίο έφερε την ασυνέπεια, καθώς και στην θέση του στην λέξη σταυρολέξου στην οποία ανατέθηκε τιμή, ανακτά το πρότυπο λέξης με βάση το οποίο επιλέχθηκε η λέξη λεξικού και το τροποποιεί ούτως ώστε στην συγκεκριμένη θέση να αποκλείεται η εμφάνιση του συγκεκριμένου γράμματος. Έπειτα, ανακτά μέσω της μεθόδου Read της κλάσης Dictionary όσες λέξεις αντιστοιχούν στο τροποποιημένο πρότυπο και αφαιρεί από τις υποψήφιες λέξεις λεξικού για το συγκεκριμένο επίπεδο όσες δεν είναι ανάμεσα σε αυτές. Με τον τρόπο αυτό αποφεύγεται η άσκοπη εξέταση υποψηφίων λέξεων λεξικού και κλαδεύεται το δέντρο της αναζήτησης. Επιτυγχάνουμε, δηλαδή, σημαντική μείωση στον παράγοντα διακλάδωσης του δέντρου και κατά συνέπεια και στον χρόνο της αναζήτησης. Η παραπάνω διαδικασία επαναλαμβάνεται για όλα τα γράμματα που έφεραν κάποια ασυνέπεια. Όταν ολοκληρωθούν οι επαναλήψεις, αφαιρούνται από το πλέγμα με βάση το αντίστοιχο πρότυπο λέξης όσα γράμματα εισήχθησαν κατά την ασυνεπή ανάθεση και γίνεται αναζήτηση της επόμενης τιμής με βάση το νέο μειωμένο πεδίο τιμών. 38

39 Στο παράδειγμα μας, παρατηρούμε, ότι εμφανίζεται το πρότυπο λέξης Λ...Ρ, το οποίο αντιστοιχεί στην λέξη σταυρολέξου Ο4. Το πρότυπο αυτό είναι εύκολο να διαπιστώσουμε ότι δεν αντιστοιχεί σε κάποια από τις λέξεις που περιέχονται στο λεξικό μας. Οπότε, με βάση τους κανόνες που αναφέρθηκαν στο δεύτερο κεφάλαιο ο αλγόριθμος θα δημιουργήσει το τροποποιημένο πρότυπο λέξης Α.^Ρ... Με βάση αυτό θα διατηρηθούν ως υποψήφιες όσες από τις λέξεις του πεδίου τιμών δεν έχουν το Ρ ως τρίτο γράμμα. Στην περίπτωση μας αφαιρείται από το πεδίο τιμών η λέξη ΑΚΡΟΥ και ως συνέπεια έχουμε μείωση του παράγοντα διακλάδωσης του δένδρου αναζήτησης κατά ένα. Αν είχαμε στην διάθεση μας κάποιο μεγαλύτερο λεξικό, τότε η μείωση του παράγοντα διακλάδωσης, θα ήταν κατά πάσα πιθανότητα αρκετά μεγαλύτερη Υπαναχώρηση Το στάδιο του πρώιμου ελέγχου μας διασφαλίζει ότι δεν πρόκειται να εξεταστούν άσκοπα κάποιες καταστάσεις και ότι θα βρεθεί μια συνεπής ανάθεση για το υπάρχων βάθος αναζήτησης όσο το δυνατόν πιο γρήγορα. Πολλές φορές, όμως, συμβαίνει καμία από τις υποψήφιες λέξεις λεξικού να μην αντιστοιχεί σε μια συνεπή ανάθεση. Στην περίπτωση αυτή η αναζήτηση θα πρέπει να υπαναχωρήσει σε προηγούμενο βάθος του δένδρου αναζήτησης, να αναιρέσει κάποια προηγούμενη ανάθεση τιμής σε λέξη σταυρολέξου και για την λέξη σταυρολέξου αυτή να εξετάσει μια άλλη λέξη λεξικού από το πεδίο τιμών της. Η διαδικασία αυτή γίνεται με τον παρακάτω τρόπο. Αρχικά ανακτάται από την στοίβα ένα αντικείμενο τύπου StItem το οποίο αντιστοιχεί σε ένα ζεύγος λέξης σταυρολέξου και πρότυπου λέξης. Έπειτα αφαιρούνται από το πλέγμα όσα γράμματα της ανακτημένης λέξης σταυρολέξου εισήχθησαν με βάση το αντίστοιχο πρότυπο λέξης. Παράλληλα γίνεται έλεγχος για το αν η λέξη σταυρολέξου για την οποία δεν βρέθηκε συνεπής τιμή έχει κοινό κελί με την ανακτημένη λέξη σταυρολέξου (μέθοδος CommonCell). Αν δεν έχουν κοινό κελί, γίνεται υπαναχώρηση σε ακόμα υψηλότερο επίπεδο του δένδρου μέχρι να βρεθεί λέξη η οποία να τέμνεται με τη λέξη σταυρολέξου για την οποία δεν βρέθηκε συνεπής τιμή. Δηλαδή, στην ουσία, εφαρμόζεται η μέθοδος της υπαναχώρησης με άλμα κατευθυνόμενο από την σύγκρουση η οποία αναφέρθηκε στο δεύτερο κεφάλαιο. Α Υ Τ Ι Α Π Ε Λ Ρ Ω Α Ν Σ Σχήμα 3.6: Εμφάνιση μη συνεπούς τιμής στο σταυρόλεξο του παραδείγματος μας. Όταν πια η υπαναχώρηση φτάσει στο αίτιο της σύγκρουσης, γίνεται μια διαδικασία αποφυγής επανάληψης του ίδιου λάθους ανάλογη με αυτή που γίνεται στο στάδιο του 39

40 πρώιμου ελέγχου. Δηλαδή αποκλείονται από τις υποψήφιες λέξεις, όσες λέξεις λεξικού περιέχουν το γράμμα που έφερε την σύγκρουση στην θέση που αντιστοιχεί στο κελί της λέξης σταυρολέξου στην οποία έχει φτάσει η υπαναχώρηση, μειώνοντας ξανά τον παράγοντα διακλάδωσης. Σε περίπτωση που δεν υπάρχει δυνατότητα για περαιτέρω υπαναχώρηση, δηλαδή, έχουμε φτάσει στο σημείο που έχουν δοκιμαστεί όλες οι πιθανές αναθέσεις τιμών, τότε ο αλγόριθμος επιστρέφει αποτυχία και το συγκεκριμένο πλέγμα σταυρολέξου θεωρείται μη επιλύσιμο. Ας υποθέσουμε ότι το πλέγμα του σταυρολέξου είναι στην κατάσταση του σχήματος 3.7. Τα βήματα που θα ακολουθήσει ο αλγόριθμος από εκεί και πέρα είναι τα παρακάτω (Σχήμα 3.8): Εισαγωγή της λέξης λεξικού ΤΕΚΚΕ στην θέση Κ5 του πλέγματος σταυρολέξου. Πρώιμος έλεγχος και εύρεση του μη συνεπούς προτύπου λέξης Ν.Ε.Α στην θέση Ο9 του πλέγματος σταυρολέξου. Αφαίρεση της των γραμμάτων Ε, Κ,Ε της λέξης ΤΕΚΚΕ από την θέση Κ5 του πλέγματος σταυρολέξου, με βάση το πρότυπο λέξης Τ.Κ.. με το οποίο αυτή είχε συμπληρωθεί. Μη εύρεση άλλων υποψήφιων τιμών για την θέση Κ5. Υπαναχώρηση και αφαίρεση των γραμμάτων Ε, Κ, Κ της λέξης ΛΕΚΚΕ από την θέση Ο5 με βάση το πρότυπο λέξης Λ...Ε με το οποίο αυτή είχε συμπληρωθεί. Μη εύρεση άλλων υποψήφιων τιμών για την θέση Ο5. Υπαναχώρηση και αφαίρεση των γραμμάτων Δ, Ε, Ι, Α της λέξης ΑΔΕΙΑ από την θέση Κ9 με βάση το πρότυπο λέξης Α... με το οποίο αυτή είχε συμπληρωθεί. Αναζήτηση άλλης υποψήφιας λέξης για την θέση Κ9 με αποκλεισμένες πλέον τις τιμές ΑΕΡΑΣ, ΑΚΡΟΥ, ΑΔΕΙΑ. Α Υ Τ Ι Α Π Δ Λ Ε Κ Κ Ε Ω Ι Ν Α Σχήμα 3.7: Κατάσταση σταυρολέξου παραδείγματος πριν την υπαναχώρηση 40

41 Α Υ Τ Ι Α Π Ε Δ Λ Ε Κ Κ Ε Ω Κ Ι Ν Ε Α Α Υ Τ Ι Α Π Δ Λ Ε Κ Κ Ε Ω Ι Ν Α Α Υ Τ Ι Α Π Δ Λ Ε Ω Ι Ν Α Α Υ Τ Ι Α Π Λ Ω Ν Σχήμα 3.8: Αλληλουχία καταστάσεων κατά την υπαναχώρηση. 41

42 Στο παρακάτω σχήμα φαίνεται το γενικό διάγραμμα ροής της αναζήτησης που πραγματοποιεί η εφαρμογή. Σχήμα 3.9: Γενικό διάγραμμα ροής της αναζήτησης με υπαναχώρηση που πραγματοποιεί η εφαρμογή Διεπαφή Χρήστη Όπως σε κάθε εφαρμογή, έτσι και στη συγκεκριμένη απαιτείται επικοινωνία με τον 42

43 χρήστη, είτε για την λήψη δεδομένων είτε για την ενημέρωση του για διάφορα συμβάντα. Ένας από του λόγους που επιλέχθηκε η γλώσσα Java για την δημιουργία της εφαρμογής είναι οι πολλές επιλογές που προσφέρει η βασική της βιβλιοθήκη για την ανάπτυξη απλών διεπαφών χρήστη. Για την λήψη δεδομένων καθώς και την αποστολή μηνυμάτων χρησιμοποιήθηκε το πακέτο Swing της βασικής βιβλιοθήκης της Java. Πιο συγκεκριμένα, στις περιπτώσεις που είναι απαραίτητο ο χρήστης να εισάγει κάποια δεδομένα μέσω του πληκτρολογίου χρησιμοποιείται η μέθοδος JoptionPane.showInputDialog του πακέτου Swing. Στην εφαρμογή μας η μέθοδος που την καλεί είναι η getinput της κλάσης IO. Η μέθοδος αυτή, μέσω ενός απλού μηνύματος ενημερώνει τον χρήστη τι χρειάζεται και αναμένει την εισαγωγή των ανάλογων δεδομένων. Παραδείγματα χρήσης της είναι ο καθορισμός του μεγέθους του πλέγματος σταυρολέξου από τον χρήστη, καθώς και η επιλογή του ονόματος του αρχείου που πρόκειται να χρησιμοποιηθεί ως λεξικό. Αν, από την άλλη, ο χρήστης καλείται να επιλέξει μέσα από μια λίστα συγκεκριμένων επιλογών τότε χρησιμοποιείται η μέθοδος JoptionPane.showOptionDialog του πακέτου Swing. Στην εφαρμογή μας η μέθοδος που την καλεί είναι η Options της κλάσης IO. Η μέθοδος αυτή, μέσω ενός απλού μηνύματος ενημερώνει τον χρήστη τι χρειάζεται, εμφανίζει την λίστα των επιλογών και αναμένει την επιλογή μιας από αυτές. Παράδειγμα χρήσης της είναι ο καθορισμός της αναλογίας των μαυρισμένων κελιών από τον χρήστη. Στην περίπτωση που απλά χρειάζεται να ενημερωθεί ο χρήστης για κάποιο συμβάν χρησιμοποιείται η μέθοδος JoptionPane.showIMessageDialog του πακέτου Swing. Στην εφαρμογή μας η μέθοδος που την καλεί είναι η Message της κλάσης IO. Η μέθοδος αυτή, μέσω ενός απλού μηνύματος ενημερώνει τον χρήστη για το συμβάν που έχει προκύψει. Παράδειγμα χρήσης της είναι το μήνυμα καλωσορίσματος που εμφανίζεται όταν ξεκινά η εφαρμογή. Όταν από τον χρήστη χρειάζεται απλά μια θετική ή αρνητική απάντηση χρησιμοποιείται η μέθοδος JoptionPane.showIConfirmDialog του πακέτου Swing. Παράδειγμα χρήσης της είναι η επιλογή του χρήστη για την εύρεση άλλης λύσης για ένα συγκεκριμένο πλέγμα Γραφικό περιβάλλον Για την δημιουργία της γραφικής αποτύπωσης του πλέγματος του σταυρολέξου χρησιμοποιήθηκαν μέθοδοι που περιέχονται στα πακέτα Swing και AWT της βασικής βιβλιοθήκης της Java. Η κλάση που επιτελεί τις σχετικές λειτουργίες είναι η Gui. Ο δημιουργός της δημιουργεί ένα παράθυρο τα περιεχόμενα του οποίου θα έχουν διάρθρωση πλέγματος (μέθοδος GridLayout της βασικής βιβλιοθήκης). Το πλέγμα αποτελείται από στιγμιότυπα αντικειμένων τύπου Jlabel, τα οποία και αναπαριστούν τα κελιά του σταυρολέξου. Τα αντικείμενα αυτά έχουν ορισμένα προκαθορισμένα χαρακτηριστικά όπως το μέγεθος τους και το περίγραμμα τους και ορισμένα μεταβαλλόμενα χαρακτηριστικά όπως το περιεχόμενο τους και το χρώμα τους. Στην περίπτωση που χρειάζεται να μεταβληθεί κάποια από τα χαρακτηριστικά αυτά η μέθοδος που καλείται είναι η ChangeLabel της κλάσης Gui. Η μέθοδος αυτή, δέχεται ως όρισμα τις συντεταγμένες ενός κελιού και έναν χαρακτήρα και εισάγει τον 43

44 χαρακτήρα αυτό στο συγκεκριμένο κελί. Η μέθοδος καλείται από την μέθοδο Printer της κλάσης Crossword, η οποία με την σειρά της καλείται όποτε η εφαρμογή επιθυμεί να εμφανίσει το περιεχόμενο του πλέγματος σταυρολέξου. 44

45 ΚΕΦΑΛΑΙΟ 4 ΠΑΡΑΔΕΙΓΜΑΤΑ ΧΡΗΣΗΣ 4.1 Εκτέλεση αρχείου Λόγω της ανάπτυξης της σε Java, η εφαρμογή είναι συμβατή με όλα τα λειτουργικά συστήματα. Απαραίτητη προϋπόθεση είναι να υπάρχει εγκατεστημένο το περιβάλλον λειτουργίας της Java (Java run-time environment, JRE) το οποίο είναι διαθέσιμο δωρεάν. Το αρχείο της εφαρμογής είναι τύπου εκτελέσιμου αρχείου Jar (executable Jar file). Το Jar, είναι ένας τύπος αρχείου που χρησιμοποιείται συνήθως για να συγκεντρώσει πολλά αρχεία κλάσεων Java και τα σχετικά μεταδεδομένα και πόρους (κείμενο, εικόνες και ούτω καθεξής σε ένα αρχείο για τη διανομή εφαρμογών λογισμικού ή βιβλιοθηκών στην πλατφόρμα Java[14], [15]. Το όνομα του αρχείου της εφαρμογής είναι CrosswordMaker.jar. Η εφαρμογή μπορεί να εκτελεστεί είτε μέσω του γραφικού περιβάλλοντος του λειτουργικού συστήματος (σχήμα 4.1) είτε μέσω περιβάλλοντος γραμμής εντολών (σχήμα 4.2). Σχήμα 4.1: Εκτέλεση μέσω γραφικού περιβάλλοντος. 45

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

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

Διαβάστε περισσότερα

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

Πρόβληµα ικανοποίησης περιορισµών Προβλήµατα ικανοποίησης περιορισµών Constraint Satisfaction Problems Πρόβληµα ικανοποίησης περιορισµών Μεταβλητές: X 1, X 2,, X n, Πεδία ορισµού: D 1, D 2, D n Περιορισµοί: C 1, C 2,, C m Ανάθεση τιµών:

Διαβάστε περισσότερα

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

Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων Περιγραφή Προβλημάτων Αλγόριθμοι αναζήτησης Αλγόριθμοι τυφλής αναζήτησης Αναζήτηση πρώτα σε βάθος Αναζήτηση πρώτα σε πλάτος (ΒFS) Αλγόριθμοι ευρετικής αναζήτησης

Διαβάστε περισσότερα

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

ΕΘΝΙΚΟ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΕΘΝΙΚΟ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Καθηγητής : Κουμπαράκης Μανόλης Ημ/νία παράδοσης: 11/01/2011 Ονομ/μο φοιτητή : Μπεγέτης Νικόλαος Α.Μ.:

Διαβάστε περισσότερα

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

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Ικανοποίηση Περιορισμών Κατηγορία προβλημάτων στα οποία είναι γνωστές μερικές

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

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

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α A1. Να γράψετε στο τετράδιό σας τους

Διαβάστε περισσότερα

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού. Κεφάλαιο 6 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία σημαντικά στάδια : Σον ακριβή προσδιορισμό του προβλήματος Σην ανάπτυξη του αντίστοιχου αλγορίθμου

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

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

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης Επίλυση προβληµάτων Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης! Παιχνίδια δύο αντιπάλων Προβλήµατα ικανοποίησης περιορισµών Γενικά " Ντετερµινιστικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΙΚΑΝΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ ΙΚΑΝΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ (ΜΕ ΒΑΣΗ ΤΟ ΚΕΦ. 6 ΤΟΥ ΒΙΒΛΙΟΥ «ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ» ΤΩΝ ΒΛΑΧΑΒΑ, ΚΕΦΑΛΑ, ΒΑΣΙΛΕΙΑ Η, ΚΟΚΚΟΡΑ & ΣΑΚΕΛΛΑΡΙΟΥ) Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ ΠΡΟΒΛΗΜΑΤΑ ΙΚΑΝΟΠΟΙΗΣΗΣ ΠΕΡΙΟΡΙΣΜΩΝ Είναι γνωστές µερικές

Διαβάστε περισσότερα

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

Διαβάστε περισσότερα

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής ΘΕΜΑ 1 ο Α. Να χαρακτηρίσετε τις παρακάτω προτάσεις ως σωστές ή λανθασμένες. 1. Μια διαδικασία

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις Πέμπτη 27 Ιουνίου 2013 10:003:00 Έστω το πάζλ των οκτώ πλακιδίων (8-puzzle)

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού Πληροφοριακά Συστήματα Διοίκησης Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού Σημασία μοντέλου Το μοντέλο δημιουργεί μια λογική δομή μέσω της οποίας αποκτούμε μια χρήσιμη άποψη

Διαβάστε περισσότερα

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

Ασκήσεις μελέτης της 6 ης διάλεξης Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 6 ης διάλεξης 6.1. (α) Το mini-score-3 παίζεται όπως το score-4,

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Εισαγωγικές Έννοιες ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

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

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1 Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 4 ης διάλεξης 4.1. (α) Αποδείξτε ότι αν η h είναι συνεπής, τότε h(n

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100 ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ Όνομα:.. Βαθμός: /100 Θέμα Α 1. Να χαρακτηρίσετε τις προτάσεις με Σ, αν είναι σωστές και Λ, αν είναι λάθος. a. Οι πίνακες δεν μπορούν να έχουν περισσότερες από δύο

Διαβάστε περισσότερα

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι Κ Ο Τ Ι Ν Η Ι Σ Α Β Ε Λ Λ Α Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Π Ε 8 6 Ν Ε Ι Ρ Ο Σ Α Ν Τ Ω ΝΙ Ο Σ Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Σ Π Λ Η Ρ Ο Φ Ο

Διαβάστε περισσότερα

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 7: Πεπερασμένη αναπαράσταση γλωσσών Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

Διαβάστε περισσότερα

Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis)

Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis) Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis) Η μέθοδος PCA (Ανάλυση Κύριων Συνιστωσών), αποτελεί μία γραμμική μέθοδο συμπίεσης Δεδομένων η οποία συνίσταται από τον επαναπροσδιορισμό των συντεταγμένων ενός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Διαβάστε περισσότερα

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

Διαβάστε περισσότερα

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2 ΔΙΑΤΑΞΕΙΣ, ΜΕΤΑΘΕΣΕΙΣ, ΣΥΝΔΥΑΣΜΟΙ

ΚΕΦΑΛΑΙΟ 2 ΔΙΑΤΑΞΕΙΣ, ΜΕΤΑΘΕΣΕΙΣ, ΣΥΝΔΥΑΣΜΟΙ ΚΕΦΑΛΑΙΟ ΔΙΑΤΑΞΕΙΣ ΜΕΤΑΘΕΣΕΙΣ ΣΥΝΔΥΑΣΜΟΙ Εισαγωγή. Οι σχηματισμοί που προκύπτουν με την επιλογή ενός συγκεκριμένου αριθμού στοιχείων από το ίδιο σύνολο καλούνται διατάξεις αν μας ενδιαφέρει η σειρά καταγραφή

Διαβάστε περισσότερα

ΠΛΗ 405 Τεχνητή Νοηµοσύνη

ΠΛΗ 405 Τεχνητή Νοηµοσύνη ΠΛΗ 405 Τεχνητή Νοηµοσύνη Ικανο οίηση Περιορισµών Constraint Satisfaction Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υ ολογιστών Πολυτεχνείο Κρήτης Ε ανάληψη Το ική αναζήτηση αναρρίχηση λόφων προσοµοιωµένη

Διαβάστε περισσότερα

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Ενότητες βιβλίου: 6.3, 7.1-7.6, 7.10, 8.1 Ώρες διδασκαλίας: 2 Φυσικές

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/ Τεχνητή Νοημοσύνη 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

Διαβάστε περισσότερα

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια. ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου.

Διαβάστε περισσότερα

Σταυρόλεξο-6ο ΓΕΛ Αγρινίου

Σταυρόλεξο-6ο ΓΕΛ Αγρινίου Σταυρόλεξο-6ο ΓΕΛ Αγρινίου ΤΟ ΣΤΑΥΡΟΛΕΞΟ Τι είναι σταυρόλεξο; Σταυρόλεξο είναι ένα παιχνίδι μυαλού και γνώσης, στο οποίο ο λύτης προσπαθεί να βρει κρυμμένες λέξεις. Αποτελείται συνήθως από έναν ασπρόμαυρο

Διαβάστε περισσότερα

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

Διαβάστε περισσότερα

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 1: Εισαγωγή Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

Διαβάστε περισσότερα

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. 4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. Η μετατροπή μιας εντολής επανάληψης σε μία άλλη ή στις άλλες δύο εντολές επανάληψης, αποτελεί ένα θέμα που αρκετές φορές έχει εξεταστεί σε πανελλαδικό

Διαβάστε περισσότερα

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2015-2016 Θέμα Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις προτάσεις 1-4 και δίπλα τη λέξη ΣΩΣΤΟ,

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Οι παρούσες σημειώσεις αποτελούν βοήθημα στο μάθημα Αριθμητικές Μέθοδοι του 5 ου εξαμήνου του ΤΜΜ ημήτρης Βαλουγεώργης Καθηγητής Εργαστήριο Φυσικών

Διαβάστε περισσότερα

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Βάλβης Δημήτριος Μηχανικός Πληροφορικής ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα

Διαβάστε περισσότερα

ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα

ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα Ονοματεπώνυμο: ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμίας από τις παρακάτω προτάσεις 1-5 και, δίπλα, τη λέξη ΣΩΣΤΟ, αν η πρόταση είναι σωστή, ή τη λέξη ΛΑΘΟΣ,

Διαβάστε περισσότερα

(50 μον.) πάντοτε Διατυπώστε

(50 μον.) πάντοτε Διατυπώστε ΑΣΚΗΣΗ 1 Α. (50 μον.) Σας δίνεται ο ακόλουθος γράφος, το οποίο πρέπει να χρωματίσετε χρησιμοποιώντας 3 χρώματα (R,G,B), ώστε δύο γειτονικές κορυφές να μην έχουν το ίδιο χρώμα. Θεωρείστε ότι ο χρωματισμός

Διαβάστε περισσότερα

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διπλωματική Εργασία με θέμα: Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού Καραγιάννης Ιωάννης Α.Μ.

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΘΕΜΑ 1 ο (2.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις 17 Φεβρουαρίου 2004 ιάρκεια: 2 ώρες (15:00-17:00)

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014 ΘΕΜΑ 1 Ο Α. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη Σωστό, αν είναι

Διαβάστε περισσότερα

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Άσκηση 1 Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Υπάρχουν τρία μαύρα τετραγωνάκια (b), τρία άσπρα (w) και ένα κενό (e). Η σπαζοκεφαλιά έχει τις ακόλουθες

Διαβάστε περισσότερα

Τσάπελη Φανή ΑΜ: 2004030113. Ενισχυτική Μάθηση για το παιχνίδι dots. Τελική Αναφορά

Τσάπελη Φανή ΑΜ: 2004030113. Ενισχυτική Μάθηση για το παιχνίδι dots. Τελική Αναφορά Τσάπελη Φανή ΑΜ: 243113 Ενισχυτική Μάθηση για το παιχνίδι dots Τελική Αναφορά Περιγραφή του παιχνιδιού Το παιχνίδι dots παίζεται με δύο παίχτες. Έχουμε έναν πίνακα 4x4 με τελείες, και σκοπός του κάθε παίχτη

Διαβάστε περισσότερα

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 8: Πεπερασμένα Αυτόματα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

Διαβάστε περισσότερα

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

Διαβάστε περισσότερα

Υπολογιστικό Πρόβληµα

Υπολογιστικό Πρόβληµα Υπολογιστικό Πρόβληµα Μετασχηµατισµός δεδοµένων εισόδου σε δεδοµένα εξόδου. Δοµή δεδοµένων εισόδου (έγκυρο στιγµιότυπο). Δοµή και ιδιότητες δεδοµένων εξόδου (απάντηση ή λύση). Τυπικά: διµελής σχέση στις

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

Διαβάστε περισσότερα

Αναγνώριση Προτύπων Ι

Αναγνώριση Προτύπων Ι Αναγνώριση Προτύπων Ι Ενότητα 1: Μέθοδοι Αναγνώρισης Προτύπων Αν. Καθηγητής Δερματάς Ευάγγελος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟ MANAGEMENT ΣΗΜΕΙΩΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ. Ορισμοί

ΕΙΣΑΓΩΓΗ ΣΤΟ MANAGEMENT ΣΗΜΕΙΩΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ. Ορισμοί Ορισμοί Ηγεσία είναι η διαδικασία με την οποία ένα άτομο επηρεάζει άλλα άτομα για την επίτευξη επιθυμητών στόχων. Σε μια επιχείρηση, η διαδικασία της ηγεσίας υλοποιείται από ένα στέλεχος που κατευθύνει

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος Θέμα 1 Δίνονται τα παρακάτω τμήματα αλγορίθμου Α. βαλίτσα Αληθής εισιτήριο Αληθής ταξίδι βαλίτσα και εισιτήριο Τι τιμή θα έχει η λογική μεταβλητή

Διαβάστε περισσότερα

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης Δομές Δεδομένων και Αλγόριθμοι Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Στόχοι Μαθήματος Η σχεδίαση και ανάλυση αλγορίθμων και δομών δεδομένων αποτελεί σημαντικό τμήμα της πληροφορικής.

Διαβάστε περισσότερα

Κεφάλαιο 8 Συνεχείς Κατανομές Πιθανοτήτων

Κεφάλαιο 8 Συνεχείς Κατανομές Πιθανοτήτων Κεφάλαιο 8 Συνεχείς Κατανομές Πιθανοτήτων Copyright 2009 Cengage Learning 8.1 Συναρτήσεις Πυκνότητας Πιθανοτήτων Αντίθετα με τη διακριτή τυχαία μεταβλητή που μελετήσαμε στο Κεφάλαιο 7, μια συνεχής τυχαία

Διαβάστε περισσότερα

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΙΑΝΟΥΑΡΙΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1

Διαβάστε περισσότερα

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Διαδικασίες παραγωγής λογισμικού Περιεχόμενα Παρουσίαση μοντέλων διεργασίας ανάπτυξης λογισμικού Περιγραφή τριών γενικών μοντέλων διεργασίας ανάπτυξης λογισμικού Γενική περιγραφή των διαδικασιών που περιλαμβάνονται

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

Διαβάστε περισσότερα

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

Διαβάστε περισσότερα

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2 ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2 ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΙΑΝΟΥΑΡΙΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7

Διαβάστε περισσότερα

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Μη γραμμικός προγραμματισμός: βελτιστοποίηση χωρίς περιορισμούς Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών ΤμήμαΠληροφορικής Διάλεξη 7-8 η /2017 Τι παρουσιάστηκε

Διαβάστε περισσότερα

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

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ 2.3.1.1. Παπαγιάννη Νάσια Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών ΕΜΠ 1 περιλαμβάνει: Η έννοια του προγράμματος Επίλυση προβλήματος 1. Ακριβή προσδιορισμό

Διαβάστε περισσότερα

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

Διαβάστε περισσότερα

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων...

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων... Περιεχόμενα Ανάλυση προβλήματος 1. Η έννοια πρόβλημα...13 2. Επίλυση προβλημάτων...17 Δομή ακολουθίας 3. Βασικές έννοιες αλγορίθμων...27 4. Εισαγωγή στην ψευδογλώσσα...31 5. Οι πρώτοι μου αλγόριθμοι...54

Διαβάστε περισσότερα

Πληροφορική 2. Τεχνητή νοημοσύνη

Πληροφορική 2. Τεχνητή νοημοσύνη Πληροφορική 2 Τεχνητή νοημοσύνη 1 2 Τι είναι τεχνητή νοημοσύνη; Τεχνητή νοημοσύνη (AI=Artificial Intelligence) είναι η μελέτη προγραμματισμένων συστημάτων τα οποία μπορούν να προσομοιώνουν μέχρι κάποιο

Διαβάστε περισσότερα