Επεξεργασία Ερωτημάτων Κορυφογραμμής σε Περιβάλλον Map/Reduce

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

Download "Επεξεργασία Ερωτημάτων Κορυφογραμμής σε Περιβάλλον Map/Reduce"

Transcript

1 Επεξεργασία Ερωτημάτων Κορυφογραμμής σε Περιβάλλον Map/Reduce ΓΚΟΥΤΑ ΒΑΣΙΛΙΚΗ ΑΕΜ: 424 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Πληροφορικής Μεταπτυχιακό Πρόγραμμα Σπουδών Επιβλέπων Καθηγητής: Παπαδόπουλος Απόστολος Φεβρουάριος 2013

2

3 Περιεχόμενα 1 Εισαγωγή 5 2 Kατανεμημένο Περιβάλλον Προγραμματισμού MapReduce Λειτουργία MapReduce Παράδειγμα Χρήσης στο Hadoop Word Count Τεχνική Secondary Sorting Αλγόριθμοι Εύρεσης Skyline Block Nested Loop Sort Filter Skyline Divide and Conquer Branch and Bound Skylines σε Περιβάλλον MapReduce 31 5 Νέοι Αλγόριθμοι Αλγόριθμος Skyline-Baseline Αλγόριθμος Skyline-Fifo Αλγόριθμος Skyline-Volume Αλγόριθμος Skyline-Sampling-Adapt-Fifo Αλγόριθμος Skyline-Sampling-Adapt-Volume Αλγόριθμος Skyline-Sampling-Baseline Αλγόριθμος Skyline-Sampling-Fifo Παραδείγματα Εκτέλεσης Αναφορές 57

4

5 Ενότητα 1 Εισαγωγή Η σημασία της επεξεργασίας μεγάλου όγκου δεδομένων, τόσο στην καθημερινότητά μας, όσο και σε επίπεδο επιστημονικής ενασχόλησης είναι αναμφισβήτητα μεγάλη. Με την εξέλιξη του διαδικτύου η συλλογή πληροφορίας έγινε σταδιακά όλο και πιο εύκολη ενώ η αποδοτική αξιοποίησή της οδήγησε σε μεγαλύτερη ζήτηση για κατάλληλα εργαλεία. Η απαίτηση για γρήγορη απόκριση σε ποικίλες μορφές ερωτημάτων οδήγησε στη βελτίωση των μηχανών και μεθόδων αναζήτησης αλλά η ανάγκη για κάτι διαρκώς καλύτερο παραμένει. Με τον ολοένα και αυξανόμενο, λοιπόν, ρυθμό επεξεργασίας οι μεμονωμένες μονάδες αποδείχτηκαν ανεπαρκείς ενώ αντίθετα σημειώθηκε σημαντική πρόοδος στην παράλληλη και κατανεμημένη επεξεργασία. Ένα αποτέλεσμα αυτής της προσπάθειας είναι η τεχνολογία MapReduce και ένας σημαντικός τύπος ερωτημάτων που χρειάζεται να ικανοποιηθούν για πολλούς τύπους προβλημάτων είναι τα ερωτήματα κορυφογραμμής ή αλλιώς ερωτήματα Skyline. Έτσι σε αυτή τη διπλωματική εργασία αναλάβαμε να ερευνήσουμε αλγόριθμους οι οποίοι αξιοποιούν το περιβάλλον MapReduce για τον αποδοτικότερο και ταχύτερο υπολογισμό των Skylines ενός συνόλου δεδομένων.

6 Ενότητα 2 Κατανεμημένο Περιβάλλον Προγραμματισμού MapReduce Σήμερα η ραγδαία αύξηση των διαθέσιμων δεδομένων κάθε είδους και η ανάγκη για τη συλλογή και την εκμετάλλευση πληθώρας από αυτών προκάλεσε σταδιακά όλο και περισσότερες δυσκολίες στη διατήρηση και την επεξεργασία τους. Μεγάλες εταιρίες όπως η Google [7], η Yahoo [8], η Amazon [9] και η Microsoft [10] χρειάστηκαν να επεξεργαστούν terabytes και petabytes δεδομένων ώστε να μπορούν να ξεχωρίσουν ποιες ιστοσελίδες είναι οι πιο δημοφιλής, ποια βιβλία είναι τελευταίας κυκλοφορίας και ποιες διαφημίσεις θα μπορούσαν να ελκύσουν περισσότερο τους καταναλωτές. Ταυτόχρονα με την αύξηση των δεδομένων αναπτύχθηκε και η τεχνολογία για την διατήρησή τους. Ένας τυπικός δίσκος το 1990 μπορούσε να αποθηκεύσει 1,370 MB δεδομένων. Σήμερα ένα terabyte θεωρείται κάτι δεδομένο. Όμως παρότι η πληροφορία πλέον μπορεί εύκολα να αποθηκευτεί, η ανάγνωσή της δεν έγινε επαρκώς γρηγορότερη με την πάροδο των ετών. Ο τυπικός δίσκος του 1990 μπορούσε να διαβαστεί με μία μέση ταχύτητα 4.4 MB/s, οπότε ήταν εύκολο κανείς να διαπεράσει όλα τα δεδομένα του σε περίπου πέντε λεπτά. Αντίστοιχα, ο τυπικός δίσκος σήμερα, έχει μία μέση ταχύτητα ανάγνωσης 100 MB/s και άρα για να διαβαστούν όλα του τα δεδομένα θα χρειαζόταν περισσότερο από δυόμισι ώρες [11]. Έτσι η πληροφορία όλο και περισσότερο αυξανόταν ενώ αντίθετα η πρόσβαση σε αυτήν και η επεξεργασία της δεν ακολούθησαν τους ίδιους ρυθμούς. Αυτό είχε σαν συνέπεια τα υπάρχοντα εργαλεία των προηγούμενων ετών να γίνονται σιγά σιγά ανεπαρκή για αυτή τη πληθώρα δεδομένων. Η ανάγκη για κάτι επαρκές οδήγησε σε ένα νέο σκεπτικό. Έτσι η Google ήταν η πρώτη που δημοσίευσε το MapReduce [12], ένα μοντέλο που είχε χρησιμοποιήσει για να κλιμακώσει τις μεγάλες ανάγκες της για επεξεργασία. Πρόκειται για ένα προγραμματιστικό μοντέλο το οποίο βασισμένο στη κατανεμημένη επεξεργασία μπορούσε να δώσει την δυνατότητα χειρισμού πληθώρας δεδομένων σε οποιονδήποτε διέθετε απλώς αρκετούς υπολογιστές. Το μοντέλο αυτό της Google κίνησε το ενδιαφέρον πολλών. Αυτό διότι το πρόβλημα της επεξεργασίας όλων αυτών των δεδομένων το αντιμετώπιζαν και άλ-

7 λες πολλές εταιρίες. Αντιθέτως όμως με την Google δεν είχαν όλες την δυνατότητα να δημιουργήσουν κάτι δικό τους, αντίστοιχο του MapReduce. Την ευκαιρία αυτή εκμεταλλεύτηκε ο Doug Cutting [1] δημιουργώντας μία έκδοση ανοικτού λογισμικού[2] για το MapReduce η οποία ονομάστηκε Hadoop [3]. Το σύστημα αυτό ήταν τόσο αναγκαίο που δέχτηκε σύντομα μεγάλη υποστήριξη τόσο από την Yahoo όσο και από άλλους. Έτσι πλέον το Hadoop έγινε ένα ιδιαίτερα σημαντικό και χρήσιμο εργαλείο. Πρόκειται ουσιαστικά για ένα κατανεμημένο περιβάλλον που δίνει τη δυνατότητα να δημιουργηθούν εφαρμογές για επεξεργασία μεγάλης ποσότητας δεδομένων. Η αξία του έγκειται στο ότι επιδιώκει την μεταφορά κώδικα ανάμεσα στα μηχανήματα που συμμετέχουν, παρά τη μεταφορά περιεχομένου. Επιπλέον χρησιμοποιώντας τεχνικές πλεονασμού, μπορεί να ανακάμψει όταν ένας κόμβος του αποβεί προβληματικός. Τέλος, έχει ως βασικό στόχο να αποκρύπτει από τον χρήστη προγραμματιστή έγνοιες που αφορούν τη δικτύωση, ιδιαιτερότητες των κόμβων, το ποιο μηχάνημα θα εκτελέσει ποιες διεργασίες και το πως θα μοιραστούν τα δεδομένα. Αντιθέτως επιλύει αυτά τα προβλήματα επιτρέποντάς του να εστιάσει μόνο στο πως θα επεξεργαστεί τα δεδομένα και τι θα λάβει ως αποτέλεσμα από αυτά. Αυτό το σημαντικό framework αποτελεί σήμερα τον πυρήνα της αρχιτεκτονικής για πολλές εταιρίες web όπως η Yahoo, το Facebook [4], το LinkedIn [5], το Twitter [6] αλλά και πολλές άλλες που εστιάζουν σε ποικίλα αντικείμενα. Ένα τέτοιο παράδειγμα αποτελεί το Last.fm [13]. Δημιουργήθηκε το 2002 και πρόκειται για έναν online ραδιοφωνικό σταθμό καθώς και μία ιστοσελίδα που υποστηρίζει μία ευρύτερη μουσική κοινότητα. Υπάρχουν περισσότερα από 25 εκατομμύρια χρηστών που το χρησιμοποιούν σε μηνιαία βάση [11] δημιουργώντας τεράστια αποθέματα δεδομένων τα οποία χρειάζονται επεξεργασία. Ένα τέτοιο παράδειγμα χρήσης είναι η αναμετάδοση της πληροφορίας των τραγουδιών τα οποία παίζονται. Αυτή η πληροφορία πρέπει να επεξεργαστεί και να αποθηκευτεί με τέτοιο τρόπο ώστε οι χρήστες να έχουν άμεσα πρόσβαση σε αυτήν. Μέσα από αυτήν προκύπτουν επιπλέον δεδομένα όπως ποια είναι τα γενικότερα γούστα των χρηστών, ποιοι χρήστες ταιριάζουν με ποιους άλλους, ποιοι καλλιτέχνες μοιάζουν με ποιους άλλους αλλά και ποια μουσικά κομμάτια φαίνονται παρεμφερή με άλλα. Έτσι λίγα χρόνια αφότου το Last.fm δημιουργήθηκε, λόγω της όλο και αυξανόμενης πληθώρας χρηστών και δεδομένων αντιμετώπισε ένα σημαντικό πρόβλημα επεξεργασίας. Τον ίδιο καιρό όμως μία διαθέσιμη έκδοση του Hadoop ήδη κυκλοφορούσε και το Last.fm έγινε το πρώτο που την χρησιμοποίησε στις αρχές του 2006 [11]. Το Hadoop λοιπόν έγινε σημαντικό και σε πολλά ζητήματα αναντικατάστατο. Ένας ακόμα λόγος για αυτό ήταν ότι μπορούσε να λύσει προβλήματα που τα ως τότε συστήματα διαχείρισης βάσεων δεδομένων, που χρησιμοποιούσαν πολλούς δίσκους, αδυνατούσαν. Στο σχήμα 2.2 φαίνονται οι βασικές διαφορές ανάμεσα στις δύο τεχνολογίες [11]. Καθώς η χρήση του Hadoop έγινε όλο και πιο ευρεία εμφανίστηκαν νέα projects τα οποία βασίζονταν στο Hadoop για να προσφέρουν είτε συμπληρωματικές είτε νέες άλλου τύπου δυνατότητες. Μερικά από αυτά είναι: Avro [14], Pig [15], Hive [16], HBase [17], ZooKeeper [18], Sqoop [19]. Στη συνέχεια, στην ενότητα αυτή θα περιγράψουμε βασικές και σημαντικές έννοιες της τεχνικής MapReduce και του περιββάλοντος του Hadoop ενώ ακό-

