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

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

Download "ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΑΛΓΟΡΙΘΜΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ ΙΑΖΕΥΚTΙΚΩΝ ΧΡΟΝΙΚΩΝ ΠΕΡΙΟΡΙΣΜΩΝ"

Transcript

1 ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΑΛΓΟΡΙΘΜΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ ΙΑΖΕΥΚTΙΚΩΝ ΧΡΟΝΙΚΩΝ ΠΕΡΙΟΡΙΣΜΩΝ του Στέφανου Σταυροθεόδωρου ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Επιβλέπων Καθηγητής: Ιωάννης Ρεφανίδης Εξεταστής: Γεώργιος Στεφανίδης Τµήµα Εφαρµοσµένης Πληροφορικής Πανεπιστήµιο Μακεδονίας Θεσσαλονίκη Απρίλιος

2 Copyright Στέφανος Σταυροθεόδωρος 2006 Με επιφύλαξη παντός δικαιώµατος All rights reserved. Η έγκριση της µεταπτυχιακής εργασίας από το τµήµα της Εφαρµοσµένης Πληροφορικής του Πανεπιστήµιου Μακεδονίας δεν υποδηλώνει απαραιτήτως και αποδοχή των απόψεων του συγγραφέα εκ µέρους του Τµήµατος. 2

3 Περίληψη Η εργασία αυτή ασχολείται µε προβλήµατα διαζευκτικών περιορισµών και αναλύει τις παραµέτρους των προβληµάτων αυτών. Πρόκειται ουσιαστικά για προβλήµατα που βρίσκουν εφαρµογή στη τεχνική νοηµοσύνη και ειδικά στον χρονοπρογραµµατισµό. Στη συνέχεια ασχολείται µε 4 αλγορίθµους, τους πρώτους που δηµιουργήθηκαν για την επίλυση τέτοιων προβληµάτων, και παρουσιάζεται ο τρόπος λειτουργίας των αλγορίθµων αυτών. Οι αλγόριθµοι αυτοί είναι οι simple backtracking, simple backtracking with backjumping, forward checking και forward checking with backjumping. Στα πλαίσια της εργασίας αυτής χρειάστηκε να γίνει υλοποίηση των αλγορίθµων αυτών προκειµένου να συγκρίνουµε τους αλγόριθµους µεταξύ τους. Με τη χρήση πολλών προβληµάτων διαφορετικού τύπου και µεγέθους εξάγονται χρήσιµα συµπεράσµατα για τους 4 αλγορίθµους και γίνονται προτάσεις για βελτιώσεις των αλγορίθµων αυτών. 3

4 Abstract This paper studies the Disjunctive Temporal Problem and analyzes the parameters of this problem. This problem applies in Artificial Intelligence and especially in time-scheduling. Furthermore, it studies 4 algorithms, the first that created to solve this problem, and it is presented the way these algorithms work. These 4 algorithms are simple backtracking, simple backtracking with backjumping, forward checking and forward checking with backjumping. For the reasons of this paper it was necessary to implement these algorithms and compare them. Using many problems of different type and size we infer usefully information for the 4 algorithms and suggest ways to improve these algorithms. 4

5 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή 6 2. Ανάλυση του προβλήµατος Παράµετροι του προβλήµατος Ο έλεγχος συνέπειας Ανάλυση των αλγορίθµων Ο αλγόριθµος simple backtracking οµές δεδοµένων και µεταβλητές Ο τρόπος λειτουργίας του αλγορίθµου Παράδειγµα Οι συναρτήσεις του αλγορίθµου Ο αλγόριθµος simple backtracking with backjumping Η µέθοδος backjumping Οι συναρτήσεις του αλγορίθµου Οι αλγόριθµοι forward checking και forward checking with backjumping Η µέθοδος forward checking Παράδειγµα οµές δεδοµένων και µεταβλητές Οι συναρτήσεις των δύο αλγορίθµων Σύγκριση των αλγορίθµων Τα τυχαία προβλήµατα Πως επηρεάζει ο αριθµός των µεταβλητών Πως επηρεάζει ο αριθµός των περιορισµών Τα «δύσκολα» προβλήµατα Πως επηρεάζει ο αριθµός των διαζευκτικών όρων ανά περιορισµό Συγκριτική µελέτη αλγορίθµων µε σταθερή αναλογία περιορισµοί / µεταβλητές Επίλογος Συµπεράσµατα 69 Βιβλιογραφία 72 5

6 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή Στο τοµέα της πληροφορικής και ειδικότερα της τεχνητής νοηµοσύνης τα προβλήµατα που είχαν να κάνουν µε χρονικές µεταβλητές αποτέλεσαν αντικείµενο εκτεταµένης έρευνας τα τελευταία χρόνια. Ο κυριότερος λόγος που αυτά τα προβλήµατα βρέθηκαν στο επίκεντρο της προσοχής των ερευνητών ήταν η ανάγκη του χρονοπρογραµµατισµού εργασιών διαφόρων συστηµάτων. Το πρώτο και απλούστερο πρόβληµα που παρουσιάστηκε ήταν το STP (Simple Temporal Problem)[2]. Ένα STP πρόβληµα αποτελείται από ένα σύνολο µεταβλητών, όπου κάθε µεταβλητή αποτελεί ένα χρονικό σηµείο, και ένα σύνολο περιορισµών ανάµεσα σε αυτές τις µεταβλητές. Ο κάθε περιορισµός είναι της µορφής Χ-Υ b i, όπου Χ,Υ µεταβλητές του προβλήµατος και b i ένας πραγµατικός αριθµός. Σκοπός του προβλήµατος είναι η εύρεση τιµών για τις µεταβλητές για τις οποίες θα ικανοποιούνται οι περιορισµοί του προβλήµατος. Το πρόβληµα αυτό ακολούθησαν αρκετά ακόµη, όπως για παράδειγµα το TCSP (Temporal Constraint Satisfaction Problem) και το STPU (Simple Temporal Problem with Uncertainty). Το πρόβληµα µε το οποίο ασχολείται η εργασία αυτή αποτελεί και αυτό εξέλιξη των προαναφερθέντων προβληµάτων. Πρόκειται ουσιαστικά για ένα πρόβληµα που έχει να κάνει µε διαζευκτικούς περιορισµούς και αναφέρεται στη ξένη βιβλιογραφία ως DTP (Disjunctive Temporal Problem). Αυτή η ονοµασία θα χρησιµοποιείται για το υπόλοιπο της εργασίας. Η ανάλυση του προβλήµατος γίνεται στο επόµενο κεφάλαιο. 6

7 Τα τελευταία χρόνια έχουν εµφανιστεί αρκετοί αλγόριθµοι που ασχολούνται µε την επίλυση DTP προβληµάτων [1],[3],[5],[6]. Εδώ θα µελετηθούν οι αλγόριθµοι των Στεργίου και Κουµπαράκη, οι οποίοι ήταν και οι πρώτοι που εµφανίστηκαν [6]. Σκοπός της εργασίας αυτής είναι να δώσει το έναυσµα σε κάποιους από τους αναγνώστες να ασχοληθούν περαιτέρω µε το πρόβληµα αυτό. Στόχοι της είναι η κατανόηση από πλευράς αναγνώστη του προβλήµατος και των αλγορίθµων και η ανάδειξη των διαφορών τους µε την σύγκριση της αποδοτικότητας τους. Με την εµφάνιση του DTP προβλήµατος έγινε δυνατή η µοντελοποίηση πολλών προβληµάτων και η ταχεία λύση τους µε τη βοήθεια αλγορίθµων. Για να γίνει κατανοητό σε πόσους τοµείς βρίσκουν εφαρµογή τέτοιοι αλγόριθµοι, θα παρουσιάσουµε ένα πολύ απλό παράδειγµα. Παράδειγµα 1.1 Ας υποθέσουµε ότι πρέπει να υλοποιηθούν δύο ενέργειες Α και Β οι οποίες απαιτούν τον ίδιο µέσο. Έστω ότι αυτό το µέσο είναι ένας εκτυπωτής και ότι οι ενέργειες Α και Β είναι η εκτύπωση αρχείων από τον υπολογιστή Α και Β αντίστοιχα. Όπως γίνεται κατανοητό, επειδή έχουµε έναν εκτυπωτή θα πρέπει να υλοποιηθεί η µία εκτύπωση και µετά να γίνει η άλλη. Κωδικοποιούµε το πρόβληµα ορίζοντας τις κατάλληλες µεταβλητές : αρχή_α, τέλος_α, αρχή_β, τέλος_β. Επειδή δεν ξέρουµε ποια ενέργεια γίνεται πρώτη έχουµε 2 περιπτώσεις. Αν ξεκινήσει πρώτα η Α τότε η Β θα γίνει ακριβώς ή λίγο πιο µετά. Άρα το τέλος αυτής θα πρέπει να έχει τιµή µικρότερη ή ίση από την αρχή της Β δηλαδή: τέλος_α αρχή_β 0. Στη περίπτωση που ξεκινήσει πρώτα η Β τότε ισχύουν τα αντίστροφα οπότε η ανισότητα έχει ως εξής: τέλος_β αρχή_α 0. 7

8 Σε κάθε περίπτωση λοιπόν ο περιορισµός του προβλήµατος είναι ο: τέλος_α αρχή_β 0 τέλος_β αρχή_α 0. Η διάζευξη µέσα στον περιορισµό σηµαίνει πως για να ικανοποιηθεί ο περιορισµός αρκεί να ικανοποιηθεί ένας από τους διαζευκτικούς όρους. Οι διαζευκτικοί περιορισµοί είναι χαρακτηριστικό των DTP προβληµάτων κάτι που θα δούµε καλύτερα στη συνέχεια. Στο κεφάλαιο 2 γίνεται αναλυτική παρουσίαση του προβλήµατος και της λογικής που χρησιµοποιείται για την επίλυση του. Συγκεκριµένα παρουσιάζονται οι παράµετροι που διέπουν το πρόβληµα και ένας αλγόριθµος ελέγχου συνέπειας που αποτελεί τον πυρήνα των αλγορίθµων που εξετάζονται στη συνέχεια. Στο κεφάλαιο 3 γίνεται παρουσίαση και ανάλυση του τρόπου λειτουργίας τεσσάρων αλγορίθµων που χρησιµοποιούνται για την επίλυση του προβλήµατος. Οι αλγόριθµοι αυτοί είναι οι simple backtracking, simple backtracking with backjumping, forward checking και forward checking with backjumping [6]. Στο κεφάλαιο 4 γίνεται µια συγκριτική µελέτη των τεσσάρων προγραµµάτων. Με τη δηµιουργία τυχαίων προβληµάτων διαφορετικού µεγέθους γίνεται δυνατή η µέτρηση της αποδοτικότητας των αλγορίθµων ενώ ακολουθεί σύγκριση αυτών µε την επεξεργασία των αποτελεσµάτων που πήραµε από τις µετρήσεις. Το κεφάλαιο 5 αναφέρεται στα συµπεράσµατα στα οποία κατέληξε η εργασία αυτή και σε προτάσεις για περαιτέρω έρευνα. 8

9 ΚΕΦΑΛΑΙΟ 2 Ανάλυση του προβλήµατος 2.1 Οι παράµετροι του προβλήµατος Ένα DTP πρόβληµα αποτελείται από δύο σύνολα. Το πρώτο είναι το σύνολο V που περιέχει όλες τις µεταβλητές του προβλήµατος. Κάθε µεταβλητή αποτελεί ένα χρονικό σηµείο. Το άλλο είναι το σύνολο C που περιέχει τους περιορισµούς που θα πρέπει να ικανοποιούν οι χρονικές µεταβλητές. Κάθε περιορισµός είναι µια διάζευξη της µορφής x 1 -y 1 r 1 x n -y n r n όπου x 1 x n,y 1 y n είναι µεταβλητές που παίρνουν πραγµατικές τιµές, r 1 r n είναι πραγµατικές σταθερές και n 1. Όταν ένας περιορισµός έχει µόνο ένα διαζευκτικό όρο (είναι δηλαδή µια απλή ανισότητα, χωρίς διάζευξη) θα ονοµάζεται µη διαζευκτικός. Αν έχει περισσότερους από έναν θα λέγεται διαζευκτικός. Για παράδειγµα, ένας περιορισµός της µορφής x-y 6 είναι µη διαζευκτικός, ενώ ο περιορισµός x1-y 1 2 x 2 -y 2-3 είναι διαζευκτικός. Η επίλυση του προβλήµατος απαιτεί την εύρεση ενός διαζευκτικού όρου από κάθε περιορισµό έτσι ώστε αυτοί να µην έρχονται σε σύγκρουση µεταξύ τους. Αν βρεθεί η κατάλληλη ανισότητα για τον κάθε περιορισµό τότε το πρόβληµα έχει λύση και λέµε ότι είναι συνεπές. Αυτό που θέλουµε δηλαδή είναι κάθε περιορισµός να πάρει µια τιµή, αν θεωρήσουµε τους διαζευκτικούς όρους κάθε περιορισµού ως πιθανές τιµές του. Όπως καταλαβαίνει κανείς ένα DTP πρόβληµα µοιάζει αρκετά µε ένα STP. Συγκεκριµένα πρόκειται για έναν συνδυασµό προβληµάτων STP και CSP (Constraint Satisfaction Problem) [7]. Στην εισαγωγή αναφέραµε την µορφή των STP προβληµάτων. Εδώ θα πούµε λίγα πράγµατα για τα CSP 9

