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

Σχετικά έγγραφα
Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 4

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

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

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

Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Περιττοί ΑΜ

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

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

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

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

Κεφάλαιο 10 Ψηφιακά Λεξικά

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Ουρές προτεραιότητας

turnin Lab4.pro

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

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

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

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

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

ΘΕΜΑ Α. Μονάδες 10 Α2.

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

ΘΕΜΑ Α. 1. Στην εντολή εκχώρησης Χ ΨΕΥΔΗΣ η μεταβλητή Χ είναι τύπου χαρακτήρες.

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

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

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


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

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

9. Κόκκινα-Μαύρα Δέντρα

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Περιεχόμενα. Περιεχόμενα

Ταξινόμηση με συγχώνευση Merge Sort

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Θέματα Προγραμματισμού Η/Υ

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

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

xvi Προσέγγιση δομεσ δεδομενων και αλγοριθμοι

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

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

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

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

β. Ποια η σύνταξη και η λειτουργία της εντολής ΚΑΛΕΣΕ; ΠΙΝΑΚΑΣ Α

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

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

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

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

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

7η Σειρά Ασκήσεων. Μπορείτε, αν θέλετε, να χρησιμοποιήσετε τον τύπο string της ΗΡ Pascal και τις αντίστοιχες συναρτήσεις (κεφ 10.1 των σημειώσεων).

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

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

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

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

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Φάσμα προπαρασκευή για Α.Ε.Ι. & Τ.Ε.Ι.

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

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

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

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

Εισαγωγή στη γλώσσα προγραμματισμού C++14

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

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

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

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

Βασικές έννοιες προγραμματισμού

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

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

ΘΕΜΑ 1 ο. Στήλη Β Προτάσεις. β. Ο βρόχος επανάληψης τερµατίζεται, όταν η συνθήκη είναι αληθής. όταν η συνθήκη είναι ψευδής.

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

Transcript:

Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). 15% του συνολικού βαθμού στο μάθημα. 1. Θεωρήστε το πρόγραμμα που βρίσκεται στο αρχείο sort.c που συνοδεύει την άσκηση. Ποια είναι η χρονική υπολογιστική πολυπλοκότητα χειρότερης περίπτωσης της συνάρτησης sort; Ποια είναι η αντίστοιχη πολυπλοκότητα της main; Υποθέστε ότι η κλήση rand() εκτελείται σε σταθερό χρόνο. 2. Υποθέστε ότι έχουμε έξι αλγόριθμους Α, Β, Γ, Δ, Ε και Ζ με τις παρακάτω υπολογιστικές πολυπλοκότητες χρόνου. Α. 1000n B. 5n + log n Γ. 2 300 nlog n Δ. 2 300 log n E. n 5 Z. 6n 5 + n Να ταξινομήσετε τους αλγόριθμους από τον καλύτερο στον χειρότερο με βάση την υπολογιστική πολυπλοκότητα τους. Να δώσετε λεπτομερώς όσους υπολογισμούς χρειάζονται για να τεκμηριώσετε την απάντηση σας. 3. Να οργανώσετε τα γράμματα της λέξης ΚΟΛΟΚΟΤΡΩΝΗΣ σε ένα σωρό (heap) χρησιμοποιώντας τον αλγόριθμο εισαγωγής που δίνεται στην σελίδα 82 των διαφανειών της Ενότητας 8 από την ιστοσελίδα του μαθήματος. Τα βήματα του αλγόριθμου να παρουσιαστούν λεπτομερώς χρησιμοποιώντας την δενδρική αναπαράσταση του σωρού όπως κάνουμε στα παραδείγματα της ενότητας αυτής. Δεν χρειάζεται να δείχνετε τον αντίστοιχο πίνακα. 4. Στην σελίδα 127 των διαφανειών της Ενότητας 8 από την ιστοσελίδα του μαθήματος ορίζεται ο αφηρημένος τύπος δεδομένων Binary Tree. Να ορίσετε μία κατάλληλη διεπαφή (interface) για τον τύπο Binary Tree και μια υλοποίηση της χρησιμοποιώντας την συνδεδεμένη αναπαράσταση της σελίδας 108 των ίδιων διαφανειών. Να υποθέσετε ότι τα δένδρα αυτού του