8 μα, θα περιγράψουμε λεπτομερώς τη τεχνική Secondary Sorting καθώς αυτή χρησιμοποιείται σε όλους τους αλγορίθμους που υλοποιήσαμε. Σχήμα 2.1: Παράδειγμα χρήσης του Hadoop στον Last.fm. Σχήμα 2.2: Διαφορές του MapReduce και των συστημάτων διαχείρισης βάσεων δεδομένων. 2.1 Λειτουργία MapReduce Η αποδοτική λειτουργία του MapReduce που το κατέστησε εν τέλη τόσο δημοφιλές, κρύβεται πίσω από τα δύο βασικότερα τμήματα από τα οποία αποτελείται. Αυτά είναι η φάση Map και η φάση Reduce. Οι δύο αυτές φάσεις υλοποιούνται βάση δύο συναρτήσεων που περιέχουν το κώδικα λειτουργίας τους. Καθώς η βάση του σκεπτικού είναι η κατανεμημένη λειτουργία, όταν εκτελείται η φάση Map η συνάρτηση της τρέχει παράλληλα και ανεξάρτητα από πολλά μηχανήματα, ή περισσότερες φορές από το ίδιο το μηχάνημα όταν αυτό υποστηρίζεται. Κάθε τέτοια εκτέλεση που ουσιαστικά αντιστοιχεί σε μια διαφορετική μονάδα επεξεργασίας αποκαλείται Mapper και αντίστοιχα στη φάση Reduce που λειτουργεί με τον

9 ίδιο τρόπο, ονομάζεται Reducer. Όταν ένα πρόγραμμα MapReduce ξεκινά τη λειτουργία του, το περιβάλλον που το υλοποιεί, στη περίπτωσή μας το Hadoop, αναλαμβάνει να τροφοδοτεί τους Mappers με τα δεδομένα προς επεξεργασία. Όταν όλη η λειτουργία ολοκληρώνεται, η φάση Reduce εξάγει τα τελικά αποτελέσματα. Θα μπορούσαμε σε γενικές γραμμές να πούμε πως η φάση Map είναι υπεύθυνη για να φιλτράρει και να μετατρέπει την είσοδο ενώ η φάση reduce για να συγκεντρώνει μέσα από πράξεις το τελικό αποτέλεσμα [12]. Εκτός από τη φάσεις αυτές, υπάρχουν και δύο ακόμα πολύ καίρια τμήματα για την ολοκληρωμένη λειτουργία του MapReduce. Αυτά είναι το Partitioning και το Shuffling. Δεν πρόκειται για αυτόνομες ανεξάρτητες φάσεις όσο για υποβοηθητικές λειτουργίες που δρομολογούν σωστά τα δεδομένα από την αρχική φάση Map στη τελική φάση Reduce. Εν αντιθέσει με τις φάσεις Map και Reduce αυτά τα τμήματα δεν είναι απαραίτητο ο χρήστης/προγραμματιστής να τα συντάξει, διότι το Hadoop παρέχει ήδη ετοιμα πακέτα που καλύπτουν πληθώρα περιπτώσεων. Μπορεί όμως κανείς να τροποποιήσει υπάρχοντα πακέτα ή να δημιουργήσει νέα που θα καλύπτουν απόλυτα τις ανάγκες του εφόσον αυτό είναι επιθυμητό. Προκειμένου όλα τα τμήματα που αναφέρθηκαν παραπάνω να συνεργάζονται αποδοτικά μεταξύ τους χρειάζονται ένα κοινό καλά ορισμένο πλαίσιο επικοινωνίας και το πρώτο συστατικό στοιχείο αυτού είναι η κωδικοποίηση των δεδομένων καθώς αυτά ρέουν στο MapReduce πρόγραμμα. Έτσι δημιουργήθηκαν τα ζευγάρια από key και value τα οποία χρησιμοποιούνται ως είσοδος και έξοδος της φάσης Map αλλά και αντίστοιχα ως είσοδος και έξοδος της φάσης Reduce με ορισμένο τρόπο. Στη συνέχεια εξηγείται κάθε ένα από αυτά τα σημεία. Σχήμα 2.3: Η μορφή key-value των δεδομένων. Στην είσοδο της φάσης Map η συνάρτησή της λαμβάνει μία λίστα από ζεύγη <key, value>. Έστω πως για την εξήγηση αυτή τα ονομάζουμε <k1,v1> όπως φαίνεται στο σχήμα 2.3. Το ζεύγος αυτό φαίνεται αρχικά περιοριστικό, αλλά στη πραγματικότητα μπορεί να είναι οτιδήποτε και να χρησιμοποιηθεί με πληθώρα τρόπων. Όταν η είσοδος αποτελείται από πολλά αρχεία δεδομένων, συχνά τα <k1,v1> αντιστοιχούν σε <ονομα αρχείου, περιεχόμενο αρχείου>, ενώ όταν έχουμε για παράδειγμα ένα μεγάλο αρχείο, θα μπορούσαν να αντιστοιχούν στην πληροφορία <αριθμός γραμμής, περιεχόμενο γραμμής>. Στη συνέχεια καθώς η συνάρτηση της φάσης Map λαμβάνει τα δεδομένα, τα επεξεργάζεται όπως απαιτεί η κάθε διαφορετική εφαρμογή. Στην έξοδο της φάσης Map υπάρχει και πάλι η μορφή <key, value>. Έστω πως εδώ ονομάζουμε αυτά τα ζεύγη <k2,v2>. Το περιεχόμενό τους θα μπορούσε να είναι οτιδήποτε, ανάλογα με τον στόχο που θέλουμε να πετύχουμε. Το σκεπτικό στο οποίο βασίζεται η κωδικοποίηση αυτή είναι ότι μας ενδιαφέρει η πληροφορία που αφορά το τρέχον κλειδί k2 να συγκεντρωθεί στο ίδιο σημείο επεξεργασίας.

10 Σχήμα 2.4: Η βασική ροή σε ένα MapReduce πρόγραμμα.

11 Αυτό θα φανεί καλύτερα σε παρακάτω υποενότητα με ένα παράδειγμα. Επομένως σε αυτό το σημείο η φάση Map απλά εξάγει ζεύγη <k2,v2> διαφορετικά από τα <k1,v1> και συνήθως εξάγει πολλά από αυτά. Οπότε μπορούμε να πούμε πως στη γενική περίπτωση όλοι οι Mappers εξάγουν λίστες από ζεύγη <k2,v2>. Στην είσοδο της φάσης Reduce όλα τα ζευγάρια <k2,v2> με κοινό k2 ομαδοποιούνται και φθάνουν με τη μορφή <k2, list(v2)> έτσι ώστε να μπορεί στη συνέχεια η συνάρτηση που εκτελεί τον κώδικα του Reduce, να τα επεξεργαστεί κατάλληλα για να βγάλει το τελικό επιθυμητό αποτέλεσμα. Στην έξοδο της φάσης Reduce όλα τα αποτελέσματα που προέκυψαν από την επεξεργασία εξάγονται και αποθηκεύονται απευθείας σε ένα ή περισσότερα αρχεία. Όπως και σε ολόκληρη τη προηγούμενη διαδικασία έτσι και εδώ η μορφή βάση της οποίας οργανώνονται είναι σε key-value ζευγάρια. Έστω <k3,v3> όπως φαίνεται και στο σχήμα 2.3. Στη συνέχεια, έχοντας εξηγήσει το βασικό σκεπτικό ενός προγράμματος MapReduce παρουσιάζουμε περισσότερες λεπτομέρειες για τη λειτουργία του μέσα από σχήματα. Στο σχήμα 2.4 φαίνεται η ροή όπως την εξηγήσαμε μέσα από τα key-value ζευγάρια. Στο σχήμα 2.5 παρουσιάζεται η μορφή ενός MapReduce προγράμματος με περισσότερες λεπτομέρειες και φαίνεται η περίπτωση στην οποία έχουμε περισσότερους του ενός Mappers και έναν Reducer ενώ στο σχήμα 2.6 έχουμε το αντίστοιχο παράδειγμα με πολλούς όμως Reducers. Στο σχήμα 2.7 φαίνονται οι διαδικασίες του Shuffling και της ταξινόμησης που γίνεται στα δεδομένα περνώντας από τη φάση Map στη φάση Reduce. Σχήμα 2.5: Η ροή MapReduce με πολλούς Mappers και έναν Reducer. Στα σχήματα 2.8 και 2.9 φαίνονται τα τμήματα που χειρίζονται μια διεργασία από τον χρήστη έως την τελική εκτέλεσή της. Σημειώνεται πως HDFS (Hadoop Distributed File System) ονομάζεται το κατανεμημένο σύστημα αρχείων πάνω στο οποίο βασίζεται η λειτουργία του Hadoop.

12 Σχήμα 2.6: Η ροή MapReduce με πολλούς Mappers και πολλούς Reducers. Σχήμα 2.7: Η ροή MapReduce με εστίαση στη ταξινόμηση και στη φάση Shuffling.

13 Σχήμα 2.8: Συστατικά μέρη της λειτουργίας του Hadoop. Σχήμα 2.9: Συστατικά μέρη της λειτουργίας του Hadoop.

14 Τέλος, παρακάτω φαίνονται οι βασικοί τύποι του Hadoop που χρησιμοποιούνται έναντι άλλων γνωστών. Τονίζεται πως τους τύπους αυτούς είναι απαραίτητο να τους χρησιμοποιεί κανείς στα πλαίσια όπου οι συναρτήσεις που συντάσσει αλληλεπιδρούν με το Hadoop (είσοδος-έξοδος αυτών των συναρτήσεων). Αντίθετα εντός των συναρτήσεων μπορεί να χρησιμοποιεί τους τύπους που επιθυμεί, π.χ. τον τύπο int της Java αντί του IntWritable του Hadoop. Έχοντας εξηγήσει τον βασικό τρόπο λειτουργίας του MapReduce, πρέπει να αναφέρουμε ποια ειναι και τα πλεονεκτήματά του που το κατέστησαν τόσο σημαντικό [12]: Προσβασιμότητα: Το Hadoop μπορεί να τρέχει πάνω σε clusters που δημιουργούνται από κοινούς υπολογιστές χωρίς έτσι να απαιτείται ακριβός εξοπλισμός. Ευρωστία: Λόγω ότι το Hadoop κατασκευάστηκε με τη προοπτική να λειτουργεί σε τυχαία τερματικά όχι απαραίτητα σε καλή κατάσταση, έχουν ληφθεί υπόψη τα περισσότερα από τα δυνατά σφάλματα που μπορούν να συμβούν τόσο ειδικά στους υπολογιστές όσο γενικά στο δίκτυο σαν ένα σύνολο. Αυτό χαρίζει στο Hadoop ασφάλεια και εγγύηση σωστής λειτουργίας. Κλιμάκωση: Λόγω του τρόπου λειτουργίας του, το Hadoop εξασφαλίζει εύκολη κλιμάκωση καθώς αρκεί να προστεθούν νέοι κόμβοι και το κόστος επεξεργασίας θα διαμοιραστεί. Απλότητα: Η εύκολη χρήση του Hadoop είναι ένας από τους λόγους που έγινε τόσο δημοφιλές. Αυτή οφείλεται στο γεγονός ότι ένας χρήστης που συντάσσει ένα πρόγραμμα χρειάζεται να γνωρίζει μόνο το πως θα χειριστεί τα δεδομένα του και τι θέλει να εξάγει από αυτά ενώ δεν χρειάζεται να ασχοληθεί με λεπτομέρειες του συστήματος, του παραλληλισμού και τις δικτύωσης καθώς το Hadoop εύστοχα τα αποκρύπτει.