10 προβλήµατα. Σε ένα τέτοιο πρόβληµα έχουµε τρία σύνολα. Το πρώτο σύνολο V περιλαµβάνει τις µεταβλητές, το δεύτερο σύνολο D περιέχει τα πεδία τιµών της κάθε µεταβλητής και το τρίτο σύνολο C έχει περιορισµούς που υπαγορεύουν ποιες τιµές δεν µπορούν να πάρουν οι µεταβλητές του συνόλου V. Σκοπός του προβλήµατος είναι η ανάθεση κατάλληλων τιµών στις µεταβλητές έτσι ώστε να µην παραβιάζονται οι περιορισµοί. Οι αλγόριθµοι που θα µελετήσουµε στη συνέχεια εκµεταλλεύονται ακριβώς αυτό το γεγονός, ότι δηλαδή µπορούµε να δούµε ένα DTP πρόβληµα ως µετα-csp. Ας δούµε όµως ένα παράδειγµα για να γίνει αυτό κατανοητό. Παράδειγµα 2.1 Έστω ένα DTP πρόβληµα µε 5 µεταβλητές, τις x 1,x 2,x 3,x 4,x 5. Οι περιορισµοί του προβλήµατος είναι οι εξής: D(1) x 2 -x 1 5 x 1 -x 4-1 D(2) x 5 -x 4-1 x 1 -x 3 2 D(3) x 3 -x 2 2 x 5 -x 2-7 D(4) x 1 -x 5 3 x 4 -x 5 0 x 1 -x 2-4 Υπενθυµίζουµε πως σκοπός του προβλήµατος είναι η ανάθεση ενός διαζευκτικού όρου (ανισότητας) σε κάθε περιορισµό. Μπορούµε όµως να αναγάγουµε το πρόβληµα σε CSP θεωρώντας ως µεταβλητές τους περιορισµούς D(i), i=1..4. Τα πεδία τιµών αυτών των µεταβλητών θα είναι οι διαζευκτικοί τους όροι. Έτσι, η µεταβλητή D(1) έχει πεδίο τιµών το σύνολο { x 2 -x 1 5, x 1 -x 4-1} κ.ο.κ. Σε όλο το υπόλοιπο της εργασίας όταν θα χρειάζεται να αναφερθούµε σε κάποιον διαζευκτικό όρο ενός περιορισµού θα αναφερόµαστε σε αυτόν ως D(i,j). Έτσι για παράδειγµα ο διαζευκτικός όρος D(3,2) είναι ο δεύτερος διαζευκτικός όρος του τρίτου περιορισµού και συγκεκριµένα η ανισότητα x 5 -x 2-7. Τέλος όσον αφορά τους περιορισµούς αυτοί είναι δυναµικοί και εξαρτώνται από τις αναθέσεις που γίνονται σε κάθε µεταβλητή-περιορισµό. 10

11 Για παράδειγµα, αν η µεταβλητή D(2) πάρει την πρώτη τιµή (x 5 -x 4-1) τότε η µεταβλητή D(4) δεν µπορεί να πάρει την D(4,2) τιµή. Ας δούµε όµως το γιατί. Σύµφωνα µε την D(4,2) ισχύει: x 4 -x 5 0 x 4 x 5 Αντίθετα, σύµφωνα µε την D(2,1) έχουµε: x 5 -x 4-1 x 5 +1 x4, δύο ανισότητες που δεν µπορούν να ισχύουν ταυτόχρονα. Οπότε µε µια πιθανή ανάθεση της τιµής D(2,1) στην µεταβλητή D(2) δηµιουργείται ταυτόχρονα περιορισµός για την µεταβλητή D(4). Η εύρεση των «συγκρούσεων» µεταξύ των περιορισµών αποτελεί τον πυρήνα των αλγορίθµων που θα εξετάσουµε και ονοµάζεται έλεγχος συνέπειας. 2.2 Ο έλεγχος συνέπειας Για να γίνει ο απαιτούµενος έλεγχος συνέπειας γίνεται η χρήση γράφων. Κάθε µεταβλητή του προβλήµατος αναπαρίσταται ως κόµβος. Με την ανάθεση ανισότητας σε έναν περιορισµό εισάγεται ταυτόχρονα και µια ακµή. Μια ανισότητα της µορφής x-y d είναι ουσιαστικά µια ακµή από τον κόµβο y στον κόµβο x που έχει βάρος d. Για την αναπαράσταση του γράφου χρησιµοποιείται ο πίνακας γειτνίασης Α. Ο πίνακας αυτός έχει διαστάσεις n n, όπου n ο αριθµός των µεταβλητών του προβλήµατος (όσοι δηλαδή και οι κόµβοι του γράφου) και ξεκινά µε όλα του τα στοιχεία µηδέν. Όταν εισάγουµε στον γράφο µια ακµή i j το στοιχείο Α(i,j) γίνεται 1. Για τα βάρη των ακµών έχουµε έναν πίνακα ίδιων διαστάσεων όπου αντί για 1 βάζουµε στην αντίστοιχη θέση το βάρος της ακµής. Με τον τρόπο αυτό µπορούµε να ξέρουµε ανά πάσα στιγµή ποιες ακµές έχουµε στον γράφο και τι βάρος έχει η κάθε µία. d Στην ενότητα 2.1 είδαµε ότι ορισµένες φορές µπορεί να υπάρχουν «συγκρούσεις» ανάµεσα σε δύο ανισότητες. Επειδή όµως σε µια «σύγκρουση» µπορεί να εµπλέκονται πολλές ανισότητες, αυτό κάνει την ανίχνευση της δύσκολη υπόθεση. Για τον λόγο αυτό χρησιµοποιούµε τον 11

12 γράφο του προβλήµατος. Όταν κάποιες ανισότητες έρχονται σε «σύγκρουση» µεταξύ τους αυτό είναι ορατό στο γράφο αφού οι αντίστοιχες ακµές δηµιουργούν αρνητικό κύκλο. Αρνητικός κύκλος είναι ένας προσανατολισµένος κύκλος στον οποίο το άθροισµα των βαρών είναι αρνητικό. Η δηµιουργία αρνητικού κύκλου παραβιάζει τη συνέπεια του γράφου και θα πρέπει να αναιρεθεί κάποια από τις εισαγωγές µας. Το παράδειγµα που ακολουθεί επεξηγεί τα όσα είπαµε έως τώρα. Παράδειγµα 2.2 Ας υποθέσουµε ότι µετά από δύο εισαγωγές ακµών ο γράφος του προβλήµατος έχει ως εξής: Εικόνα 2.1: Ο γράφος του προβλήµατος µετά από δύο βήµατα Στη συνέχεια, ο αλγόριθµος προσπαθεί να εισάγει την ανισότητα x 3 -x 2-7. Η ανισότητα αυτή είναι η ακµή 2 3 µε βάρος -7. Αφού εισαχθεί, ο γράφος γίνεται: 12

13 Εικόνα 2.2: Σχηµατισµός αρνητικού κύκλου στο γράφο Όπως βλέπουµε στο παραπάνω σχήµα, η εισαγωγή της νέας ακµής έχει ως αποτέλεσµα τη δηµιουργία του κύκλου Το συνολικό βάρος του κύκλου είναι -1, όποτε συµπαιρένουµε πως η ακµή 2 3 παραβιάζει τη συνέπεια του γράφου και πρέπει να αφαιρεθεί από το γράφο. Με τον τρόπο αυτό ανάγαµε το πρόβληµα του εντοπισµού των «συγκρούσεων» σε πρόβληµα ανίχνευσης αρνητικών κύκλων σε έναν γράφο. Οι αρνητικοί κύκλοι εντοπίζονται µε τον υπολογισµό του transitive closure ενός γράφου. Αν και υπάρχουν αρκετοί τρόποι εδώ χρησιµοποιείται ο αλγόριθµος του Warshall. Ο αλγόριθµος αυτός περιλαµβάνει 3 βήµατα. Αρχικά δηµιουργείται ένα αντίγραφο του πίνακα γειτνίασης και του πίνακα βαρών. Στη συνέχεια για κάθε κόµβο βρίσκουµε ένα προς ένα τους γονείς και τα παιδιά του. Για κάθε ζευγάρι γονέα-παιδιού βάζουµε στην αντίστοιχη θέση του πίνακα γειτνίασης την τιµή 1 και στον πίνακα βαρών το άθροισµα των δύο ακµών. Ας επιστρέψουµε στο παράδειγµα 2.2 και στον γράφο όπως αυτός είχε διαµορφωθεί µετά από 2 βήµατα. Ο πίνακας γειτνίασης και ο πίνακας βαρών είναι: 13

14 Α = και G = ηµιουργούµε τους πίνακες R και P οι οποίοι είναι αντίγραφα των A και G αντίστοιχα. Παίρνουµε τον πίνακα R και εξετάζουµε έναν έναν τους κόµβους. Για παράδειγµα, ο κόµβος 1 έχει ένα παιδί αφού Α(1,2)=1 (για τα παιδιά ελέγχουµε την αντίστοιχη γραµµή) και έναν πατέρα αφού Α(3,1)=1 (για γονείς ελέγχουµε την αντίστοιχη στήλη). Για τον λόγο αυτό στη θέση R(3,2) βάζουµε την τιµή 1 και Ρ(3,2)=Ρ(3,1)+Ρ(1,2)=2+4=6. Όταν θα προσπαθήσουµε να εισάγουµε την ακµή θα πρέπει να ελέγξουµε αν έχει υπολογιστεί η τιµή R(3,2) (αν είναι δηλαδή 1). Σε µια τέτοια περίπτωση προσθέτουµε το βάρος της ακµής που προσπαθούµε να εισάγουµε µε την τιµή P(3,2). Αν το άθροισµα είναι αρνητικό τότε έχουµε αρνητικό κύκλο. Στο παράδειγµα µας έχουµε d2,3+p(3,2)=-7+6=-1 γεγονός που δείχνει ότι παραβιάζεται η συνέπεια του γράφου. Ο έλεγχος συνέπειας είναι µια σηµαντικότατη διαδικασία στους αλγόριθµους που θα µελετήσουµε και αποτελεί ουσιαστικά τον πυρήνα αυτών των αλγορίθµων. 14

15 ΚΕΦΑΛΑΙΟ 3 Ανάλυση των αλγορίθµων Στην ενότητα αυτή παρουσιάζονται οι αλγόριθµοι σε µορφή ψευδοκώδικα και µε συγκεκριµένα παραδείγµατα δείχνεται ο τρόπος µε τον οποίο αυτοί λειτουργούν. Η ανάλυση ξεκινά µε τον απλούστερο εκ των αλγορίθµων και µε προσθήκες και αλλαγές προχωράµε στους επόµενους µέχρι και τον τελευταίο που είναι και ο πολυπλοκότερος. 3.1 Ο αλγόριθµος simple backtracking Ο πρώτος αλγόριθµος που θα εξετάσουµε είναι ο simple backtracking, ο οποίος αποτελεί και τον απλούστερο από τους αλγορίθµους που θα αναλύσουµε. Πρωτού όµως περάσουµε στον αλγόριθµο ας δούµε κάποιους από τους όρους που θα χρησιµοποιήσουµε στο υπόλοιπο της εργασίας. Όπως αναφέραµε και σε προηγούµενο κεφάλαιο, θα αναφερόµαστε σε έναν περιορισµό ως D(i). Έτσι αν θέλουµε να αναφερθούµε στον τρίτο περιορισµό του προβλήµατος θα λέµε D(3). Με D(i,j) θα αναφερόµαστε στον j διαζευκτικό όρο του i περιορισµού. Επίσης, όταν λέµε τρέχων περιορισµός θα εννοούµε τον περιορισµό τον οποίο εξετάζουµε αυτή τη στιγµή προκειµένου να επιλέξουµε τον κατάλληλο διαζευκτικό όρο. Έτσι, παρελθοντικοί περιορισµοί είναι αυτοί που έχουν ήδη εξεταστεί και έχουν πάρει τιµή ενώ µελλοντικοί περιορισµοί αυτοί που δεν έχουν εξεταστεί ακόµη. Κάθε διαζευκτικός όρος µπορεί να βρίσκεται σε µια από τις εξής παρακάτω καταστάσεις: τρέχων, αποκλεισµένος ή διαθέσιµος. Ένας διαζευκτικός όρος είναι διαθέσιµος αν δεν είναι ούτε αποκλεισµένος ούτε τρέχων. Όταν ξεκινάει ο αλγόριθµος όλοι οι διαζευκτικοί όροι είναι διαθέσιµοι. Τρέχων είναι ένας διαζευκτικός όρος όταν γίνεται προσπάθεια 15

