ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

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

Download "ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος"

Transcript

1 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 19 Δεκεμβρίου 2014, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας το πρόγραμμα turnin. Πληροφορίες για το πώς λειτουργεί το turnin παρέχονται στην ιστοσελίδα του μαθήματος. Image credit: NASA/CXC/SAO/JPL-Caltech/STScI Γενική Περιγραφή Image credit: NASA/CXC/JPL-Caltech/STScI Κατά αντιστοιχία με το 1 ο μέρος της εργασίας σας, καλείστε να υλοποιήσετε ένα πρόγραμμα που προσομοιώνει ένα μέρος του σύμπαντος. Το σύμπαν περιέχει γαλαξίες. Κάθε γαλαξίας περιέχει ηλιακά συστήματα και κάποιους ορφανούς πλανήτες (κι όχι συστάδες πλανητών όπως συνέβαινε στο 1 ο μέρος της εργασίας σας). Κάθε ηλιακό σύστημα έχει ένα αστέριήλιο γύρο από το οποίο περιστρέφονται πλανήτες. Όπως και στο 1 ο μέρος αυτής της προγραμματιστικής άσκησης, όλα θα ξεκινήσουν (αρχικοποιηθούν) με μία Μεγάλη Έκρηξη. Η «Μεγάλη Έκρηξη» σηματοδοτεί την έναρξη της δημιουργίας των γαλαξιών, των ηλιακών συστημάτων, των πλανητών και των υπόλοιπων σωμάτων που υπάρχουν στο σύμπαν. Σημείωση Σημειώνεται ότι προκειμένου να πραγματωθούν οι εκπαιδευτικοί στόχοι της εργασίας, όσα αναγράφονται στην παρούσα εκφώνηση δεν αντιστοιχούν (απαραίτητα) στην επιστημονική θεωρία δημιουργίας και εξέλιξης του σύμπαντος με ακρίβεια ή σε ό,τι θεωρείται αποδεκτό από την επιστημονική κοινότητα για τη δημιουργία του σύμπαντος και των μερών που το αποτελούν. 1

2 Αναλυτική Περιγραφή Ζητούμενης Υλοποίησης Για την υλοποίηση της προσομοίωσης της δημιουργίας του σύμπαντος, θα πρέπει να χρησιμοποιήσετε τον ίδιο πίνακα γαλαξιών (Galaxies), όπως και στο 1 ο μέρος της εργασίας. Ο πίνακας αυτός έχει σταθερό μέγεθος N. Κάθε στοιχείο του πίνακα γαλαξιών είναι μια εγγραφή (ένα struct) τύπου galaxy_t με τα ακόλουθα πεδία: gid: Αναγνωριστικό (τύπου int) του γαλαξία. Ένας μοναδικός αριθμός που χαρακτηρίζει μοναδικά το γαλαξία. solars: Δείκτης (τύπου solar_t*) στο πρώτο στοιχείο μιας μη-ταξινομημένης, απλά-συνδεδεμένης λίστας με κόμβο φρουρό, κάθε στοιχείο της οποίας αντιστοιχεί σε ένα ηλιακό σύστημα που ανήκει στο γαλαξία με αναγνωριστικό gid. Η λίστα αυτή ονομάζεται λίστα ηλιακών συστημάτων του γαλαξία με αναγνωριστικό gid. Κάθε στοιχείο της λίστας ηλιακών συστημάτων ενός γαλαξία είναι μία εγγραφή (ένα struct) τύπου solar_t με τα ακόλουθα πεδία: o sid: Αναγνωριστικό (τύπου int) του αστεριού-ήλιου του ηλιακού συστήματος. Είναι ένας μοναδικός αριθμός που αντιστοιχεί στο αστέρι-ήλιο του ηλιακού συστήματος. o planets: Ένας δείκτης (τύπου planet_t*) στη ρίζα ενός διπλά-συνδεδεμένου δυαδικού δένδρου (binary search tree) με κόμβο φρουρό, το οποίο είναι ταξινομημένο ως προς την απόσταση του κάθε πλανήτη από το αστέρι-ήλιο του ηλιακού συστήματος. Ένα δένδρο πλανητών φαίνεται στο Σχήμα 1. Κάθε στοιχείο του δέντρου πλανητών ενός ηλιακού συστήματος αντιστοιχεί σε έναν πλανήτη του ηλιακού συστήματος αποτελώντας μία εγγραφή (ένα struct) τύπου planet_t με τα ακόλουθα πεδία: pid: Αναγνωριστικό (τύπου int) του πλανήτη. Ένας μοναδικός αριθμός που αντιστοιχεί στον πλανήτη. distance: Ένας αριθμός που αντιστοιχεί στην απόσταση του πλανήτη με αναγνωριστικό pid από το αστέρι/ήλιο του ηλιακού συστήματος στο οποίο ανήκει. Προσέξτε πως το πεδίο αυτό αποθηκεύει διαφορετική πληροφορία από ότι στο 1 ο μέρος της προγραμματιστικής εργασίας, όπου αποθηκευόταν η απόσταση του πλανήτη από τον αμέσως προηγούμενο πλανήτη βάσει της σειράς εγγύτητας στο αστέρι-ήλιος. parent: Δείκτης (τύπου planet_t*) στον πατρικό κόμβο του κόμβου που αντιστοιχεί στον πλανήτη με αναγνωριστικό pid στο δένδρο πλανητών lc: Δείκτης (τύπου planet_t*) στο αριστερό παιδί του κόμβου που αντιστοιχεί στον πλανήτη με αναγνωριστικό pid στο δένδρο πλανητών rc: Δείκτης (τύπου planet_t*) στο δεξί παιδί του κόμβου που αντιστοιχεί στον πλανήτη με αναγνωριστικό pid στο δένδρο πλανητών o psentinel: Δείκτης (τύπου planet_t*) στον κόμβο φρουρό του δέντρου πλανητών o next: Δείκτης (τύπου solar_t*) στον επόμενο κόμβο της λίστας ηλιακών συστημάτων του γαλαξία. ssentinel: Δείκτης (τύπου solar_t*) στον κόμβο φρουρό της λίστας ηλιακών συστημάτων του γαλαξία με αναγνωριστικό gid. Καθώς το πεδίο next του κόμβου 2