15 Σχήμα 2.10: To Hadoop Cluster ως ένα σύνολο από τερματικά. Σχήμα 2.11: Η αρχή της απλότητα του Hadoop για τον προγραμματιστή.

16 2.2 Παράδειγμα Χρήσης στο Hadoop Word Count Στη συνέχεια παρουσιάζεται ένα απλό παράδειγμα χρήσης του Hadoop για τη καλύτερη κατανόηση της λειτουργία του. Το παράδειγμα αυτό ονομάζεται Word Count [21]. Παρακάτω δίνεται απευθείας ο κώδικάς του ώστε να μπορεί πιο εύκολα να εξηγηθεί. Στο πρόβλημα αυτό, το ζητούμενο είναι να βρούμε το πλήθος των εμφανίσεων κάθε λέξης μέσα σε ένα κείμενο που δίνεται ως είσοδος. Επιθυμούμε δηλαδή να δημιουργήσουμε έναν αντεστραμμένο κατάλογο [22]. Κοιτώντας απευθείας στις γραμμές 14 και 28 βλέπουμε αντίστοιχα το τμήμα Map και το τμήμα Reduce του προγράμματος. Αυτά υλοποιούνται ως δύο ξεχωριστές κλάσεις και οι συναρτήσεις map και reduce περιέχουν τον απαραίτητο κώδικα. Συγκεκριμένα, η map δέχεται σαν είσοδο τα τμήματα των κειμένων και για κάθε λέξη που συναντά εξάγει το ζεύγος key-value, <τρέχουσα λέξη, 1> όπου το 1 υποδηλώνει μία εμφάνιση. Στη συνέχεια το Hadoop αναλαμβάνει τη φάση του Shuffling και στους Reducers φτάνουν ζεύγη της μορφής <λέξη, <1,1,1,...>>. Μετά από αυτό η συνάρτηση reduce αναλαμβάνει να προσθέσει τους άσους της τρέχουσας λέξης που επεξεργάζεται και να εξάγει το ζεύγος <λεξη, πλήθος εμφανίσεων>. Για την καλύτερη κατανόηση αυτής της λειτουργίας δίνονται στις εικόνες 2.12 και 2.13 δύο παραδείγματα με συγκεκριμένες λέξεις για είσοδο και το τελικό τους αποτέλεσμα. WordCount.java 1. package org.myorg; import java.io.ioexception; 4. import java.util.*; import org.apache.hadoop.fs.path; 7. import org.apache.hadoop.conf.*; 8. import org.apache.hadoop.io.*; 9. import org.apache.hadoop.mapred.*; 10. import org.apache.hadoop.util.*; public class WordCount { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 15. private final static IntWritable one = new IntWritable(1);

17 16. private Text word = new Text(); public void map(longwritable key, Text value, OutputCollector <Text, IntWritable> output, Reporter reporter) throws IOException { 19. String line = value.tostring(); 20. StringTokenizer tokenizer = new StringTokenizer(line); 21. while (tokenizer.hasmoretokens()) { 22. word.set(tokenizer.nexttoken()); 23. output.collect(word, one); 24. } } } public static class Reduce extends MapReduceBase implements Reducer <Text, IntWritable, Text, IntWritable> { public void reduce(text key, Iterator<IntWritable> values, 29. OutputCollector <Text, IntWritable> output, Reporter reporter) throws IOException { 30. int sum = 0; 31. while (values.hasnext()) { 32. sum += values.next().get(); 33. } 34. output.collect(key, new IntWritable(sum)); } } public static void main(string[] args) throws Exception { 39. JobConf conf = new JobConf(WordCount.class); 40. conf.setjobname("wordcount"); conf.setoutputkeyclass(text.class); 43. conf.setoutputvalueclass(intwritable.class); 44.

18 45. conf.setmapperclass(map.class); 46. conf.setcombinerclass(reduce.class); 47. conf.setreducerclass(reduce.class); conf.setinputformat(textinputformat.class); 50. conf.setoutputformat(textoutputformat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); 53. FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); } 58. } 59. Σχήμα 2.12: Παράδειγμα του προγράμματος Word Count.

19 Σχήμα 2.13: Παράδειγμα του προγράμματος Word Count. 2.3 Τεχνική Secondary Sorting Στη μέθοδο MapReduce, στη βασική μορφή της λειτουργίας της, καθώς οι εγγραφές περνούν από τη φάση Map στη φάση Reduce ταξινομούνται βάση του πεδίου key. Για κάθε ένα, όμως, από αυτά τα κλειδιά, το πεδίο value δεν είναι ταξινομημένο. Για την ακρίβεια, η σειρά με την οποία εμφανίζονται τα πεδία value για ένα δεδομένο key δεν είναι καν σταθερή από εκτέλεση σε εκτέλεση. Αυτό οφείλεται στο γεγονός ότι τα values που συγκεντρώνονται κάθε φορά για ένα δεδομένο key προέρχονται από διαφορετικές Map διαδικασίες οι οποίες είναι πιθανό να τελειώνουν σε διαφορετικό χρόνο από εκτέλεση σε εκτέλεση. Στη γενική περίπτωση αυτή η ιδιαιτερότητα και η μη ντετερμινιστική συμπεριφορά δεν αποτελούν κάποιο πρόβλημα γιατί στη πλειονότητα των εφαρμογών, η σειρά με την οποία συγκεντρώνονται τα πεδία value δεν παίζει κάποιο ρόλο στο τελικό αποτέλεσμα. Παρ' όλα αυτά αν είναι επιθυμητό αυτό να διαφοροποιηθεί, είναι δυνατό και για την εφαρμογή του χρησιμοποιείται μια τεχνική που ονομάζεται Secondary Sorting η σε κάποιες περιπτώσεις καλείται και value to key convertion [20, 11]. Ένα παράδειγμα εφαρμογής στο οποίο αυτή η τεχνική είναι χρήσιμη θα μπορούσε να είναι η εύρεση της μέγιστης θερμοκρασίας κάθε έτους αν θεωρήσουμε ότι έχουμε μια συλλογή δεδομένων με διαφορετικές θερμοκρασίες που σημειώθηκαν για κάποια χρόνια σε μια τοποθεσία. Το πεδίο key σε αυτή τη περίπτωση θα είναι η χρονολογία ώστε οι θερμοκρασίες που εξετάζουμε να ανήκουν στο ίδιο έτος, και συνεπώς το πεδίο value στις εγγραφές που περνούν από τη φάση Map, θα είναι η θερμοκρασία. Όταν όλες οι θερμοκρασίες για την κάθε ορισμένη χρονιά συγκεντρωθούν μαζί, εφόσον θέλουμε τη μέγιστη από αυτές, θα πρέπει να τις εξετάσουμε όλες αν είναι αταξινόμητες. Αν όμως τις είχαμε ήδη στη σειρά π.χ. κατά φθίνουσα θα γλιτώναμε σε επεξεργαστικό κόστος παίρνοντας απευθείας την πρώτη. (Σημειώνεται πως αυτή η μέθοδος δεν είναι απαραίτητα η πιο αποτελεσματική

20 λύση για αυτό το πρόβλημα απλά χρησιμοποιείται για να εξηγηθεί η τεχνική Secondary Sorting.) Σχήμα 2.14: Η τεχνική Secondary Sorting σε παράδειγμα με χρονολογίες. Προκειμένου να χρησιμοποιήσουμε τις λειτουργίες του Ηadoop ώστε να εφαρμόσουμε αυτή τη τεχνική αλλάζουμε τις τιμές των key και value για κάθε εγγραφή που φεύγει από τη φάση Map, έτσι ώστε το τμήμα key να περιέχει ότι επιθυμούμε να ταξινομηθεί. Στο δικό μας παράδειγμα το νέο σύνθετο key θα έχει τη μορφή (χρονολογία, θερμοκρασία). Δηλαδή η νέα εγγραφή που θα περνάει στη φάση του Shuffling θα έχει τη μορφή ((χρονολογία, θερμοκρασία), value), όπου στο value κρατάμε όποια πληροφορία επιθυμούμε ή και τίποτα, ενώ αν δεν εκτελούσαμε Secondary Sorting η αρχική εγγραφή θα είχε τη μορφή (χρονολογία, θερμοκρασία). Τονίζεται πως ανεξάρτητα από το αν επιθυμούμε να ταξινομηθούν και τα δύο πεδία κατά αύξουσα, κατά φθίνουσα ή διαφορετικά το ένα από το άλλο, η γενική διαδικασία παραμένει η ίδια. Έστω πως στο παράδειγμα επιθυμούμε οι χρονολογίες να συγκεντρώνονται κατά αύξουσα και ανά χρονολογία, οι θερμοκρασίες κατά φθίνουσα όπως φαίνεται στο σχήμα Έχοντας πετύχει αυτή την αλλαγή στη μορφή των εγγραφών έχουμε ολοκληρώσει το πρώτο βήμα που απαιτείται. Ακόμα όμως δεν έχουμε φθάσει στο τελικό αποτέλεσμα. Καθώς το Hadoop στέλνει στον ίδιο Reducer εκείνες τις εγγραφές που έχουν κοινό πεδίο key, αν αρκούμασταν μόνο στη πρώτη αλλαγή, τότε θα χωρίζαμε τις κοινές χρονολογίες και θα τις στέλναμε σε διαφορετικούς Reducers. Για παράδειγμα, έστω ότι έχουμε την εγγραφή ((1900, 34), value) και την εγγραφή ((1900, 35), value). Αν το key αποτελούνταν μόνο από την χρονολογία, οι δύο αυτές καταγραφές θα έφθαναν στον ίδιο προορισμό. Καθώς όμως πλέον το πεδίο key περιλαμβάνει και τη θερμοκρασία, τα κλειδιά των δύο αυτών είναι διαφορετικά και έτσι μπορεί να καταλήξουν σε διαφορετικούς Reducers. Έτσι για να εξασφαλίσουμε τη σωστή λειτουργία ρυθμίζουμε κατάλληλα έναν Partitioner βάση του οποίου θα λειτουργεί η τεχνική μας. Σχήμα 2.15: Ρύθμιση του Partitioner.

21 Σχήμα 2.16: Ρύθμιση της λειτουργίας Grouping. Ακόμα και τώρα όμως η διαδικασία δεν έχει ολοκληρωθεί. Το τελευταίο βήμα που απομένει είναι να ρυθμιστεί σωστά και η φάση του Grouping έτσι ώστε στο τέλος ανά συγκεκριμένη χρονολογία να λαμβάνουμε ομαδοποιημένες όλες τις θερμοκρασίες που εμφανίστηκαν, σε αυτήν, κατά φθίνουσα. Συνοψίζοντας, τα βήματα με τη σειρά που πρέπει να γίνουν για να ολοκληρωθεί σωστά η τεχνική Secondary Sorting είναι τα εξής [11]: Δημιουργούμε το σύνθετο κλειδί προσθέτοντας σε αυτό το τμήμα του αρχικού value ή ολόκληρο το αρχικό value επειδή επιθυμούμε να ταξινομηθεί και αυτό μαζί με το αρχικό κλειδί. Στη συνέχεια ρυθμίζουμε τον sort comparator του Hadoop που είναι υπεύθυνος για την ταξινόμηση, να λαμβάνει υπόψη ολόκληρο το σύνθετο κλειδί και να ταξινομεί ως προς τα δύο πεδία του όπως αυτό έχει ζητηθεί (αύξουσα, φθίνουσα, διαφορετικά το ένα από το άλλο). Τέλος ρυθμίζουμε τον Partitioner και τον grouping comparator του Hadoop να λαμβάνουν υπόψη μόνο το αρχικό κλειδί (στο παράδειγμα μας τις χρονολογίες).