16 εισαγωγής του στον γράφο. Ένας διαζευκτικός όρος που δεν µπορεί να εισαχθεί στον γράφο επειδή παραβιάζει την συνέπεια του είναι αποκλεισµένος. Τέλος, λέµε ότι φτάνουµε σε αδιέξοδο όταν όλοι οι διαζευκτικοί όροι ενός περιορισµού αποκλειστούν, δηλαδή δεν µπορούν να εισαχθούν στον γράφο πράγµα που σηµαίνει πως ο περιορισµός αυτός δεν µπορεί να πάρει τιµή. Σε µια τέτοια περίπτωση αλλάζουµε κάποια από τις επιλογές που έγιναν σε παρελθοντικούς περιορισµούς και ξαναδοκιµάζουµε οµές δεδοµένων και µεταβλητές Ο ψευδοκώδικας των αλγορίθµων, τον οποίο θα δούµε παρακάτω, είναι σε µορφή Pascal και είναι ακριβώς όπως παρουσιάστηκε από τους Κουµπαράκη και Στεργίου [6]. Η ενότητα αυτή έχει ως σκοπό να παρουσιάσει τις δοµές δεδοµένων και τις µεταβλητές που χρησιµοποιούνται στον ψευδοκώδικα ώστε να γίνει ευκολότερη η κατανόηση του. dis_num: πρόκειται για µια µεταβλητή που µας δείχνει τον αριθµό των περιορισµών. Οι περιορισµοί ξεκινούν από τον D(1) και φτάνουν µέχρι και τον D(dis_num). Υπάρχει και ο περιορισµός D(0) που χρησιµοποιείται για τον τερµατισµό του αλγορίθµου χωρίς να απεικονίζει στα αλήθεια κάποιον περιορισµό. max_disno: η µεταβλητή αυτή δείχνει των µέγιστο αριθµό διαζευκτικών όρων των περιορισµών. arr_of_disj: είναι ένας δυσδιάστατος πίνακας διαστάσεων dis_num max_disno στον οποίο αποθηκεύονται όλοι οι διαζευκτικοί όροι του προβλήµατος. Για παράδειγµα ο διαζευκτικός όρος arr_of_disj(i,j) αναφέρεται στον διαζευκτικό όρο D(i,j). 16

17 current_domain: πρόκειται επίσης για έναν δυσδιάστατο πίνακα διαστάσεων dis_num max_disno στον οποίο αποθηκεύονται οι καταστάσεις των διαζευκτικών όρων. Τα στοιχεία του πίνακα παίρνουν τις τιµές διαθέσιµος ή αποκλεισµένος. Στην αρχή του αλγορίθµου όλα τα στοιχεία είναι διαθέσιµα. solution: είναι ένας µονοδιάστατος πίνακας µε dis_num στοιχεία τύπου integer και δείχνει για κάθε περιορισµό ποιον διαζευκτικό όρο έχουµε επιτυχώς εισάγει στον γράφο. Για παράδειγµα αν solution[i]=j αυτό σηµαίνει ότι από τον περιορισµό i εισήγαµε στον γράφο τον διαζευκτικό όρο j. Ο πίνακας αρχικά έχει όλα του τα στοιχεία µηδέν. Όταν ο αλγόριθµος τελειώσει ο πίνακας αυτός δείχνει την λύση του προβλήµατος. state: πρόκειται για µια µεταβλητή που δείχνει κάθε στιγµή την κατάσταση του αλγόριθµου. Οι τιµές που µπορεί να πάρει είναι άγνωστη, επιτυχία και αποτυχία. Αρχικά η µεταβλητή αυτή έχει τιµή άγνωστη. Σε περίπτωση που το πρόβληµα δεν έχει λύση τότε παίρνει την τιµή αποτυχία ενώ αν βρεθεί λύση επιτυχία. consistent: πρόκειται για µια boolean µεταβλητή που ελέγχει δυο συναρτήσεις του αλγορίθµου, την forward και την backward. Ξεκινά µε τιµή true και όσο βρίσκουµε συνεπής διαζευκτικούς όρους παραµένει µε αυτή την τιµή. Σε διαφορετική περίπτωση γίνεται false και καλείται η συνάρτηση backward. count: µας δείχνει ποιον περιορισµό εξετάζουµε στην παρούσα κατάσταση. Παίρνει τιµές από 1 έως dis_num. n: δείχνει τον αριθµό των µεταβλητών του προβλήµατος. 17

18 3.1.2 Ο τρόπος λειτουργίας του αλγορίθµου Είδαµε τις δοµές δεδοµένων και τις µεταβλητές του αλγορίθµου αλλά δεν είδαµε ακόµη πως αυτός δουλεύει. Ας υποθέσουµε ότι έχουµε ένα πρόβληµα n µεταβλητών και dis_num περιορισµών. Ο αλγόριθµος δηµιουργεί ένα γράφο µε dis_num κόµβους αλλά αρχικά χωρίς ακµές. Στη συνέχεια πηγαίνει στον πρώτο περιορισµό, παίρνει τον πρώτο διαθέσιµο διαζευκτικό όρο και τον εισάγει στον γράφο (εισάγει ουσιαστικά µια ακµή). Στη συνέχεια πηγαίνει στον αµέσως επόµενο περιορισµό και κάνει το ίδιο ελέγχοντας ταυτόχρονα την συνέπεια του γράφου. Στο πρώτο βήµα ο έλεγχος δεν χρειάστηκε γιατί επρόκειτο για την πρώτη ακµή και άρα δεν µπορούσε να παραβιαστεί η συνέπεια του γράφου. Όσο δεν παραβιάζεται η συνέπεια ο αλγόριθµος προχωρά µέχρι να φτάσει στον τελευταίο περιορισµό και να τερµατιστεί. Η εισαγωγή των διαζευκτικών όρων γίνεται µε τη βοήθεια της συνάρτησης forward που καλώντας την IDPC που είδαµε στο προηγούµενο κεφάλαιο κάνει τον έλεγχο συνέπειας. Σε περίπτωση όµως που υπάρξει πρόβληµα συνέπειας µε κάποιον από τους διαζευκτικούς όρους τι γίνεται; Σε µια τέτοια περίπτωση ο αλγόριθµος παίρνει τον αµέσως επόµενο διαθέσιµο διαζευκτικό όρο του ίδιου περιορισµού. Αν φτάσει σε σηµείο να απορρίψει όλους τους διαζευκτικούς όρους ενός περιορισµού τότε καλείται η συνάρτηση backward. Η συνάρτηση αυτή επιστρέφει στον αµέσως προηγούµενο περιορισµό, βρίσκει ποιος διαζευκτικός όρος εισήχθη στον γράφο και τον αφαιρεί κάνοντας ταυτόχρονα τις κατάλληλες αλλαγές σε µεταβλητές και δοµές δεδοµένων. Στη συνέχεια πηγαίνει στον επόµενο διαζευκτικό όρο και προσπαθεί να τον εισάγει στο γράφο. 18

19 1. Procedure Solve 2. state=άγνωστη 3. count=1 4. while (state=άγνωστη) Do 5. If (consistent false) then 6. count=forward(count) 7. else count=backward(count) 8. if (count=dis_num+1) then state=επιτυχία 9. else if (count=0) then state=αποτυχία 10. End While 11. if (state=επιτυχία) then print(solution) 12. else if (state=αποτυχία) then print( Το πρόβληµα δεν έχει λύση ) Ακριβώς πιο πάνω είναι σε ψευδοκώδικα σε µορφή Pascal η κύρια συνάρτηση του αλγορίθµου. Στις γραµµές 2,3 αρχικοποιεί τις µεταβλητές. Στη συνέχεια ο αλγόριθµος «τρέχει» έως ότου να βρεθεί µια λύση ή να βρεθεί ότι δεν υπάρχει λύση. Αρχικά καλείται η FORWARD (η consistent έχει αρχική τιµή true) και εισάγει έναν διαζευκτικό όρο του περιορισµού D(count) επιστρέφοντας τον περιορισµό count+1. Σε περίπτωση που η FORWARD αποτύχει η consistent γίνεται false οπότε στο επόµενο loop του βρόχου while θα κληθεί η BACKWARD. Η συνάρτηση αυτή αφού τελειώσει επιστρέφει count-1 και consistent=true έτσι ώστε στο επόµενο loop να χρησιµοποιηθεί η FORWARD για τον προηγούµενο περιορισµό. Σε περίπτωση που εισαχθεί επιτυχώς ακµή και για τον τελευταίο περιορισµό η count γίνεται dis_num+1 οπότε και η µεταβλητή state γίνεται επιτυχία. Αν όµως λόγω συνεχόµενων επιστροφών σε παρελθοντικούς περιορισµούς φτάσουµε ξανά στον πρώτο και από κει στον 0 αυτό σηµαίνει πως ο αλγόριθµος έχει φτάσει σε αδιέξοδο και ότι δεν υπάρχει λύση. Για να τερµατιστεί ο αλγόριθµος θα πρέπει να φτάσει σε µία από τις δύο παραπάνω καταστάσεις. Στην πρώτη περίπτωση εκτυπώνεται ο πίνακας solution που 19

20 περιέχει τη λύση του προβλήµατος ενώ στη δεύτερη εκτυπώνεται ένα µήνυµα πως το πρόβληµα δεν έχει λύση Παράδειγµα Ας δούµε όµως καλύτερα ένα παράδειγµα για να γίνει πλήρως κατανοητός ο τρόπος λειτουργίας του αλγορίθµου. Ας υποθέσουµε πώς έχουµε ένα πρόβληµα µε 6 µεταβλητές και 4 περιορισµούς. Οι µεταβλητές είναι οι x 1,x 2,x 3,x 4,x 5,x 6 και οι περιορισµοί: D(1): x 4 -x 1-1 x 2 -x 1 5 D(2): x 5 -x 4-1 x 1 -x 3 2 D(3): x 6 -x 5 3 x 3 -x 2 2 D(4): x 4 -x 6-4 x 1 -x 5-2 Ο αλγόριθµος ξεκινά από τον D(1) και εισάγει στον γράφο την ανισότητα x 4 -x 1-1. Στη συνέχεια εισάγει για τους περιορισµούς D(2) και D(3) τις ανισότητες x 5 -x 4-1 και x 6 -x 5 3. Αυτή τη στιγµή λοιπόν ο γράφος του προβλήµατος είναι ο εξής: 20

21 Εικόνα 3.1: Ο γράφος του προβλήµατος µετά από 3 βήµατα Ο αλγόριθµος προχωρά στον D(4) και προσπαθεί να εισάγει την ακµή x 4 - x 6-4. Αν προσέξουµε το παραπάνω σχήµα, µια τέτοια εισαγωγή θα είχε ως συνέπεια τη δηµιουργία του αρνητικού κύκλου Ο διαζευκτικός αυτός όρος απορρίπτεται και ο αλγόριθµος δοκιµάζει τον επόµενο του ίδιου περιορισµού δηλαδή τον D(4,2) (x 1 -x 5-2). Η προσπάθεια εισαγωγής αυτής της ανισότητας παραβιάζει και πάλι την συνέπεια του γράφου αφού δηµιουργείται ο αρνητικός κύκλος µε βάρος -4. Ο αλγόριθµος δεν µπορεί να πάρει άλλον διαζευκτικό όρο από τον περιορισµό D(4) γιατί δεν υπάρχουν άλλοι. Σε αυτή ακριβώς τη περίπτωση καλείται η συνάρτηση backward. Αυτή επιστρέφει στον αµέσως προηγούµενο περιορισµό και αναιρεί την εισαγωγή που είχε γίνει. Αυτό έχει ως αποτέλεσµα η ακµή να αφαιρεθεί από τον γράφο. Στη συνέχεια καλείται ξανά η forward η οποία επιλέγει τον D(3,2) διαζευκτικό όρο και τον εισάγει επιτυχώς στο γράφο (x3-x 2 2). Τέλος ο αλγόριθµος ξαναπηγαίνει στον τελευταίο περιορισµό και εισάγει την ανισότητα x 4 -x 6-4. Έχοντας εισάγει έναν διαζευκτικό όρο για κάθε 21