τύπου είναι σε εκτεταμένη (extended) μορφή (δείτε τις σελίδες 20 και 21 των ίδιων διαφανειών). Θα πρέπει να χρησιμοποιήσετε τις τεχνικές για ορισμό ενοτήτων (modules) στην C που έχουμε παρουσιάσει σε προηγούμενες διαλέξεις για άλλους αφηρημένους τύπους δεδομένων (π.χ., στοίβα ή ουρά). Να γράψετε ένα κύριο πρόγραμμα το οποίο θα επιδεικνύει όλη τη λειτουργικότητα του Binary Tree χρησιμοποιώντας δένδρα εκφράσεων (δείτε τη σελίδα 98 των ίδιων διαφανειών). Στο ίδιο κύριο πρόγραμμα να γράψετε κώδικα ο οποίος θα διαβάζει μια μεταθεματική (postfix) αριθμητική έκφραση που δίνεται στην είσοδο, θα κατασκευάζει το αντίστοιχο δένδρο έκφρασης και θα το τυπώνει χρησιμοποιώντας την αντίστοιχη λειτουργία που δίνει ο τύπος Binary Tree. Να υποθέσετε ότι η μεταθεματική έκφραση χρησιμοποιεί τα ψηφία 0, 1, 2,, 9 και τους δυαδικούς τελεστές +, * και /. (50 μονάδες) 5. Το μήκος μονοπατιού ενός δυαδικού δένδρου είναι το άθροισμα των επιπέδων όλων των κόμβων του δένδρου. Το εσωτερικό μήκος μονοπατιού ενός δυαδικού δένδρου είναι το άθροισμα των επιπέδων όλων των εσωτερικών κόμβων του δένδρου. Το εξωτερικό μήκος μονοπατιού ενός δυαδικού δένδρου είναι το άθροισμα των επιπέδων όλων των εξωτερικών κόμβων του δένδρου. Γράψτε τρεις συναρτήσεις που να υπολογίζουν το μήκος μονοπατιού, το εσωτερικό μήκος μονοπατιού και το εξωτερικό μήκος μονοπατιού ενός δοσμένου δυαδικού δένδρου σε εκτεταμένη μορφή. Να εντάξετε τις συναρτήσεις αυτές στην υλοποίηση του αφηρημένου τύπου δεδομένων Binary Tree του προηγούμενου ερωτήματος. (3*10=30 μονάδες) 6. Πόσα διαφορετικά δυαδικά δένδρα αναζήτησης μπορούν να αποθηκεύσουν τα κλειδιά 1, 2, 3 και 4; 7. Σχεδιάστε το δυαδικό δένδρο αναζήτησης που προκύπτει όταν εισάγουμε αντικείμενα με κλειδιά E A S Y σε ένα αρχικά άδειο δένδρο. Ομοίως τα κλειδιά Q U E S T I O N σε ένα δεύτερο δυαδικό δένδρο αναζήτησης. Τέλος, συνενώστε τα δύο δένδρα εκτελώντας την πράξη join που μελετήσαμε στην Ενότητα 9 των διαλέξεων.

8. Υλοποιήστε μια μη αναδρομική συνάρτηση που βρίσκει το k-οστό μικρότερο κλειδί σε ένα δυαδικό δένδρο αναζήτησης. Η συνάρτηση αυτή είναι αντίστοιχη της συνάρτησης STselect από την Ενότητα 9 των διαλέξεων. (15 μονάδες) 9. Υλοποιήστε μια μη αναδρομική συνάρτηση που διαγράφει τον πρώτο κόμβο που αποθηκεύει ένα δοσμένο κλειδί σε ένα δυαδικό δένδρο αναζήτησης. Η συνάρτηση αυτή είναι αντίστοιχη της συνάρτησης STdelete από την Ενότητα 9 των διαλέξεων. (15 μονάδες) 10. Στο πρόβλημα του ιστογράμματος ξεκινάμε με μια συλλογή n κλειδιών και πρέπει να δώσουμε στην έξοδο μια λίστα διακριτών κλειδιών και το πλήθος (τη συχνότητα) των εμφανίσεων του καθενός στη συλλογή. Παράδειγμα: Έστω n = 10 και η συλλογή κλειδιών είναι {2, 4, 2, 2, 3, 4, 2, 6, 4, 2}. Τότε το ιστόγραμμα μπορεί να παρασταθεί από τον παρακάτω πίνακα ή το ισοδύναμο ραβδόγραμμα (bar chart). Κλειδί Συχνότητα 2 5 3 1 4 3 6 1 Να λύσετε το πρόβλημα του ιστογράμματος για ακέραια κλειδιά χρησιμοποιώντας ένα δυαδικό δένδρο αναζήτησης και τον κώδικα της Ενότητας 9 των διαλέξεων (θα πρέπει να γράψετε ένα κατάλληλο κύριο πρόγραμμα). Παρατηρήστε ότι η λύση αυτή είναι κατάλληλη για την περίπτωση που το πλήθος των διακριτών κλειδιών m είναι μικρό σε σχέση με το n. Πόση είναι η χρονική πολυπλοκότητα χειρίστης περίπτωσης του προγράμματος σας; Ποια δομή δένδρου θα χρησιμοποιούσατε για να έχετε πολυπλοκότητα O(n log m); 11. Για κάθε μια από τις επόμενες δύο ακολουθίες κλειδιών, να σχεδιάσετε το δένδρο AVL που προκύπτει όταν τα κλειδιά εισάγονται ένα προς ένα με τη σειρά που δίνονται σε ένα αρχικά κενό δένδρο:

Α: 1, 2, 3, 4, 5, 6, 7 Β: 4, 2, 1, 3, 6, 5, 7 Τώρα από τα δύο AVL δένδρα που έχουν προκύψει, αφαιρέστε τη ρίζα και σχεδιάστε τα AVL δένδρα που προκύπτουν. (10 μονάδες) 12. Σχεδιάστε το δένδρο (2,4) που προκύπτει όταν η ακολουθία κλειδιών (χαρακτήρων του Αγγλικού αλφάβητου) E A S Y Q U T I O N B L K εισάγεται σε ένα αρχικά κενό δένδρο. Μετά σχεδιάστε το δένδρο (2,4) που προκύπτει αν αφαιρεθούν όλα τα κλειδιά που βρίσκονται στη ρίζα από το μικρότερο προς το μεγαλύτερο. (10+5=15 μονάδες) 13. Είναι αληθής ο παρακάτω ισχυρισμός; Αν ναι, αποδείξτε τον. Αν όχι, δώστε ένα μικρό αντιπαράδειγμα. Ισχυρισμός: Ένα δένδρο (2,4) που αποθηκεύει ένα σύνολο κλειδιών θα έχει πάντα την ίδια δομή ανεξάρτητα από τη σειρά εισαγωγής των κλειδιών. 14. Σχεδιάστε το κόκκινο-μαύρο δένδρο που προκύπτει αν εισάγουμε τα κλειδιά E A S Y Q U T I O N B L K σε ένα αρχικά κενό δένδρο. Μετά σχεδιάστε το κόκκινο-μαύρο δένδρο που θα προκύψει αν διαγράψουμε τη ρίζα. (10+5=15 μονάδες) Παρατηρήσεις: Οι λύσεις σας στα ερωτήματα που απαιτούν υλοποίηση πρέπει να είναι οργανωμένες σε modules της C όπως έχουμε συζητήσει στο μάθημα. Τα προγράμματα σας θα πρέπει να είναι όσο πιο καλά οργανωμένα γίνεται, σύμφωνα με όσα έχετε μάθει στο μάθημα «Εισαγωγή στον Προγραμματισμό». Τα προγράμματα σας πρέπει να «τρέχουν» στους υπολογιστές του Τμήματος με το λειτουργικό linux αφού μεταφραστούν με τον μεταγλωττιστή gcc.

Πως να παραδώσετε τις λύσεις σας: Οι λύσεις θα πρέπει να σταλούν στο e-mail ddproj@di.uoa.gr μέχρι την προθεσμία παράδοσης και να είναι οργανωμένες ως εξής. Θα στείλετε ακριβώς ένα συμπιεσμένο αρχείο. Η λύση κάθε προβλήματος που απαιτεί υλοποίηση θα είναι σε χωριστό directory το οποίο θα περιλαμβάνει τα source files που χρειάζονται, και ένα Makefile το οποίο θα μπορεί να χρησιμοποιηθεί για να μεταγλωττιστούν τα αρχεία σας και να παραχθεί το αντίστοιχο executable. Θα πρέπει να υποβάλλετε και ένα αρχείο pdf στο οποίο θα περιέχονται οι απαντήσεις των θεωρητικών ερωτημάτων και το οποίο, για τα προγραμματιστικά ερωτήματα, θα περιέχει όσο documentation χρειάζεται ώστε οι βαθμολογητές να κατανοήσουν πλήρως τη λύση σας και να τη βαθμολογήσουν ανάλογα. Αυτό θα πρέπει να γίνει ανεξάρτητα με το αν είναι τα προγράμματα σας καλά σχολιασμένα, πράγμα που συνιστάται. Τέλος, το αρχείο pdf θα πρέπει να ξεκινά με το όνομα σας γραμμένο με Ελληνικούς χαρακτήρες και τον αριθμό μητρώου σας. Καλή Επιτυχία!