22 Ενότητα 3 Αλγόριθμοι Εύρεσης Skyline Μία κατηγορία ερωτημάτων που εντοπίζουμε συχνά ακόμα και σε καθημερινή βάση είναι τα ερωτήματα κορυφογραμμής στα οποία αναζητούμε τα σημεία της κορυφογραμμής αλλιώς γνωστά και ως Skyline points τα οποία ερευνήθηκαν για πρώτη φορά στις εργασίες [24, 25]. Για να εξηγήσουμε τι αντιπροσωπεύουν, θα δώσουμε ένα παράδειγμα. Έστω πως κάποιος αναζητά να διαλέξει ένα από τα δυνατά ξενοδοχεία σε μια παραθαλάσσια περιοχή. Επιπλέον έστω ότι τον ενδιαφέρει η τιμή ανά ημέρα διαμονής στο ξενοδοχείο αυτό, να είναι όσο το δυνατό πιο χαμηλή αλλά ταυτόχρονα και η απόστασή του από την παραλία να μην είναι μεγάλη. Αυτά τα δύο χαρακτηριστικά όμως συχνά είναι αντικρουόμενα. Σε αυτό το σημείο λοιπόν αποκτά αξία η εύρεση του Skyline όλων των δυνατών ξενοδοχείων. Στο σχήμα 3.1 φαίνεται ένα παράδειγμα στο οποίο αναπαριστώνται όλα τα ξενοδοχεία της περιοχής αυτής. Στον κάθετο άξονα φαίνεται η απόστασή τους από τη θάλασσα, έστω σε χιλιόμετρα, ενώ στον οριζόντιο η τιμή του ξενοδοχείου ανά διανυκτέρευση, έστω σε ευρώ. Επιθυμούμε και στα δύο από αυτά να έχουμε τη χαμηλότερη δυνατή τιμή. Αν για παράδειγμα υπήρχε ένα σημείο στην αρχή των αξόνων τότε αυτό θα ήταν η ιδανική επιλογή. Καθώς όμως ένα ξενοδοχείο δίπλα στη παραλία είναι πιθανότερο να είναι αρκετά ακριβό, η μορφή που παίρνουμε είναι αυτή που φαίνεται. Τα καλύτερα ξενοδοχεία για την τελική επιλογή είναι αυτά που βρίσκονται πάνω στη μαύρη γραμμή. Κάθε ένα από αυτά δεν είναι καλύτερο σε όλα τα χαρακτηριστικά από κάποιο άλλο στη μαύρη γραμμή, αλλά μπορούμε να δούμε ότι κάθε σημείο που ανήκει στο υπόλοιπο πεδίο είναι χειρότερο από τουλάχιστον ένα που ανήκει στη μαύρη γραμμή, δηλαδή στο Skyline. Δίνοντας έναν πιο ξεκάθαρο ορισμό, θα ορίσουμε αρχικά τι σημαίνει η έννοια της κυριαρχίας. Έχοντας ένα σύνολο από πολυδιάστατα δεδομένα, έστω n διαστάσεων, λέμε ότι ένα σημείο p1 κυριαρχεί σε ένα άλλο p2 όταν ισχύουν οι δύο παρακάτω συνθήκες [23]: To p1 είναι τουλάχιστον τόσο καλό όσο το p2 σε όλες τις διαστάσεις. Το p1 είναι αυστηρά καλύτερο από το p2 σε τουλάχιστον μία από τις n διαστάσεις.

23 Σχήμα 3.1: Εύρεση του Skyline για ένα σύνολο από ξενοδοχεία. Έτσι όταν ένα σημείο p1 έναντι κάποιου άλλου p2 έχει τις παραπάνω προϋποθέσεις, λέμε πως κυριαρχεί σε αυτό. Αν ανάποδα αυτή η σχέση υπάρχει από το p2 προς το p1 τότε λέμε ότι το p1 κυριαρχείται, ενώ τέλος μπορεί το p1 να είναι καλύτερο σε κάποια ή κάποιες διαστάσεις αλλά και το p2 να είναι καλύτερο σε τουλάχιστον μία από τις n διαστάσεις και έτσι να μην υπάρχει σχέση κυριαρχίας ανάμεσά τους. Καθώς σε αυτή τη περίπτωση κανένα από τα δύο δεν είναι καλύτερο από το άλλο, λέμε ότι είναι μη συγκρίσιμα μεταξύ τους ή αλλιώς ανεξάρτητα. Ως Skyline σε ένα σύνολο πολυδιάστατων δεδομένων ορίζουμε το σύνολο των σημείων που δεν κυριαρχούνται από κανένα άλλο και συνεπώς είναι ανεξάρτητα μεταξύ τους. Τονίζεται πως σε κάθε δυνατή συλλογή θα υπάρχει αυστηρά το Skyline ακόμα και αν αυτό αποτελείται από ένα μόνο σημείο. Σχήμα 3.1: Εύρεση του Skyline για ένα σύνολο από ξενοδοχεία. Σχήμα 3.2: Παράδειγμα Skyline σε συλλογές σημείων. Έτσι παρατηρούμε πως ανάλογα από το είδος των δεδομένων της συλλογής το μέγεθος του Skyline ποικίλει. Παίζουν ρόλο διάφορα χαρακτηριστικά όπως για παράδειγμα το είδος της κατανομής και το πλήθος των διαστάσεων. Στα σχήματα 3.3, 3.4 και 3.5 φαίνονται τα παραδείγματα μιας Uniform, μιας Correlated και μίας Anti-Correlated συλλογής αντίστοιχα, στις οποίες έχουν σημειωθεί τα

24 σημεία του Skyline. Επιπλέον στο σχήμα 3.2 παρουσιάζονται πειράματα που έγιναν για συλλογές σημείων σε διαφορετικές κατανομές και διαφορετικό πλήθος διαστάσεων [23]. Παρατηρείται πως όσο περισσότερες είναι οι διαστάσεις τόσο περισσότερα τα σημεία του Skyline στις περιπτώσεις που η κατανομή είναι είτε Uniform είτε Anti-Correlated. Σχήμα 3.3: Παράδειγμα Skyline σε Uniform κατανομή. Σχήμα 3.4: Παράδειγμα Skyline σε Correlated κατανομή.

25 Σχήμα 3.5: Παράδειγμα Skyline σε Anti-Correlated κατανομή. Η ανάγκη για την εύρεση των σημείων Skyline είναι πολύ σημαντική για ποικίλα προβλήματα. Όπως όμως φαίνεται και παραπάνω όταν οι διαστάσεις των δεδομένων αυξηθούν τότε οι ανάγκες επεξεργασίας μεγαλώνουν και όσο περισσότερα είναι τα σημεία από τα οποία αποτελείται μια συλλογή τόσο πιο δύσκολη γίνεται η εύρεση του Skyline. Αν ο αλγόριθμος που θα χρησιμοποιηθεί δεν είναι αποδοτικός στη λειτουργία του τότε ο χρόνος που χρειάζεται για την επεξεργασία μια πολύ μεγάλης συλλογής, είναι εύκολο να γίνει απαγορευτικός. Για παράδειγμα ένας απλοϊκός αλγόριθμος θα ήταν: Να ελέγχουμε κάθε σημείο σε σχέση με κάθε άλλο ως προς την κυριαρχία τους. Να επιστρέφουμε όλα τα σημεία που δεν κυριαρχούνται δηλαδή εκείνα που είναι μη συγκρίσιμα μεταξύ τους. Κάτι τέτοιο όμως δεν θα μπορούσε να χρησιμοποιηθεί σε ρεαλιστικά προβλήματα με πολλά δεδομένα καθώς το κόστος αυτού του αλγορίθμου θα ήταν τετραγωνικό. Αυτό είχε σαν αποτέλεσμα να γίνει μεγάλη έρευνα για την εύρεση αποδοτικών αλγορίθμων που προσανατολίζονται ανάλογα από τη περίπτωση σε διαφορετικού τύπου συλλογές και σε διαφορετικές ανάγκες. Στη συνέχεια στην ενότητα αυτή παρουσιάζονται τρεις βασικοί αλγόριθμοι, οι BNL [23], DC [24, 25], BBS [26] καθώς και ένας αλγόριθμος που βασίστηκε στον BNL, o αλγόριθμος SFS [27] πάνω στον οποίο θα εστιάσουμε περισσότερο καθώς σε αυτόν βασίζονται οι τεχνικές που στη συνέχεια εμείς αναπτύσσουμε. 3.1 Block Nested Loop Ο αλγόριθμος Block Nested Loop ή σε συντομία BNL προτάθηκε στην εργασία [23] και έγινε η βάση τόσο για άλλους αλγορίθμους όπως ο SFS [27] και ο

26 SaLSa [28] όσο και για βελτιωμένες εκδοχές του ίδιου αλγορίθμου [23] που χρησιμοποιήθηκαν σε μεγάλο πλήθος προβλημάτων για εύρεση του Skyline μιας συλλογής. Στη βασική του εκδοχή ο αλγόριθμος BNL διαβάζει κατ' επανάληψη ένα σύνολο από εγγραφές και κρατά ένα σταθερό παράθυρο στη μνήμη το οποίο περιέχει τις μη συγκρίσιμες εγγραφές, εκείνες δηλαδή που δεν εμφανίζουν σχέσεις κυριαρχίας μεταξύ τους. Όταν μία εγγραφή, ή αλλιώς σημείο, p διαβάζεται από την είσοδο, συγκρίνεται άμεσα με όλες τις εγγραφές που βρίσκονται στη μνήμη και βάση αυτής της σύγκρισης μπορεί να κυριαρχείται και άρα να απορριφθεί, μπορεί να εισαχθεί στη μνήμη ή τέλος να εισαχθεί σε ένα προσωρινό αρχείο το οποίο θα ληφθεί υπόψη στην επόμενη επανάληψη του αλγορίθμου. Πιο ξεκάθαρα οι τρεις αυτές περιπτώσεις είναι: Το σημείο p θα κυριαρχείται από κάποια άλλη εγγραφή μέσα στο παράθυρο. Το σημείο αυτό δεν θα ληφθεί ξανά υπόψη στις μελλοντικές επαναλήψεις και επιπλέον δεν χρειάζεται και να συγκριθεί με τις υπόλοιπες εγγραφές του παραθύρου καθώς ήδη κυριαρχείται. Το σημείο p κυριαρχεί μία ή περισσότερες εγγραφές που βρίσκονται μέσα στο παράθυρο. Σε αυτή τη περίπτωση, όσες κυριαρχούνται διαγράφονται και δεν θα ληφθούν υπόψη σε μελλοντικές επαναλήψεις. Το σημείο p εισάγεται στο παράθυρο. Τέλος το σημείο p είναι μη συγκρίσιμο με τις υπόλοιπες εγγραφές του παραθύρου. Αν το παράθυρο δεν είναι γεμάτο το σημείο εισάγεται. Διαφορετικά γράφεται σε ένα προσωρινό αρχείο στο δίσκο το οποίο θα ληφθεί υπόψη στην επόμενη επανάληψη του αλγορίθμου. Στο τέλος κάθε επανάληψης εξάγουμε όλες τις εγγραφές που βρίσκονται στο παράθυρο της μνήμης και έχουν συγκριθεί με όλα τα άλλα σημεία που πέρασαν από το προσωρινό αρχείο. Αυτές οι τελικές εγγραφές δεν κυριαρχούνται από άλλες και έτσι αποτελούν την τελική έξοδο του αλγορίθμου, δηλαδή το Skyline. Συγκεκριμένα, μπορούμε απευθείας να πούμε πως κατά τη διάρκεια της εκτέλεσης του BNL θα εξάγουμε στο τελικό αποτέλεσμα όλες τις εγγραφές που βρίσκονται στο παράθυρο, όσο ακόμα δεν έχει γραφτεί κανένα σημείο μέσα στο προσωρινό αρχείο. Δηλαδή στην αρχή κάθε επανάληψης του αλγορίθμου. Όσο νωρίτερα μία εγγραφή εισάγεται στο παράθυρο τόσο νωρίς μπορεί και να εξαχθεί κατά της επόμενη επανάληψη. Προκειμένου να μπορούμε να κρατήσουμε την πληροφορία για το πότε μία εγγραφή θα μπορεί να εξαχθεί αντιστοιχούμε μία χρονική τιμή έστω timestamp τόσο σε εκείνα τα σημεία που βρίσκονται στη μνήμη όσο και σε εκείνα που είναι αποθηκευμένα στο αρχείο. Αυτή η τιμή θα κρατά σαν πληροφορία τη σειρά με την οποία οι εγγραφές εισάχθηκαν στο παράθυρο και στο προσωρινό αρχείο. Χάρη σε αυτό, όταν θα διαβάζουμε από το αρχείο μία εγγραφή με timestamp t, θα μπορούμε να εξάγουμε από το παράθυρο όλες τις εγγραφές με timestamp μικρότερο του t. Επιπλέον αυτή η τακτική εγγυάται ότι ο αλγόριθμος κάποτε τερματίζει και ότι δύο εγγραφές ποτέ δεν συγκρίνονται δύο φορές. Στη συνέχεια παρουσιάζεται ο αλγόριθμος του BNL.