3 φρουρού δεν χρειάζεται για την υλοποίηση της λίστας, κατ εξαίρεση σε αυτή την εργασία θα το χρησιμοποιήσουμε ως δείκτη στον τελευταίο κόμβο της λίστας. Με αυτό τον τρόπο μπορούμε να επιτύχουμε την συνένωση δύο λιστών ηλιακών συστημάτων σε χρόνο O(1). orphans: Ένας δείκτης (τύπου planet_t*) στη ρίζα ενός απλά-συνδεδεμένου δυαδικού δένδρου. Το δέντρο αυτό ονομάζεται δένδρο ορφανών πλανητών του γαλαξία με αναγνωριστικό gid. Κάθε κόμβος του δέντρου είναι μία εγγραφή (struct) τύπου planet_t όπως έχει περιγραφεί παραπάνω. Στο δέντρο ορφανών πλανητών, οι τιμές του πεδίου distance της εγγραφής τύπου planet_t δεν έχουν ενδιαφέρον (επομένως περιέχουν απλά μια αρχική τιμή). Επίσης, οι δείκτες parent όλων των κόμβων του δένδρου είναι NULL. Το δένδρο ορφανών πλανητών δεν είναι ταξινομημένο (δηλαδή το δένδρο δεν είναι binary search tree). Εισαγωγές στο δένδρο αυτό θα πραγματοποιούνται όπως περιγράφονται στην Άσκηση 1 α) της 3 ης σειράς ασκήσεων. Ένα δένδρο ορφανών πλανητών φαίνεται στο Σχήμα 2. Προσέξτε πως στο μέρος αυτό της προγραμματιστικής εργασίας δεν υπάρχουν πλέον συστάδες πλανητών. Κάθε ορφανός πλανήτης κινείται (χωρίς να ανήκει σε κάποια συστάδα) μέσα στο γαλαξία στον οποίο ανήκει. Τo Σχήμα 3 παρουσιάζει τις δομές δεδομένων που περιγράφτηκαν παραπάνω σε σχηματική μορφή. Σχήμα 1: Μορφή δέντρου πλανητών. 3

4 Σχήμα 2: Μορφή δέντρου ορφανών πλανητών.. Σχήμα 3: Σχηματική μορφή δομών δεδομένων που ζητείται να υλοποιηθούν στο 2 ο μέρος της προγραμματιστικής εργασίας. Τα δένδρα Τ1 και Τ2 παρουσιάζονται πιο αναλυτικά στα Σχήματα 1 και 2, αντίστροφα. 4

5 Τρόπος Λειτουργίας Προγράμματος Το πρόγραμμα που θα δημιουργηθεί θα πρέπει να εκτελείται καλώντας την ακόλουθη εντολή: <executable> <input-file> όπου <executable> είναι το όνομα του εκτελέσιμου αρχείου του προγράμματος (π.χ. a.out) και <input-file> είναι το όνομα ενός αρχείου εισόδου (π.χ. testfile) το οποίο περιέχει γεγονότα των ακόλουθων μορφών: B: Γεγονός τύπου Big Bang το οποίο σηματοδοτεί τη δημιουργία του σύμπαντος. Κατά το γεγονός αυτό αρχικοποιείται η δομή του πίνακα γαλαξιών (Galaxies) όπου το κάθε πεδίο του κάθε κελιού του πίνακα αρχικοποιείται με την τιμή NULL αν είναι δείκτης και INT_MAX (ή Integer.MAX_VALUE) για υλοποίηση σε γλώσσα C (ή Java αντίστοιχα) αν είναι τύπου int. Το γεγονός αυτό υλοποιείται με τον ίδιο τρόπο όπως και στο πρώτο μέρος της προγραμματιστικής εργασίας. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: B G <gid>: Γεγονός τύπου Galaxy Creation το οποίο σηματοδοτεί τη δημιουργία ενός νέου γαλαξία (galaxy_t) με αναγνωριστικό <gid> στο σύμπαν. Ο νέος γαλαξίας περιέχει κενή λίστα ηλιακών συστημάτων (solars) (δηλαδή η λίστα ηλιακών συστημάτων του γαλαξία περιέχει μόνο τον κόμβο φρουρό) και κενό δένδρο ορφανών πλανητών (οrphans). Ο νέος γαλαξίας προστίθεται στον πίνακα γαλαξιών. Χρησιμοποιήστε κατάλληλες μεταβλητές ώστε η χρονική πολυπλοκότητα της εισαγωγής να είναι Ο(1). Το γεγονός αυτό υλοποιείται με τον ίδιο τρόπο όπως και στο πρώτο μέρος της προγραμματιστικής εργασίας. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: G <gid> Galaxies = <gid 1 >, <gid 2 >, <gid n > όπου n είναι το πλήθος των γαλαξιών που υπάρχουν στο σύμπαν και για κάθε i, 1 i n, <gid i > είναι το αναγνωριστικό του i-οστού γαλαξία στο σύμπαν. S <sid> <gid>: Γεγονός τύπου Star Birth το οποίο σηματοδοτεί τη δημιουργία ενός νέου αστεριού-ήλιου και κατά συνέπεια τη δημιουργία ενός νέου ηλιακού συστήματος (solar_t) με αναγνωριστικό αστεριού-ήλιου <sid> στο γαλαξία με αναγνωριστικό <gid>. Το νέο ηλιακό σύστημα περιέχει κενό δέντρο πλανητών (planets), δηλαδή το δένδρο πλανητών του ηλιακού συστήματος περιέχει μόνο τον κόμβο φρουρό. Το γεγονός αυτό προσθέτει ένα νέο στοιχείο (που αντιστοιχεί στο νέο ηλιακό σύστημα) στη λίστα ηλιακών συστημάτων (solars) του γαλαξία με αναγνωριστικό <gid>. Το γεγονός αυτό υλοποιείται με τον ίδιο τρόπο όπως και στο πρώτο μέρος της προγραμματιστικής εργασίας. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 5