22 περιορισµό ο αλγόριθµος τερµατίζει. Η λύση του προβλήµατος είναι η D(1,1),D(2,1),D(3,2),D(4,1). Ο γράφος στην τελική του µορφή είναι: Εικόνα 3.2: Ο γράφος µετά τον τερµατισµό του αλγορίθµου Οι συναρτήσεις του αλγορίθµου Όπως είπαµε και πιο πάνω οι δύο σηµαντικότερες συναρτήσεις του αλγόριθµου είναι η FORWARD και η BACKWARD. Η FORWARD είναι αυτή που εισάγει ακµές στον γράφο και µε την βοήθεια της IDPC κάνει και τον απαραίτητο έλεγχο συνέπειας. Σε περίπτωση που εξαντληθούν οι διαζευκτικοί όροι κάποιου περιορισµού αναλαµβάνει η BACKWARD η οποία επιστρέφει τον αλγόριθµο στον επόµενο περιορισµό. Ας δούµε όµως τις δύο συναρτήσεις αυτές σε ψευδοκώδικα µορφής Pascal ξεκινώντας από την forward. 1. Function FORWARD (count) 2. consistent=false 3. disjunct=1 22

23 4. length=no_of_disjuncts (count) 5. while (disjunct length and consistent=false) do 6. if (current_domain[count][disjunct]=διαθέσιµος) then 7. propagation result=check_consistency (count, D(count,disjunct)) 8. if (propagation_result=success) then 9. consistent=true 10. solution [count]=disjunct 11. else 12. current_domain[count] [disjunct]=αποκλεισµένος 13. REMOVE_CONSTRAINT (count) 14. end if 15. end if 16. disjunct=disjunct end while 18. if (consistent=true) return count else return count Η συνάρτηση forward δέχεται ως είσοδο τον περιορισµό στον οποίο θέλουµε να δώσουµε τιµή (µε τη βοήθεια της µεταβλητής count). Αρχικά η συνάρτηση δίνει στη µεταβλητή consistent την τιµή false. Αν βρεθεί συνεπής διαζευκτικός όρος παίρνει την τιµή true διαφορετικά παραµένει ως έχει. Η µεταβλητή disjunct δείχνει τον διαζευκτικό όρο που εξετάζει η συνάρτηση. Όπως είναι λογικό η συνάρτηση θα ξεκινήσει από την πρώτη ανισότητα άρα και η disjunct θα ξεκινήσει µε τιµή 1. Τέλος µε τη βοήθεια της συνάρτησης NO_OF_DISJUNCTS βρίσκουµε τον αριθµό των διαζευκτικών όρων του εν λόγω περιορισµού και αποθηκεύουµε αυτόν τον αριθµό στη µεταβλητή length. Στη γραµµή 5 βλέπουµε έναν βρόχο while. Ο βρόχος αυτός «τρέχει» µέχρι να τελειώσουν όλοι οι διαζευκτικοί όροι ή να βρεθεί κάποιος που να µην 23

24 παραβιάζει την συνέπεια του γράφου. Στις γραµµές 6 και 7 αφού ελεγχθεί η διαθεσιµότητα της εξεταζόµενης ανισότητας καλείται η συνάρτηση CHECK_CONSISTENCY. Η συνάρτηση δέχεται ως ορίσµατα τον εξεταζόµενο περιορισµό και διαζευκτικό όρο και τον τρόπο που είδαµε στο προηγούµενο κεφάλαιο ελέγχει την συνέπεια του γράφο. Η συνάρτηση αυτή επιστρέφει success σε περίπτωση επιτυχίας και failure σε περίπτωση παραβίασης της συνέπειας. Σε περίπτωση που η εισαγωγή της νέας ακµής ήταν επιτυχηµένη, η µεταβλητή consistent γίνεται true και ο διαζευκτικός όρος που εισήχθη αποθηκεύεται στον πίνακα solution ως λύση για τον περιορισµό που εξετάζουµε. Σε διαφορετική περίπτωση ο διαζευκτικός όρος που παραβίασε την συνέπεια παύει να είναι διαθέσιµος (αποκλεισµένος) και µε τη βοήθεια της συνάρτησης REMOVE_CONSTRAINTS αφαιρείται η ακµή από τον γράφο. Στη γραµµή 16 η µεταβλητή disjunct αυξάνεται κατά ένα έτσι ώστε αν χρειαστεί να «ξανατρέξει» ο βρόχος while να ελέγξει την επόµενη ανισότητα του περιορισµού. Στις δύο τελευταίες γραµµές της συνάρτησης καθορίζεται το τι θα επιστρέψει. Αν είχαµε επιτυχή εισαγωγή ακµής η consistent είναι true και άρα η συνάρτηση επιστρέφει τον επόµενο περιορισµό. ιαφορετικά η συνάρτηση επιστρέφει τον ίδιο περιορισµό. Ας περάσουµε τώρα στη συνάρτηση backward. 1. Function BACKWARD(count) 2. disjunct=1 3. length=no_of_disjuncts(count) 4. while (disjunct length) do 5. current_domain[count][disjunct]=διαθέσιµος 6. disjunct=disjunct+1 7. end while 8. instantiated_disjunct=solution[count-1] 24

25 9. REMOVE_CONSTRAINT(count-1) 10. current_domain[count-1][instantiated_disjunct]=αποκλεισµένος 11. disjunct=solution[count-1] length= NO_OF_DISJUNCTS(count-1) 13. while (disjunct length and consistent=false) do 14. if (current_domain[count-1][disjunct]=διαθέσιµος) then 15. consistent=true 16. end if 17. end while 18. solution[count-1]=0 19. return count-1 Η συνάρτηση backward δέχεται επίσης ως είσοδο έναν περιορισµό. Συγκεκριµένα δέχεται ως είσοδο έναν περιορισµό του οποίου όλοι οι διαζευκτικοί όροι παραβιάζουν τη συνέπεια του γράφου. Στις πρώτες δύο γραµµές γίνεται ότι και στη forward. Ξεκινά δηλαδή από τον πρώτο διαζευκτικό όρο και βρίσκει τον αριθµό των διαζευκτικών όρων του περιορισµού. Στη συνέχεια, µε τη βοήθεια ενός βρόχου while κάνει όλους τους διαζευκτικούς όρους του περιορισµού διαθέσιµους. Από τη στιγµή που παραβίαζαν τη συνέπεια, η forward είχε µετατρέψει την κατάσταση τους σε αποκλεισµένους. Έπειτα η συνάρτηση ασχολείται µε τον προηγούµενο περιορισµό. Στη γραµµή 8 και µε τη βοήθεια του πίνακα solution βρίσκουµε ποια ανισότητα είχαµε εισάγει στο γράφο και την αποθηκεύουµε στη µεταβλητή instantiated_disjunct. Στη συνέχεια µε τη συνάρτηση REMOVE_CONSTRAINT αφαιρείται από τον γράφο και γίνεται µη διαθέσιµη. Η συνάρτηση βρίσκει τον αµέσως επόµενο διαζευκτικό όρο και τον αριθµό των διαζευκτικών όρων του περιορισµού και µε έναν βρόχο while ελέγχει την διαθεσιµότητα των υπόλοιπων ανισοτήτων. Σε περίπτωση που υπάρχει άλλος διαθέσιµος διαζευκτικός όρος η consistent γίνεται true έτσι 25

26 ώστε µετά το κυρίως πρόγραµµα να καλέσει την forward. Στο τέλος της συνάρτησης η τιµή της solution για τον count-1 περιορισµό γίνεται 0 και η συνάρτηση επιστρέφει τον count-1. Ο αλγόριθµος simple backtracking είναι ένας εξαντλητικός αλγόριθµος. Όπως θα δούµε στους επόµενους αλγόριθµους η απόδοση του µπορεί να αυξηθεί µε τη χρήση δύο «έξυπνων» µεθόδων: του backjumping και του forward checking. 3.2 Ο αλγόριθµος simple backtracking with backjumping Ο αλγόριθµος που θα δούµε στη συνέχεια είναι µια βελτιωµένη έκδοση του προηγούµενου. Αυτό που αλλάζει και κάνει τη διαφορά είναι η χρήση του backjumping. Στο προηγούµενο αλγόριθµο είδαµε πως όταν φτάναµε σε αδιέξοδο ο αλγόριθµος επέστρεφε στον αµέσως προηγούµενο περιορισµό και επέλεγε κάποιον άλλο διαζευκτικό όρο. Η µέθοδος backjumping εντοπίζει ποιος περιορισµός φταίει για το αδιέξοδο και επιστρέφει εκεί. Αυτό που κάνει δηλαδή είναι να πηγαίνει στη πηγή του προβλήµατος. Παρακάτω, και µε τη χρήση παραδείγµατος θα γίνει πλήρως κατανοητός ο τρόπος µε τον οποίο δουλεύει Η µέθοδος backjumping Ας εξηγήσουµε αρχικά ορισµένα πράγµατα σχετικά µε τη πηγή του προβλήµατος που αναφέραµε λίγο πιο πάνω. Επιστρέφουµε στο παράδειγµα 2.2 και βλέπουµε ότι για τους 2 πρώτους περιορισµούς έχουµε εισάγει τους εξής διαζευκτικούς όρους: x 2 -x 1 4 και x 1 -x 3 2. Στη προσπάθεια µας να εισάγουµε για τον τρίτο περιορισµό την ανισότητα x 3 -x 2-7 παραβιάζεται η συνέπεια του γράφου. Αυτό οφείλεται στους διαζευκτικούς όρους που επιλέχθηκαν για τους περιορισµούς 1 και 2. Οι περιορισµοί αυτοί επειδή 26

27 συµµετέχουν στο σχηµατισµό του αρνητικού κύκλου θα αποτελούν το ένοχο σετ του διαζευκτικού όρου που προσπαθούµε να εισάγουµε. Ο αλγόριθµος επιλέγει τον κοντινότερο στον υπό εξέταση περιορισµό και επιστρέφει σε αυτόν. Αφού ολοκληρώσαµε την ορολογία περί ένοχων σετ ας περάσουµε σε ένα παράδειγµα για να δούµε πως ακριβώς λειτουργεί ο αλγόριθµος. Παράδειγµα 3.1 Ας υποθέσουµε πως έχουµε ένα πρόβληµα µε εφτά µεταβλητές και έξι περιορισµούς οι οποίοι είναι: D(1) x 2 -x 1 5 x1-x 4-1 D(2) x 5 -x 4-1 x1-x 3 2 D(3) x 3 -x 2 2 x5-x 2 7 D(4) x 6 -x 5 3 x1-x 2-2 D(5) x 7 -x 2 3 x1-x 7-9 D(6) x 4 -x 6-4 x1-x 3-10 x4-x 5 0 Ο αλγόριθµος αρχικά επιλέγει τους διαζευκτικούς όρους D(1,1), D(2,1), D(3,1), D(4,1) και D(5,1) χωρίς να υπάρχει κάποιο πρόβληµα παραβίασης συνέπειας του γράφου. Ο γράφος του προβλήµατος µέχρι αυτό το σηµείο είναι ο εξής: 27