27 3.2 Sort Filter Skyline O αλγόριθμος Sort Filter Skyline ή SFS [27] είναι στη βάση του ο αλγόριθμος BNL με μία βελτίωση. Συγκεκριμένα λειτουργεί και αυτός με πολλαπλά περάσματα και κρατά ένα παράθυρο στη μνήμη για να συλλέγει εγγραφές του τελικού Skyline. H διαφορετική λεπτομέρεια είναι πως οι εγγραφές που έρχονται ως είσοδος είναι εξ αρχής ταξινομημένες βάση κριτηρίων που σχετίζονται με το Skyline. Έστω για παράδειγμα πως έχουμε τον αρχικό πίνακα των δεδομένων ταξινομημένο. Ο αλγόριθμος συνεχίζει σαν BNL με τη διαφορά ότι τώρα ξέρουμε πως αν ένα στοιχείο εισαχθεί στο παράθυρο τότε σίγουρα ανήκει στο τελικό Skyline.

28 Καμία εγγραφή που ακολουθεί δεν θα μπορεί να κυριαρχεί σε αυτό το τρέχον σημείο καθώς θα έρχονται ταξινομημένα και συνεπώς θα είναι πάντα παρακάτω (π.χ. μεγαλύτερα) σύμφωνα με τα κριτήρια ταξινόμησης. Στη συνέχεια παρουσιάζεται ο αλγόριθμος SFS. 3.3 Divide and Conquer Ο αλγόριθμος Divide and Conquer ή DC [24, 25] λειτουργεί με τον ακόλουθο τρόπο: Υπολογίζει τη διάμεσο της εισόδου για κάποια διάσταση d. Στη συνέχεια διαιρεί την είσοδο σε δύο μέρη. Το ένα μέρος θα έχει σε αυτή τη διάσταση τιμές μικρότερες της διαμέσου και το άλλο μεγαλύτερες. Στη συνέχεια υπολογίζονται τα Skylines των δύο τμημάτων που χωρίστηκαν βάση της διαμέσου στο προηγούμενο βήμα. Για να γίνει αυτό υπολογίζονται εφαρμόζοντας αναδρομικά τον ίδιο αλγόριθμο στα δύο τμήματα ξεχωριστά. Κοιτώντας την αναδρομή σε βάθος, σταματά όταν χωρίζοντας με τη διάμεσο ένα τμήμα σε δύο μένουν λίγα σημεία όπου ο υπολογισμός του Skyline σε αυτά είναι τετριμμένος. Τέλος το ολικό Skyline προκύπτει από τα Skylines των δύο τμημάτων, κάθε ένα από τα οποία προέκυψε με τον ίδιο τρόπο από τα δύο αντίστοιχα μικρότερα τμήματα, αναδρομικά. Στη συνέχεια παρουσιάζονται τα βήματα του αλγορίθμου.

29 3.4 Branch and Bound O αλγόριθμος Branch and Bound ή BBS [26] ανήκει σε μία κατηγορία αλγορίθμων που εκμεταλλεύονται υπάρχουσες δομές δεδομένων όπως οι R-Tree [29], R*-Tree [31], X-tree [30]. Για την λειτουργία του, σαν είσοδο του δέχεται ένα Rtree και, και έχει αρχικά ένα κενό Skyline και ένα σωρό με τα στοιχεία της ρίζας, ταξινομημένα με βάση την ελάχιστη απόσταση από κάποιο μηδενικό σημείο-διάνυσμα. Στη συνέχεια επεκτείνει σε κάθε βήμα μόνο αυτούς τους κόμβους στους οποίους δεν κυριαρχεί κανένα από τα στοιχεία του Skyline, ενώ απορρίπτει τα παιδιά τους στα οποία κυριαρχεί κάποιο στοιχείο. Αν φτάσει σε φύλλο, τότε αυτό εισάγεται στο Skyline. Στην συνέχεια φαίνονται τα βήματα του αλγορίθμου.

30

31 Ενότητα 4 Skylines σε Περιβάλλον MapReduce Στην ενότητα αυτή συλλέγουμε αναφορές για εργασίες που ερευνήθηκαν, στις οποίες φαίνονται είτε ιδέες στις οποίες βασιστήκαμε για να τις εξελίξουμε είτε αλγόριθμοι για εύρεση του Skyline μιας συλλογής με χρήση MapReduce. Συνδυάζονται δηλαδή οι τεχνικές από τις δύο προηγούμενες ενότητες. Αρχικά πρέπει να αναφερθεί πως τα Skylines έχουν μελετηθεί από τη σκοπιά της παράλληλης και κατανεμημένης επεξεργασίας και έξω από τα πλαίσια του MapReduce. Μάλιστα σε αυτό το χώρο υπάρχουν αρκετές ενδιαφέρουσες και σημαντικές εργασίες, μεταξύ αυτών και οι [32, 33, 34, 35] και ένα τμήμα έρευνας στα Skylines εστιάζει στο αν αυτές μπορούν να μεταφερθούν στα πλαίσια του MapReduce. Στη συνέχεια παρ' όλα αυτά η συζήτηση εστιάζει αποκλειστικά σε υλοποιήσεις στα πλαίσια του Hadoop. Ένα ενδιαφέρον θέμα στο Hadoop το οποίο είναι άξιο μελέτης τόσο για αλγορίθμους Skyline όσο και για άλλου τύπου προβλήματα είναι ο διαμοιρασμός των δεδομένων. Καθώς οι εγγραφές περνάνε από τη φάση Map στη φάση Reduce μπορούμε να ορίσουμε ότι αυτές δεν θα κατευθύνονται στους διαθέσιμους Reducers με τρόπο που ελέγχεται από το Hadoop αλλά από κάποια δική μας τεχνική Partitioning. Διάφοροι αλγόριθμοι έχουν μελετηθεί γύρω από αυτό με διαφορετικό προσανατολισμό, διαφορετικά οφέλη και μειονεκτήματα. Κάποιες βασικές μορφές Partitioning φαίνονται στα σχήματα 4.1 και 4.2 και αντιστοιχούν στα Dimensional Partitioning [36, 37] και Grid Partitioning [38,39]. Μία άλλη τεχνική Partitioning η οποία φαίνεται να προσφέρει ειδικά στη περίπτωση του υπολογισμού των Skylines είναι η τεχνική Angle-Based Partitioning [40, 41, 42] η οποία φαίνεται στα σχήματα 4.3 και 4.4. Τέλος μια ιδέα η οποία μπορεί να φανεί ιδιαίτερα χρήσιμη όσο το πλήθος των δεδομένων αυξάνεται είναι αυτή της δειγματοληψίας [43, 44, 45]. Στόχος είναι πάντα να μπορέσουμε βάση κάποιας μικρής και εύκολα επεξεργάσιμης ποσότητας δεδομένων να βγάλουμε κάποια καθολικά συμπεράσματα για ολόκληρη τη συλλογή. Μπορούμε για παράδειγμα να εκτιμήσουμε το είδος της κατανομής. Επιπλέον μπορούμε να εφαρμόσουμε κάποια τεχνική φιλτραρίσματος η οποία θα μας γλιτώ-

32 νει από πιθανό κόστος σε χρόνο επεξεργασίας αλλά και κόστος μεταφοράς στο δίκτυο με το να απορρίπτει εξ αρχής εγγραφές που δεν θα περιέχονται στο τελικό Skyline. Σχήμα 4.1: Dimensional Partitioning. Σχήμα 4.2: Grid Partitioning. Σχήμα 4.3: Angle-Based Partitioning. Σχήμα 4.4: Angle-Based Partitioning 3 διαστάσεων.

33 Μία εργασία [46] η οποία δεν ασχολείται με αλγορίθμους Skyline αλλά Clustering παρουσιάζει ιδιαίτερο ενδιαφέρον καθώς χρησιμοποιεί το ίδιο σκεπτικό σε ένα διαφορετικό χώρο προβλημάτων. Η ιδέα σε αυτήν είναι να χρησιμοποιούνται δύο διαφορετικοί αλγόριθμοι με διαφορετικά κόστη για τον υπολογισμό των clusters μια συλλογής ανάλογα με το ποιος αλγόριθμος συμφέρει σε κάθε περίπτωση. Στον έναν από τους δύο, στον δεύτερο που φαίνεται στο σχήμα 4.6 χρησιμοποιείται δειγματοληψία με τον τρόπο που αναφέρθηκε. Αυτή επιτυγχάνεται με μια ξεχωριστή φάση MapReduce. Το ενδιαφέρον σε αυτήν είναι ότι μπορεί να εφαρμοστεί σε Skylines με αντίστοιχο τρόπο όπως εφαρμόζεται και στα clusters στο συγκεκριμένο πρόβλημα. Πειραματιστήκαμε με αυτήν την ιδέα, και αλγόριθμοι που την υλοποιούν παρουσιάζονται στην επόμενη ενότητα. Σχήμα 4.5: Ο αλγόριθμος ParC που θα μπορούσε να χρησιμοποιηθεί σε Skylines.

