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

!01 ds Intro.ppt - University of the Aegean · 2010-10-20 · • Ένα πρόβλημα (π.χ. αναζήτηση, ταξινόμηση) μπορεί να λύνεται με πολλούς

  • 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

LOGISTICS ΜΑΘΗΜΑΤΟΣ

6

Διδάσκοντες

• Θεωρία

– Χρήστος Γκουμόπουλος ([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

Ερωτήσεις;

14

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΚΑΙ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ

15

Βασικές έννοιες

• Αλγόριθμος

• Πρόβλημα

• Στιγμιότυπο

• Αναπαράσταση αλγορίθμων

• Ορθότητα αλγορίθμου

• Απόδοση αλγορίθμων

• Τύπος Δεδομένων

• Αφηρημένος Τύπος Δεδομένων

• Δομή Δεδομένων

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