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

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

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

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

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

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

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

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

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

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

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

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

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

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

Θεωρητικό Μέρος. 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); } }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

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

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

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

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

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

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


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

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

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

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

ΑΣΚΗΣΗ 1. Structural Programming

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

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

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

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

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

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

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

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

ΕΚΦΩΝΗΣΕΙΣ. β. Να γράψετε αναλυτικά τα μειονεκτήματα της χρήσης των πινάκων. γ. Να γράψετε ονομαστικά τις τυπικές επεξεργασίες των πινάκων.

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

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

Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Εισαγωγή στο περιβάλλον Code::Blocks

4. Συνδεδεμένες Λίστες

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

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο. Πίνακες. Επικοινωνία:

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

Προηγμένη Ευρετηρίαση Δεδομένων (ΠΜΣ) Ενδεικτικές ερωτήσεις-θέματα για την εξέταση της θεωρίας

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

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

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

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών. Ασκήσεις: week3 και week4. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

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

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

Transcript:

Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης: Τρίτη, 6 Ιανουαρίου 2009, ώρα 23:59 (Νέα ηµεροµηνία: Τρίτη, 13/1, ώρα 23:59). Τρόπος Παράδοσης: Χρησιµοποιώντας το πρόγραµµα submit. Στο 3 ο µέρος της προγραµµατιστικής εργασίας ζητείται να γίνουν τροποποιήσεις στο πρόγραµµα που προέκυψε κατά την υλοποίηση του 2 ου προγραµµατιστικού καθήκοντος του 2 ου µέρους. Το πρόγραµµα που θα προκύψει θα περιγράφει (προσοµοιώνει) και πάλι τη λειτουργία ενός διοµότιµου συστήµατος (το οποίο ακολουθεί τους κανόνες λειτουργίας που έχουν περιγραφεί στο 1 ο µέρος). Το 3 ο µέρος της εργασίας αποτελείται από τρία προγραµµατιστικά καθήκοντα. 1 ο Προγραµµατιστικό καθήκον: Υλοποίηση Πινάκων Κατακερµατισµού (Hash Tables) Οι πληροφορίες για τους κόµβους που συµµετέχουν κάθε χρονική στιγµή στο σύστηµα αποθηκεύονται, στο δένδρο κόµβων (NdeTree) (δηλαδή σε ένα ταξινοµηµένο διπλά-συνδεδεµένο δένδρο), όπως είχε περιγραφεί στο 2 ο µέρος της εργασίας. Για κάθε κόµβο n διατηρούνται οι πληροφορίες που περιγράφηκαν στο 2 ο µέρος της εργασίας. Στο µέρος αυτό ωστόσο τα αρχεία που διατηρεί κάθε κόµβος θα αποθηκεύονται σε έναν πίνακα κατακερµατισµού. Ζητείται να υλοποιήσετε τις εξής δύο τεχνικές κατακερµατισµού: 1. Μέθοδος των ταξινοµηµένων ξεχωριστών αλυσίδων. Η µορφή των δοµών δεδοµένων που χρησιµοποιεί το πρόγραµµα στην περίπτωση αυτή φαίνεται στο Σχήµα 1. 2. Μέθοδος του ταξινοµηµένου διπλού κατακερµατισµού. Η µορφή των δοµών δεδοµένων που χρησιµοποιεί το πρόγραµµα στην περίπτωση αυτή φαίνεται στο Σχήµα 2. Οι συναρτήσεις κατακερµατισµού (πρωτεύουσα και δευτερεύουσα) που θα χρησιµοποιήσετε θα πρέπει να επιλέγονται τυχαία από µια καθολική οικογένεια συναρτήσεων κατακερµατισµού (δηλαδή ζητείται να υλοποιήσετε µια καθολική οικογένεια συναρτήσεων κατακερµατισµού, βάσει της θεωρίας που έχετε διδαχθεί στο µάθηµα). Επιπρόσθετα, για κάθε αρχείο κρατείται τώρα και το µέγεθος του (πεδίο των κόµβων του πίνακα κατακερµατισµού αρχείων). Το πρόγραµµα θα πρέπει να εκτελείται καλώντας την εντολή run <m> <p> <input-file> <number_f_events> όπου run είναι το όνοµα του εκτελέσιµου αρχείου του προγράµµατος, <m> είναι ένας ακέραιος που καθορίζει το µέγιστο πλήθος κόµβων στο σύστηµα (το οποίο θα είναι 2 m ), <p> είναι ο κοντινότερος πρώτος αριθµός στον 2 m που είναι µικρότερος του 2 m, <input-file> είναι το όνοµα ενός αρχείου εισόδου που περιέχει γεγονότα των µορφών που περιγράφηκαν στο 1 ο µέρος της εργασίας αλλά µε χρονοσφραγίδες όπως περιγράφηκε στο 2 ο µέρος της εργασίας (2 ο προγραµµατιστικό καθήκον) και <number_f_events> είναι το µέγιστο πλήθος γεγονότων που θα εκτελεστούν. 1