34 Σχήμα 4.6: Ο αλγόριθμος Snl που θα μπορούσε να χρησιμοποιηθεί σε Skylines. Τέλος πρέπει να αναφερθούν εκείνοι οι αλγόριθμοι που υπολογίζουν το Skyline μιας συλλογής σε MapReduce. Δύο σημαντικές εργασίες που έχουν γίνει είναι οι [42, 49]. Στην πρώτη έχει χρησιμοποιηθεί ο αλγόριθμος BNL [23] με διαφορετικούς τρόπους Partitioning (Dimensional Partitioning, Grid Partitioning και Angle-Based Partitioning) και συγκεκριμένα στο σχήμα 4.7 φαίνεται ο αλγόριθμος που χρησιμοποιήθηκε στο Angle-Based Partitioning στο οποίο εστίασε αυτό το paper. Στην εργασία [49] παρουσιάζονται τρεις αλγόριθμοι υπολογισμού Skyline σε MapReduce, οι MR-BNL, MR-SFS και MR-Bitmap οι οποίοι βασίζονται αντίστοιχα στους αλγορίθμους BNL [23], SFS [27] και Bitmap [50]. Στο σχήμα 4.8 φαίνεται ο αλγόριθμος MR-BNL. Χρησιμοποιείται μία τεχνική βάση της οποίας αντιστοιχούνται flags στον χώρο τα οποία εκμεταλλεύονται τις σχέσεις κυριαρχίας ώστε στο τέλος ο αλγόριθμος να γλιτώνει συγκρίσεις ανάμεσα στις εγγραφές. Για παράδειγμα βλέποντας το σχήμα, ένα διάνυσμα που βρίσκεται στο Region01 δεν μπορεί ποτέ να κυριαρχεί ή να κυριαρχείται σε σχέση με ένα διάνυσμα που ανήκει στο Region10.

35 Σχήμα 4.7: Η τεχνική Partitioning της εργασίας [42]. Σχήμα 4.8: Ο αλγόριθμος MR-BNL της εργασίας [49].

36 Ο αλγόριθμος MR-SFS είναι σχεδόν ομοιότυπος με τον MR-BNL. Έχουν την ίδια λειτουργία με τη μόνη διαφορά ότι χρησιμοποιείται η τεχνική Secondary Sorting [11, 20] ώστε τα δεδομένα να φτάνουν ταξινομημένα και η επεξεργασία να γίνεται με τον αλγόριθμο SFS. Τέλος, παρακάτω φαίνεται ο τρίτος αλγόριθμος που αναπτύχθηκε από την εργασία, ο MR-Bitmap. Κλείνοντας, πρέπει να αναφερθεί πως το επιστημονικό πεδίο που αφορά την εύρεση του Skyline μιας συλλογής σε περιβάλλον MapReduce δεν έχει, ακόμα, επαρ-κώς ερευνηθεί. Έτσι προκύπτουν διαρκώς νέες ιδέες, και προτάσεις, γύρω από αυτό, που οδηγούν με σταθερό ρυθμό σε όλο και καλύτερες λύσεις επεξεργασίας.

37 Ενότητα 5 Nέοι Αλγόριθμοι Στην ενότητα αυτή παρουσιάζονται οι δικές μας ερευνητικές προτάσεις για τον υπολογισμό του skyline μιας συλλογής με χρήση του Hadoop [3]. Οι αλγόριθμοι που αντιστοιχούν στις υποενότητες 5.1, 5.2, 5.3, 5.4, 5.5 είναι εκείνοι που σκοπεύουμε να παρουσιάσουμε ενώ οι υπόλοιποι δημιουργήθηκαν για επιπλέον πειραματισμό. Η υλοποίηση πραγματοποιήθηκε στην έκδοση [47] του Hadoop και όλοι οι αλγόριθμοι χρησιμοποιούν δύο με τρεις MapReduce διαδικασίες για τον υπολογισμό του τελικού skyline. 5.1 Αλγόριθμος Skyline-Baseline Στη μέθοδο αυτή o υπολογισμός του skyline της συλλογής ολοκληρώνεται σε δύο MapReduce διαδικασίες. Μια οπτική αναπαράσταση του αλγορίθμου φαίνεται στο σχήμα 5.1. Στην πρώτη διαδικασία, πολλοί Mappers διαβάζουν την συλλογή. Για κάθε διάνυσμα που δέχονται υπολογίζουν το άθροισμα των συντεταγμένων του και στη συνέχεια το προωθούν στους Reducers. Στη ενδιάμεση φάση, στη φάση του Shuffling χρησιμοποιείται η τεχνική Secondary Sorting έτσι ώστε τα δεδομένα που θα φτάσουν σε κάθε Reducer να είναι ταξινομημένα ως προς το άθροισμα συντεταγμένων για να μπορεί άμεσα να εκτελεστεί ο αλγόριθμος SFS. Στη φάση Reduce, o κάθε Reducer με βάση τον αλγόριθμο SFS υπολογίζει το skyline των τοπικών δεδομένων που δέχτηκε και η διαδικασία ολοκληρώνεται. Στη δεύτερη διαδικασία, πολλοί Mappers διαβάζουν τα δεδομένα που προέκυψαν από πριν, δηλαδή τα τοπικά skyline. Όπως και πριν υπολογίζουν το άθροισμα των συντεταγμένων τους και τα προωθούν στη φάση Reduce. Στη φάση Shuffling με Secondary Sorting τα δεδομένα φτάνουν ταξινομημένα ως προς το άθροισμα συντεταγμένων. Τέλος στη φάση Reduce ένας τελικός Reducer εκτελεί τον αλγόριθμο SFS και υπολογίζει το ολικό skyline της συλλογής.

38 Σχήμα 5.1: Αλγόριθμος Skyline-Baseline. 5.2 Αλγόριθμος Skyline-Fifo Στη μέθοδο αυτή o υπολογισμός του skyline της συλλογής ολοκληρώνεται σε δύο MapReduce διαδικασίες. Μια οπτική αναπαράσταση του αλγορίθμου φαίνεται στο σχήμα 5.2. Στην πρώτη διαδικασία, πολλοί Mappers διαβάζουν την συλλογή. Κάθε Mapper διαθέτει μία μνήμη fifo το μέγεθος της οποίας ορίζεται από τον χρήστη. Καθώς σταδιακά ένα ένα τα διανύσματα καταφθάνουν ως είσοδος, αυτά δεν συλλέγονται κατευθείαν αλλά περνούν από μία ενδιάμεση φάση. Συγκεκριμένα, το

39 πρώτο διάνυσμα που θα διαβαστεί θα εισαχθεί στη μνήμη fifo. Το επόμενο που θα έρθει θα συγκριθεί με το υπάρχον και αν κυριαρχεί σε αυτό τότε το υπάρχον θα σβηστεί και το νέο θα εισαχθεί, αν είναι ανεξάρτητο θα εισαχθεί στο υπόλοιπο της μνήμης και αν κυριαρχείται τότε απορρίπτεται και η επεξεργασία του σταματά εκεί. Αυτή η διαδικασία επαναλαμβάνεται καθώς τα διανύσματα έρχονται ένα ένα κάθε νέο διάνυσμα συγκρίνεται με όλα τα υπόλοιπα στη μνήμη με το ίδιο σκεπτικό, έως ότου η μνήμη γεμίσει. Σχήμα 5.2: Αλγόριθμος Skyline-Fifo. Μέχρι στιγμής κανένα σημείο δεν έχει προωθηθεί στους Reducers. Όταν δεν θα υπάρχει άλλος χώρος στη μνήμη fifo ένα σημείο αφαιρείται από αυτήν και συλλέγεται για την φάση Reduce. Tο σημείο που επιλέγεται είναι το πιο παλιό από

40 τα υπόλοιπα υπάρχει δηλαδή η λογίκη First In First Out [48]. Με αυτό το σκεπτικό το κέρδος είναι σημαντικό καθώς ένα κομμάτι της συλλογής απορρίπτεται και δεν ταξιδεύει πάνω στο δίκτυο κατά την φάση του Shuffling. Για τα σημεία τα οποία συλλέγονται, πριν προωθηθούν υπολογίζεται το άθροισμα των συντεταγμένων τους. Στη συνέχεια με την τεχνική του Secondary Sorting φτάνουν στους Reducers ταξινομημένα ως προς αυτό το άθροισμα για να ξεκινήσει η φάση Reduce. Σε αυτήν, η εκτέλεση είναι ομοιότυπη με εκείνη του αλγορίθμου SkylineBaseline. Εκτελείται δηλαδή ο αλγόριθμος SFS και υπολογίζονται τα τοπικά skylines. H δεύτερη διαδικασία είναι ίδια με την πρώτη με μόνη διαφορά ότι στη φάση Reduce τα δεδομένα συλλέγονται σε έναν μόνο Reducer ώστε να υπολογιστεί το ολικό skyline. Toνίζεται πως ως μέγεθος μνήμης fifo παραμένει το ίδιο μέγεθος που ορίστηκε και για την πρώτη διαδικασία. 5.3 Αλγόριθμος Skyline-Volume Στη μέθοδο αυτή o υπολογισμός του skyline της συλλογής ολοκληρώνεται σε δύο MapReduce διαδικασίες με σκεπτικό ανάλογο με αυτό του αλγορίθμου Skyline-Fifo. Μια οπτική αναπαράσταση του αλγορίθμου φαίνεται στο σχήμα 5.3. Στην πρώτη διαδικασία, πολλοί Mappers διαβάζουν την συλλογή. Κάθε Mapper διαθέτει μία μνήμη volume το μέγεθος της οποίας ορίζεται από τον χρήστη. Καθώς σταδιακά ένα ένα τα διανύσματα καταφθάνουν ως είσοδος, αυτά δεν συλλέγονται κατευθείαν αλλά περνούν από μία ενδιάμεση φάση. Όπως στον αλγόριθμο Skyline-Fifo έτσι και εδώ υπάρχει μία ενδιάμεση μνήμη, η μνήμη volume το μέγεθος της οποίας δίνεται από τον χρήστη. Όταν ένα νέο στοιχείο καταφθάνει, συγκρίνεται με όλα τα υπόλοιπα στοιχεία που βρίσκονται σε αυτήν και αν κυριαρχεί σε κάποια διανύσματα τότε αυτά σβήνονται, αν είναι ανεξάρτητο από αυτά τότε εισάγεται στη μνήμη και τέλος αν κυριαρχείται το ίδιο από άλλο στοιχείο, τότε, απορρίπτεται. Η διαφορά αυτού του αλγορίθμου από τον Skyline-Fifo είναι η οργάνωση των στοιχείων μέσα σε αυτή τη μνήμη. Εδώ δεν επικρατεί το σκεπτικό First In First Out όταν η μνήμη γεμίσει και ένα στοιχείο πρέπει να προωθηθεί στη φάση Reduce. Αλλά, τα στοιχεία βρίσκονται διαρκώς ταξινομημένα ως προς το volume τους. Δηλαδή ως προς το εμβαδό της περιοχής στην οποία κυριαρχούν. Πρώτο στοιχείο στη μνήμη είναι εκείνο με το μεγαλύτερο volume και τελευταίο εκείνο με το μικρότερο. Ένα στοιχείο με μεγάλο volume έχει σημαντικές πιθανότητες να κυριαρχήσει σε ένα ερχόμενο στοιχείο και έτσι αυτό να απορριφθεί γρήγορα. Έχοντας τα στοιχεία με μεγάλο volume ψηλά μέσα στη μνήμη volume μειώνουμε τις απαιτούμενες συγκρίσεις που χρειάζονται για τα σημεία που κυριαρχούνται ώστε να τα απορρίψουμε. Όταν η μνήμη γεμίσει και ένα στοιχείο πρέπει να αφαιρεθεί, θα επιλεχτεί εκείνο με το μικρότερο volume και θα συνεχίσει τη πορεία του προς την φάση Reduce. Με αυτό το σκεπτικό η μνήμη με την πάροδο του χρόνου έχει όλο και πιο δυνατά στοιχεία που θα διώχνουν όλο και περισσότερα από εκείνα που έρχονται. Στην συνέχεια το σκεπτικό παραμένει το ίδιο με εκείνο τον υπόλοιπων αλγορίθμων. Για τα στοιχεία υπολογίζεται το άθροισμα των συντεταγμένων τους και προωθούνται στη φάση Shuffling. Με την τεχνική Secondary Sorting φτάνουν ταξινομημένα στους Reducers και εκεί εκτελείται ο SFS για τον υπολογισμό των τοπικών skylines.