6 S <sid> <gid> Solars = <sid 1 >, <sid 2 > <sid n > όπου n είναι το πλήθος των ηλιακών συστημάτων που υπάρχουν στο γαλαξία με αναγνωριστικό <gid> και για κάθε i, 1 i n, <sidi> είναι το αναγνωριστικό του i- οστού ηλιακού συστήματος στο γαλαξία. P <pid> <distance> <sid>: Γεγονός τύπου Planet Creation το οποίο σηματοδοτεί τη δημιουργία ενός νέου πλανήτη (planet_t) με αναγνωριστικό <pid> στο ηλιακό σύστημα με αναγνωριστικό <sid>. Η παράμετρος <distance> περιγράφει την απόσταση του νέου πλανήτη από το αστέρι-ήλιο του ηλιακού συστήματος με αναγνωριστικό <sid>. Το γεγονός αυτό προσθέτει το νέο πλανήτη στην κατάλληλη θέση, βάσει του <distance>, στο δέντρο πλανητών του ηλιακού συστήματος με αναγνωριστικό <sid>. Είναι αξιοσημείωτο ότι για αυτή τη φάση της εργασίας, το πεδίο distance που αποθηκεύεται στην εγγραφή, αντιστοιχεί στην απόλυτη απόσταση του πλανήτη από το αστέρι/ήλιο του ηλιακού συστήματος που ανήκει. Προσέξτε πως το γεγονός αυτό απαιτεί να βρεθεί ο γαλαξίας στον οποίο ανήκει το ηλιακό σύστημα με αναγνωριστικό <sid>. Μετά το πέρας της εκτέλεσης ενός γεγονότος τύπου P το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: P <pid> <distance> <sid> <pid 1 > : <distance 1 > <pid 2 > : <distance 2 > όπου n είναι το πλήθος των πλανητών που υπάρχουν στο ηλιακό σύστημα με αναγνωριστικό αστεριού-ηλίου <sid> και για κάθε i, 1 i n: <pid n > : <distance n > <pidi> είναι το αναγνωριστικό του i-οστού πλανήτη στο δέντρο πλανητών του ηλιακού συστήματος με αναγνωριστικό αστεριού-ηλίου <sid> (στη διάταξη που προκύπτει από την ενδοδιατεγμένη διάσχιση), <distancei> είναι η απόσταση του πλανήτη με αναγνωριστικό <pidi> από το αστέρι/ήλιο του ηλιακού συστήματος με αναγνωριστικό αστεριού-ηλίου <sid>, Προσοχή: Για την εκτύπωση των αναγνωριστικών των πλανητών ενός ηλιακού συστήματος θα πρέπει να εφαρμόζεται ενδοδιατεταγμένη διάσχιση στο δένδρο πλανητών. D <sid> <distance>: Γεγονός τύπου Star Death το οποίο σηματοδοτεί το θάνατο ενός αστεριού-ήλιου και κατά συνέπεια την καταστροφή του ηλιακού συστήματος με αναγνωριστικό αστεριού-ηλίου <sid>. Κατά την καταστροφή του ηλιακού συστήματος με αναγνωριστικό <sid> καταστρέφονται (και άρα πρέπει να διαγραφούν) και όλοι οι πλανήτες του που απέχουν λιγότερο από <distance> km από το αστέρι-ήλιο. Οι πλανήτες σε μεγαλύτερη απόσταση μετατρέπονται σε ορφανούς πλανήτες και κατά συνέπεια εισάγονται στο δέντρο ορφανών πλανητών. Το συνολικό κόστος για την μεταφορά όλων των πλανητών που μετατρέπονται σε ορφανούς πλανήτες στο δένδρο 6