Η συµπεριφορά κάθε γεγονότος πρέπει να είναι αυτή που περιγράφεται στην εκφώνηση του 1 ου µέρους της εργασίας, ενώ οι χρονοσφραγίδες λειτουργούν µε τον ίδιο ακριβώς τρόπο όπως στο 2 ο µέρος της εργασίας (δηλαδή θα πρέπει να αλλάξετε το αρχείο που προέκυψε κατά την υλοποίηση του 2 ου προγραµµατιστικού καθήκοντος του 2 ου µέρους της εργασίας).το πρόγραµµα θα πρέπει να τυπώνει αντίστοιχες πληροφορίες κατά την εκτέλεση κάποιου γεγονότος µε αυτές που τυπώνονταν στο 2 ο µέρος της εργασίας. Να ορίσετε µε πρωτοβουλία σας τις απαραίτητες λεπτοµέρειες, όπως το µέγεθος του πίνακα κατακερµατισµού. Θεωρήστε ότι τα αναγνωριστικά των κλειδιών των αρχείων θα επιλεχθούν από το σύνολο {0,..,p-1}, όπου p είναι ο κοντινότερος πρώτος αριθµός στον αριθµό 2 m που είναι µικρότερος του 2 m. 2 ο Προγραµµατιστικό καθήκον: Ταξινόµηση Προσθέστε ένα νέο γεγονός όπως περιγράφεται στη συνέχεια: S <>: Γεγονός τύπου Srt το οποίο σηµατοδοτεί την εκτύπωση των αρχείων που αποθηκεύονται στον κόµβο µε αναγνωριστικό <> ταξινοµηµένα ως προς το τους (δηλαδή η εκτύπωση τυπώνει τα αρχεία του κόµβου <> ταξινοµηµένα ως προς το µέγεθος τους). Η υλοποίηση αυτού του γεγονότος θα πρέπει να πραγµατοποιηθεί ως εξής. Θα πρέπει πρώτα να δηµιουργηθεί ένας πίνακας ο οποίος έχει τόσα στοιχεία όσα και τα αρχεία που είναι αποθηκευµένα στον κόµβο. Κάθε στοιχείο του πίνακα είναι ένα struct µε δύο πεδία: και. Στη συνέχεια, ο πίνακας θα πρέπει να ταξινοµείται ως προς το πεδίο και τέλος να πραγµατοποιείται η εκτύπωση (όπως περιγράφεται παρακάτω). Ως αλγόριθµο ταξινόµησης θα πρέπει να υλοποιήσετε είτε τον αλγόριθµο HeapSrt() ή τον MergeSrt(). Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: S <> DONE DOCLIST = <fd 1, 1 >, <fd 2, 2 >,, <fd r, r >, όπου r είναι το πλήθος των αρχείων που είναι αποθκευµένα στον κόµβο µε αναγνωριστικό <> και για κάθε j, 1 j r, fd j είναι το αναγνωριστικό ενός αρχείου του πίνακα κατακερµατισµού αρχείων του κόµβου και j είναι το µέγεθος του αρχείου αυτού. Σηµειώνεται τα αρχεία εµφανίζονται στη γραµµή «DOCLIST=» σε φθίνουσα διάταξη ως προς το µέγεθος τους. Το πρόγραµµα εκτελείται καλώντας την ίδια εντολή όπως περιγράφηκε παραπάνω για το 1 ο προγραµµατιστικό καθήκον και τυπώνει ακριβώς τις ίδιες πληροφορίες µετά την εκτέλεση κάθε γεγονότος. 3 ο Προγραµµατιστικό καθήκον: Πειραµατική Μελέτη Στα διάφορα µέρη της προγραµµατιστικής εργασίας έχετε υλοποιήσει ένα σύνολο από δοµές δεδοµένων. Πιο συγκεκριµένα, πληροφορίες για τους κόµβους αποθηκεύονται είτε σε λίστα ή σε ταξινοµηµένο δένδρο, ενώ τα αρχεία κάθε κόµβου αποθηκεύονται είτε σε λίστα ή σε πίνακα κατακερµατισµού. Σε αυτό το προγραµµατιστικό καθήκον ζητείται να µετρήσετε πειραµατικά την απόδοση των σχεδιαστικών αυτών επιλογών. Ειδικότερα, θα πρέπει να συγκρίνετε τα εξής: 1. Επιλογή 1: Οι κόµβοι αποθηκεύονται σε λίστα και τα αρχεία κάθε κόµβου διατηρούνται επίσης σε λίστα (όπως στο 1 ο µέρος). 2. Επιλογή 2: Οι κόµβοι αποθηκεύονται σε ταξινοµηµένο δένδρο ενώ τα αρχεία κάθε κόµβου αποθηκεύονται σε λίστα (όπως στο 2 ο µέρος). 2