41 Η δεύτερη διαδικασία είναι η ίδια με την πρώτη. Χρησιμοποιείται με τον ίδιο τρόπο η μνήμη volume και έχει το ίδιο μέγεθος αυτό που δόθηκε εξ αρχής από τον χρήστη. Η είσοδος σε αυτή τη διαδικασία είναι η έξοδος της προηγούμενης, δηλαδή, τα τοπικά skylines και η έξοδος είναι το ολικό skyline. Για αυτό στη φάση Reduce ενεργοποιείται μόνο ένας Reducer για να εκτελέσει τον τελικό SFS. Σχήμα 5.3: Αλγόριθμος Skyline-Volume. To κέρδος αυτού του αλγορίθμου σε σχέση με τον Skyline-Baseline αλγόριθμο είναι πως με τις συγκρίσεις που εκτελούνται στη φάση Map με την μνήμη volume απορρίπτονται σημεία που έτσι και αλλιώς δεν ανήκουν στο τελικό skyline και δεν περνούν από τη φάση Shuffling κάτι που θα σήμαινε επιπλέον κόστος μεταφοράς στο δίκτυο καθώς και I/Os.

42 5.4 Αλγόριθμος Skyline-Sampling-Adapt-Fifo Στον αλγόριθμο αυτό καθώς και στους υπόλοιπους που ακολουθούν εισάγεται η έννοια της δειγματοληψίας. Στόχος αυτής είναι να προσθέσουμε ένα πέρασμα της συλλογής στον αλγόριθμό μας με αντάλλαγμα να προσδιορίσουμε τη μορφή της συλλογής και τα χαρακτηριστικά της π.χ. το μέγεθος του skyline της σε σχέση με το πλήθος των στοιχείων της, ώστε να κάνουμε καλύτερες επιλογές σε παραμέτρους που χρησιμοποιούμε για την αποδοτικότερη λειτουργία στο υπόλοιπο του αλγορίθμου. Λόγω του επιπλέον περάσματος που εκτελούμε στη συλλογή δεδομένων, προστίθεται μία έξτρα διαδικασία MapReduce στον αλγόριθμο. Συγκεκριμένα για τον Skyline-Sampling-Adapt-Fifo το ολικό skyline υπολογίζεται σε τρείς διαδικασίες όπως παρουσιάζεται και στο σχήμα 5.4. Στην πρώτη διαδικασία πολλοί Mappers διαβάζουν τη συλλογή. Για κάθε διάνυσμα που επεξεργάζονται, με ορισμένη πιθανότητα, η οποία δίνεται από τον χρήστη, επιλέγουν αν θα κρατήσουν αυτό το διάνυσμα ή όχι. Για τα διανύσματα που κρατούνται, υπολογίζεται το άθροισμα των συντεταγμένων τους και προωθούνται στη συνέχεια στη φάση του Shuffling. Εκεί με την τεχνική Secondary Sorting φτάνουν ταξινομημένα σε έναν Reducer όπου εκτελείται ο αλγόριθμος SFS και υπολογίζεται το skyline του δείγματος. Επιπλέον, υπολογίζεται με εκτίμηση το ποσοστό της συλλογής που αποτελεί το skyline. Τόσο αυτό το εκτιμώμενο ποσοστό όσο και το skyline του δείγματος αποθηκεύονται στο κατανεμημένο σύστημα αρχείων του Hadoop. Στη δεύτερη διαδικασία χρησιμοποιείται η μνήμη fifo όπως και στον αλγόριθμο Skyline-Fifo. Εδώ όμως το σκεπτικό διαφέρει διότι διαθέτουμε επιπλέον πληροφορίες που αποκτήθηκαν από τη διαδικασία της δειγματοληψίας. Έτσι τώρα το μέγεθος της μνήμης fifo δεν ορίζεται πια από τον χρήστη αλλά προσδιορίζεται ανάλογα από το πόσο μεγάλο είναι το skyline σε σχέση με το μέγεθος της συλλογής. Η μόνη παράμετρος που ορίζεται από τον χρήστη είναι το μέγιστο επιτρεπόμενο μέγεθος μνήμης που μπορεί να χρησιμοποιηθεί. Το ποσοστό αυτού που τελικά χρησιμοποιείται θα είναι ίσο με το ποσοστό του skyline στο μέγεθος της συλλογής που εκτιμήθηκε. Έτσι αν μια συλλογή έχει μικρό skyline δεν χρειάζεται να ξοδεύεται πολλή μνήμη για αυτήν και να γίνονται πολλές συγκρίσεις ενώ όταν μια συλλογή έχει μεγάλο skyline θα μπορεί να έχει καλή απόδοση καθώς η μνήμη fifo ορίζεται στις ανάγκες της. Έτσι στη συνέχεια ο αλγόριθμος δουλεύει σε αυτή τη διαδικασία μαζί με την μνήμη fifo όπως και ο αλγόριθμος Skyline-fifo. Το μέγεθος της μνήμης ορίστηκε όπως αναφέραμε. Για επιπλέον αποτελεσματικότητα και μεγαλύτερο κέρδος στις απαιτούμενες συγκρίσεις, κατά την εκκίνηση της δεύτερης διαδικασίας, σε κάθε Mapper η μνήμη fifo δεν είναι άδεια αλλά γεμάτη με τα σημεία του skyline του δείγματος. Αν τα σημεία αυτά είναι περισσότερα από όσα χωράει η μνήμη τότε κρατούνται εκείνα με το μικρότερο άθροισμα συντεταγμένων ενώ αν ισχύει το ανάποδο και ο χώρος την μνήμης είναι μεγαλύτερος, κρατούνται όλα. Έτσι καθώς οι Mappers διαβάζουν την είσοδο, το κάθε νέο διάνυσμα συγκρίνεται με στοιχεία που έχουν ήδη βρεθεί ως skyline ανάμεσα σε άλλα. Τονίζεται πως τα στοιχεία της εισόδου δεν αναμειγνύονται με εκείνα του skyline του δείγματος ώστε να μην δημιουργηθούν τυχόν διπλότυπα που δεν υπάρχουν πραγματικά στη συλλογή, αλλά το skyline του δείγματος χρησιμοποιείται μόνο ώστε να χρειαστούν λιγότερες συγκρίσεις και να αξιοποιηθεί η διαθέσιμη

43 Σχήμα 5.4: Skyline-Sampling-Adapt-Fifo.

44 μνήμη με τον καλύτερο δυνατό τρόπο. Στη συνέχεια εφαρμόζεται το σκεπτικό fifo όπως και στον αλγόριθμο Skyline-Fifo. Για κάθε σημείο που συλλέγεται υπολογίζεται το άθροισμα των συντεταγμένων του, προωθείται στη φάση Shuffling και φτάνει με ταξινομημένο τρόπο ως προς το άθροισμα αυτό για να περάσει στη φάση Reduce. Εκεί με τον αλγόριθμο SFS υπολογίζονται τα τοπικά skylines στους Reducers τα οποία αποθηκεύονται για την επόμενη διαδικασία. Η τρίτη διαδικασία είναι ομοιότυπη με τη δεύτερη διαδικασία του SkylineFifo με μόνη διαφορά ότι το μέγεθος της μνήμης fifo δεν δίνεται από τον χρήστη αλλά είναι αυτό το οποίο υπολογίστηκε βάση της δειγματοληψίας. Αναφέρεται πως σε αυτή τη φάση η μνήμη fifo κατά την εκκίνηση των Mappers είναι άδεια. 5.5 Αλγόριθμος Skyline-Sampling-Adapt-Volume Στη μέθοδο αυτή o υπολογισμός του skyline της συλλογής ολοκληρώνεται σε τρεις MapReduce διαδικασίες με σκεπτικό ανάλογο με αυτό του αλγορίθμου Skyline-Sampling-Adapt-Fifo. Μια οπτική αναπαράσταση του αλγορίθμου φαίνεται στο σχήμα 5.5. Η μόνη διαφορά των δύο αυτών αλγορίθμων είναι ότι στη μνήμη που χρησιμοποιείται στους Mappers η οργάνωση δεν γίνεται βάση της λογικής fifo αλλά βάση του volume όπως και στον Skyline-Volume. 5.6 Αλγόριθμος Skyline-Sampling-Baseline Στη μέθοδο αυτή o υπολογισμός του skyline της συλλογής ολοκληρώνεται σε τρεις MapReduce διαδικασίες με σκεπτικό ανάλογο με αυτό του αλγορίθμου Skyline-Sampling-Adapt-Fifo. Μια οπτική αναπαράσταση του αλγορίθμου φαίνεται στο σχήμα 5.6. Στη πρώτη διαδικασία εκτελείται η δειγματοληψία όπως αυτή περιγράφηκε στον αλγόριθμο Skyline-Sampling-Adapt-Fifo. Η μόνη διαφορά εδώ είναι πως δεν χρειάζεται να εκτιμηθεί το ποσοστό της συλλογής που αποτελεί το skyline αλλά απλά να βρεθεί το skyline του δείγματος. Η δεύτερη διαδικασία είναι όπως η πρώτη του αλγορίθμου Skyline-Baseline. Υπάρχει μόνο μία διαφορά, εδώ αξιοποιείται το skyline του δείγματος και λειτουργεί σαν φίλτρο. Κάθε διάνυσμα που έρχεται ως είσοδος ελέγχεται με κάθε σημείο του. Αν κυριαρχηθεί από κάποιο δεν εξετάζεται περισσότερο. Έτσι ένα σημαντικό κομμάτι της συλλογής απορρίπτεται από την αρχή. Η τρίτη διαδικασία είναι ομοιότυπη με την δεύτερη του αλγορίθμου Skyline-Baseline. 5.7 Αλγόριθμος Skyline-Sampling-Fifo Στη μέθοδο αυτή o υπολογισμός του skyline της συλλογής ολοκληρώνεται σε τρεις MapReduce διαδικασίες με σκεπτικό ανάλογο με αυτό του αλγορίθμου Skyline-Sampling-Adapt-Fifo. Μια οπτική αναπαράσταση του αλγορίθμου φαίνεται στο σχήμα 5.7. Στη πρώτη διαδικασία εκτελείται η δειγματοληψία όπως αυτή περιγράφηκε στον αλγόριθμο Skyline-Sampling-Adapt-Fifo με μόνη διαφορά ότι εδώ δεν χρειά-

45 Σχήμα 5.5: Skyline-Sampling-Adapt-Volume.

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

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

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

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο 2016-2017 Υποχρεωτική εργασία Τα τελευταία χρόνια, λόγω της τεράστιας αύξησης της ποσότητας της πληροφορίας που έχουμε

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

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

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

Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον

Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον Δανάη Κούτρα Eργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Εθνικό Μετσόβιο Πολυτεχνείο Θέματα Σκοπός της διπλωματικής

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

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

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

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

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

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

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

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

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

Κατακερματισμός (Hashing) Κατακερματισμός (Hashing) O κατακερματισμός είναι μια τεχνική οργάνωσης ενός αρχείου. Είναι αρκετά δημοφιλής μέθοδος για την οργάνωση αρχείων Βάσεων Δεδομένων, καθώς βοηθάει σημαντικά στην γρήγορη αναζήτηση

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

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