7 ορφανών πλανητών θα πρέπει να είναι Ο(n), όπου n είναι το μέγιστο μεταξύ των στοιχείων του δένδρου ορφανών πλανητών του γαλαξία στον οποίο ανήκει το αστέριήλιος με αναγνωριστικό <sid> και του δένδρου πλανητών του ηλιακού συστήματος του οποίου το αστέρι-ήλιος έχει αναγνωριστικό <sid>. Σημειώνουμε ότι, το πεδίο distance της εγγραφής στο νέο δέντρο θα πρέπει να έχει την τιμή 0. Τέλος, το κατεστραμμένο ηλιακό σύστημα θα πρέπει να διαγράφεται από τη λίστα ηλιακών συστημάτων του γαλαξία όπου ανήκε. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: D <sid> <distance> Solars = <sid 1 >, <sid> 2, <sid n > Orphans = <oid 1 >, <oid 2 >, <oid k > όπου n είναι το πλήθος των ηλιακών συστημάτων που υπάρχουν στο γαλαξία στον οποίο ανήκε το προς διαγραφή ηλιακό σύστημα, μετά τη διαγραφή του ηλιακού συστήματος με αναγνωριστικό αστεριού-ηλίου <sid>, k είναι το πλήθος των ορφανών πλανητών στo δέντρο ορφανών πλανητών του γαλαξία που ανήκε το προς διαγραφή ηλιακό σύστημα και: για κάθε i, 1 i n, <sidi> είναι το αναγνωριστικό του i-οστού ηλιακού συστήματος στο γαλαξία όπου ανήκε το προς διαγραφή ηλιακό σύστημα, για κάθε i, 1 i k, <oidi> είναι το αναγνωριστικό του i-οστού ορφανού πλανήτη στο δέντρο ορφανών πλανητών του γαλαξία όπου ανήκε το προς διαγραφή ηλιακό σύστημα. O <oid> <pid>: Γεγονός τύπου Planet-Orphan Crash το οποίο σηματοδοτεί τη σύγκρουση του ορφανού πλανήτη με αναγνωριστικό <oid> με τον πλανήτη με αναγνωριστικό <pid>. Η σύγκρουση έχει ως αποτέλεσμα την καταστροφή και των δύο πλανητών. Συγκεκριμένα, ο ορφανός πλανήτης με αναγνωριστικό <oid> διαγράφεται από το δέντρο ορφανών πλανητών στο οποίο ανήκε, αλλά και ο πλανήτης με αναγνωριστικό <pid> διαγράφεται από τη δέντρο πλανητών (planets) του ηλιακού συστήματος όπου ανήκε. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: O <oid> <pid> Planets = <pid 1 > : <distance 1 > <pid 2 > : <distance 2 > <pid n > : <distance n > Orphans = <oid 1 >, <oid 2 >, <oid m > όπου n είναι το πλήθος των πλανητών που υπάρχουν στο ηλιακό σύστημα όπου ανήκε ο πλανήτης με αναγνωριστικό <pid>, m είναι το πλήθος ορφανών πλανητών στο δέντρο ορφανών πλανητών του γαλαξία στον οποίο ανήκε ο ορφανός πλανήτης με αναγνωριστικό <oid> και: 7

8 για κάθε i, 1 i n: o <pidi> είναι το αναγνωριστικό του i-οστού πλανήτη στο ηλιακό σύστημα που περιείχε τον πλανήτη με αναγνωριστικό <pid> (στη διάταξη που προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου αυτού), o <distance i > είναι η απόσταση του πλανήτη με αναγνωριστικό <pid i > από το αστέρι-ήλιο του ηλιακού συστήματος που περιείχε τον πλανήτη με αναγνωριστικό <pid>, για κάθε i, 1 i m, <oidi> είναι το αναγνωριστικό του i-οστού ορφανού πλανήτη στο δέντρο ορφανών πλανητών του γαλαξία όπου ανήκε ο ορφανός πλανήτης με αναγνωριστικό <oid> (στη διάταξη που προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου αυτού). C <sid1> <distance> <sid2> <sid3>: Γεγονός τύπου Binary Star Creation το οποίο σηματοδοτεί τη δημιουργία δύο πλανητικών συστημάτων από το διαχωρισμό ενός ηλιακού συστήματος. Η δημιουργία δίδυμου συστήματος πλανητών έχει ως αποτέλεσμα το ηλιακό σύστημα με αναγνωριστικό <sid1>, το οποίο προϋπήρχε στον γαλαξία του, να διαχωριστεί σε δύο νέα ηλιακά συστήματα με αναγνωριστικά <sid2> και <sid3>, αντίστοιχα. Μετά το διαχωρισμό του ηλιακού συστήματος με αναγνωριστικό <sid1>, οι πλανήτες που απείχαν λιγότερο από <distance> km από το αστέρι-ήλιο θα ανήκουν στο ηλιακό σύστημα με αναγνωριστικό <sid2>, ενώ οι πλανήτες σε μαγαλύτερη απόσταση θα ανήκουν στο ηλιακό σύστημα με αναγνωριστικό <sid3>. Ο διαχωρισμός του δένδρου πλανητών του ηλιακού συστήματος με αναγνωριστικό <sid1> σε δύο δένδρα πλανητών τα οποία θα αντιστοιχούν στα δύο νέα ηλιακά συστήματα που θα δημιουργηθούν θα πρέπει να πραγματοποιείται με τον αλγόριθμο που ζητείται στην άσκηση 2 β) της 3 ης σειράς ασκήσεων. Επομένως, η χρονική πολυπλοκότητα του διαχωρισμού αυτού θα πρέπει να είναι O(h), όπου h είναι το ύψος του δένδρου πλανητών του ηλιακού συστήματος με αναγνωριστικό <sid1>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 8

