Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Δομές Δεδομένων
Ενότητα 1 - Εισαγωγή
Χρήστος Γκουμόπουλος
Πανεπιστήμιο Αιγαίου
Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων
Αντικείμενο μαθήματος
• Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών μία ΔΔ
είναι ένας συγκεκριμένος τρόπος αποθήκευσης και οργάνωσης
δεδομένων στον υπολογιστή με σκοπό αυτά τα δεδομένα να
μπορούν να χρησιμοποιηθούν αποδοτικά.
• Λειτουργίες σε ΔΔ : αναζήτηση, εισαγωγή, τροποποίηση,
διαγραφή, ταξινόμηση, …
• Οι ΔΔ συνδυάζονται με αλγόριθμους για να επιλύσουν ένα • Οι ΔΔ συνδυάζονται με αλγόριθμους για να επιλύσουν ένα
πρόβλημα
• ΔΔ + Αλγόριθμοι = Προγράμματα
• Διαφορετικές ΔΔ ταιριάζουν σε διαφορετικά προβλήματα
• Β-trees για υλοποίηση ΒΔ
• Hash Tables για υλοποίηση μεταγλωττιστών
• Υλοποίηση αλγόριθμων και δομών δεδομένων σε C ή C++
(Εργαστήριο).
2
Διάρθρωση μαθήματος
• Βασικές έννοιες αλγορίθμων και δομών δεδομένων
• Θέματα ανάλυσης και απόδοσης αλγορίθμων
• Αναπαράσταση ΔΔ σε γλώσσες προγραμματισμού
• Βασικές ΔΔ: πίνακες, γραμμικές λίστες, στοίβες,
ουρές, ουρές προτεραιότηταςουρές, ουρές προτεραιότητας
• Αλγόριθμοι ταξινόμησης
• Δένδρα
• Κατακερματισμός
• Γραφήματα
3
Σχετικά μαθήματα
• «Εισαγωγή στον Προγραμματισμό» παλιό
«Σχεδίαση και Υλοποίηση Λογισμικού» (1ο
εξ.)
• «Μεθοδολογίες & Γλώσσες
Προγραμματισμού Ι» (γλώσσα C++) (2ο εξ.)Προγραμματισμού Ι» (γλώσσα C++) (2ο εξ.)
• «Μεθοδολογίες & Γλώσσες
Προγραμματισμού ΙΙ» (γλώσσα Java) (3ο εξ.)
• «Αλγόριθμοι & Πολυπλοκότητα» (4ο εξ.)
4
Μέσα
• Διαλέξεις
• Εργαστήρια
• Η παρακολούθηση και η ενεργή συμμετοχή
θεωρούνται εξ ορισμού αναγκαία για την
επιτυχή ολοκλήρωση του μαθήματος.επιτυχή ολοκλήρωση του μαθήματος.
5
Διδάσκοντες
• Θεωρία
– Χρήστος Γκουμόπουλος ([email protected])
• Εργαστήριο
– Γεώργιος Παπαλεξανδράτος ([email protected])
7
Βαθμολογία
• 50% Τελική Εξέταση
• 20% Πρόοδος
• 30% Βαθμός εργαστηρίου που προκύπτει
από μια σειρά ασκήσεων
• Ο βαθμός του εργαστηρίου πρέπει να είναι
≥ 5.≥ 5.
• Ο βαθμός της προόδου και του
εργαστηρίου ενεργοποιούνται μόνον όταν
ο φοιτητής επιτύχει στις τελικές εξετάσεις,
δηλ. εάν σε αυτές λάβει βαθμό
τουλάχιστον 5.
8
Πρόοδος/Εξετάσεις
• Η εξέταση προόδου θα πραγματοποιηθεί την
πρώτη εβδομάδα του Δεκέμβρη και θα εξεταστεί
γραπτώς η ύλη που θα έχει καλυφθεί μέχρι εκείνο
το σημείο.
• Η συμμετοχή στην πρόοδο είναι επιβεβλημένη.
• Η εξεταστική περίοδος ξεκινά 24.01.2011 και • Η εξεταστική περίοδος ξεκινά 24.01.2011 και
τελειώνει 18.02.2011
• Η εξέταση τόσο στην πρόοδο όσο και στις τελικές
εξετάσεις είναι με περιορισμένο χρόνο και με
κλειστές σημειώσεις.
9
Εργαστήριο
• 2 ώρες (Πέμπτη 17.00–19.00 & 19.00–21.00 )
• Δύο ομάδες, αλφαβητικός διαχωρισμός
• Ο διαχωρισμός των ομάδων είναι αυστηρός για
όλους!
• Η παρακολούθηση εργαστηρίου είναι υποχρεωτική. • Η παρακολούθηση εργαστηρίου είναι υποχρεωτική.
• Η εξέταση και η παράδοση της κάθε άσκησης θα
γίνεται στο εργαστήριο την προκαθορισμένη
ημερομηνία.
• Οι ασκήσεις που θα δοθούν θα έχουν όλες την ίδια
βαρύτητα.
10
Δεοντολογία
• Οι ασκήσεις είναι ατομικές
• Γόνιμη ανταλλαγή απόψεων μεταξύ των φοιτητών σχετικά με τις ασκήσεις και επιτρέπεται και ενθαρρύνεται.
• Η συνεργασία ΔΕΝ πρέπει να οδηγεί σε από κοινού επίλυση και συγγραφή της άσκησης. κοινού επίλυση και συγγραφή της άσκησης.
• Η υποβολή κοινών απαντήσεων από διαφορετικούς φοιτητές που συνεργάστηκαν δεν επιτρέπεται και θεωρείται ως ΑΝΤΙΓΡΑΦΗ.
• Η αντιγραφή έχει ως αποτέλεσμα το μηδενισμό της άσκησης και τη δυσμενή αξιολόγηση συνολικά για το μάθημα.
11
Συμβουλή
• Να μην βλέπετε τις εργασίες των συμφοιτητών σας κατά την διάρκεια της εκπόνησής τους
• Να μην δίνετε το κείμενο ή/και τον κώδικα των εργασιών σας στους συμφοιτητές σας.στους συμφοιτητές σας.
• Στην τεκμηρίωση των εργασιών σας θα πρέπει να αναφέρετε όλες τις πηγές που χρησιμοποιήσατε (π.χ. βιβλία, διαδίκτυο, κτλ)
• Εάν είναι απαραίτητο ρωτήστε τους διδάσκοντες για διευκρινήσεις
12
Βιβλία
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C, ΜΕΡΗ 1-4: ΘΕΜΕΛΙΩΔΕΙΣ ΕΝΝΟΙΕΣ, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ, ΤΑΞΙΝΟΜΗΣΗ, ΑΝΑΖΗΤΗΣΗROBERT SEDGEWICK3η έκδοση/2006ISBN: 960-209-896-1Εκδόσεις Κλειδάριθμος ΕΠΕΕκδόσεις Κλειδάριθμος ΕΠΕ
Δομές δεδομένων, αλγόριθμοι και εφαρμογές C++
Sahnii Sartaj1η έκδοση/2004
ISBN: 978-960-418-030-1Εκδόσεις Α. ΤΖΙΟΛΑ Ο.Ε.
13
Βασικές έννοιες
• Αλγόριθμος
• Πρόβλημα
• Στιγμιότυπο
• Αναπαράσταση αλγορίθμων
• Ορθότητα αλγορίθμου
• Απόδοση αλγορίθμων
• Τύπος Δεδομένων
• Αφηρημένος Τύπος Δεδομένων
• Δομή Δεδομένων
16
Απόδοση αλγόριθμων
• Ένα πρόβλημα (π.χ. αναζήτηση, ταξινόμηση)
μπορεί να λύνεται με πολλούς αλγόριθμους
• Χρειάζεται να μπορούμε να συγκρίνουμε τους
αλγόριθμους μεταξύ τους.
• Το βασικότερο κριτήριο είναι ο χρόνος • Το βασικότερο κριτήριο είναι ο χρόνος
εκτέλεσης
• Άλλο κριτήριο είναι ο χώρος στην μνήμη
• Αναζητούμε αλγόριθμους που επιλύουν ένα
πρόβλημα με αποδοτικό τρόπο ως προς τον
χρόνο και τον χώρο17
Μέτρηση απόδοσης
• Χρησιμοποιούνται δύο τρόποι για την
μέτρηση της απόδοσης ενός αλγόριθμου:
– Πειραματικές μετρήσεις
– Θεωρητική ανάλυση
18
Πειραματικές Μετρήσεις
• Υλοποίηση προγράμματος
• Δημιουργία εισόδων διαφορετικού μεγέθους και
σύνθεσης
• Καταγραφή του χρόνου εκτέλεσης για κάθε στιγμιότυπο
• Απεικόνιση σε γραφική παράσταση
19
Ανάλυση Αλγορίθμων
• Χρησιμοποιείται μια αναπαράσταση του
αλγόριθμου (π.χ. ψευδοκώδικας)
• Εκτίμηση υπολογιστικών πόρων που απαιτεί η
εκτέλεση του αλγόριθμου ως συνάρτηση του
μεγέθους εισόδου
• Βασίζεται σε μαθηματικά εργαλεία και δεν
εξαρτάται από συγκεκριμένη υλοποίηση
• Ανάλυση (χειρότερης, μέσης, καλύτερης
περίπτωσης)
20
Υπολογιστικό μοντέλο RAM
• Μηχανή Άμεσης Προσπέλασης Μνήμης (Random
Access Machine, RAM)
• Ιδεατός υπολογιστής με έναν επεξεργαστή,
απεριόριστη μνήμη και ακολουθιακή εκτέλεση
εντολών.
• O αλγόριθμος που εκτελείται σε RAM, κάθε
στοιχειώδες βήμα του απαιτεί μοναδιαίο χρόνο.
– Στοιχειώδη βήματα: προσπέλαση μιας θέσης μνήμης,
ανάθεση τιμής, αριθμητικές και λογικές πράξεις,
σύγκριση, εντολή ελέγχου
21
Πολυπλοκότητα χώρου
• Πόσες θέσεις μνήμης δεσμεύει ο αλγόριθμος
όταν εφαρμόζεται σε είσοδο μεγέθους n;
22
Ποια είναι η πολυπλοκότητα χώρου για
επαναληπτική υλοποίηση;
Πολυπλοκότητα χρόνου
• Πόσο χρόνο (σε στοιχειώδη βήματα)
χρειάζεται ο αλγόριθμος όταν εφαρμόζεται σε
είσοδο μεγέθους n;
– Χειρότερη περίπτωση
– Καλύτερη περίπτωση
23
– Καλύτερη περίπτωση
Υπολογισμός πολυωνύμου
• Πολυώνυμο βαθμού n:
• Υπολογισμός τιμής P(x) στο σημείο x.
• Ποια είναι η πολυπλοκότητα χρόνου στις δύο περιπτώσεις;
in
i ixaxP ∑ =
=0
)(
0321 ....))))(...((()( axxaxaxaxaxPnnnn
+++++=−−−
24
• Η ακριβής εκτίμηση μπορεί να είναι δύσκολο να γίνει.
• Μας απασχολεί κυρίως η τάξη μεγέθους του χρόνου
εκτέλεσης σε συνάρτηση του n � ασυμπτωτική ανάλυση
Τύπος Δεδομένων
• Ένας τύπος δεδομένων καθορίζει:
– ένα σύνολο τιμών
– ένα σύνολο από λειτουργίες που μπορούν να
εκτελεστούν επί των τιμών
• Βασικοί τύποι δεδομένων• Βασικοί τύποι δεδομένων
– Boolean = {false, true}
• Λειτουργίες: AND, OR, NOT
– Integer = {0, ±1, ±2, ±3, …}
• Λειτουργίες: +, -, *, /, %
25
Αφηρημένος Τύπος Δεδομένων
• Αφηρημένος Τύπος Δεδομένων (ΑΤΔ) είναι
ένα σύνολο τιμών (γενικότερα αντικειμένων)
και ένα σύνολο λειτουργιών επί των
αντικειμένων.
• Το σύνολο των λειτουργιών ονομάζεται • Το σύνολο των λειτουργιών ονομάζεται
διασύνδεση (interface) του ΑΤΔ.
– Εισαγωγή, διαγραφή, αναζήτηση, μέγεθος, …
• Ο ΑΤΔ ορίζεται θεωρητικά χωρίς να μπαίνει σε
λεπτομέρειες υλοποίησης είτε της
αναπαράστασης των αντικειμένων, είτε της
υλοποίησης των λειτουργιών26
Δομή Δεδομένων
• Οργάνωση δεδομένων στην κύρια μνήμη.
• Δομή Δεδομένων (ΔΔ) είναι υλοποίηση ενός ΑΤΔ και η
διατύπωσή της περιλαμβάνει:
– ένα σύνολο στοιχείων και ένα σύνολο λειτουργιών επί των στοιχείων
(όπως ο ΑΤΔ).
– την αναπαράσταση των στοιχείων (δομή των στοιχείων και τρόπος
αποθήκευσης)αποθήκευσης)
– την υλοποίηση των λειτουργιών
• Η υλοποίηση της ΔΔ (αναπαράσταση στοιχείων και οι
αλγόριθμοι που υλοποιούν τις λειτουργίες) μπορούν να
αλλάξουν χωρίς να αλλάξει ο ΑΤΔ.
• Ομοιότητα με τις αρχές του αντικειμενοστρεφούς μοντέλου
ανάπτυξης
– Κλάση � ΑΤΔ
– Υλοποίηση κλάσης � υλοποίηση ΑΤΔ � ΔΔ 27