3. Επιλογή 3: Οι κόµβοι αποθηκεύονται σε ταξινοµηµένο δένδρο ενώ τα αρχεία κάθε κόµβου αποθηκεύονται σε πίνακα κατακερµατισµού που ακολουθεί τη µέθοδο των ξεχωριστών ταξινοµηµένων αλυσίδων (όπως περιγράφεται στο τρέχον µέρος της εργασίας). 4. Επιλογή 4: Οι κόµβοι αποθηκεύονται σε ταξινοµηµένο δένδρο ενώ τα αρχεία κάθε κόµβου αποθηκεύονται σε πίνακα κατακερµατισµού που ακολουθεί τη µέθοδο του ταξινοµηµένου διπλού κατακερµατισµού (όπως περιγράφεται στο τρέχον µέρος της εργασίας). Θα πρέπει να τροποποιήσετε κατάλληλα την διαδικασία main() του προγράµµατός σας, ώστε αυτή να διαβάζει από το πληκτρολόγιο ποιες επιλογές θέλει να συγκρίνει ο χρήστης. Ανάλογα µε τις επιλογές του χρήστη, θα πρέπει να καλείται ο κατάλληλος κώδικας και να προσµετρούνται διάφορα στατιστικά που περιγράφονται στη συνέχεια. Για κάθε µια από τις επιλογές 1-4 που περιγράφηκαν παραπάνω θα πρέπει να µετράται το µέσο πλήθος προσπελάσεων που πραγµατοποιούνται στις ακόλουθες περιπτώσεις: Εύρεση κόµβου. Εύρεση αρχείου στη δοµή δεδοµένων αρχείων ενός κόµβου (εδώ δεν προσµετρούνται οι προσπελάσεις µνήµης που απαιτούνται για την εύρεση του κατάλληλου κόµβου, αλλά µόνο εκείνες που πραγµατοποιούνται για την εύρεση του αρχείου δεδοµένου ότι ο κόµβος στον οποίο ανήκει η δοµή δεδοµένων αρχείων είναι γνωστός). Εύρεση αρχείου όπου προσµετρούνται οι συνολικές προσπελάσεις που πραγµατοποιούνται κατά την αναζήτηση (τόσο στη δοµή των κόµβων για να εντοπιστεί ο κατάλληλος κόµβος όσο και στη δοµή των αρχείων του κόµβου αυτού). Είναι αξιοσηµείωτο ότι αναζητήσεις κόµβων ή αρχείων µπορεί να προκύπτουν κατά την εκτέλεση πολλών γεγονότων και θα πρέπει όλες αυτές οι αναζητήσεις να λαµβάνονται υπ όψιν κατά τον υπολογισµό των στατιστικών (π.χ., οι περισσότεροι τύποι γεγονότων εµπεριέχουν τη λειτουργία της εύρεσης κόµβου και οι προσπελάσεις προκειµένου να πραγµατοποιηθεί η εύρεση για κάθε τέτοιο γεγονός θα πρέπει να προσµετρούνται). Στην περίπτωση που οι κόµβοι αποθηκεύονται σε ταξινοµηµένο δένδρο θα πρέπει επίσης να τυπώνεται το µέγιστο ύψος του δένδρου κατά τη διάρκεια της εκτέλεσης. Επιπρόσθετα, εάν χρησιµοποιούνται πίνακες κατακερµατισµού που ακολουθούν τη µέθοδο των ξεχωριστών ταξινοµηµένων αλυσίδων θα πρέπει να τυπώνονται τα εξής: Το µέσο µήκος των αλυσίδων (άθροισµα µηκών όλων των αλυσίδων όλων των πινάκων κατακερµατισµού δια το συνολικό πλήθος αλυσίδων σε όλους τους πίνακες). Το µέγιστο µήκος των αλυσίδων (µέγιστο µήκος οποιασδήποτε αλυσίδας σε οποιονδήποτε πίνακα κατακερµατισµού). Το µέσο πλήθος των αλυσίδων που είναι κενές (άθροισµα πλήθους αλυσίδων που είναι κενές σε κάθε πίνακα κατακερµατισµού διά του πλήθους των πινάκων κατακερµατισµού). Τέλος, αν χρησιµοποιούνται πίνακες κατακερµατισµού που ακολουθούν τη µέθοδο του ταξινοµηµένου διπλού κατακερµατισµού θα πρέπει να τυπώνονται οι εξής πληροφορίες: Το ποσοστό των κλειδιών στον πίνακα κατακερµατισµού που βρίσκονται στην αρχική τους θέση. Το µέγιστο πλήθος κλειδιών που έχουν την ίδια τιµή κατακερµατισµού. Το πλήθος των κενών θέσεων του πίνακα κατακερµατισµού. Όταν χρησιµοποιείται κατακερµατισµός που ακολουθεί τη µέθοδο του ταξινοµηµένου κατακερµατισµού, επιλέξτε τρεις διαφορετικές τιµές για τον παράγοντα φόρτωσης (π.χ., a = 0.3, a = 0.6 και a = 0.8) και κάθε φορά που το a γίνεται ίσο µε µια συγκεκριµένη από αυτές τις τιµές για κάποιο πίνακα κατακερµατισµού 3