9 C <sid1> <distance> <sid2> <sid3> sid1 Planets = <pid 11> : <distance 11> <pid 12 > : <distance 12 > <pid 1k > : <distance 1k > sid2 Planets = <pid 21 > : <distance 21 > <pid 22 > : <distance 22 > <pid 2n > : <distance 2n > sid3 Planets = <pid 31 > : <distance 31 > <pid 32 > : <distance 32 > <pid 3m > : <distance 3m > όπου k είναι το πλήθος των πλανητών του ηλιακού συστήματος με αναγνωριστικό <sid1>, n είναι το πλήθος των πλανητών του νέου ηλιακού συστήματος με αναγνωριστικό <sid2>, m είναι το πλήθος των πλανητών του ηλιακού συστήματος με αναγνωριστικό <sid3> και: για κάθε i, 1 i k: o <pid1i> είναι το αναγνωριστικό του i-οστού πλανήτη στο ηλιακό σύστημα με αναγνωριστικό <sid1> (στη διάταξη που προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου πλανητών του ηλιακού συστήματος), o <distance1i> είναι η απόσταση του πλανήτη με αναγνωριστικό <pid1i> από το αστέρι-ήλιο του ηλιακού συστήματος με αναγνωριστικό <sid1>, για κάθε i, 1 i n: o <pid 2i > είναι το αναγνωριστικό του i-οστού πλανήτη στο ηλιακού σύστημα με αναγνωριστικό <sid2> (στη διάταξη που προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου πλανητών του ηλιακού συστήματος), o <distance1i> είναι η απόσταση του πλανήτη με αναγνωριστικό <pid2i> από το αστέρι-ήλιο του ηλιακού συστήματος με αναγνωριστικό <sid2>, για κάθε i, 1 i m: o <pid3i> είναι το αναγνωριστικό του i-οστού πλανήτη στο ηλιακού σύστημα με αναγνωριστικό <sid3> (στη διάταξη που προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου πλανητών του ηλιακού συστήματος), o <distance3i> είναι η απόσταση του πλανήτη με αναγνωριστικό <pid3i> 9

10 από το αστέρι-ήλιο του ηλιακού συστήματος με αναγνωριστικό <sid3>. L <pid>: Γεγονός τύπου Lookup Planet το οποίο σηματοδοτεί την αναζήτηση του πλανήτη με αναγνωριστικό <pid> στο σύμπαν. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: L <pid> όπου: <gid> : <sid> : <distance>, <pid_p> <pid_n> <sid> είναι το αναγνωριστικό του ηλιακού συστήματος στο οποίο ανήκει ο πλανήτης με αναγνωριστικό <pid>, <gid> είναι το αναγνωριστικό του γαλαξία στον οποίο βρίσκεται το ηλιακό σύστημα με αναγνωριστικό <sid>, <distance> είναι η απόσταση του πλανήτη με αναγνωριστικό <pid> από το αστέρι/ήλιο του ηλιακού του συστήματος, <pid_p> είναι το αναγνωριστικό του πλανήτη που είναι ο αμέσως προηγούμενος πλανήτης του πλανήτη με αναγνωριστικό <pid> βάσει της σειράς εγγύτητας στο αστέρι-ήλιος <pid_n> είναι το αναγνωριστικό του πλανήτη που είναι ο αμέσως επόμενος πλανήτης του πλανήτη με αναγνωριστικό <pid> βάσει της σειράς εγγύτητας στο αστέρι-ήλιος. Η εύρεση των <pid_p> και <pid_n> θα πρέπει να επιτυγχάνεται σε χρονική πολυπλοκότητα Ο(h) όπου h είναι το ύψος του δένδρου πλανητών που περιέχει τον πλανήτη με αναγνωριστικό <pid>. K <οid>: Γεγονός τύπου Lookup Orphan Planet το οποίο σηματοδοτεί την αναζήτηση του ορφανού πλανήτη με αναγνωριστικό <oid> στο σύμπαν. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: K <oid> <gid> <oid_p> <oid_n> όπου <gid> είναι το αναγνωριστικό του γαλαξία στον οποίο βρίσκεται o ορφανός πλανήτης με αναγνωριστικό <oid> και <oid_p> και <oid_n> είναι ο προηγούμενος και ο επόμενος πλανήτης στη διάταξη που προκύπτει αν εφαρμοστεί ενδοδιατεταγμένη διάσχιση στο δένδρο ορφανών πλανητών του γαλαξία με αναγνωριστικό <gid>. Η εύρεση των <oid_p> και <oid_n> θα πρέπει να πραγματοποιείται κατά την εύρεση του <oid> και επομένως το επιπρόσθετο κόστος στην χρονική πολυπλοκότητα του γεγονότος αυτού για την εύρεση των <oid_p> και <oid_n> θα πρέπει να είναι Ο(1). 10

11 H <sid>: Γεγονός τύπου Print Solar το οποίο σηματοδοτεί την εκτύπωση όλων των πλανητών στο ηλιακό σύστημα με αναγνωριστικό <sid>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: H <sid> Planets = <pid 1 > : <distance 1 > <pid 2 > : <distance 2 > <pid n > : <distance n > όπου n είναι το πλήθος των πλανητών στο ηλιακό σύστημα με αναγνωριστικό <sid> και για κάθε i, 1 i n: <pidi> είναι το αναγνωριστικό του i-οστού πλανήτη (στη διάταξη που προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου πλανητών του ηλιακού συστήματος με αναγνωριστικό <sid>) και <distancei> είναι η απόσταση του πλανήτη με αναγνωριστικό <pidi> από το αστέρι/ήλιο του ηλιακού συστήματος, I <gid>: Γεγονός τύπου Print Orphans το οποίο σηματοδοτεί την εκτύπωση όλων των ορφανών πλανητών του γαλαξία με αναγνωριστικό <gid>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: I <gid> Orphans = <οid 1 > <οid 2 > <οid n > όπου n είναι το πλήθος των ορφανών πλανητών του γαλαξία με αναγνωριστικό <gid> και για κάθε i, 1 i n, <οidi> είναι το αναγνωριστικό του i-οστού ορφανού πλανήτη (στη διάταξη που προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου ορφανών πλανητών του γαλαξία με αναγνωριστικό <gid>). J <gid>: Γεγονός τύπου Print Galaxy το οποίο σηματοδοτεί την εκτύπωση όλων των ηλιακών συστημάτων και ορφανών πλανητών στον γαλαξία με αναγνωριστικό <gid>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 11