28 Εικόνα 3.3: Ο γράφος µετά και την επιλογή ακµών για τους 5 πρώτους περιορισµούς Μας µένει λοιπόν η εισαγωγή διαζευκτικού όρου για τον περιορισµό D(6). Προσπαθούµε αρχικά να εισάγουµε τον D(6,1), δηλαδή την ακµή Με τη βοήθεια του σχήµατος βλέπουµε πως κάτι τέτοιο δηµιουργεί τον αρνητικό κύκλο µε συνολικό βάρος -2. Οι υπόλοιπες ακµές που σχηµατίζουν τον κύκλο είναι οι x5-x 4-1 και x 6 -x 5 3 που ανήκουν στους περιορισµούς D(2) και D(4) αντίστοιχα. Άρα το ένοχο σετ του D(6,1) είναι το {D(2),D(4)}. Αφού ο αλγόριθµος απέρριψε τον D(6,1) δοκιµάζει τον D(6,2), δηλαδή την ακµή Και αυτή η ακµή µε τη σειρά της σχηµατίζει κύκλο ( ) µε συνολικό βάρος -3 που είναι αρνητικό. Οι άλλες ακµές του κύκλου είναι οι x2-x 1 5 και x 3 -x 2 5 των περιορισµών D(1) και D(3) αντίστοιχα. Άρα το ένοχο σετ του διαζευκτικού όρου D(6,2) είναι το {D(1),D(3)}. Ο αλγόριθµος δοκιµάζει τελικά την τρίτη ανισότητα του περιορισµού που είναι η ακµή Και εδώ έχουµε αρνητικό κύκλο (αυτή τη φορά δύο κόµβων) που γίνεται εξαιτίας της ακµής x5-x 4-1 του περιορισµού D(2). Άρα το ένοχο σετ του D(6,3) είναι το {D(2)}. Αφού όλοι οι διαζευκτικοί όροι του έκτου περιορισµού παραβιάζουν τη συνέπεια του γράφου έχουµε φτάσει σε αδιέξοδο. Ο simple backtracking σε 28

29 αυτή τη περίπτωση θα επέστρεφε στον D(5), θα αφαιρούσε από τον γράφο την ακµή D(5,1) και θα προσπαθούσε να εισάγει την D(5,2). Και αυτή η προσπάθεια όµως θα αποτύγχανε µε αποτέλεσµα να επιστρέψει στην D(4) κ.ο.κ. Στη ουσία δηλαδή επιστρέφει στον περιορισµό D(5) που δεν ανήκει σε κανένα από τα ένοχα σετ και δεν επηρεάζει στο γεγονός ότι φτάσαµε σε αδιέξοδο. Με τη µέθοδο backjumping ο αλγόριθµος επιστρέφει εκεί που βρίσκεται πραγµατικά το πρόβληµα και λύνει το πρόβληµα µε λιγότερους ελέγχους και σε συντοµότερο χρόνο. Συγκεκριµένα, χρησιµοποιώντας και τα 3 ένοχα σετ που προέκυψαν ({D(2),D(4)}, {D(1),D(3)}, {D(2)}) βρίσκουµε τον περιορισµό που βρίσκεται πιο κοντά στον υπό εξέταση περιορισµό, δηλαδή τον περιορισµό D(6). Στη συγκεκριµένη περίπτωση ο περιορισµός αυτός είναι ο D(4) και ονοµάζεται backjumping point. Ο αλγόριθµος επιστρέφει λοιπόν στο backjumping point και αφαιρεί από τον γράφο τον διαζευκτικό όρο που εισήχθη για τον περιορισµό αυτό, δηλαδή τον D(4,1), και εισάγει τον αµέσως επόµενο περιορισµό, δηλαδή τον D(4,2). Στη συνέχεια προχωρά στους εποµένους περιορισµούς και εισάγει τις ανισότητες D(5,1) και D(6,1). Ο τελικός γράφος που αποτελεί και τη λύση του προβλήµατος φαίνεται ακριβώς παρακάτω. 29

30 Εικόνα 3.4: Ο τελικός γράφος του προβλήµατος Οι συναρτήσεις του αλγόριθµου Πρωτού περάσουµε στις συναρτήσεις του αλγόριθµου, θα πρέπει να επισηµανθούν ορισµένα πράγµατα. Οι δοµές δεδοµένων που χρησιµοποιούνται για αυτόν τον αλγόριθµο είναι ίδιες µε αυτές του προηγούµενου. Η µόνη διαφορά είναι η χρήση µιας νέας δοµής της max_check. Η max_check είναι ένας µονοδιάστατος πίνακας µε dis_num στοιχεία (όσοι δηλαδή και οι περιορισµοί) και χρησιµοποιείται για τον καθορισµό του backjumping point. Αρχικά όλα τα στοιχεία του είναι 0. Αν βρεθεί κατάλληλος διαζευκτικός όρος για έναν περιορισµό D(i) τότε το στοιχείο max_check[i] παίρνει τη τιµή i-1. Σε περίπτωση όµως που για κάποιον περιορισµό φτάσουµε σε αδιέξοδο τότε χρησιµοποιούµε τα ένοχα σετ για να εντοπίσουµε το backjumping point και το στοιχείο του max_check που αντιστοιχεί σε αυτό το περιορισµό παίρνει τη τιµή του backjumping point. Έτσι, αν φτάσουµε σε αδιέξοδο στον περιορισµό D(i), το σηµείο στο οποίο θα 30

31 επιστρέψουµε θα είναι το j=max_check[i]. Οι ακµές που εισήχθαν για τους ενδιάµεσους περιορισµούς αφαιρούνται από τον γράφο. Όσον αφορά τη κύρια συνάρτηση αυτή είναι ίδια µε αυτή που είδαµε για τον αλγόριθµο simple backtracking. Η κύρια συνάρτηση θα είναι ίδια και για τους δύο επόµενους αλγόριθµους και αυτό που θα µελετήσουµε θα είναι οι συναρτήσεις FORWARD και BACKWARD που παρουσιάζουν κάποιες διαφορές. Ο ψευδοκώδικας της FORWARD για αυτόν τον αλγόριθµο είναι η εξής: 1. Function FORWARD(count) 2. consistent=false 3. disjunct=1 4. length=no_of_disjuncts(count) 5. while (disjunct length and consistent=false) do 6. if (current_domain[count][disjunct]=διαθέσιµος) then 7. propagation_result=check_consistency1(count, D(count,disjunct)) 8. if (propagation_result=success) then 9. consistent=true 10. solution[count]=disjunct 11. max_check[count]=count else 13. current_domain[count][disjunct]=αποκλεισµένος 14. REMOVE_CONSTRAINT(count) 15. if (propagation_result > max_check[count]) then 16. max_check[count]=propagation_result 17. end if 18. end if 19. disjunct=disjunct end while 31

32 21. if (consistent=true) then return count else return count Πριν δείξουµε τις διαφορές αυτής της FORWARD µε αυτή του προηγούµενου αλγορίθµου ας επισηµάνουµε αρχικά την σηµαντικότερη διαφορά τους. Σε αυτόν τον αλγόριθµο καλούµε τη συνάρτηση CHECK_CONSISTENCY1 η οποία κάνει ακριβώς ότι και η CHECK_CONSISTENCY µε τη διαφορά ότι αυτή επιστρέφει και τον ένοχο περιορισµό σε περίπτωση που έχουµε ανεπιτυχή εισαγωγή διαζευκτικού όρου. Όσον αφορά την υπόλοιπη συνάρτηση, διαφορές εντοπίζονται σε δύο σηµεία. Το πρώτο σηµείο είναι η σειρά 11 στην οποία ανανεώνουµε τον πίνακα max_check σε περίπτωση που η ακµή που εισήχθη δεν παραβιάζει τη συνέπεια του γράφου. Το δεύτερο σηµείο είναι οι γραµµές Σε περίπτωση που παραβιάζεται η συνέπεια του γράφου ο αλγόριθµος ελέγχει αν η τιµή του ένοχου περιορισµού που επέστρεψε η CHECK_CONSISTENCY1 είναι µεγαλύτερη από την τιµή του max_check για τον υπό εξέταση περιορισµό. Σε αυτή τη περίπτωση ο max_check παίρνει τη τιµή του ένοχου περιορισµού. Αυτό γίνεται έτσι ώστε αν χρειαστεί να κάνουµε backjumping, να επιστρέψουµε στον κοντινότερο µε τον υπό εξέταση περιορισµό. Η συνάρτηση BACKWARD που φαίνεται πιο κάτω, έχει όπως θα δούµε περισσότερες διαφορές από την αντίστοιχη για τον simple backtracking. 1. Function BACKWARD(count) 2. bjpoint=max_check[count] 3. max_check[count]=0 4. disjunct=1 5. length=no_of_disjuncts(count) 6. while (disjunct length) do 7. current_domain[count][disjunct]=διαθέσιµος 8. disjunct=disjunct+1 32

33 9. end while 10. for (j=count-1 downto bjpoint+1) do 11. max_check[j]=0 12. instantiated_disjunct=solution[j] 13. REMOVE_CONSTRAINT(j) 14. solution[j]=0 15. disjunct=1 16. length=no_of_disjuncts(count) 17. while (disjunct length) do 18. current_domain[count][disjunct]=διαθέσιµος 19. disjunct=disjunct end while 21. end for 22. instantiated_disjunct=solution[bjpoint] 23. REMOVE_CONSTRAINT(bjpoint) 24. current_domain[bjpoint][instantiated_disjunct]=αποκλεισµένος 25. disjunct=solution[bjpoint] length=no_of_disjuncts(bjpoint) 27. while (disjunct length and consistent=false) do 28. if (current_domain[bjpoint][disjunct]=διαθέσιµος) then 29. consistent=true 30. end if 31. end while 32. solution[bjpoint]=0 33. return bjpoint Και για αυτή τη συνάρτηση θα αναφέρουµε µόνο τα σηµεία στα οποία υπάρχει διαφορά σε σχέση µε τη συνάρτηση BACKWARD του αλγόριθµου simple backtracking. Η συνάρτηση αυτή καλείται όταν έχουµε φτάσει σε αδιέξοδο για έναν περιορισµό. Με τη βοήθεια της συνάρτησης 33

34 CHECK_CONSISTENCY1 και της FORWARD έχουµε εντοπίσει το backjumping point και το έχουµε καταχωρηµένο στην αντίστοιχη θέση του max_check. Στη γραµµή 2 αποθηκεύεται η τιµή του backjumping point στη µεταβλητή bjpoint και στη γραµµή 3 επαναφέρουµε σε 0 την αντίστοιχη τιµή του max_check για τον υπό εξέταση περιορισµό. Στη συνέχεια, η συνάρτηση θα πρέπει να αναιρέσει όλες τις ενέργειες και τις µεταβλητές του υπό εξέταση περιορισµού, του περιορισµού που αντιστοιχεί στο backjumping point αλλά και όσων περιορισµών παραµβάλονται. Οι γραµµές 6-9 επαναφέρουν την κατάσταση των διαζευκτικών όρων του υπό εξέταση περιορισµού (count). Οι γραµµές επαναφέρουν στην αρχική κατάσταση όλους τους περιορισµούς που παρεµβάλλονται (αυτούς δηλαδή ανάµεσα στους περιορισµού count και bjpoint) ενώ οι υπόλοιπες είναι για τον περιορισµό που δείχνει η µεταβλητή bjpoint. Ο αλγόριθµος αυτός αποτελεί σαφέστατα µια βελτιωµένη έκδοση του simple backtracking. Η χρήση του backjumping βοηθά στο να επιστρέψει ο αλγόριθµος στον υπεύθυνο περιορισµό για το αδιέξοδο. Οι επόµενοι αλγόριθµοι χρησιµοποιώντας τη µέθοδο forward checking προσπαθούν να εντοπίσουν ένα αδιέξοδο προτού αυτό συµβεί. Η διαφορά µεταξύ τους είναι ότι ο ένας χρησιµοποιεί και τη µέθοδο backjumping ενώ ο άλλος όχι. Για το λόγο αυτό θα τους δούµε και τους 2 µαζί στην επόµενη ενότητα 3.3 Οι αλγόριθµοι forward checking και forward checking with backjumping Οι αλγόριθµοι που θα µελετήσουµε σε αυτή την ενότητα είναι ουσιαστικά ίδιοι µε αυτούς που είδαµε πιο πάνω µε τη διαφορά ότι χρησιµοποιείται η µέθοδος forward checking. Συγκεκριµένα πρόκειται για τους αλγόριθµους forward checking και forward checking with backjumping. Για το λόγο αυτό 34