τυπώστε το µέσο πλήθος προσπελάσεων για επιτυχή αναζήτηση (όπου δεν προσµετρούνται οι προσπελάσεις µνήµης που απαιτούνται για την εύρεση του κατάλληλου κόµβου). Πιο συγκεκριµένα, για κάθε πίνακα κατακερµατισµού θα πρέπει να διατηρούνται διάφοροι µετρητές, όπως το µέγιστο πλήθος στοιχείων που είναι αποθηκευµένα στον πίνακα, το συνολικό πλήθος προσπελάσεων που έχουν πραγµατοποιηθεί για την αναζήτηση στοιχείων στον πίνακα και το συνολικό πλήθος αναζητήσεων που έχουν πραγµατοποιηθεί (ώστε να είναι δυνατός ο υπολογισµός του µέσου πλήθους προσπελάσεων για τον πίνακα αυτόν). Όταν ο παράγοντας φόρτου για τον εκάστοτε πίνακα πάρει µια από τις τρεις τιµές που έχετε επιλέξει, θα πρέπει να αποθηκεύονται κατάλληλα δεδοµένα ώστε να µπορεί να γίνει τελικά η εκτύπωση που συζητείται στη συνέχεια. Τα αποτελέσµατα να δοθούν σε µορφή πίνακα, όπου να φαίνονται, για κάθε τιµή του a, οι τιµές του µέσου πλήθους προσπελάσεων που προσµετρήθηκαν, οι τιµές που προκύπτουν από τη θεωρία και οι ποσοστιαίες αποκλίσεις. Bnus: Υλοποίηση Ξένων Συνόλων µε Ένωση [30%] Ζητείται να γίνει η εξής τροποποίηση στη δοµή δεδοµένων των αρχείων ενός κόµβου. Το πεδίο κάθε στοιχείου της δοµής δεν θα πρέπει να είναι ένας ακέραιος αλλά ένας δείκτης σε κάποιο κατάλληλο κόµβο ενός πάνω δένδρου (που αντιστοιχεί σε αυτό το αρχείο). Έτσι, για την αποθήκευση των αρχείων ενός κόµβου χρησιµοποιείται επιπρόσθετα του πίνακα κατακερµατισµού και ένα δάσος από τρία πάνω δένδρα, ένα για κάθε τύπο αρχείων. Όπως έχει αναφερθεί, κατά την αποχώρηση ενός κόµβου από το σύστηµα, ο κόµβος αφήνει τα αρχεία του στο επόµενό του στο δακτύλιο. Τότε θα πρέπει να εφαρµοσθεί η λειτουργία της ένωσης µεταξύ των κατάλληλων πάνω δένδρων των δύο κόµβων. Όταν ένας κόµβος v εισάγεται στο σύστηµα, κάποια από τα αρχεία του εποµένου του (έστω u) στον δακτύλιο θα πρέπει να αποθηκευθούν στο νέο-εισαχθέντα κόµβο. Τα αρχεία αυτά διαγράφονται από τις δοµές δεδοµένων του u και εισάγονται σε αυτές του v. εδοµένου ότι τα πάνω δένδρα δεν υποστηρίζουν αποδοτικά την λειτουργία της διαγραφής, τα πάνω δένδρα του u καταργούνται (ελευθερώνοντας όλους τους κόµβους τους) και όταν γίνει ο διαχωρισµός των κλειδιών µεταξύ των κόµβων u και v, τα πάνω δένδρα του u (επίπροσθετα αυτών του v) σχηµατίζονται από την αρχή (ξεκινώντας από τόσα µονοσύνολα όσα και τα αρχεία που αποµένουν στον u και συνενώνοντας κατάλληλα αυτά ώστε να προκύψουν τα τελικά δένδρα). Επίσης, θα πρέπει να προστεθεί ένα ακόµη γεγονός όπως περιγράφεται στη συνέχεια: T <> <>: Γεγονός τύπου Type το οποίο σηµατοδοτεί την εκτύπωση εκείνων των αρχείων που αποθηκεύονται στον κόµβο µε αναγνωριστικό <>, των οποίων ο τύπος είναι <>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: T <> <> DONE DOCLIST = <fd 1 >, <fd 2 >,, <fd k >, όπου k είναι το πλήθος των αρχείων τύπου <> που είναι αποθηκευµένα στον κόµβο µε αναγνωριστικό <> και για κάθε j, 1 j k, <fd j > είναι το αναγνωριστικό ενός τέτοιου αρχείου. Οδηγίες και Συµβουλές για την Οµαλή ιεκπεραίωση της Εργασίας Όπως και µε τα προηγούµενα µέρη της εργασίας, το µέρος αυτό θα πρέπει να πραγµατοποιηθεί σε βήµατα. Ο κάθε φοιτητής είναι πλέον ώριµος να αποφασίσει ποια βήµατα θα απλοποιήσουν την εργασία του και θα οδηγήσουν στην οµαλή διεξαγωγή της. 4

Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 R lc rc p DcL R lc rc p DcL lc rc p DcL DcL lc rc p lc rc p DcL lc rc p DcL lc rc p DcL Σχήµα 1 5

R lc rc p DcL R lc rc p DcL lc rc p DcL lc rc p DcL DcL lc rc p lc rc p DcL πίνακας µε στοιχεία struct nde Σχήµα 2 6