ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος
|
|
- Δελφινιος Καραμανλής
- 7 χρόνια πριν
- Προβολές:
Transcript
1 ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Κυριακή, 15 Μαίου 2016, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας το πρόγραμμα turnin. Πληροφορίες για το πώς λειτουργεί το turnin παρέχονται στην ιστοσελίδα του μαθήματος. Γενική Περιγραφή Στην εργασία αυτή καλείστε να υλοποιήσετε ένα πρόγραμμα που προσομοιώνει μια υπηρεσία πληροφοριών σχετικά με ταινίες. Η υπηρεσία διαθέτει ένα σύνολο ταινιών ταξινομημένες σε θεματικές κατηγορίες. Οι χρήστες μπορούν να εγγράφονται στην υπηρεσία ώστε να βαθμολογούν ταινίες που έχουν ήδη δεί. Η υπηρεσία μπορεί επιπρόσθετα να προτείνει ταινίες στους χρήστες σύμφωνα με τις προτιμήσεις τους βάσει των ταινιών που έχουν ήδη δει. 1
2 Αναλυτική Περιγραφή Ζητούμενης Υλοποίησης Δομές δεδομένων που αφορούν τις ταινίες Η υπηρεσία διαθέτει μια συλλογή ταινιών ταξινομημένες σε κατηγορίες. Πιο συγκεκριμένα, οι διαθέσιμες κατηγορίες ταινιών είναι οι παρακάτω: Δραματικές, Oscar, Cinephile, Ντοκιμαντέρ, Kινούμενα σχέδια. Για τη διαχείριση αυτών των κατηγοριών, θα δημιουργήσετε έναν πίνακα σταθερού μεγέθους 5 θέσεων, μια για κάθε κατηγορία, ο οποίος θα ονομάζεται πίνακας κατηγοριών. Κάθε θέση του πίνακα θα περιέχει δύο δείκτες και έναν ακέραιο. Ο πρώτος δείκτης θα δείχνει σε ένα απλά συνδεδεμένο δένδρο δυαδικής αναζήτησης (binary search tree), το οποίο είναι ταξινομημένο ως προς το πεδίο movieid των κόμβων του και έχει κόμβο φρουρό. Το δένδρο αυτό ονομάζεται δένδρο ταινιών της κατηγορίας. Ο δεύτερος δείκτης θα δείχνει στον κόμβο φρουρό του δένδρου. Ο ακέραιος (moviecounter) αποθηκεύει το συνολικό αριθμό ταινιών που υπάρχουν στην κατηγορία (δηλαδή το πλήθος των κόμβων του δένδρου ταινιών της κατηγορίας αυτής). Κάθε στοιχείο του δένδρου ταινιών μιας συγκεκριμένης κατηγορίας είναι ένα struct τύπου movie με τα εξής πεδία: Έναν ακέραιο movieid που αποτελεί το μοναδικό αναγνωριστικό της ταινίας. Έναν ακέραιο που αντιστοιχεί στη θεματική κατηγορία της ταινίας. Η μεταβλητή αυτή λαμβάνει τιμές από 0 έως 4, όπου η αντιστοίχιση γίνεται ως ακολούθως: 0: Δραματική, 1: Oscar, 2: Cinephile, 3: Ντοκιμαντέρ, 4: Κινούμενα Σχέδια Έναν ακέραιο που αντιστοιχεί στο έτος κυκλοφορίας της ταινίας. Έναν ακέραιο που αντιστοιχεί στον αριθμό των χρηστών που έχουν δει την ταινία. Έναν ακέραιο που αντιστοιχεί στο άθροισμα της βαθμολογίας που έχουν δώσει οι χρήστες για την ταινία. Έναν αριθμό κινούμενης υποδιαστολής (float), που αντιστοιχεί στη μέση βαθμολογία της ταινίας. Ένα δείκτη leftchild που δείχνει στον αριστερό θυγατρικό κόμβο του κόμβου που αντιστοιχεί στην ταινία. Ένα δείκτη rightchild που δείχνει στον δεξιό θυγατρικό κόμβο του κόμβου που αντιστοιχεί στην ταινία. Μια εγγραφή του τύπου movie παρουσιάζεται στο Σχήμα 1. Επιπρόσθετα, σε αυτή τη φάση της εργασίας, οι ταινίες που χαρακτηρίζονται ως «νέες κυκλοφορίες» θα διατηρούνται σε ένα επιπρόσθετο δένδρο (ανεξάρτητο από τα δένδρα που δεικτοδοτούνται από τα στοιχεία του πίνακα κατηγοριών), κάθε κόμβος του οποίου είναι επίσης ένα struct τύπου movie. Το δένδρο αυτό ονομάζεται δένδρο νέων κυκλοφοριών και είναι ένα απλά συνδεδεμένο δένδρο, ταξινομημένο βάσει του πεδίου movieid των κόμβων του. Σε αντίθεση με το δένδρο ταινιών μιας κατηγορίας, το δένδρο νέων κυκλοφοριών δεν έχει κόμβο φρουρό. Στο Σχήμα 2 (2α και 2β) παρουσιάζεται ο πίνακας κατηγοριών και το δένδρο ταινιών που δεικτοδοτείται από κάθε στοιχείο του. Στο Σχήμα 3 παρουσιάζεται πιο αναλυτικά ένα δένδρο ταινιών μιας συγκεκριμένης κατηγορίας. 2
3 movieid struct movie Σχήμα 1: Εγγραφή τύπου movie Σχήμα 2a: Πίνακας Κατηγοριών και δένδρα ταινιών κατηγοριών 3
4 New Releases movieid movieid movieid movieid Category Year movieid movieid movieid Category Year Σχήμα 2β: Δένδρο νέων κυκλοφοριών movieid 12 movieid 5 movieid 19 movieid 4 movieid 10 movieid 50 Κόμβος Φρουρός Σχήμα 3: Απλά συνδεδεμένο δυαδικό δένδρο συγκεκριμένης κατηγορίας 4
5 Δομές δεδομένων που αφορούν τον χρήστη Η υπηρεσία εξυπηρετεί ένα σύνολο εγγεγραμμένων χρηστών. Οι χρήστες σε αυτή τη φάση της εργασίας θα διατηρούνται σε έναν πίνακα κατακερματισμού USER[hash_table_size], ο οποίος περιέχει πληροφορίες για τους χρήστες. Το μέγεθος του πίνακα κατακερματισμού hash_table_size θα πρέπει να επιλέγεται από εσάς προσεκτικά και θα πρέπει να είστε σε θέση να δικαιολογήσετε την επιλογή σας. Κάθε στοιχείο του USER[i] του πίνακα αυτού περιέχει έναν δείκτη στο πρώτο στοιχείο μιας απλά συνδεδεμένης αλυσίδας. Κάθε στοιχείο μιας αλυσίδας είναι μια εγγραφή (struct), τύπου user, με τα εξής πεδία: Έναν ακέραιο, userid, που χαρακτηρίζει μοναδικά το χρήστη. Ένα δείκτη, history, σε ένα struct τύπου usermovie (βλέπε παρακάτω), που δείχνει σε ένα διπλά-συνδεδεμένο φυλλο-προσανατολισμένο δένδρο δυαδικής αναζήτησης, το οποίο ονομάζεται δένδρο ιστορικού ταινιών του χρήστη. Το δένδρο αυτό είναι ταξινομημένο ως προς το πεδίο movieid και περιέχει ταινίες που έχει ήδη παρακολουθήσει και βαθμολογήσει ο χρήστης. Ένα δείκτη, next, που δείχνει στο επόμενο στοιχείο της λίστας χρηστών. Η κάθε αλυσίδα του πίνακα κατακερματισμού είναι ταξινομημένη κατ αύξουσα διάταξη βάσει του πεδίου userid των κόμβων της. Προσέξτε ότι το userid κάθε χρήστη της αλυσίδας που δεικτοδοτείται από τη θέση i του πίνακα κατακερματισμού, έχει τιμή κατακερματισμού i. Η εγγραφή τύπου User παρουσιάζεται στο Σχήμα 4. userid history next struct User Σχήμα 4: Εγγραφή τύπου user Για την υλοποίηση της συνάρτησης κατακερματισμού θα πρέπει να βασιστείτε στην τεχνική του καθολικού κατακερματισμού. Για την υλοποίηση του καθολικού κατακερματισμού θα δίνονται τα εξής: 1) Ένας πίνακας primes[], ο οποίος περιέχει πρώτους αριθμούς σε αύξουσα σειρά. 2) Το μέγιστο πλήθος χρηστών, μέσω της μεταβλητής max_users 3) Το μέγιστο αναγνωριστικό χρήστη userid, μέσω της μεταβλητής max_id Αυτές οι μεταβλητές είναι global, έχουν δηλωθεί στο αρχείο Movie.h και θα αρχικοποιούνται στη main βάσει τιμών που αναγράφονται στις πρώτες γραμμές κάθε test_file. Για την επίλυση των συγκρούσεων θα ακολουθήσετε την μέθοδο των ταξινομημένων αλυσίδων. Ο πίνακας κατακερματισμού χρηστών παρουσιάζεται στο Σχήμα 5. 5
6 USER[0].... User User User User User User USER[M-1] User User Σχήμα 5: Πίνακας κατακερματισμού χρηστών χρησιμοποιώντας την μέθοδο ταξινομημένων αλυσίδων Ο κάθε κόμβος του δένδρου ιστορικού ταινιών του κάθε χρήστη αντιστοιχεί σε μια εγγραφή τύπου usermovie. Το struct usermovie περιέχει: Έναν ακέραιο movieid που χαρακτηρίζει μοναδικά την ταινία Έναν ακέραιο που αντιστοιχεί στη θεματική κατηγορία της ταινίας. Η μεταβλητή αυτή λαμβάνει τιμές από 0 εώς 4, όπου 0: drama, 1: Oscar, 2: cinephile, 3: documentary, 4: cartoon. Έναν ακέραιο score που αντιπροσωπεύει την βαθμολογία που έδωσε ο χρήστης στη ταινία. Η μεταβλητή αυτή παίρνει τιμές στο διάστημα 1 εως 10, με 1 να είναι η χαμηλότερη βαθμολογία για μια ταινία και 10 η μεγαλύτερη. Έναν δείκτη parent που δείχνει στον πατέρα του κομβού Έναν δείκτη leftchild που δείχνει στον αριστερό θυγατρικό κόμβο. Έναν δείκτη rightchild που δείχνει στον δεξιό θυγατρικό κόμβο. Η εγγραφή τύπου usermovie παρουσιάζεται στο Σχήμα 6. parent movieid score struct usermovie Σχήμα 6: Εγγραφή τύπου usermovie 6
7 Το δένδρο ιστορικού είναι διπλά-συνδεδεμένο φυλλο-προσανατολισμένο δένδρο δυαδικής αναζήτησης. Τα φυλλοπροσανατολισμένα δένδρα δυαδικής αναζήτησης (leaf-oriented binary search trees) αποτελούν μια εναλλακτική υλοποίηση του αφηρημένου τύπου δεδομένων του λεξικού. Ορίζονται ως εξής: (α) Όλα τα κλειδιά του λεξικού αποθηκεύονται στα φύλλα του δένδρου, από αριστερά προς τα δεξιά κατά μη φθίνουσα τιμή κλειδιού, και (β) οι εσωτερικοί κόμβοι αποθηκεύουν κλειδιά (που δεν αντιστοιχούν απαραίτητα σε κλειδιά του λεξικού), έτσι ώστε να ισχύει η κάτωθι αμετάβλητη συνθήκη σε κάθε κόμβο v: Το κλειδί του αριστερού παιδιού του v είναι μικρότερο ή ίσο από αυτό του v, ενώ το δεξιό παιδί του v διαθέτει κλειδί μεγαλύτερο από εκείνο του v Παρατηρήστε ότι βάσει του ορισμού, οι εσωτερικοί κόμβοι έχουν και τους δύο δείκτες μη κενούς, ενώ και οι δύο δείκτες των φύλλων είναι κενοί. Ένα παράδειγμα φυλλοπροσανατολισμένου δένδρου παρουσιάζεται στο παρακάτω σχήμα. Οι λειτουργίες της εισαγωγής και της διαγραφής περιγράφηκαν στην 3 η σειρά θεωρητικών ασκήσεων του μαθήματος Στο Σχήμα 7 παρουσιάζεται το δένδρο ιστορικού ενός χρήστη που δεικτοδοτείται από κάποιον από τους κόμβους μιας αλυσίδα του πίνακα κατακερματισμού. 7
8 Σχήμα 7: Παράδειγμα μιας αλυσίδας χρηστών και του διπλά συνδεδεμένου φυλλο-προσανατολισμένου δένδρου ιστορικού 8
9 Τρόπος Λειτουργίας Προγράμματος Το πρόγραμμα που θα δημιουργηθεί θα πρέπει να εκτελείται καλώντας την ακόλουθη εντολή: <executable> <input-file> όπου <executable> είναι το όνομα του εκτελέσιμου αρχείου του προγράμματος (π.χ. a.out) και <inputfile> είναι το όνομα ενός αρχείου εισόδου (π.χ. testfile) το οποίο περιέχει τα γεγονότα. Τα γεγονότα εισόδου είναι τα εξής: R <userid > Γεγονός τύπου register user το οποίο σηματοδοτεί την εγγραφή ενός νέου χρήστη (user) με αναγνωριστικό <userid>. Το γεγονός αυτό προσθέτει το νέο χρήστη στον πίνακα κατακερματισμού χρηστών της υπηρεσίας. Το πεδίο history του χρήστη πρέπει να έχει την αρχική τιμή NULL. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την R <userid> Chain <j> of Users: <userid 1> <userid 2>... <userid n> όπου <j> είναι η τιμή κατακερματισμού του κλειδιού <userid>, n είναι ο αριθμός των χρηστών στην αλυσίδα που δεικτοδοτείται από τη θέση <j> του πίνακα Users και για κάθε i {1,, n}, <userid i> είναι το αναγνωριστικό του χρήστη που αντιστοιχεί στον i-οστό κόμβο της αλυσίδας αυτής. U < userid > Γεγονός τύπου unregister user το οποίο σηματοδοτεί τη διαγραφή ενός χρήστη (user) με αναγνωριστικό < userid > από τον πίνακα κατακερματισμού χρηστών. Πριν την οριστική διαγραφή του χρήστη από τη λίστα χρηστών θα πρέπει να διαγράψετε όλα τα στοιχεία του δένδρου ιστορικού ταινιών του χρήστη αν αυτό περιέχει στοιχεία. Κατά το γεγονός αυτό εντοπίζεται η κατάλληλη αλυσίδα βάσει της συνάρτησης κατακερματισμού και στη συνέχεια εκτελείται αναζήτηση ώστε να βρεθεί ο κατάλληλος κόμβος της αλυσίδας. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την 9
10 U <userid> Chain <j> of Users: <userid 1> <userid 2>... <userid n> όπου <j> είναι η τιμή κατακερματισμού του κλειδιού <userid>, n είναι ο αριθμός των χρηστών στην αλυσίδα που δεικτοδοτείται από τη θέση <j> του πίνακα Users και για κάθε i {1,, n}, <userid i> είναι το αναγνωριστικό του χρήστη που αντιστοιχεί στον i-οστό κόμβο της αλυσίδας αυτής. A <movieid > <> <> Γεγονός τύπου add new movie, το οποίο σηματοδοτεί την άφιξη μιας νέας ταινίας που είναι διαθέσιμη στους χρήστες. Κατά το γεγονός αυτό, θα δημιουργείται μια νέα ταινία με αναγνωριστικό <movieid > και έτος κυκλοφορίας <>, η οποία θα ανήκει στη θεματική κατηγορία <>. Ανεξάρτητα από την κατηγορία στην οποία ανήκει, η νέα ταινία θα εισάγεται στο δένδρο νέων κυκλοφοριών. Τα πεδία και θα αρχικοποιούνται με την τιμή 0. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την Α <movieid> <> <> New releases Tree: <new_releases>: <movieid 1>,..., < movieid n> όπου n είναι το μέγεθος του δένδρου νέων κυκλοφοριών. Οι κόμβοι θα πρέπει να έχουν εισαχθεί με τέτοιο τρόπο ώστε αν πραγματοποιηθεί ενδοδιατεταγμένη (in-order) διάσχιση στο δένδρο, οι ταινίες να προσπελάζονται σε αύξουσα διάταξη ως προς το πεδίο movieid. C Γεγονός τύπου categorize movies το οποίο σηματοδοτεί την ταξινόμηση των ταινιών που περιέχει το δένδρο νέων κυκλοφοριών στις υπόλοιπες θεματικές κατηγορίες. Σε αυτό το γεγονός, θα διασχίζετε το δένδρο των νέων κυκλοφοριών και για κάθε κόμβο, v, που βρίσκετε σ αυτό θα εισάγετε έναν κόμβο στο δένδρο της κατάλληλης θεματικής κατηγορίας. Στη συνέχεια, θα διαγράφετε τον v από το δένδρο νέων κυκλοφοριών. Για κάθε ταινία που προστίθεται στην κατηγορία i, θα πρέπει να αυξήσετε τον μετρητή κόμβων (moviecounter) της κατηγορίας. 10
11 Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την C Movie Category Array: < 0>: <movieid 0 1>,..., < movieid 0 n0> < 1>: <movieid 1 1>,..., < movieid 1 n1>... < 4>: <movieid 4 1>,..., < movieid 4 n4> όπου για κάθε i, 0 i 4, n i είναι το μέγεθος του δένδρου ταινιών της κατηγορίας i του πίνακα κατηγοριών και για κάθε j, 1 j n i, <movieid i j> είναι το αναγνωριστικό της ταινίας που αντιστοιχεί στον j-οστό κόμβο του δένδρου ταινιών της κατηγορίας i, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του δένδρου αυτού. G <userid > <movieid> <score> Γεγονός τύπου rate movie το οποίο σηματοδοτεί ότι ο χρήστης με αναγνωριστικό <userid> έχει παρακολουθήσει την ταινία με αναγνωριστικό <movieid> και την αξιολογεί με βαθμό <score>. Κατά το γεγονός αυτό, θα γίνεται αναζήτηση της ταινίας με αναγνωριστικό <movieid> στα δένδρα κατηγοριών του πίνακα κατηγοριών. Όταν βρεθεί ο κόμβος της ταινίας, το πεδίο θα αυξάνεται κατά ένα και το πεδίο θα αυξάνεται κατά την τιμή <score>. Επιπρόσθετα, θα υπολογίσετε την τιμή του πεδίου του struct σύμφωνα με τον τύπο: Στη συνέχεια, θα δημιουργείτε έναν κόμβο, usermovie. Ο κόμβος αυτός θα έχει στα πεδία movieid και ίδιες τιμές με εκείνες του struct που αντιστοιχεί στην ταινία με αναγνωριστικό movieid. Το πεδίο score του κόμβου usermovie θα έχει την τιμή <score>. Στη συνέχεια θα εισάγετε αυτόν τον κόμβο, στo φυλλο-προσανατολισμένο δένδρο ιστορικού του χρήστη με αναγνωριστικό <userid>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την 11
12 G <userid> <movieid> <score> History Tree of user <userid>: <usermovieid 1, score 1> <usermovieid 2, score 2> <usermovieid n, score n> όπου n είναι το μέγεθος του δένδρου ιστορικού ταινιών του χρήστη με αναγνωριστικό <userid>, για κάθε i {1,, n}, <movieidi> είναι το αναγνωριστικό της ταινίας που αντιστοιχεί στον i-οστό κόμβο του δένδρου όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του και <score i> είναι η βαθμολογία της ταινίας που αντιστοιχεί στον κόμβο αυτό. S <> Γεγονός τύπου cluster movies. Στο γεγονός αυτό, θα πρέπει να ταξινομείτε τις ταινίες της κατηγορίας <> με βάση το μέσο score των ταινιών,. Για το σκοπό αυτό θα πρέπει να χρησιμοποιήσετε ένα βοηθητικό πίνακα μεγέθους ίσο με τον αριθμό των ταινιών που περιέχει η κατηγορία <> (η τιμή αυτή είναι ήδη αποθηκευμένη στο struct της θέσης <> του πίνακα κατηγοριών). Το κάθε στοιχείο του βοηθητικού πίνακα θα περιέχει έναν δείκτη σε ένα struct τύπου movie. Στη συνέχεια θα εκτελείτε ενδοδιατεταγμένη διάσχιση του δένδρου ταινιών της κατηγορίας <> και θα αποθηκεύεται δείκτες προς τα στοιχεία του δένδρου στο βοηθητικό πίνακα. Μετά το τέλος της διάσχισης του δένδρου (και την αρχικοποίηση του βοηθητικού πίνακα), θα εφαρμόζετε τον αλγόριθμο heapsort, για να ταξινομήσετε τον πίνακα βάσει του πεδίου. Τέλος θα εκτυπώνετε τις ταινίες σε 3 ομάδες: υψηλά βαθμολογημένες ταινίες ( > 7), μέτρια βαθμολογημένες ταινίες (η τιμή του είναι μεταξύ 5 και 7), χαμηλά βαθμολογημένες ταινίες ( < 5 ). Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την 12
13 S <> High Rated Movies [score>7] <movieid 0 1> < 0 1> <movieid 0 k0> < 0 k0> Medium Rated Movies [7>=score>=5] <movieid 1 1> < 1 1> <movieid 1 κ1> < 1 κ1> Low Rated Movies [score<5] <movieid 2 1> < 2 1> <movieid 2 κ2> < 2 κ2> όπου για κάθε i, 0 i 2, k i είναι το πλήθος των ταινίων που έχουν βαθμολογηθεί σε κάθε διάστημα και για κάθε j, 1 j n i, <movieid i j> είναι το αναγνωριστικό της ταινίας που αντιστοιχεί στη j- οστή θέση του βοηθητικού πίνακα μετά την εφαρμογή του αλγόριθμου heapsort. Q <userid> Γεγονός τύπου users median rate το οποίο σηματοδοτεί τον υπολογισμό και την εκτύπωση στατιστικών για τη βαθμολογία του χρήστη με αναγνωριστικό <userid>. Πιο συγκεκριμένα, σε αυτό το γεγονός θα πρέπει να ακολουθήσετε τα εξής βήματα: Εντοπίζετε την κατάλληλη αλυσίδα χρήστη βάσει της συνάρτησης κατακερματισμού και εκτελείτε αναζήτηση ώστε να βρεθεί ο κατάλληλος κόμβος της αλυσίδας. Στη συνέχεια, διασχίζετε το δένδρο ιστορικού και αποθηκεύετε σε μια βοηθητική μεταβλητή, ScoreSum, το άθροισμα του score των κόμβων του δένδρου. Επιπρόσθετε, αποθηκεύετε σε μια άλλη βοηθητική μεταβλητή, counter, το πλήθος των ταινιών που είναι αποθηκευμένες στο δένδρο. Τέλος, διαιρείτε το ScoreSum με τον counter για να βρείτε τη μέση βαθμολογία που έχει δώσει ο χρήστης με αναγνωριστικό <userid> στις ταινίες που έχει παρακολουθήσει. Η διάσχιση των φύλλων του φυλλο-προσανατολισμένου δένδρου θα πρέπει να πραγματοποιείται ως εξής: Αρχικά, θα βρίσκετε το αριστερότερο φύλλο, v, στο δένδρο. Για να βρείτε το φύλλο με το αμέσως μεγαλύτερο κλειδί από εκείνο του v, θα πρέπει να υλοποιήσετε αλγόριθμο, ο οποίος θα παίρνει ως παράμετρο έναν δείκτη στον κόμβο v και θα εκτελείται σε χρόνο O(h). Να σημειωθεί εδώ ότι ο μέσος όρος που εσείς υπολογίζετε εδώ αναφέρεται σε συγκεκριμένο χρήστη και είναι διαφορετικός από το που αναφέρεται στο struct movie. 13
14 Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την Q <userid> <MScore> όπου MScore, είναι ο μέσος όρος βαθμολογίας στις ταινίες που έχει παρακολουθήσει ο χρήστης που υπολογίζεται όπως περιγράφεται παραπάνω. Ι <movieid> <> Γεγονός τύπου search movie το οποίο σηματοδοτεί την αναζήτηση της ταινίας με αναγνωριστικό <movieid> στο δένδρο ταινιών της κατηγορίας <>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την I <movieid> <> <> <> όπου <> είναι το έτος κυκλοφορίας της ταινίας με αναγνωριστικό <movieid> και <> είναι ο μέσος όρος βαθμολογίας. M Γεγονός τύπου print movies το οποίο σηματοδοτεί την εκτύπωση του δένδρου ταινιών όλων των κατηγοριών. Σε αυτό το γεγονός θα πρέπει για κάθε κατηγορία να εκτελέσετε ενδοδιατεταγμένη διάσχιση στο δένδρο και να τυπώσετε τους κόμβους που διασχίζετε. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την M Movie Category Array: < 0>: <movieid 0 1>,..., < movieid 0 n0> < 1>: <movieid 1 1>,..., < movieid 1 n1>... < 4>: <movieid 4 1>,..., < movieid 4 n4> όπου για κάθε i, 0 i 4, n i είναι το μέγεθος του δένδρου ταινιών της κατηγορίας i του πίνακα κατηγοριών και για κάθε j, 1 j n i, <movieid i j> είναι το αναγνωριστικό της ταινίας που αντιστοιχεί στον j-οστό κόμβο του δένδρου ταινιών της κατηγορίας i, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του δένδρου αυτού. 14
15 P Γεγονός τύπου print users το οποίο σηματοδοτεί την εκτύπωση του πίνακα κατακερματισμού χρηστών. Για τον κάθε χρήστη θα πρέπει να εκτυπώνονται όλα τα πεδία του struct που του αντιστοιχεί (εκτός από τους δείκτες), συμπεριλαμβανομένου του δένδρου ιστορικού. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την P Chain <j> of Users: όπου <j> είναι η j-στη αλυσίδα του πίνακα κατακερματισμού και n είναι ο αριθμός των χρηστών στην αλυσίδα που δεικτοδοτείται από τη θέση <j> του πίνακα Users και για κάθε i {1,, n}, <userid i> είναι το αναγνωριστικό του χρήστη που αντιστοιχεί στον i-οστό κόμβο της αλυσίδας αυτής. Επίσης,, 1 k n i, <movieid i k> είναι η ταίνια από το δένδρο ιστορικού του χρήστη με αναγνωριστικό <userid i>. Σε αυτό το γεγονός θα πρέπει να τυπώνεται ολόκληρος ο πίνακας κατακερματισμού. W <userid 1> History Tree: <movieid 1 1> <score 1 1> <movieid 1 n1> <score 1 n1> <userid 2> History Tree: <movieid 2 1> <score 2 1> <movieid 2 n2> <score 2 n2> <userid n> History Tree: <movieid n 1> <score n 1> <movieid n nm> <score n nm> 15
16 Γεγονός τύπου world print το οποίο σηματοδοτεί την εκτύπωση όλων των δομών δεδομένων που υπάρχουν στο σύστημα. Οι κόμβοι των δένδρων που υπάρχουν στο σύστημα θα πρέπει να διασχιστούν με ενδοδιατεταγμένη διάταξη (in-order), δηλαδή θα πρέπει να εξασφαλίσετε ότι οι εισαγωγές είναι τέτοιες, έτσι ώστε με ενδοδιατεταγμένη διάταξη οι κόμβοι να τυπώνονται σε αύξουσα σειρά. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραμμα θα πρέπει να τυπώνει την W Chain <j> of Users: <userid 1> History Tree: <movieid 1 1>,..., < movieid 0 m1> <userid 2> History Tree: <movieid 2 1>,..., < movieid 0 m2> <userid n> History Tree: <movieid n 1>,..., < movieid 0 mn> Movie Category Array: < 0>: <movieid 0 1>,..., < movieid 0 n0> < 1>: <movieid 1 1>,..., < movieid 1 n1>... < 4>: <movieid 4 1>,..., < movieid 4 n4> New releases Tree: <new_releases>: <movieid 1>,..., < movieid n> όπου <j> είναι η j-στη αλυσίδα του πίνακα κατακερματισμού και n είναι ο αριθμός των χρηστών στην αλυσίδα που δεικτοδοτείται από τη θέση <j> του πίνακα Users και για κάθε i {1,, n}, <userid i> είναι το αναγνωριστικό του χρήστη που αντιστοιχεί στον i-οστό κόμβο της αλυσίδας αυτής. Επίσης,, 1 k m i, <movieid i k> είναι η ταίνια από το δένδρο ιστορικού του χρήστη με αναγνωριστικό <userid i>. Σε αυτό το γεγονός θα πρέπει να τυπώνεται ολόκληρος ο πίνακας κατακερματισμού. Στην εκτύπωση του πίνακα κατηγοριών έχουμε ότι για κάθε h, 0 h 4, n h είναι το μέγεθος του δένδρου ταινιών της κατηγορίας h του πίνακα κατηγοριών και για κάθε j το αναγνωριστικό της ταινίας που αντιστοιχεί στον j-οστό κόμβο του δένδρου ταινιών της κατηγορίας h, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του δένδρου αυτού. Επίσης, θα τυπώνετε το δένδρο νέων κυκλοφοριών όπου n είναι το μέγεθος του. 16
17 Δομές Δεδομένων Στην υλοποίησή σας δεν επιτρέπεται να χρησιμοποιήσετε έτοιμες δομές δεδομένων (πχ., ArrayList) είτε η υλοποίηση πραγματοποιηθεί στη C, C++ είτε στη Java. Στη συνέχεια παρουσιάζονται οι δομές σε C που πρέπει να χρησιμοποιηθούν για την υλοποίηση της παρούσας εργασίας. /** * Structure defining a node of movie binary tree (dendro tainiwn kathgorias) */ typedef struct movie{ int movieid; /* The movie identifier*/ int ; /* The of the movie*/ int ; /* The movie released*/ int ; /* How many users rate the movie*/ int ; /* The sum of the ratings of the movie*/ float ; /* Median score of the ratings of the movie*/ struct movie *leftchild; /* Pointer to the node's left child*/ struct movie *rightchild; /* Pointer to the node's right child*/ }movie_t; /** * Structure defining movie_ */ typedef struct movie_{ movie_t *movie; /* Pointer to movie tree */ movie_t *sentinel; /* Pointer to movie tree sentinel */ int moviecounter; /* The number of movies in the i */ }moviecategory_t; /** * Structure defining a node of user_movie for history doubly linked binary * tree (dentro istorikou) */ typedef struct user_movie{ int movieid; /* The movie identifier*/ int ; /* The of the movie*/ int score; /* The score of the movie*/ struct user_movie *parent; /* Pointer to the node's parent*/ struct user_movie *leftchild; /* Pointer to the node's left child*/ struct user_movie *rightchild; /* Pointer to the node's right child*/ }usermovie_t; /** * Structure defining a node of users' hashtable (pinakas katakermatismou * xrhstwn) */ typedef struct user { int userid; /* The user's identifier*/ usermovie_t *history; /* A doubly linked binary tree with the movies watched by the user*/ struct user *next; /* Pointer to the next node of the chain*/ }user_t; /* Global variables for simplicity. */ 17
18 moviecategory_t *Array[5]; /* The categories array (pinakas kathgoriwn)*/ movie_t *new_releases; /* New releases simply-linked binary tree*/ user_t **user_hashtable_p; /* The users hashtable. This is an array of chains (pinakas katakermatismoy xrhstwn)*/ int hashtable_size; /* The size of the users hashtable)*/ int max_users; /* The maximum number of registrations (users)*/ int max_id; /* The maximum acount ID */ int primes_g[160]; /* Prime numbers for hashing*/ 18
ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 3 Απριλίου 2016, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 15 Μαΐου 2017, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Κυριακή, 1 Απριλίου 2018, ώρα 23:59 Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος
Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών, 4 Μαρτίου 2019 ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 13 Μαϊου
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 3 Απριλίου 2017, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 19 Δεκεμβρίου 2014, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 14 Νοεµβρίου 2016, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2013-14 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Τετάρτη, 15 Ιανουαρίου 2014, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 19 Δεκεμβρίου 2016, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 1 Απριλίου 2019, ώρα 23:59 Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 18 Μαΐου 2015, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 22 Δεκεμβρίου 2017, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΠρογραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης
Προγραμματιστική Εργασία Μέρος Β Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Διαδικαστικά Παράδοση: Σάββατο, 19 Δεκεμβρίου 2016, ώρα 23:59 Compile & run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 09- Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο και ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 18 Δεκεμβρίου 09, ώρα 08:00 (το πρωί) Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 20 Νοεµβρίου 2017, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία 1 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 4 Νοεµβρίου 2011 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 21 Δεκεμβρίου 2018, ώρα 23:59 Τρόπος
Διαβάστε περισσότεραΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία 2 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 20 Νοεµβρίου 2012 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 2 ο Μέρος Ηµεροµηνία
Διαβάστε περισσότεραΕνότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις
Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε
Διαβάστε περισσότεραHY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος
HY240 : Δομές Δεδομένων Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος Εισαγωγή Στο 2 ο μέρος της εργασίας θα πρέπει να γίνουν τροποποιήσεις στο πρόγραμμα που προέκυψε κατά την υλοποίηση του
Διαβάστε περισσότεραhttps://csd.uoc.gr/~hy240b/current/submit.php
Project HY240b - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 09 Μαρτίου 2018 Εισαγωγή Διαδικαστικά Θεματολογία Δομές Χρηστών
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία 1 ο Μέρος
ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2013-14 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης: Παρασκευή, 29 Νοεµβρίου 2013, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία - 2 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 1 εκεµβρίου 2011 ΗΥ240: οµές εδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία
Διαβάστε περισσότεραΔιάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου
Διαβάστε περισσότεραΔομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου
Διαβάστε περισσότεραΔιάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή
Διαβάστε περισσότεραProject HY240a - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 24 Οκτωβρίου 2018 Διαδικαστικά Θεματολογία Δομές Μεγάλου Αλεξάνδρου
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα
Διαβάστε περισσότεραΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων
ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος
Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2009 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε
Διαβάστε περισσότεραΆσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
Διαβάστε περισσότεραΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 15 Οκτωβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος
Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2012 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2011-12 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία
Διαβάστε περισσότεραΔιάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα
Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ
ΠΝΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΣ ΔΔΟΜΝΩΝ ΚΙ ΛΓΟΡΙΘΜΟΙ ΗΜΡΟΜΗΝΙ: 14/11/2018 ΔΙΓΝΩΣΤΙΚΟ ΠΝΩ Σ ΔΝΔΡΙΚΣ ΔΟΜΣ ΚΙ ΓΡΦΟΥΣ Διάρκεια: 45 λεπτά Ονοματεπώνυμο:. ρ. Ταυτότητας:. ΒΘΜΟΛΟΓΙ ΣΚΗΣΗ ΒΘΜΟΣ
Διαβάστε περισσότεραΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία
ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-
Διαβάστε περισσότεραΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research
ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Δέντρα (5) Τ ένα δέντρο i ένας κόμβος στο επίπεδο k j ένας κόμβος στο επίπεδο k+1 } :
Διαβάστε περισσότεραΔομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΘεωρητικό Μέρος. 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 ο Σετ Ασκήσεων Θεωρητικό Μέρος:
Διαβάστε περισσότεραΔιασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1
Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραΆσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).
Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).
Διαβάστε περισσότεραΔομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα
Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο
Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 1: Συγχώνευση Εγγραφών Δυαδικών Αρχείων Προθεσμία: 2 Μαΐου 2011, 5:00μμ
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
- Δυαδικά Δένδρα (binary trees) - Δυαδικά Δένδρα Αναζήτησης (binary search trees) 1 Δυαδικά Δένδρα Ορισμοί Λειτουργίες Υλοποιήσεις ΑΤΔ Εφαρμογές 2 Ορισμοί (αναδρομικός ορισμός) Ένα δένδρο t είναι ένα πεπερασμένο
Διαβάστε περισσότεραΕισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση
Διαβάστε περισσότεραMy Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας
My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2013 Διδάσκουσα: Παναγιώτα Φατούρου This presentation by Foivos S. Zakkak is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike
Διαβάστε περισσότεραΠληροφορική 2. Δομές δεδομένων και αρχείων
Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες
Διαβάστε περισσότεραΗΥ360 Αρχεία και Βάσεις εδοµένων
ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης Tutorial B-Trees, B+Trees Μπαριτάκης Παύλος 2018-2019 Ιδιότητες B-trees Χρήση για μείωση των προσπελάσεων στον δίσκο Επέκταση των Binary Search Trees
Διαβάστε περισσότεραΚατ οίκον Εργασία 3 Σκελετοί Λύσεων
Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος
Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 - Εξωτερική Ταξινόμηση Παράδοση: 20/01/2017 Σκοπός της εργασίας αυτής
Διαβάστε περισσότεραΙσορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε για κάθε λειτουργία; χρόνο εκτέλεσης Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή μετά από Περιστροφές x αριστερή περιστροφή από το x y α β y
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 21: Εισαγωγή σε Δενδρικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Εισαγωγή σε δενδρικές δομές δεδομένων, -Ορισμοί και πράξεις - Αναπαράσταση δενδρικών δομών δεδομένων
Διαβάστε περισσότεραΔιάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο
Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2011 2012 Καθηγητές Μ. Χατζόπουλος, Δ. Γουνόπουλος Άσκηση 1 Παράδοση 4 Μαϊου Σκοπός της εργασίας αυτής είναι η κατανόηση
Διαβάστε περισσότεραΕνότητα 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): επιστρέφει
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα
Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΔυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι
Διαβάστε περισσότεραΕργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά
EPL231: Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά Αναδρομή Η αναδρομή εμφανίζεται όταν μία διεργασία καλεί τον εαυτό της Υπάρχουν
Διαβάστε περισσότεραΔομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας
Διαβάστε περισσότεραΚατ οίκον Εργασία 3 Σκελετοί Λύσεων
Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως
Διαβάστε περισσότεραένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.
ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος
Διαβάστε περισσότεραΔομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Ουρές Προτεραιότητας Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρά Προτεραιότητας Το πρόβλημα Έχουμε αντικείμενα με κλειδιά και θέλουμε ανά πάσα στιγμή
Διαβάστε περισσότεραΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Ποιος πρέπει να ολοκληρώσει αυτή την εργασία? Φοιτητές έτους >= 2 που
Διαβάστε περισσότεραΕνότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις
Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε µια στοίβα και να καλέσετε τις 5 βασικές
Διαβάστε περισσότεραΑλγόριθμοι Ταξινόμησης Μέρος 2
Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2
Διαβάστε περισσότεραΕνότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)
Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή
Διαβάστε περισσότεραΙσορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε για κάθε λειτουργία; χρόνο εκτέλεσης Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή μετά από Περιστροφές x αριστερή περιστροφή από το x y α β y
Διαβάστε περισσότερα13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας
ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ
ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν
Διαβάστε περισσότεραΔένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, ορισμοί, πράξεις και αναπαράσταση στη μνήμη ΔυαδικάΔένδρακαιΔυαδικάΔένδραΑναζήτησης ΕΠΛ 231 Δομές
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ
Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΔομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015
Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2013 2014 M. Χατζόπουλος Προθεσμία: 19/01/2015 Σκοπός της εργασίας είναι η κατανόηση της εσωτερικής λειτουργίας
Διαβάστε περισσότεραΟικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης
Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2015 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ταξινόµηση και Ουρές Προτεραιότητας Σκοπός της 2 ης εργασίας είναι η εξοικείωση
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΕΞΑΜΗΝΟ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΕΞΑΜΗΝΟ : A' ΦΥΛΛΟ ΑΣΚΗΣΕΩΝ : 13 Στοίβα & Ουρά ΥΠΕΥΘΥΝΟΣ ΜΑΘΗΜΑΤΟΣ : Μάγια Σατρατζέµη Παρατηρήσεις: 1. Τα δεδοµένα εισόδου
Διαβάστε περισσότεραΜάθημα 22: Δυαδικά δέντρα (Binary Trees)
Trees Page 1 Μάθημα 22: Δυαδικά δέντρα (Binary Trees) Ένα δένδρο είναι δυαδικό αν όλοι οι κόμβοι του έχουν βαθμό (degree)
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΗλεκτρονικοί Υπολογιστές
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 9: Πίνακες στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΠρογραμματισμός Δομές Δεδομένων
Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που
Διαβάστε περισσότερα#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.
Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΑναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής
Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.
Διαβάστε περισσότεραιαφάνειες παρουσίασης #10 (β)
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr)
Διαβάστε περισσότεραΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010
Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας
Διαβάστε περισσότερα