35 θα δοθεί σε αυτήν την ενότητα µεγαλύτερη βαρύτητα στην ανάλυση του forward checking Η µέθοδος forward checking Η µέθοδος αυτή είναι ένας αλγόριθµος που κάνει ελέγχους σε µελλοντικούς περιορισµούς προκειµένου να εντοπίσει το ενδεχόµενο κάποιος από αυτούς τους περιορισµούς να βρεθεί σε αδιέξοδο. Συγκεκριµένα, αντί να ελέγχει τον υπό εξέταση διαζευκτικό όρο αν είναι συνεπής µόνο µε τους παρελθοντικούς κάνει ακριβώς το ίδιο και µε τους µελλοντικούς. Έτσι, όταν γίνει η εισαγωγή ενός διαζευκτικού όρου D(i,j), στη συνέχεια ελέγχουµε τους µελλοντικούς αν είναι συνεπείς µε τον γράφο όπως αυτός έχει προκύψει µετά και την εισαγωγή του D(i,j). Σε περίπτωση που κάποιος παραβιάζει τη συνέπεια αφαιρείται από τον περιορισµό, αφού σε καµιά περίπτωση δεν πρόκειται να επιλεχθεί. Σε περίπτωση που αφαιρεθούν όλοι οι διαζευκτικοί όροι ενός περιορισµού αυτό σηµαίνει πως ο γράφος αυτός οδηγεί σίγουρα σε αδιέξοδο. Για το λόγο αυτό αφαιρείται από τον γράφο ο διαζευκτικός όρος D(i,j) και δοκιµάζουµε τον D(i,j+1). Αν δε βρεθεί κατάλληλη ανισότητα για τον περιορισµό D(i) τότε θα πρέπει να επιστρέψουµε σε κάποιον από τους παρελθοντικούς περιορισµούς. O αλγόριθµος forward checking επιστρέφει στον αµέσως προηγούµενο περιορισµό, δηλαδή τον D(i-1), ενώ ο forward checking with backjumping στον ένοχο περιορισµό όπως δείξαµε στην ενότητα 3.2. Το µεγάλο πλεονέκτηµα αυτής της µεθόδου είναι ο εντοπισµός αδιεξόδου σε πρώιµο στάδιο. Έτσι ο αλγόριθµος δεν αναλώνεται σε εξέταση περιπτώσεων που δεν οδηγούν σε λύση. Το µοναδικό µειονέκτηµα της µεθόδου είναι οι πολλοί έλεγχοι συνέπειας που απαιτούνται αφού για την εισαγωγή ενός διαζευκτικού όρου απαιτείται έλεγχος συνέπειας για όλους τους µελλοντικούς. Όπως γίνεται αντιληπτό, η χρήσης µιας γρήγορης µεθόδου 35

36 για τον έλεγχο συνέπειας µπορεί να βελτιώσει την απόδοση του αλγορίθµου σε σηµαντικό βαθµό. Η επόµενη ενότητα περιέχει παράδειγµα του τρόπου λειτουργείας των δύο αλγορίθµων µε σκοπό να γίνει πλήρως κατανοητή µε η µέθοδος forward checking Παράδειγµα Ας υποθέσουµε ότι έχουµε ένα πρόβληµα µε 5 µεταβλητές και 6 περιορισµούς. Οι περιορισµοί είναι οι εξής: D(1) x 2 -x 1 5 x3-x 4 6 D(2) x 3 -x 1 4 x3-x 4 5 D(3) x 5 -x 4-6 x3-x 4 4 D(4) x 1 -x 3 0 x3-x 4 2 D(5) x 3 -x 5 2 x1-x 3-6 D(6) x 1 -x 2-8 x4-x 3 1 Και οι δύο αλγόριθµοι έχουν αρχικά την ίδια συµπεριφορά. Από τον περιορισµό D(1) επιλέγουµε τον πρώτο διαζευκτικό όρο (x 2 -x 1 5). Κάνοντας forward checking βλέπουµε ότι ο διαζευκτικός όρος D(6,1) παραβιάζει τη συνέπεια του έως τώρα γράφου αφού σχηµατίζεται ο κύκλος δύο κόµβων µε συνολικό βάρος -3 (αυτή τη στιγµή ο γράφος αποτελείται µόνο από µία ακµή, την ). Για το λόγο αυτό η ανισότητα D(6,1) αφαιρείται. Στο δεύτερο περιορισµό ξαναπαίρνουµε την πρώτη ανισότητα (x 3 -x 1 4) και ελέγχουµε αν κάποιος από τους διαζευκτικούς όρους των µελλοντικών περιορισµών παραβιάζει τη συνέπεια του γράφου. Και πάλι σχηµατίζεται αρνητικός κύκλος αυτή τη φορά εξαιτίας του D(5,2) ο οποίος αφαιρείται και αυτός από το πρόβληµα. Για τους περιορισµούς D(3) και D(4) επιλέγουµε τις ανισότητες D(3,1) και D(4,1) αντίστοιχα. Το πρόβληµα αυτή τη στιγµή µετά 36

37 και την αφαίρεση των διαζευκτικών όρων αλλά και ο γράφος φαίνονται ακριβώς πιο κάτω. Σκιασµένοι είναι οι διαζευκτικοί όροι που επιλέχθηκαν έως τώρα. D(1) x 2 -x 1 5 x3-x 4 6 D(2) x 3 -x 1 4 x3-x 4 5 D(3) x 5 -x 4-6 x3-x 4 4 D(4) x 1 -x 3 0 x3-x 4 2 D(5) x 3 -x 5 2 D(6) x 4 -x 3 1 Εικόνα 3.5: Ο γράφος του προβλήµατος µετά από 4 βήµατα Φτάνοντας στον περιορισµό D(5) επιλέγουµε τον µοναδικό εναποµείναντα διαζευκτικό όρο, τον x 3 -x 5 2. Προσθέτουµε δηλαδή στον παραπάνω γράφο την ακµή Κάνοντας forward checking βλέπουµε πως η ακµή D(6,2) δηµιουργεί τον αρνητικό κύκλο ιαγράφοντας όµως και αυτή αφήνουµε τον περιορισµό D(6) χωρίς διαζευκτικούς όρους. Επίσης, επειδή έχει διαγραφεί ο D(5,2) ο αλγόριθµος θα πρέπει να επιστρέψει σε κάποιον από τους παρελθοντικούς. Ο αλγόριθµος forward checking (χωρίς 37

38 backjumping) θα επέστρεφε στον τέταρτο περιορισµό και θα αναιρούσε την εισαγωγή της D(4,1), δηλαδή της ακµής 3 1, η οποία δε συµµετέχει στον αρνητικό κύκλο και φταίει που o D(6) µένει άδειος. Αντίθετα, ο forward checking with backjumping επιστρέφει στη πηγή του προβλήµατος. Το αδιέξοδο οφείλεται στο γεγονός ότι δεν µπορούσε να βρεθεί συνεπής διαζευκτικός όρος για τον περιορισµό D(5). Η ανισότητα D(5,2) αποκλείστηκε από το forward check της D(2,1). Άρα το ένοχο σετ της είναι το {D(2)}. Η D(5,1) αποκλείστηκε επειδή άφηνε τον περιορισµό D(6) χωρίς διαζευκτικούς όρους. Άρα οι υπεύθυνοι διαζευκτικοί όροι για τον αποκλεισµό της D(5,1) είναι αυτοί που µε την εισαγωγή τους συµµετείχαν στο «άδειασµα» του D(6). O D(6,1) αφαιρέθηκε από το forward check του D(1,1). O D(6,2) αφαιρέθηκε επειδή δηµιουργούσε αρνητικό κύκλο µε τις ακµές D(3,1) και D(5,1). Συνεπώς οι υπεύθυνοι περιορισµοί για τον αποκλεισµό του D(6,1), άρα και του D(5,1),είναι οι D(1) και D(3). Από τα δύο ένοχα σετ ο περιορισµός που βρίσκεται πιο κοντά στον υπό εξέταση περιορισµό (D(5)) είναι ο D(3). Ο αλγόριθµος θα επιστρέψει στον περιορισµό D(3) (αφού αναιρέσει πρώτα όλες τις εισαγωγές στους περιορισµούς D(5) και D(4)) και αφού αφαιρέσει την ακµή D(3,1) θα εισάγει την αµέσως επόµενη δηλαδή την D(3,2). Στη συνέχεια ο αλγόριθµος θα εισάγει τις ακµές D(4,1), D(5,1) και D(6,2) και θα τερµατίσει. Ο τελικός γράφος του προβλήµατος φαίνεται ακριβώς πιο κάτω. 0 38

39 Εικόνα 3.6: Ο γράφος µετά τον τερµατισµό του αλγόριθµου οµές δεδοµένων και µεταβλητές Οι δοµές δεδοµένων και οι µεταβλητές που απαιτούνται για τους δύο αυτούς αλγορίθµούς είναι ίδιες µε αυτές που περιγράφονται στην ενότητα και αφορούν τους αλγορίθµους simple backtracking και simple backtracking with backjumping. Επειδή όµως είναι απαραίτητη η αποθήκευση περαιτέρω πληροφοριών για το forward checking, στην ενότητα αυτή θα δούµε ποιες δοµές και µεταβλητές χρησιµοποιούµε. Για κάθε περιορισµό D(i) θα πρέπει ο αλγόριθµος να κρατά πληροφορίες για δύο πράγµατα: Θα πρέπει να αποθηκεύουµε τους διαζευκτικούς όρους κάθε περιορισµού που διαγράφηκαν λόγω forward check παρελθοντικών περιορισµών. 39

40 Θα πρέπει όταν εισάγουµε µια ανισότητα ενός περιορισµού να αποθηκεύουµε τους περιορισµούς που επηρεάζει το forward check αυτής. Επίσης θα πρέπει να αλλάξουµε τη σηµασιολογία του πίνακα current_domain. Για τους αλγόριθµους που εξετάζουµε αυτή τη στιγµή ο current_domain κρατά πληροφορίες που έχουν να κάνουν µε το φιλτράρισµα. Ας υποθέσουµε ότι προσπαθούµε να εισάγουµε τον διαζευκτικό όρο D(i,j) και ότι µε το forward check βρίσκουµε πως πρέπει να αφαιρεθεί ο µελλοντικός διαζευκτικός όρος D(k,l). Σε αυτή τη περίπτωση η τιµή του current_domain[k,l] είναι ίση µε i. Με αυτό τον τρόπο ξέρουµε πως η ανισότητα D(k,l) αφαιρέθηκε εξαιτίας του φιλτραρίσµατος της ανισότητας που εισάγαµε για τον περιορισµό D(i). Οι υπόλοιπες νέες δοµές είναι οι εξής: future_element: για κάθε περιορισµό κρατάµε µια λίστα µε τους περιορισµούς µε τους οποίους αυτός έρχεται σε «ρήξη» όταν κάνει forward check. Αν για παράδειγµα ο περιορισµός j βρίσκεται στη λίστα του i αυτό σηµαίνει πως κάποιος διαζευκτικός όρος του D(j) αφαιρέθηκε λόγω του φιλτραρίσµατος που έγινε στην εισαγωγή ακµής για τον D(i). future_fc: είναι ένας µονοδιάστατος πίνακας µε dis_num στοιχεία. Κάθε στοιχείο του πίνακα είναι µια λίστα τύπου future_element. Οι δύο παραπάνω δοµές αφορούν και τους δύο αλγορίθµους. Αντίθετα, οι δοµές που ακολουθούν αφορούν µόνο τον αλγόριθµο forward checking with backjumping. past_element: για κάθε περιορισµό κρατάµε µια λίστα η οποία περιέχει παρελθοντικούς περιορισµούς που κατά τη διάρκεια του forward check ήρθαν σε «ρήξη» µε αυτόν. Αν για παράδειγµα ο 40