12 J <gid> Solars = Η <sid 1 > Η <sid 2 > Η <sid n > Orphan planets = I <gid> όπου n είναι το πλήθος των ηλιακών συστημάτων στο γαλαξία με αναγνωριστικό <gid>, m είναι το πλήθος των ορφανών πλανητών στο γαλαξία με αναγνωριστικό <gid>, για κάθε j, 1 j n: sidj είναι το αναγνωριστικό του j-οστού ηλιακού συστήματος στο γαλαξία με αναγνωριστικό <gid>, όπου Η <sidj> τυπώνεται η πληροφορία που θα τυπωνόταν αν εκτελούνταν το γεγονός Print Solar με παράμετρο <sidj>, όπου I <gid> τυπώνεται η πληροφορία που θα τυπωνόταν αν εκτελούνταν το γεγονός Print Orphans με παράμετρο <gid>. U: Γεγονός τύπου Print Universe το οποίο σηματοδοτεί την εκτύπωση όλων των γαλαξιών στο σύμπαν. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: U J <gid 1 > J <gid 2 > J <gid n > όπου n είναι το πλήθος των γαλαξιών στο σύμπαν και για κάθε i, 1 i n: <gidi> είναι το αναγνωριστικό του i-οστού γαλαξία στο σύμπαν, όπου J <gidi> τυπώνεται η πληροφορία που θα τυπωνόταν αν εκτελούνταν το γεγονός Print Galaxy με παράμετρο <gidi>. E: Γεγονός τύπου End of World το οποίο σηματοδοτεί την συντέλεια του κόσμου. Η συντέλεια του κόσμου έχει ως αποτέλεσμα τη διαγραφή όλων των δομών δεδομένων που χρησιμοποιούνται από το πρόγραμμα. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: E 12

13 ΓΕΓΟΝΟΤΑ BONUS [Bonus 15%] Bonus 1: Υλοποίηση της δομής των ορφανών πλανητών ενός γαλαξία με πίνακα κατακερματισμού. Το πεδίο orphans της εγγραφής galaxie_t θα πρέπει να είναι ένας πίνακας ο οποίος θα αποθηκεύει πληροφορίες για τους ορφανούς πλανήτες ενός γαλαξία. Η δομή αυτή ονομάζεται πίνακας κατακερματισμού ορφανών πλανητών του εκάστοτε γαλαξία. Το orphans[k] περιέχει έναν δείκτη (τύπου planet_t*) προς το πρώτο στοιχείο μιας αλυσίδας, ταξινομημένης ως προς το αναγνωριστικό του κάθε ορφανού πλανήτη, στην οποία αποθηκεύονται ορφανοί πλανήτες τέτοιοι ώστε η τιμή κατακερματισμού του αναγνωριστικού του πλανήτη είναι ίση με k. Το μέγεθος του πίνακα κατακερματισμού (ahashtable_size_g) θα πρέπει να επιλέγεται από εσάς προσεχτικά και θα πρέπει να είστε σε θέση να δικαιολογήσετε την επιλογή σας. Για την υλοποίηση της συνάρτησης κατακερματισμού θα πρέπει να χρησιμοποιήσετε καθολικό κατακερματισμό. Για την υλοποίηση του καθολικού κατακερματισμού παρέχονται, ένας πίνακας primes_g[] με 160 πρώτους αριθμούς σε αύξουσα σειρά και το μέγιστο κλειδί που μπορεί να έχει οποιοσδήποτε ορφανός πλανήτης, μέσω της μεταβλητής max_id_g. Οι μεταβλητές αυτές είναι global και έχουν δηλωθεί στο myuniverse.h. Αρχικοποιούνται στη main βάσει τιμών που αναγράφονται στις πρώτες γραμμές του test_file. Node 3 Node 5 Node 7 Node 15 Node 2 Node 23 Σχήμα 4 [Bonus 10%] Bonus 2: Για κάθε πίνακα κατακερματισμού (που περιγράφεται στο Bonus 1), υλοποιήστε επιπρόσθετα τη λειτουργία επέκτασης. Το μέγεθος του πίνακα κατακερματισμού θα πρέπει να επαυξάνεται ή να μειώνεται κατά τη διάρκεια εκτέλεσης του προγράμματος ανάλογα με το πλήθος των κόμβων που υπάρχουν σε αυτόν. Η αύξηση του μεγέθους του πίνακα θα γίνεται ως εξής. Στο myuniverse.h θα υπάρχει ένας πίνακας primes_g[] από πρώτους αριθμούς, τα στοιχεία του οποίου θα έχουν αρχικοποιηθεί από τη main (όπως περιγράφεται στο Bonus 1). Την i-οστή φορά που πρέπει να επαυξηθεί το μέγεθος του πίνακα κατακερματισμού, θα πρέπει, μετά την επαύξηση, αυτός να έχει μέγεθος ίσο με τον πρώτο αριθμό που είναι αποθηκευμένος στο στοιχείο primes_g[i]. Στο παρακάτω σχήμα (Σχήμα 5) φαίνεται ο τρόπος με τον οποίο θα πραγματοποιείται η διαδικασία αυτή. Όταν το πλήθος των κόμβων κάποιας λίστας γίνει ίσο με ένα πάνω φράγμα HT_UPPER, τότε το μέγεθος του πίνακα κατακερματισμού πρέπει να αυξηθεί (με τη διαδικασία που περιγράφτηκε παραπάνω) και να υπολογιστεί ξανά η θέση του κάθε κλειδιού χρησιμοποιώντας τη συνάρτηση κατακερματισμού. Αν το πλήθος των κόμβων σε κάθε λίστα γίνει μικρότερο από κάποιο κάτω φράγμα, HT_LOWER, θα πρέπει το μέγεθος του πίνακα κατακερματισμού να μειώνεται ακολουθώντας την αντίστροφη διαδικασία. Συγκεκριμένα, αν το τρέχον μέγεθος του πίνακα είναι ίσο με primes_g[i], μετά τη μείωση, το μέγεθος θα πρέπει να είναι ίσο με primes_g[i-1]. Οι μεταβλητές HT_UPPER και HT_LOWER είναι global και έχουν δηλωθεί 13