ΑΝΑΘΕΣΗ ΘΕΜΑΤΩΝ ΣΕΜΙΝΑΡΙΟΥ ΑΝΑΘΕΣΗ ΘΕΜΑΤΩΝ ΣΕΜΙΝΑΡΙΟΥ 1) Υλοποίηση εφαρμογής σε android μήνυμα που να σας καλωσορίζει στο ΤΕΙ ΛΑΜΙΑΣ. ΗΜΗΤΡΙΟΥ ΣΤΑΥΡΟΣ ΑΜ.1802, ΚΟΝΤΑΞΗΣ ΘΑΝΑΣΗΣ ΑΜ 1690, ΠΑΠΠΑΣ ΗΜΗΤΡΗΣ ΑΜ 1731 Μια εφαρµογή που να

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams Αλέκα Σεληνιωτάκη Ηράκλειο, 26/06/12 aseliniotaki@csd.uoc.gr ΑΜ: 703 1. Περίληψη Συνεισφοράς

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

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

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

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

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

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

Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing)

Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διαχείριση Συγκρούσεων με Ανοικτή Διεύθυνση a) Linear

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

MapReduce Εισαγωγή. MapReduce. ηµήτρης Λεβεντέας

MapReduce Εισαγωγή. MapReduce. ηµήτρης Λεβεντέας Εισαγωγή MapReduce ηµήτρης Λεβεντέας 6 Μαΐου 2010 Εισαγωγή Ορισµός Τι είναι Ορισµός Το MapReduce είναι ένα framework λογισµικού που είσηχθηκε από την Google για να υποστηρίξει κατανεµηµένο υπολογισµό σε

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

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

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

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

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 14: Δέντρα IV B Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2 3 Δένδρα, Εισαγωγή και άλλες πράξεις Άλλα Δέντρα: Β δένδρα, Β+ δέντρα, R δέντρα Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231

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

EPL660: Information Retrieval and Search Engines Lab 5

EPL660: Information Retrieval and Search Engines Lab 5 EPL660: Information Retrieval and Search Engines Lab 5 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science Classes in Hadoop: InputFormat Fundamental class in Hadoop

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ» ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ» ΗΜΕΡ.ΑΝΑΘΕΣΗΣ: Δευτέρα 21 Δεκεμβρίου 2015 ΗΜΕΡ.ΠΑΡΑΔΟΣΗΣ: Δευτέρα 25 Ιανουαρίου 2016 Διδάσκοντες:

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

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

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

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 7 η Βασίλης Στεφανής Αλγόριθμοι ταξινόμησης Στην προηγούμενη διάλεξη είδαμε: Binary search Λειτουργεί μόνο σε ταξινομημένους πίνακες Πώς τους ταξινομούμε? Πολλοί τρόποι. Ενδεικτικά:

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

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

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

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

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

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

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

Αύξηση πελατών. Λίγα λόγια για Επιτυχημένες προωθήσεις

Αύξηση πελατών. Λίγα λόγια για Επιτυχημένες προωθήσεις Αύξηση πελατών Λίγα λόγια για Επιτυχημένες προωθήσεις Βελτίωση των προωθήσεων σας Εισαγωγή Συγκρίνετε τι σας συμφέρει Αποτέλεσμα και επανάληψη Υπάρχουν δυνατότητες για όλες τις επιχειρήσεις Εισαγωγή πληροφορίες

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

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

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

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

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

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

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

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

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

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω:

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω: Σημειώσεις Δικτύων Αναλογικά και ψηφιακά σήματα Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω: Χαρακτηριστικά

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

Πληροφοριακά Συστήματα Διοίκησης

Πληροφοριακά Συστήματα Διοίκησης Πληροφοριακά Συστήματα Διοίκησης Μεγάλα Δεδομένα ΠΜΣ Λογιστική Χρηματοοικονομική και Διοικητική Επιστήμη ΤΕΙ Ηπείρου Bytes 1KB = 2 10 1MB = 2 20 1GB = 2 30 1TB = 2 40 1PB = 2 50 1EB = 2 60 1ZB = 2 70 1YB

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

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

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

Μαζικός Παραλληλισμός λ με Map - Reduce. Μοντέλο Θέματα υλοποίησης Παραδείγματα διαχείρισης δεδομένων

Μαζικός Παραλληλισμός λ με Map - Reduce. Μοντέλο Θέματα υλοποίησης Παραδείγματα διαχείρισης δεδομένων Μαζικός Παραλληλισμός λ με Map - Reduce Μοντέλο Θέματα υλοποίησης Παραδείγματα διαχείρισης δεδομένων Ευχαριστίες Οι διαφάνειες στηρίζονται σε μεγάλο βαθμό στο υλικό που είναι διαθέσιμο από το εργαστήριο

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

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

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

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

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

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός Αυτόνομοι Πράκτορες ΝΑΟ Μουσικός Καρατζαφέρης Ευστάθιος Αλέξανδρος 2007 030 046 Πολυτεχνείο Κρήτης Σύντομη Περιγραφή Στόχος της εργασίας μας είναι η υλοποίηση της συμπεριφοράς αλλα και της λειτουργικότητας

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

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

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

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

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

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS Ακαδημαϊκό Έτος 2016-2017, Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS A. Εισαγωγή στις βάσεις δεδομένων - Γνωριμία με την ACCESS B. Δημιουργία Πινάκων 1. Εξήγηση των

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

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

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

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

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

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

Σενάριο Χρήσης myschool Σενάριο Χρήσης ΦΟΡΕΙΣ Επιβεβαίωση των Στοιχείων του Φορέα Αρχικά, θα κληθείτε να ελέγξετε την ορθότητα των στοιχείων του Φορέα σας. Επιλέγοντας την καρτέλα «Φορείς», από το μενού που βρίσκεται στο πάνω

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 25: Τεχνικές Κατακερματισμού II Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Διαχείριση Συγκρούσεων με Ανοικτή Διεύθυνση a) Linear Probing, b) Quadratic Probing c) Double Hashing Διατεταγμένος

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

Πληροφοριακά Συστήματα Διοίκησης

Πληροφοριακά Συστήματα Διοίκησης Πληροφοριακά Συστήματα Διοίκησης Μεγάλα Δεδομένα ΠΜΣ Λογιστική Χρηματοοικονομική και Διοικητική Επιστήμη ΤΕΙ Ηπείρου @ 2017 Bytes 1KB = 2 10 1MB = 2 20 1GB = 2 30 1TB = 2 40 1PB = 2 50 1EB = 2 60 1ZB =

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

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών Μάθημα 3: Αρχιτεκτονική Υπολογιστών 3.1 Περιφερειακές μονάδες και τμήμα επεξεργασίας Στην καθημερινή μας ζωή ερχόμαστε συνέχεια σε επαφή με υπολογιστές. Ο υπολογιστής είναι μια συσκευή που επεξεργάζεται

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραμματισμού

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

Διάλεξη 18: B-Δένδρα

Διάλεξη 18: B-Δένδρα Διάλεξη 18: B-Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή & Ισοζυγισμένα Δένδρα 2-3 Δένδρα, Περιγραφή Πράξεων της Εισαγωγής και άλλες πράξεις Β-δένδρα Διδάσκων: Κωνσταντίνος

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

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή. Λίστες Τι είναι οι λίστες; Πολλές φορές στην καθημερινή μας ζωή, χωρίς να το συνειδητοποιούμε, χρησιμοποιούμε λίστες. Τέτοια παραδείγματα είναι η λίστα του super market η οποία είναι ένας κατάλογος αντικειμένων

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

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

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

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

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

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

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

Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση Εντοπισμός ενός σήματος STOP σε μια εικόνα. Περιγράψτε τη διαδικασία με την οποία μπορώ να εντοπίσω απλά σε μια εικόνα την ύπαρξη του παρακάτω

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

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

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

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Σελ. 9-50 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-b.ggia.info/ Creative Commons License 3.0 Share-Alike Σύνδεση από σημείο

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1 Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave Περιεχόμενο εργαστηρίου: - Το περιβάλλον ανάπτυξης προγραμμάτων Octave - Διαδικασία ανάπτυξης προγραμμάτων MATLAB - Απλά

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

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας 4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας 4.1.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας από βάση δεδομένων Όταν εκκινήσουμε τον Discoverer εμφανίζεται στην οθόνη μας το παράθυρο διαλόγου του βοηθητικού προγράμματος

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα

Διάλεξη 14: Δέντρα IV - B-Δένδρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 14: Δέντρα IV - B-Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - 2-3 Δένδρα, Εισαγωγή και άλλες πράξεις - Άλλα Δέντρα: Β-δένδρα, Β+-δέντρα,

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

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

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

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

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

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

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

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση

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

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

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων 1.1. Εισαγωγή Γενικότερα δεν υπάρχει κάποια ταξινόμηση των πιθανών δικτύων κάτω από την οποία να ταιριάζουν όλα τα δίκτυα. Παρόλα αυτά η ταξινόμηση τους είθισται να γίνεται

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

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

Δομές Δεδομένων. Ενότητα 11: Τεχνικές Κατακερματισμού. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Ενότητα 11: Τεχνικές Κατακερματισμού Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

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

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος. Δομές Δεδομένων Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο Φυσικό Επίπεδο RAM Πίνακας 8 10 17 19 22 Ταξινομημένος Πίνακας 5 8 10 12 17 Δένδρο 8 5 10 12 19 17

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

Περί της Ταξινόμησης των Ειδών

Περί της Ταξινόμησης των Ειδών Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Σχολή Θετικών Επιστημών Τμήμα Φυσικής 541 24 Θεσσαλονίκη Καθηγητής Γεώργιος Θεοδώρου Tel.: +30 2310998051, Ιστοσελίδα: http://users.auth.gr/theodoru Περί της Ταξινόμησης

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πεδί α

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πεδί α ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Βάση δεδομένων είναι συσχετισμένα μεταξύ τους δεδομένα, οργανωμένα σε μορφή πίνακα. Οι γραμμές του πίνακα αποτελούν τις εγγραφές και περιλαμβάνουν τις πληροφορίες για μια οντότητα. Οι

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

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

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων Ταξινόμηση: Εισαγωγικά Ταξινόμηση (Sor ng) Ορέστης Τελέλης Βασικό πρόβλημα για την Επιστήμη των Υπολογιστών. π.χ. αλφαβητική σειρά, πωλήσεις ανά τιμή, πόλεις με βάση πληθυσμό, Μπορεί να είναι ένα πρώτο

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη 01 Εισαγωγή Μια απλή και γρήγορη εισαγωγή Το Splunk > είναι ένα πρόγραμμα το οποίο πρωτοεμφανίστηκε στην αγορά το 2003 και αποτελεί ένα πρόγραμμα εξόρυξης

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

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

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

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

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

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

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

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

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ 22 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Θέμα 1o: Lines man ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ [25 Μονάδες] Το ποδόσφαιρο από την ανακάλυψή του στο Πανεπιστήμιο του Cambridge, έγινε το πιο δημοφιλές αλλά και το πιο

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

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εκφώνηση: Δημιουργείστε εφαρμογή σε Java Swing με χρήση του IDE NetBeans όπου θα παρουσιάζεται ποιο κουμπί πατήθηκε. Η εφαρμογή θα μοιάζει ως εξής: Πρώτο Βήμα: Αρχική

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

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα ΕΝΤΟΛΕΣ χρησιμοποιηθούν παρακάτω στα παραδείγματα Βάζοντας την εντολή αυτή σε οποιοδήποτε αντικείμενο μπορούμε να αλλάζουμε

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

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

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

Διαχείριση Έργων- Στόχων

Διαχείριση Έργων- Στόχων Διαχείριση Έργων- Στόχων Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της Διαδικασίας Διαχείρισης Έργων-Στόχων. Παρακάτω προτείνεται μια αλληλουχία ενεργειών την οποία ο χρήστης

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