41 περιορισµός j βρίσκεται στη λίστα του i αυτό σηµαίνει πως στην εισαγωγή ακµής και το φιλτράρισµα του παρελθοντικού περιορισµού D(j) κάποιος διαζευκτικός όρος του D(i) αφαιρέθηκε. past_fc: είναι ένας µονοδιάστατος πίνακας µε dis_num στοιχεία. Κάθε στοιχείο του πίνακα είναι µια λίστα τύπου past_element. Επίσης θα πρέπει να αναφέρουµε ότι για τον forward checking with backjumping χρησιµοποιείται ο µονοδιάστατος πίνακας max_check, µία δοµή άκρως απαραίτητη για το καθορισµό του backjump point που την είδαµε στον αλγόριθµο simple backtracking with backjumping Οι συναρτήσεις των δύο αλγορίθµων Σε αυτή την ενότητα θα δούµε τις κυριότερες συναρτήσεις που είναι απαραίτητες για τη σωστή λειτουργία των δύο αλγορίθµων. Σε αντίθεση µε τους προηγούµενους αλγόριθµους, εδώ θα δούµε εκτός από τις FORWARD και BACKWARD άλλη µία συνάρτηση: τη CHECK_FORWARD. Η συνάρτηση αυτή είναι ίδια και για τους δύο αλγορίθµους µε ορισµένες µικροδιαφορές. 1. Function CHECK_FORWARD (future_disjunction, count) 2. disjunct=1 3. length=no_of_disjuncts(future_disjunction) 4. while (disjunct length) do 5. if (current_domain[future_disjunction][disjunct]=διαθέσιµος) then 6. propagation_result=check_consistency2(future_disjunction, 7. D(future_disjunction, disjunct) 8. if (propagation_result=inconsistency) then 9. current_domain[future_disjunction][disjunct]=count 41

42 10. end if 11. REMOVE_CONSTRAINT(future_disjunction) 12. end if 13. disjunct=disjunct end while 15. add future_disjunction to future_fc[count] 16. if (for disjunct=1,,length 17. current_domain[future_disjunction][disjunct] διαθέσιµος 18. return false 19. else return true Η συνάρτηση CHECK_FORWARD χρησιµοποιείται για το forward_checking. έχεται ως ορίσµατα τον περιορισµό για τον οποίο γίνεται το φιλτράρισµα (count) και έναν µελλοντικό περιορισµό ο οποίος φιλτράρεται (future_disjunction). Ως έξοδο επιστρέφει false στη περίπτωση που όλοι οι διαζευκτικοί όροι του µελλοντικού περιορισµού αφαιρεθούν (αν µείνει άδειος δηλαδή ο περιορισµός) ενώ σε διαφορετική περίπτωση επιστρέφει true. Η συνάρτηση ξεκινά από τον πρώτο διαζευκτικό όρο του µελλοντικού περιορισµού και τους ελέγχει έναν προς έναν αν παραβιάζουν τη συνέπεια του γράφου όπως αυτός έχει διαµορφωθεί µετά και την επιλογή ακµής για τον περιορισµό count. Αν κάποια από τις ανισότητες είναι ασυνεπής τότε ενηµερώνεται κατάλληλα ο πίνακας current_domain. Επειδή ο έλεγχος συνέπειας γίνεται µε τη βοήθεια της IDPC, η οποία για να ελέγξει µια ανισότητα την εισάγει στον γράφο, καλείται στη γραµµή 11 η REMOVE_CONSTRAINT. Πρόκειται για µια συνάρτηση που αφαιρεί την ακµή ενός περιορισµού από τον γράφο ενηµερώνοντας ταυτόχρονα και τις απαραίτητες δοµές. Σε περίπτωση που έστω και ένας διαζευκτικός όρος του µελλοντικού περιορισµού αφαιρεθεί, ενηµερώνεται ο πίνακας future_fc. Στις τελευταίες τέσσερις γραµµές τις συναρτήσεις καθορίζεται η έξοδος της. Αν αφαιρέθηκαν 42

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

Αλγόριθµοι CSPs Κώδικας. Μάθηµα Τεχνητής Νοηµοσύνης ΥΣ02 Χειµερινό εξάµηνο Αλγόριθµοι CSPs Κώδικας Μάθηµα Τεχνητής Νοηµοσύνης ΥΣ02 Χειµερινό εξάµηνο 2008-2009 CSPLIB Βιβλιοθήκη µε ρουτίνες για την επίλυση δυαδικών προβληµάτων ικανοποίησης περιορισµών http://ai.uwaterloo.ca/~vanbeek/software.h

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ ΘΕΜΑ ο (2.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις Παρασκευή 9 Ιανουαρίου 2007 5:00-8:00 εδοµένου ότι η

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

1 Συνοπτική ϑεωρία. 1.1 Νόµοι του Προτασιακού Λογισµού. p p p. p p. ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών

1 Συνοπτική ϑεωρία. 1.1 Νόµοι του Προτασιακού Λογισµού. p p p. p p. ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών HY-180: Λογική Εαρινό Εξάµηνο 2016 Κ. Βάρσος Πρώτο Φροντιστήριο 1 Συνοπτική ϑεωρία 1.1 Νόµοι του Προτασιακού Λογισµού 1. Νόµος ταυτότητας : 2. Νόµοι αυτοπάθειας

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΙΑΧΕΙΡΙΣΗ Ε ΟΜΕΝΩΝ ΚΑΙ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ (Β ΕΞΑΜΗΝΟ) ιδάσκων: Επ. Καθηγητής Γρηγόρης Χονδροκούκης ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

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

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

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

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

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

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

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

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

Αλγόριθµοι Οπισθοδρόµησης

Αλγόριθµοι Οπισθοδρόµησης Αλγόριθµοι Οπισθοδρόµησης Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Η οπισθοδρόµηση στο σχεδιασµό αλγορίθµων Το πρόβληµα των σταθερών γάµων και ο αλγόριθµος των Gale-Shapley Το πρόβληµα

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

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

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

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

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

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Με µαύρο τα κοµµάτια από την εκφώνηση. Με µπλε απαντήσεις κι επεξηγήσεις. Με κόκκινο τα πιο συχνά λάθη που είδαµε. Άσκηση Παρασκευής ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Σε αυτή την άσκηση θα γράψετε ένα πρόγραµµα

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

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram. Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram

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

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

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

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

Στην συνέχεια και στο επόµενο παράθυρο η εφαρµογή µας ζητάει να εισάγουµε το Username και το Password το οποίο σας έχει δοθεί από τον ΕΛΚΕ.

Στην συνέχεια και στο επόµενο παράθυρο η εφαρµογή µας ζητάει να εισάγουµε το Username και το Password το οποίο σας έχει δοθεί από τον ΕΛΚΕ. 1. Πρόσβαση Οδηγίες προγράµµατος διαχείρισης ανάλυσης χρόνου εργασίας (Time Sheet) Για να ξεκινήσετε την εφαρµογή, από την κεντρική σελίδα του ΕΛΚΕ (www.elke.aua.gr) και το µενού «ιαχείριση», Time Sheet

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Triggers, Stored procedures Γιώργος Μαρκοµανώλης Περιεχόµενα Triggers-Ενηµέρωση δεδοµένων άλλων πινάκων... 1 Ασφάλεια...

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

4.3. Γραµµικοί ταξινοµητές

4.3. Γραµµικοί ταξινοµητές Γραµµικοί ταξινοµητές Γραµµικός ταξινοµητής είναι ένα σύστηµα ταξινόµησης που χρησιµοποιεί γραµµικές διακριτικές συναρτήσεις Οι ταξινοµητές αυτοί αναπαρίστανται συχνά µε οµάδες κόµβων εντός των οποίων

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε: Συµβολισµός Ω( ) Τάξη των Συναρτήσεων () Εκτίµηση Πολυπλοκότητας Αλγορίθµων Ορέστης Τελέλης telelis@unipi.gr Ορισµός. Εστω συναρτήσεις: f : N R και g : N R η f(n) είναι Ω( g(n) ) αν υπάρχουν σταθερές C

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

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

Σημειωματάριο Δευτέρας 4 Δεκ. 2017 Σημειωματάριο Δευτέρας 4 Δεκ. 2017 Ο αλγόριθμος Floyd-Warshall για την έυρεση όλων των αποστάσεων σε ένα γράφημα με βάρη στις ακμές Συνεχίσαμε σήμερα το θέμα της προηγούμενης Τετάρτης. Έχουμε ένα γράφημα

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

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

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

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

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop. Η δοµή «Shift register» 1. Η δοµή «Shift register» εισάγεται στο βρόγχο for-loop αλλά και σε άλλους βρόγχους που θα δούµε στη συνέχεια, όπως ο βρόγχος «While loop». Ο τρόπος εισαγωγής και λειτουργίας της

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

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

ΘΕΑΝΩ ΕΡΙΦΥΛΗ ΜΟΣΧΟΝΑ ΣΥΜΠΛΗΡΩΜΑΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΘΕΑΝΩ ΕΡΙΦΥΛΗ ΜΟΣΧΟΝΑ ΣΥΜΠΛΗΡΩΜΑΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ Πρόβληµα µεταφοράς Η ανάπτυξη και διαµόρφωση του προβλήµατος µεταφοράς αναπτύσσεται στις σελίδες 40-45 του βιβλίου των

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ ΘΕΜΑ ο 2.5 µονάδες ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις 7 Ιανουαρίου 2005 ιάρκεια εξέτασης: 5:00-8:00 Έστω ότι

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

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

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

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε

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

Kεφάλαιο 10. Πόσα υποπαίγνια υπάρχουν εδώ πέρα; 2 υποπαίγνια.

Kεφάλαιο 10. Πόσα υποπαίγνια υπάρχουν εδώ πέρα; 2 υποπαίγνια. Kεφάλαιο 10 Θα δούµε ένα δύο παραδείγµατα να ορίσουµε/ µετρήσουµε τα υποπαίγνια και µετά θα λύσουµε και να βρούµε αυτό που λέγεται τέλεια κατά Nash ισορροπία. Εδώ θα δούµε ένα παίγνιο όπου έχουµε µια επιχείρηση

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

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

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

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

5.1 Ιδιοτιµές και Ιδιοδιανύσµατα

5.1 Ιδιοτιµές και Ιδιοδιανύσµατα Κεφάλαιο 5 Ιδιοτιµές και Ιδιοδιανύσµατα 5 Ιδιοτιµές και Ιδιοδιανύσµατα Αν ο A είναι ένας n n πίνακας και το x είναι ένα διάνυσµα στον R n, τότε το Ax είναι και αυτό ένα διάνυσµα στον R n Συνήθως δεν υπάρχει

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

Σηµειώσεις στις σειρές

Σηµειώσεις στις σειρές . ΟΡΙΣΜΟΙ - ΓΕΝΙΚΕΣ ΕΝΝΟΙΕΣ Σηµειώσεις στις σειρές Στην Ενότητα αυτή παρουσιάζουµε τις βασικές-απαραίτητες έννοιες για την µελέτη των σειρών πραγµατικών αριθµών και των εφαρµογών τους. Έτσι, δίνονται συστηµατικά

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

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Εισαγωγή στις έννοιες Αλγόριθµοι και Πολυπλοκότητα, Οργάνωση Δεδοµένων και Δοµές Δεδοµένων Χρήσιµοι µαθηµατικοί

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

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

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

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

Σχήµα 4.1: Εισαγωγή βρόγχου while-loop.

Σχήµα 4.1: Εισαγωγή βρόγχου while-loop. Ο βρόγχος While-loop 1. Ο βρόγχος while-loop εκτελείται έως ότου ικανοποιηθεί µία προκαθορισµένη συνθήκη. 2. Ο αριθµός των επαναλήψεων ενός βρόγχου while-loop δεν είναι εκ των προτέρων προκαθορισµένος,

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

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ ΤΑΞΗ: ΚΑΤΕΥΘΥΝΣΗ: ΜΑΘΗΜΑ: ΘΕΜΑ Α Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ (2ος Κύκλος) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ηµεροµηνία: Παρασκευή 25 Απριλίου 2014 ιάρκεια Εξέτασης: 3 ώρες ΕΚΦΩΝΗΣΕΙΣ

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

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 / ένδρα Ενα δένδρο είναι

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

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

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ ΘΕΜΑ ο 2.5 µονάδες ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις 2 Σεπτεµβρίου 2005 5:00-8:00 Σχεδιάστε έναν αισθητήρα ercetro

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

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

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

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

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

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

ΠροσδιορισµόςΒέλτιστης Λύσης στα Προβλήµατα Μεταφοράς Η µέθοδος Stepping Stone

ΠροσδιορισµόςΒέλτιστης Λύσης στα Προβλήµατα Μεταφοράς Η µέθοδος Stepping Stone ΠροσδιορισµόςΒέλτιστης Λύσης στα Προβλήµατα Μεταφοράς Η µέθοδος Stepping Stone Hµέθοδος Stepping Stoneείναι µία επαναληπτική διαδικασία για τον προσδιορισµό της βέλτιστης λύσης σε ένα πρόβληµα µεταφοράς.

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ 1. Ποιες από τις παρακάτω εντολές είναι σωστές; α) if A + B

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

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΙ ΠΑΤΡΑΣ ΤΕΙ ΠΑΤΡΑΣ ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΙ ΠΑΤΡΑΣ ΤΕΙ ΠΑΤΡΑΣ ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Α Κ Α Η Μ Α Ι Κ Ο Ε Τ Ο Σ 2 0 1 1-2 0 1 2 ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT Ο συγκεκριµένος οδηγός για το πρόγραµµα

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

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

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

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση

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

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1 Επειδή αρκετοί εξακολουθείτε να βάζετε σχόλια στην ίδια γραµµή αλλά πολύ πιο "δεξιά" από τον κώδικα που σχολιάζουν, δείτε παρακάτω πώς µοιάζει ένα τέτοιο πρόγραµµα σε συµβατικό terminal. Όπως έχουµε πει

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε Οµοφωνία σε σύστηµα µε αϖοτυχίες κατάρρευσης διεργασιών Παναγιώτα Φατούρου Κατανεµηµένα Συστήµατα 1 Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες

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

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

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

Ελάχιστα Γεννητορικά ένδρα

Ελάχιστα Γεννητορικά ένδρα λάχιστα Γεννητορικά ένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος του Prim και ο αλγόριθµος του Kruskal για εύρεση λάχιστων Γεννητορικών ένδρων ΠΛ 23 οµές εδοµένων και Αλγόριθµοι

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο

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

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

char name[5]; /* define a string of characters */ Συµβολοσειρές (Strings) Συµβολοσειρά (string) είναι µια σειρά αλφαριθµητικών χαρακτήρων (γενικά εκτυπώσιµων συµβόλων ASCII). Όταν λέµε σειρά εννοούµε διαδοχικές θέσεις µνήµης που µπορούν να αντιµετωπισθούν

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ ΘΕΜΑ 1 ο (2.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις 21 Σεπτεµβρίου 2004 ιάρκεια: 3 ώρες Το παρακάτω σύνολο

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

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

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

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

Δυναμική ενέργεια στο βαρυτικό πεδίο. Θετική ή αρνητική;

Δυναμική ενέργεια στο βαρυτικό πεδίο. Θετική ή αρνητική; ράφει το σχολικό βιβλίο: Δυναμική ενέργεια στο βαρυτικό πεδίο. Θετική ή αρνητική; Μια πρώτη ένσταση θα µπορούσε να διατυπωθεί, για την απουσία της δυναµικής ενέργειας από τον παραπάνω ορισµό. ιατί να µην

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

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

ΚΕΦΑΛΑΙΟ 4 ΤΟ ΕΡΓΑΛΕΙΟ SOLVER ΚΕΦΑΛΑΙΟ 4 ΤΟ ΕΡΓΑΛΕΙΟ SOLVER 4.1. ΕΙΣΑΓΩΓΗ Με την "Επίλυση", µπορείτε να βρείτε τη βέλτιστη τιµή για τον τύπο ενός κελιού το οποίο ονοµάζεται κελί προορισµού σε ένα φύλλο εργασίας. Η "Επίλυση" λειτουργεί

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

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

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

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

ΠΡΟΒΛΗΜΑΤΑ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗΣ

ΠΡΟΒΛΗΜΑΤΑ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗΣ ΠΡΟΒΛΗΜΑΤΑ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗΣ Ελαχιστοποίηση κόστους διατροφής Ηεπιχείρηση ζωοτροφών ΒΙΟΤΡΟΦΕΣ εξασφάλισε µια ειδική παραγγελίααπό έναν πελάτη της για την παρασκευή 1.000 κιλών ζωοτροφής, η οποία θα πρέπει

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

Ακρότατα υπό συνθήκη και οι πολλαπλασιαστές του Lagrange

Ακρότατα υπό συνθήκη και οι πολλαπλασιαστές του Lagrange 64 Ακρότατα υπό συνθήκη και οι πολλαπλασιαστές του Lagrage Ας υποθέσουµε ότι ένας δεδοµένος χώρος θερµαίνεται και η θερµοκρασία στο σηµείο,, Τ, y, z Ας υποθέσουµε ότι ( y z ) αυτού του χώρου δίδεται από

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

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

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

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

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

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΙΑΤΜΗΜΑΤΙΚΟ ΠΜΣ «ΜΑΘΗΜΑΤΙΚΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΤΩΝ ΑΠΟΦΑΣΕΩΝ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ 2006-2007 2η Σειρά Ασκήσεων ΑΠΑΝΤΗΣΕΙΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΙΑΤΜΗΜΑΤΙΚΟ ΠΜΣ «ΜΑΘΗΜΑΤΙΚΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΤΩΝ ΑΠΟΦΑΣΕΩΝ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ 2006-2007 2η Σειρά Ασκήσεων ΑΠΑΝΤΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΙΑΤΜΗΜΑΤΙΚΟ ΠΜΣ «ΜΑΘΗΜΑΤΙΚΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΤΩΝ ΑΠΟΦΑΣΕΩΝ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ 2006-2007 2η Σειρά Ασκήσεων ΑΠΑΝΤΗΣΕΙΣ 1. ίνεται το γνωστό πρόβληµα των δύο δοχείων: «Υπάρχουν δύο δοχεία

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

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Περίληψη Επίλυση προβληµάτων χρησιµοποιώντας Greedy Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης

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

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

ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΘΕΜΑ ο (.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις Πέµπτη 7 Ιανουαρίου 8 5:-8: Σχεδιάστε έναν αισθητήρα (perceptron)

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες

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

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Διπλωματική Εργασία Μεταπτυχιακού Προγράμματος στην Εφαρμοσμένη Πληροφορική Κατεύθυνση: Συστήματα Υπολογιστών

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

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

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Η πλέον γνωστή και περισσότερο χρησιµοποιηµένη µέθοδος για την επίλυση ενός γενικού προβλήµατος γραµµικού προγραµµατισµού, είναι η µέθοδος Simplex η οποία αναπτύχθηκε

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

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

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ: ΚΑΤΕΥΘΥΝΣΗ: ΜΑΘΗΜΑ: ΘΕΜΑ Α Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ (2ος Κύκλος) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ηµεροµηνία: Παρασκευή 25 Απριλίου 2014 ιάρκεια Εξέτασης: 3 ώρες ΕΚΦΩΝΗΣΕΙΣ

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

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες:

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες: Άσκηση 5Α_5 26/3/2003 11.5. Άσκηση 5A - [αναγνώριση αντικειµένων-διάγραµµα κλάσεων] [Σε αντικατάσταση της άσκησης 5 του κεφαλαίου 11] 11.5.1. Περιγραφή Η άσκηση αυτή είναι η πρώτη από µία σειρά ασκήσεων

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

Κεφάλαιο 5 Οι χώροι. Περιεχόµενα 5.1 Ο Χώρος. 5.3 Ο Χώρος C Βάσεις Το Σύνηθες Εσωτερικό Γινόµενο Ασκήσεις

Κεφάλαιο 5 Οι χώροι. Περιεχόµενα 5.1 Ο Χώρος. 5.3 Ο Χώρος C Βάσεις Το Σύνηθες Εσωτερικό Γινόµενο Ασκήσεις Σελίδα 1 από 6 Κεφάλαιο 5 Οι χώροι R και C Περιεχόµενα 5.1 Ο Χώρος R Πράξεις Βάσεις Επεξεργασµένα Παραδείγµατα Ασκήσεις 5. Το Σύνηθες Εσωτερικό Γινόµενο στο Ορισµοί Ιδιότητες Επεξεργασµένα Παραδείγµατα

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΖΩΓΡΑΦΟΥ 157 73, ΑΘΗΝΑ ΕΒΓ - ΙΠΛ-2003-1 20 Ιανουαρίου 2003 Σύγκριση Αλγορίθµων

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

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε µια στοίβα και να καλέσετε τις 5 βασικές

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

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

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

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

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

Γραµµική Άλγεβρα. Εισαγωγικά. Μέθοδος Απαλοιφής του Gauss Γραµµική Άλγεβρα Εισαγωγικά Υπάρχουν δύο βασικά αριθµητικά προβλήµατα στη Γραµµική Άλγεβρα. Το πρώτο είναι η λύση γραµµικών συστηµάτων Aλγεβρικών εξισώσεων και το δεύτερο είναι η εύρεση των ιδιοτιµών και

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

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

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ Επιστήμη των Αποφάσεων, Διοικητική Επιστήμη

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ Επιστήμη των Αποφάσεων, Διοικητική Επιστήμη ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ Επιστήμη των Αποφάσεων, Διοικητική Επιστήμη 5 ο Εξάμηνο 4 ο ΜΑΘΗΜΑ Δημήτρης Λέκκας Επίκουρος Καθηγητής dlekkas@env.aegean.gr Τμήμα Στατιστικής & Αναλογιστικών-Χρηματοοικονομικών Μαθηματικών

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

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

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

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

Εισαγωγή στην επιστήµη των υπολογιστών. Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών

Εισαγωγή στην επιστήµη των υπολογιστών. Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών Εισαγωγή στην επιστήµη των υπολογιστών Υπολογιστές και Δεδοµένα Κεφάλαιο 3ο Αναπαράσταση Αριθµών 1 Δεκαδικό και Δυαδικό Σύστηµα Δύο κυρίαρχα συστήµατα στο χώρο των υπολογιστών Δεκαδικό: Η βάση του συστήµατος

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

o AND o IF o SUMPRODUCT

o AND o IF o SUMPRODUCT Πληροφοριακά Εργαστήριο Management 1 Information Συστήματα Systems Διοίκησης ΤΕΙ Τμήμα Ελεγκτικής Ηπείρου Χρηματοοικονομικής (Παράρτημα Πρέβεζας) και Αντικείµενο: Μοντελοποίηση προβλήµατος Θέµατα που καλύπτονται:

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

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ουρές προτεραιότητας - Προσοµοίωση της λειτουργίας ενός print server Σκοπός

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

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

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

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

2 Αποδείξεις. 2.1 Εξαντλητική µέθοδος. Εκδοση 2005/03/22. Υπάρχουν πολλών ειδών αποδείξεις. Εδώ ϑα δούµε τις πιο κοινές:

2 Αποδείξεις. 2.1 Εξαντλητική µέθοδος. Εκδοση 2005/03/22. Υπάρχουν πολλών ειδών αποδείξεις. Εδώ ϑα δούµε τις πιο κοινές: 2 Αποδείξεις Υπάρχουν πολλών ειδών αποδείξεις. Εδώ ϑα δούµε τις πιο κοινές: Εκδοση 2005/03/22 Εξαντλητική µέθοδος ή µέθοδος επισκόπησης. Οταν το πρόβληµα έχει πεπερασµένες αριθµό περιπτώσεων τις εξετάζουµε

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

Εισαγωγή στην επιστήµη των υπολογιστών. Αναπαράσταση Αριθµών

Εισαγωγή στην επιστήµη των υπολογιστών. Αναπαράσταση Αριθµών Εισαγωγή στην επιστήµη των υπολογιστών Αναπαράσταση Αριθµών 1 Δεκαδικό και Δυαδικό Σύστηµα Δύο κυρίαρχα συστήµατα στο χώρο των υπολογιστών Δεκαδικό: Η βάση του συστήµατος είναι το 10 αναπτύχθηκε τον 8

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

Κεφάλαιο 2. Παραγοντοποίηση σε Ακέραιες Περιοχές

Κεφάλαιο 2. Παραγοντοποίηση σε Ακέραιες Περιοχές Κεφάλαιο Παραγοντοποίηση σε Ακέραιες Περιοχές Γνωρίζουµε ότι στο Ÿ κάθε στοιχείο εκτός από το 0 και τα ± γράφεται ως γινόµενο πρώτων αριθµών κατά τρόπο ουσιαστικά µοναδικό Από τη Βασική Άλγεβρα ξέρουµε

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

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Συναρτήσεις ΣΥΝΑΡΤΗΣΕΙΣ 1.1. Ο λόγος ύπαρξης των συναρτήσεων Όπως είδαµε µία διαδικασία µπορεί να υπολογίζει περισσότερα από ένα αποτελέσµατα τα

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε Άπληστους Αλγόριθµους Στοιχεία άπληστων αλγορίθµων Το πρόβληµα επιλογής εργασιών ΕΠΛ 232

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ 1ο Α. 1. Να αναφέρετε ονοµαστικά τα κριτήρια που πρέπει απαραίτητα

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΕΠΛ 035 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΓΙΑ ΗΛΕΚΤΡΟΛΟΓΟΥΣ ΜΗΧΑΝΙΚΟΥΣ ΚΑΙ ΜΗΧΑΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΩΝ Ακαδηµαϊκό έτος 2017-2018 Υπεύθυνος εργαστηρίου: Γεώργιος

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

HY Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο. Φροντιστήριο 6

HY Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο. Φροντιστήριο 6 HY-180 - Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο 2015-2016 Φροντιστήριο 6 Α) ΘΕΩΡΙΑ Μέθοδος Επίλυσης (Resolution) Στη μέθοδο της επίλυσης αποδεικνύουμε την ικανοποιησιμότητα ενός συνόλου προτάσεων,

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