14 στο myuniverse.h. Αρχικοποιούνται στη main βάσει τιμών που αναγράφονται στην πρώτη γραμμή του test_file. Node 5 Node 3 Node 8 Node 5 Node 31 Node 32 Node 7 Node 831 Node 7 Node 8 Node 29 Node 15 Node 29 Node 15 Node 23 Node 23 Node 2 Node 8 Node 29 Node 8 Node 31 Node 8 Node 2 Node 3 Node 3 Σχήμα 5 ΠΡΟΣΟΧΗ Κάθε υλοποίηση κάποιου bonus πρέπει να γίνει σε διαφορετικό αρχείο/α και ΟΧΙ στο βασικό/ά αρχείο/ά του project σας και θα πρέπει να κάνετε submit το βασικό project και όσα αρχεία αντιστοιχούν σε κάθε ένα από τα bonus που θα υλοποιήσετε. 14

15 Δομές Δεδομένων Στη συνέχεια παρουσιάζονται οι δομές σε C που πρέπει να χρησιμοποιηθούν για την υλοποίηση της παρούσας εργασίας. //////////////////////////////////////////////////////////////////////////////// // Declaring the needed structures //////////////////////////////////////////////////////////////////////////////// typedef struct galaxy galaxy_t; typedef struct solar solar_t; typedef struct planet planet_t; typedef struct ocluster ocluster_t; //////////////////////////////////////////////////////////////////////////////// // Defining the needed structures //////////////////////////////////////////////////////////////////////////////// /** * Structure defining a node of the planets list (lista planitwn) */ struct ocluster { int cid; /**< orphan cluster identifier > 0 */ planet_t *orphans; /**< Pointer to the first node in the * orphan planets list * (lista orfanwn planitwn) */ }; /** * Structure defining a node of the galaxies array (pinakas gala3iwn) */ struct galaxy { int gid; /**< The galaxy identifier. >0 */ solar_t *solars; /**< Pointer to first element in * solar systems list (lista iliakwn * sistimatwn) */ planet_t *orphans; /**< The orphan tree * (dentro orfanwn planitwn) */ solar_t *ssentinel; /**< Pointer to the sentinel node * (komvo frouro) of solar systems * list (lista iliakwn sistimatwn) */ }; /** * Structure defining a node of the solar systems list (lista iliakwn sistimatwn) */ struct solar { int sid; /**< Solar system identifier. >0 */ planet_t *planets; /**< Pointer to planets tree * (dentro planitwn) */ plante_t *psentinel /*< pointer to the sentinel node * (komvo frouro) of plantet tree solar_t *next; /**< Pointer to next node in * solar systems list * (lista iliakwn sistimatwn) */ }; /** * Structure defining a node of the planets list (lista planitwn) */ struct planet { int pid; /**< Planet identifier. >0 */ int distance; /**< Distance from star in solar system */ planet_t *lc; /**< Pointer to left child */ planet_t *rc; /**< Pointer to right child */ planet_t *parent; /**< Pointer to parent */ 15

16 }; // For simplicity we define the Galaxies array as a global variable galaxy_t Galaxies[MAX_GALAXIES]; /**< The galaxies array (pinakas gala3iwn). * This is an array of lists */ Συμβουλές Για λόγους ευκολότερης αποσφαλμάτωσης του κώδικα που θα δημιουργήσετε, συνίσταται ισχυρά κατά την διαγραφή κόμβων να αναθέτετε την τιμή NULL στους δείκτες του προς διαγραφή στοιχείου. Ακόμη συνίσταται να ανατίθεται την τιμή INT_MAX στα υπόλοιπα πεδία του κόμβου που είναι τύπου (int). 16

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 15 Μαΐου 2017, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών, 4 Μαρτίου 2019 ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 13 Μαϊου

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας

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

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 3 Απριλίου 2017, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 3 Απριλίου 2016, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Κυριακή, 1 Απριλίου 2018, ώρα 23:59 Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2013-14 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Τετάρτη, 15 Ιανουαρίου 2014, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 1 Απριλίου 2019, ώρα 23:59 Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Κυριακή, 15 Μαίου 2016, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας

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

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 18 Μαΐου 2015, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 14 Νοεµβρίου 2016, ώρα 23:59. Τρόπος

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 22 Δεκεμβρίου 2017, ώρα 23:59. Τρόπος

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

Προγραµµατιστική Εργασία 1 ο Μέρος

Προγραµµατιστική Εργασία 1 ο Μέρος ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2013-14 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης: Παρασκευή, 29 Νοεµβρίου 2013, ώρα 23:59. Τρόπος Παράδοσης:

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

Προγραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης

Προγραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Προγραμματιστική Εργασία Μέρος Β Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Διαδικαστικά Παράδοση: Σάββατο, 19 Δεκεμβρίου 2016, ώρα 23:59 Compile & run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος

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

Προγραµµατιστική Εργασία 2 ο Μέρος

Προγραµµατιστική Εργασία 2 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 20 Νοεµβρίου 2012 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 2 ο Μέρος Ηµεροµηνία

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

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος HY240 : Δομές Δεδομένων Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος Εισαγωγή Στο 2 ο μέρος της εργασίας θα πρέπει να γίνουν τροποποιήσεις στο πρόγραμμα που προέκυψε κατά την υλοποίηση του

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 19 Δεκεμβρίου 2016, ώρα 23:59. Τρόπος

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

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 20 Νοεµβρίου 2017, ώρα 23:59. Τρόπος

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 21 Δεκεμβρίου 2018, ώρα 23:59 Τρόπος

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 09- Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο και ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 18 Δεκεμβρίου 09, ώρα 08:00 (το πρωί) Τρόπος Παράδοσης:

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού

HY-486 Αρχές Κατανεμημένου Υπολογισμού HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

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

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

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

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

https://csd.uoc.gr/~hy240b/current/submit.php

https://csd.uoc.gr/~hy240b/current/submit.php Project HY240b - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 09 Μαρτίου 2018 Εισαγωγή Διαδικαστικά Θεματολογία Δομές Χρηστών

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2012 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2011-12 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

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

Προγραµµατιστική Εργασία - 2 ο Μέρος

Προγραµµατιστική Εργασία - 2 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 1 εκεµβρίου 2011 ΗΥ240: οµές εδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

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

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2009 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε

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

Project HY240a - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 24 Οκτωβρίου 2018 Διαδικαστικά Θεματολογία Δομές Μεγάλου Αλεξάνδρου

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

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 15 Οκτωβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης:

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

Προγραµµατιστική Εργασία 1 ο Μέρος

Προγραµµατιστική Εργασία 1 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 4 Νοεµβρίου 2011 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία

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

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

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

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

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα

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

Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας

Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2015 Διδάσκουσα: Παναγιώτα Φατούρου Παρουσίαση: Βασίλειος Θεοδοσιάδης (vtheodos@ics.forth.gr) Πέμπτη, 29 Οκτωβρίου 2015

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

Θεωρητικό Μέρος. 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 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

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

My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας

My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2013 Διδάσκουσα: Παναγιώτα Φατούρου This presentation by Foivos S. Zakkak is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Σύνολα (Sets) Τα

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

Διδάσκων: Κωνσταντίνος Κώστα

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

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

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

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

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

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

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

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΝΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΣ ΔΔΟΜΝΩΝ ΚΙ ΛΓΟΡΙΘΜΟΙ ΗΜΡΟΜΗΝΙ: 14/11/2018 ΔΙΓΝΩΣΤΙΚΟ ΠΝΩ Σ ΔΝΔΡΙΚΣ ΔΟΜΣ ΚΙ ΓΡΦΟΥΣ Διάρκεια: 45 λεπτά Ονοματεπώνυμο:. ρ. Ταυτότητας:. ΒΘΜΟΛΟΓΙ ΣΚΗΣΗ ΒΘΜΟΣ

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

ΗΥ360 Αρχεία και Βάσεις εδοµένων ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης Tutorial B-Trees, B+Trees Μπαριτάκης Παύλος 2018-2019 Ιδιότητες B-trees Χρήση για μείωση των προσπελάσεων στον δίσκο Επέκταση των Binary Search Trees

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν

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

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

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

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

Insert(K,I,S) Delete(K,S)

Insert(K,I,S) Delete(K,S) ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ & ΛΕΞΙΚΑ Φατούρου Παναγιώτα 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) q Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U (universe) αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών σύνολα

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

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

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

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

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι

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

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v. ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

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

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,

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

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2015-16 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2015-16 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2015-16 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία Παράδοσης: Παρασκευή, 18 Δεκεµβρίου 2015, ώρα 23:59. Τρόπος

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

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα? Κόκκινα-Μαύρα ένδρα (Red-Black Trees) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της

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

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά EPL231: Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά Αναδρομή Η αναδρομή εμφανίζεται όταν μία διεργασία καλεί τον εαυτό της Υπάρχουν

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

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 7 ο έντρο Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης έντρο Ορισµός Υλοποίηση µε Πίνακα Υλοποίηση µε είκτες υαδικό έντρο

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

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

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

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Δέντρα (5) Τ ένα δέντρο i ένας κόμβος στο επίπεδο k j ένας κόμβος στο επίπεδο k+1 } :

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση

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

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:

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

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

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

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

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: υαδικά έντρα Αναζήτησης (Binary Search Trees) Ορισµός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόµενα στο αριστερό υποδέντρο του t είναι

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

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

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις ΗΥ2, Ενότητα : Ασκήσεις και Λύσεις Ενότητα : Κατακερματισμός Ασκήσεις και Λύσεις Άσκηση 1 Χρησιμοποιήστε τη συνάρτηση κατακερματισμού της διαίρεσης ως πρωτεύουσα συνάρτηση κατακερματισμού και τη συνάρτηση

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως

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

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

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

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό

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

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. Διάλεξη 11: Φροντιστήριο για Στοίβες Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 ΑΤΔ Στοίβα- Πράξεις Θυμηθείτε τον ΑΤΔ στοίβα με τις πράξεις του: MakeEmptyStack()

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 - Εξωτερική Ταξινόμηση Παράδοση: 20/01/2017 Σκοπός της εργασίας αυτής

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

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

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

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

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

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

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

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

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

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 19 Νοεμβρίου 2018, ώρα 23:59 Τρόπος

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

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

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

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

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 23: Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ισοζυγισμένα Δέντρα - Υλοποίηση AVL-δέντρων - Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα Διδάσκων:

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2011 2012 Καθηγητές Μ. Χατζόπουλος, Δ. Γουνόπουλος Άσκηση 1 Παράδοση 4 Μαϊου Σκοπός της εργασίας αυτής είναι η κατανόηση

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

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

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

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