Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία...

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

Transcript of Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία...

Page 1: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Δομές ΔεδομένωνΕισαγωγή

Δημήτρης Μιχαήλ

Τμήμα Πληροφορικής και ΤηλεματικήςΧαροκόπειο Πανεπιστήμιο

Page 2: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Βιβλιογραφία

• Kurt Mehlhorn and Peter Sanders: Algorithms and Data Structures, TheBasic Toolbox, Springer, 2008.

• Robert Sedgewick, Αλγόριθμοι σε C, Μέρη 1-4 (Θεμελιώδεις Έννοιες,Δομές Δεδομένων, Ταξινόμηση, Αναζήτηση), Τρίτη ΑμερικάνικηΈκδοση, Εκδόσεις Κλειδάριθμος

• Γεώργιος Φρ. Γεωργακόπουλος, Δομές Δεδομένων: Έννοιες, Τεχνικές,Αλγόριθμοι, Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 2002.

• Cormen, Leiserson, Rivest and Stein. “Introduction to Algorithms”, MITPress, Third Edition, 2009.

Χαροκόπειο Πανεπιστήμιο 2/49

Page 3: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Δομές Δεδομένων

Στην επιστήμη υπολογιστών μία δομή δεδομένων είναι έναςσυγκεκριμένος τρόπος αποθήκευσης και οργάνωσης δεδομένων στονυπολογιστή με σκοπό αυτά τα δεδομένα να μπορούν να χρησιμοποιηθούναποδοτικά.

Χαροκόπειο Πανεπιστήμιο 3/49

Page 4: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Τύποι Δεδομένων

Ένας τύπος δεδομένων αποτελείται από:• ένα σύνολο τιμών• ένα σύνολο από πράξεις που μπορούν να εκτελεστούν σε αυτές τιςτιμές

Παράδειγμα boolean• 2 τιμές: true, false• πράξεις: AND, OR, NOT, κ.τ.λ

Χαροκόπειο Πανεπιστήμιο 4/49

Page 5: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Τύποι Δεδομένων

Ένας τύπος δεδομένων αποτελείται από:• ένα σύνολο τιμών• ένα σύνολο από πράξεις που μπορούν να εκτελεστούν σε αυτές τιςτιμές

Παράδειγμα boolean• 2 τιμές: true, false• πράξεις: AND, OR, NOT, κ.τ.λ

Χαροκόπειο Πανεπιστήμιο 4/49

Page 6: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Τύποι Δεδομένων

Ένας τύπος δεδομένων αποτελείται από:• ένα σύνολο τιμών• ένα σύνολο από πράξεις που μπορούν να εκτελεστούν σε αυτές τιςτιμές

Παράδειγμα ακέραιος• τιμές Z• πράξεις: πρόσθεση, αφαίρεση, κ.τ.λ

Χαροκόπειο Πανεπιστήμιο 4/49

Page 7: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Στοιχειώδης Δομές Δεδομένων

Θα μιλήσουμε για τις παρακάτω στοιχειώδης δομές:• Πίνακες• Λίστες

Οι δομές αυτές είναι βασικοί λίθοι για άλλες πιο πολύπλοκες δομέςδεδομένων.

Χαροκόπειο Πανεπιστήμιο 5/49

Page 8: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Πίνακας (array)Η πιο θεμελιώδης δομή δεδομένων

0

4

8

12

16

20

24

28

32

32-bit word

byte

36

40

Χαροκόπειο Πανεπιστήμιο 6/49

Page 9: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Πίνακας (array)Η πιο θεμελιώδης δομή δεδομένων

Ένας πίνακας αποτελεί μία σταθερή συλλογή δεδομένων ίδιου τύπου ταοποία αποθηκεύονται ακολουθιακά σε κάποιο σημείο της μνήμης.

Χαρακτηριστικά• Σταθερό μέγεθος• Ένας τύπος δεδομένων• Συνεχόμενη αποθήκευση στην μνήμη• Τυχαία πρόσβαση (RAM - random access memory)

Χαροκόπειο Πανεπιστήμιο 7/49

Page 10: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Πίνακας (array)Η πιο θεμελιώδης δομή δεδομένων

Ένας πίνακας αποτελεί μία σταθερή συλλογή δεδομένων ίδιου τύπου ταοποία αποθηκεύονται ακολουθιακά σε κάποιο σημείο της μνήμης.

Χαρακτηριστικά• Σταθερό μέγεθος• Ένας τύπος δεδομένων• Συνεχόμενη αποθήκευση στην μνήμη• Τυχαία πρόσβαση (RAM - random access memory)

Χαροκόπειο Πανεπιστήμιο 7/49

Page 11: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Πίνακας (array)Η πιο θεμελιώδης δομή δεδομένων

Μία δήλωση σε γλώσσα C όπως η παρακάτω:int array [ 1 0 0 ] ;

δεσμεύει ένα κομμάτι μνήμης 100 ακεραίων.

Η δήλωση περιέχει όλη την απαραίτητη πληροφορία ώστε ομεταγλωττιστής να μπορεί να υλοποιήσει εντολές όπωςarray [ 2 3 ] = 5 ;

με την χρήση τυχαίας πρόσβασης.

Χαροκόπειο Πανεπιστήμιο 8/49

Page 12: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Πίνακας (array)Η πιο θεμελιώδης δομή δεδομένων

• Στην C το όνομα ενός πίνακα είνα συνώνυμο με την διεύθυνση μνήμηςτου πρώτου στοιχείου του πίνακα. Έτσι και αλλιώς ο μεταγλωττιστήςαποφασίζει που να αποθηκεύσει τον πίνακα.

• Από τον τύπο του πίνακα (int) ξέρει πως κάθε στοιχείο του πίνακααποτελείται από 4 bytes (σε 32-bit αρχιτεκτονική).

• Αφού τα στοιχεία είναι συνεχόμενα στην μνήμη, το στοιχείο 23 είναιστην διεύθυνση μνήμης

array+ 23× 4

Χαροκόπειο Πανεπιστήμιο 9/49

Page 13: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Πίνακας

Ποια είναι τα πλεονεκτήματα και μειονεκτήματα των πινάκων

Για να απαντήσουμε αυτό το ερώτημα θα κάνουμε μία μικρή παρένθεση.

Χαροκόπειο Πανεπιστήμιο 10/49

Page 14: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ανάλυση Αλγορίθμων

• διαδικασία κατανόησης της απόδοσης και συμπεριφοράς• σημαντική στη σχεδίαση και υλοποίηση

Διαφορετικοί τρόποι ανάλυσης• Εμπειρική ανάλυση (empirical analysis)Προσπάθεια κατανόησης συμπεριφοράς μέσω μίας υλοποίησης

• Μαθηματική ανάλυσηΠροσπάθεια κατανόησης συμπεριφοράς μέσω των μαθηματικών

Χαροκόπειο Πανεπιστήμιο 11/49

Page 15: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Εμπειρική ανάλυση

• Χρειαζόμαστε μία σωστή και ολοκληρωμένη υλοποίηση• Πρέπει να αποφασίσουμε τι δεδομένα θα χρησιμοποιήσουμε

• πραγματικά• τυχαία

• Χρειαζόμαστε ένα μέτρο σύγκρισης

Χαροκόπειο Πανεπιστήμιο 12/49

Page 16: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική Ανάλυση

Μετράμε την απόδοση ενός αλγορίθμου ή δομής δεδομένων ως συνάρτησητου μεγέθους της εισόδου n 7→ f(n).

Συνήθως μετράμε ως μονάδα κόστους μία σημαντικού κόστους εντολή τουυπολογιστή, π.χ:• μαθηματικές πράξεις• συγκρίσεις• load-store από την μνήμη

Χαροκόπειο Πανεπιστήμιο 13/49

Page 17: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική Ανάλυση

ΠαράδειγμαΈστω ένας πίνακας με n ακεραίους. Πόσο χρόνο χρειάζεται ο παρακάτωαλγόριθμος για να βρει το μέγιστο.

1 int findmax ( int *array , int n )2 3 int max = array [ 0 ] ;4 for ( int i = 1 ; i < n ; ++i )5 6 if ( array [i ] > max )7 max = array [i ] ;8 9 return max ;10

Χαροκόπειο Πανεπιστήμιο 14/49

Page 18: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική Ανάλυση

Γενική Ιδέα• δεν μας ενδιαφέρουν οι σταθερές• εάν ένας αλγόριθμος κάνει 2 προσθέσεις και μία σύγκριση για nστοιχεία, εμείς δεν μετράμε 3n κόστος αλλά n

• προσπαθούμε να κάνουμε την ανάλυση ανεξάρτητη από την ταχύτητατου υπολογιστή που τρέχει ο αλγόριθμος

Προσπαθούμε να καταλάβουμε πως συμπεριφέρεται ένας αλγόριθμος ότανn→ ∞.

Εάν ένας αλγόριθμος έχει κόστος 4n4 + 2n2 + 30 εμείς αγνοούμε τουςμικρούς όρους και τις σταθερές και λέμε πως ο αλγόριθμος συμπεριφέρεται≈ n4 για πολύ μεγάλα n.

Χαροκόπειο Πανεπιστήμιο 15/49

Page 19: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική Ανάλυση

Γενική Ιδέα• δεν μας ενδιαφέρουν οι σταθερές• εάν ένας αλγόριθμος κάνει 2 προσθέσεις και μία σύγκριση για nστοιχεία, εμείς δεν μετράμε 3n κόστος αλλά n

• προσπαθούμε να κάνουμε την ανάλυση ανεξάρτητη από την ταχύτητατου υπολογιστή που τρέχει ο αλγόριθμος

Προσπαθούμε να καταλάβουμε πως συμπεριφέρεται ένας αλγόριθμος ότανn→ ∞.

Εάν ένας αλγόριθμος έχει κόστος 4n4 + 2n2 + 30 εμείς αγνοούμε τουςμικρούς όρους και τις σταθερές και λέμε πως ο αλγόριθμος συμπεριφέρεται≈ n4 για πολύ μεγάλα n.

Χαροκόπειο Πανεπιστήμιο 15/49

Page 20: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική ΑνάλυσηΠαράδειγμα

• Έστω ένας αλγόριθμος Α που για είσοδο μεγέθους n τρέχει σε χρόνο3n2 + 2n+ 5

• Ισχυριζόμαστε πως για αρκετά μεγάλες εισόδους οι χαμηλές δυνάμειςδεν έχουν μεγάλη σημασία

n 3n2 2n+ 5

2 12 910 300 251000 3000000 2005100000 3 · 1010 200005

Χαροκόπειο Πανεπιστήμιο 16/49

Page 21: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική ΑνάλυσηΠαράδειγμα

• Έστω ένας αλγόριθμος Α που για είσοδο μεγέθους n τρέχει σε χρόνο3n2 + 2n+ 5

• Ισχυριζόμαστε πως για αρκετά μεγάλες εισόδους οι χαμηλές δυνάμειςδεν έχουν μεγάλη σημασία

n 3n2 2n+ 5

2 12 910 300 251000 3000000 2005100000 3 · 1010 200005

Χαροκόπειο Πανεπιστήμιο 16/49

Page 22: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική ΑνάλυσηΠαράδειγμα

• Έστω ένας αλγόριθμος Α που για είσοδο μεγέθους n τρέχει σε χρόνο3n2 + 2n+ 5

• Ισχυριζόμαστε πως για αρκετά μεγάλες εισόδους οι χαμηλές δυνάμειςδεν έχουν μεγάλη σημασία

n 3n2 2n+ 5

2 12 910 300 251000 3000000 2005100000 3 · 1010 200005

Χαροκόπειο Πανεπιστήμιο 16/49

Page 23: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ασυμπτωτική ΑνάλυσηΠαράδειγμα

0

200

400

600

800

1000

1200

0 5 10 15 20

3n2 συγκριτικά με 2n+ 5

3n22n+ 5

Ο τετραγωνικός όρος αυξάνει πολύ πιο γρήγορα από τον γραμμικό όρο.Αγνοώντας τους μικρούς όρους χάνουμε πολύ λίγο για μεγάλες εισόδους

Χαροκόπειο Πανεπιστήμιο 17/49

Page 24: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

O(g(n)) =f(n) :

υπάρχουν θετικές σταθερές c και n0 ώστε0 ≤ f(n) ≤ c · g(n) για όλα τα n ≥ n0

Χαροκόπειο Πανεπιστήμιο 18/49

Page 25: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

O(g(n)) =f(n) :

υπάρχουν θετικές σταθερές c και n0 ώστε0 ≤ f(n) ≤ c · g(n) για όλα τα n ≥ n0

n

f(n)

cg(n)

n0

f(n) = O(g(n))

Χαροκόπειο Πανεπιστήμιο 18/49

Page 26: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημα2n3 + 100n2 + n ∈ O(n3)

ΑπόδειξηΑρκεί να βρούμε θετική σταθερά c και n0 ≥ 0 ώστε να ισχύει:

2n3 + 100n2 + n ≤ cn3

Διαιρώντας με n > 1 έχουμε πως αρκεί

2n2 + 100n+ 1 ≤ cn2.

Για n ≥ 1 έχουμε 2n2 + 100n+ 1 ≤ 2n2 + 100n2 + n2 ≤ 103n2. Άρα μπορούμενα θέσουμε c = 103 και n0 = 1 > 0.

Χαροκόπειο Πανεπιστήμιο 19/49

Page 27: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημα2n3 + 100n2 + n ∈ O(n3)

ΑπόδειξηΑρκεί να βρούμε θετική σταθερά c και n0 ≥ 0 ώστε να ισχύει:

2n3 + 100n2 + n ≤ cn3

Διαιρώντας με n > 1 έχουμε πως αρκεί

2n2 + 100n+ 1 ≤ cn2.

Για n ≥ 1 έχουμε 2n2 + 100n+ 1 ≤ 2n2 + 100n2 + n2 ≤ 103n2. Άρα μπορούμενα θέσουμε c = 103 και n0 = 1 > 0.

Χαροκόπειο Πανεπιστήμιο 19/49

Page 28: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημα2n3 + 100n2 + n ∈ O(n3)

ΑπόδειξηΑρκεί να βρούμε θετική σταθερά c και n0 ≥ 0 ώστε να ισχύει:

2n3 + 100n2 + n ≤ cn3

Διαιρώντας με n > 1 έχουμε πως αρκεί

2n2 + 100n+ 1 ≤ cn2.

Για n ≥ 1 έχουμε 2n2 + 100n+ 1 ≤ 2n2 + 100n2 + n2 ≤ 103n2. Άρα μπορούμενα θέσουμε c = 103 και n0 = 1 > 0.

Χαροκόπειο Πανεπιστήμιο 19/49

Page 29: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημαn ∈ O(2n)

ΑπόδειξηΠρέπει να βρούμε c > 0, n0 > 0 ώστε να ισχύει

n ≤ c · 2n.

Παρατηρώντας τον τρόπο που μεγαλώνουν οι συναρτήσεις βλέπουμε πως γιαc = 1 και n0 = 1 η ανισότητα ισχύει. Πρέπει όμως να αποδείξουμε πωςπαραμένει αλήθεια για κάθε n ≥ n0 = 1. Έστω f(n) = 2n − n. Η συνάρτησηείναι συνεχής και παραγωγίσιμη. Η πρώτη παράγωγος είναιf′(n) = ln(2) · 2n − 1 και είναι θετική για κάθε n ≥ 1.Άρα η συνάρτηση f(n) είναι γνησίως αύξουσα για n ≥ 1 που σημαίνει πωςπαραμένει θετική για κάθε n ≥ n0 = 1.

Χαροκόπειο Πανεπιστήμιο 20/49

Page 30: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημαn ∈ O(2n)

ΑπόδειξηΠρέπει να βρούμε c > 0, n0 > 0 ώστε να ισχύει

n ≤ c · 2n.

Παρατηρώντας τον τρόπο που μεγαλώνουν οι συναρτήσεις βλέπουμε πως γιαc = 1 και n0 = 1 η ανισότητα ισχύει. Πρέπει όμως να αποδείξουμε πωςπαραμένει αλήθεια για κάθε n ≥ n0 = 1.

Έστω f(n) = 2n − n. Η συνάρτησηείναι συνεχής και παραγωγίσιμη. Η πρώτη παράγωγος είναιf′(n) = ln(2) · 2n − 1 και είναι θετική για κάθε n ≥ 1.Άρα η συνάρτηση f(n) είναι γνησίως αύξουσα για n ≥ 1 που σημαίνει πωςπαραμένει θετική για κάθε n ≥ n0 = 1.

Χαροκόπειο Πανεπιστήμιο 20/49

Page 31: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημαn ∈ O(2n)

ΑπόδειξηΠρέπει να βρούμε c > 0, n0 > 0 ώστε να ισχύει

n ≤ c · 2n.

Παρατηρώντας τον τρόπο που μεγαλώνουν οι συναρτήσεις βλέπουμε πως γιαc = 1 και n0 = 1 η ανισότητα ισχύει. Πρέπει όμως να αποδείξουμε πωςπαραμένει αλήθεια για κάθε n ≥ n0 = 1. Έστω f(n) = 2n − n. Η συνάρτησηείναι συνεχής και παραγωγίσιμη. Η πρώτη παράγωγος είναιf′(n) = ln(2) · 2n − 1 και είναι θετική για κάθε n ≥ 1.

Άρα η συνάρτηση f(n) είναι γνησίως αύξουσα για n ≥ 1 που σημαίνει πωςπαραμένει θετική για κάθε n ≥ n0 = 1.

Χαροκόπειο Πανεπιστήμιο 20/49

Page 32: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημαn ∈ O(2n)

ΑπόδειξηΠρέπει να βρούμε c > 0, n0 > 0 ώστε να ισχύει

n ≤ c · 2n.

Παρατηρώντας τον τρόπο που μεγαλώνουν οι συναρτήσεις βλέπουμε πως γιαc = 1 και n0 = 1 η ανισότητα ισχύει. Πρέπει όμως να αποδείξουμε πωςπαραμένει αλήθεια για κάθε n ≥ n0 = 1. Έστω f(n) = 2n − n. Η συνάρτησηείναι συνεχής και παραγωγίσιμη. Η πρώτη παράγωγος είναιf′(n) = ln(2) · 2n − 1 και είναι θετική για κάθε n ≥ 1.Άρα η συνάρτηση f(n) είναι γνησίως αύξουσα για n ≥ 1 που σημαίνει πωςπαραμένει θετική για κάθε n ≥ n0 = 1.

Χαροκόπειο Πανεπιστήμιο 20/49

Page 33: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Θεώρημα1000000 ∈ O(1)

ΑπόδειξηΠρέπει να δείξουμε πως υπάρχουν c > 0, n0 > 0 ώστε

1000000 ≤ c · 1για κάθε n ≥ n0.Η σχέση ισχύει για c = 1000001 και n0 = 1.

Χαροκόπειο Πανεπιστήμιο 21/49

Page 34: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονΠαράδειγμα

ΘεώρημαΓια a > 0 ισχύει πως f(n) = an2 + bn ∈ O(n2).

ΑπόδειξηΠρέπει να βρούμε θετική σταθερά c και n0 ≥ 0 ώστε

an2 + bn ≤ cn2 για κάθε n ≥ n0ή ισοδύναμα

an+ b ≤ cn.Επειδή an+ b ≤ |a|n+ |b| ≤ |a|n+ |b|n για n ≥ 1 μπορούμε να διαλέξουμεc = |a|+ |b| και n0 οποιαδήποτε θετική τιμή μεγαλύτερη ή ίση του ένα π.χn0 = 1.

Χαροκόπειο Πανεπιστήμιο 22/49

Page 35: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

Συναντάμε συχνά τους εξής χρόνους:

• σταθερός O(1)

• λογαριθμικός O(log n)• γραμμικός O(n)• O(n log n)• τετραγωνικός O(n2)• πολυωνυμικός O(nk)• εκθετικός O(2n)

Χαροκόπειο Πανεπιστήμιο 23/49

Page 36: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

-100

0

100

200

300

400

500

600

700

800

900

0 5 10 15 20 25 30

Run

ning

Tim

e

Input Size

log(x)x

x*log(x)x*x

Χαροκόπειο Πανεπιστήμιο 24/49

Page 37: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός μεγάλου όμικρονbig-Oh notation

0

2000

4000

6000

8000

10000

0 20 40 60 80 100

Run

ning

Tim

e

Input Size

x*log(x)x*x

Χαροκόπειο Πανεπιστήμιο 24/49

Page 38: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός ΟμέγαΩ-notation

Ω(g(n)) =f(n) :

υπάρχουν θετικές σταθερές c και n0 ώστε0 ≤ c · g(n) ≤ f(n) για όλα τα n ≥ n0

n

f(n)

cg(n)

n0

f(n) = Ω(g(n))

Χαροκόπειο Πανεπιστήμιο 25/49

Page 39: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συμβολισμός ΘήταΘ-notation

Θ(g(n)) =f(n) : f(n) = O(g(n)) και f(n) = Ω(g(n))

n

f(n)

c1g(n)

n0

f(n) = Θ(g(n))

c2g(n)

Χαροκόπειο Πανεπιστήμιο 26/49

Page 40: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ανάλυση ΑλγορίθμωνΔιαφορετικοί τρόποι ανάλυσης

• Εμπειρική ανάλυση (empirical analysis)Προσπάθεια κατανόησης συμπεριφοράς μέσω μίας υλοποίησης

• Μαθηματική ανάλυσηΠροσπάθεια κατανόησης συμπεριφοράς μέσω των μαθηματικών

Καμία μέθοδος δεν είναι πανάκεια

Χαροκόπειο Πανεπιστήμιο 27/49

Page 41: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

ΠίνακαςΠλεονεκτήματα και Μειονεκτήματα

Πλεονεκτήματα• προσπέλαση στοιχείου σε σταθερό χρόνο, O(1)

• τυχαία προσπέλαση

Μειονεκτήματα• σταθερό μέγεθος• δεν μπορούμε να προσθέσουμε στοιχεία στη μέση ενός πίνακα• αναδιάταξη στοιχείων μόνο με αντιγραφή

Χαροκόπειο Πανεπιστήμιο 28/49

Page 42: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Διδιάστατοι Πίνακες

• πίνακες με 2 αριθμοδείκτες, πχ array[3][2]• αντιστοιχούν σε μήτρες (matrices)• υλοποιούνται με μονοδιάστατους πίνακες, πχ για 5× 5 μεγέθους πίνακαέχουμε array[i][j] = array[5 ∗ i+ j]

• άρα κάθε στοιχείο χρειάζεται O(1) χρόνο για να προσπελαστεί

Χαροκόπειο Πανεπιστήμιο 29/49

Page 43: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Διδιάστατοι ΠίνακεςΠολλαπλασιασμός Πινάκων

c11 c12 · · · c1pc21 c22 · · · c2p...

.... . .

...cn1 cn2 · · · cnp

=

a11 a12 · · · a1ma21 a22 · · · a2m...

.... . .

...an1 an2 · · · anm

·

b11 b12 · · · b1pb21 b22 · · · b2p...

.... . .

...bm1 bm2 · · · bmp

for ( i = 0 ; i < n ; i++ )for ( j = 0 ; j < p ; j++ )

for ( k = 0 , c [i ] [ j ] = 0 . 0 ; k < m ; k++ )c [i ] [ j ] += a [i ] [ k ] * b [k ] [ j ] ;

Η πολυπλοκότητα είναι O(npm)

Χαροκόπειο Πανεπιστήμιο 30/49

Page 44: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Διδιάστατοι ΠίνακεςΠολλαπλασιασμός Πινάκων

c11 c12 · · · c1pc21 c22 · · · c2p...

.... . .

...cn1 cn2 · · · cnp

=

a11 a12 · · · a1ma21 a22 · · · a2m...

.... . .

...an1 an2 · · · anm

·

b11 b12 · · · b1pb21 b22 · · · b2p...

.... . .

...bm1 bm2 · · · bmp

for ( i = 0 ; i < n ; i++ )for ( j = 0 ; j < p ; j++ )

for ( k = 0 , c [i ] [ j ] = 0 . 0 ; k < m ; k++ )c [i ] [ j ] += a [i ] [ k ] * b [k ] [ j ] ;

Η πολυπλοκότητα είναι O(npm)

Χαροκόπειο Πανεπιστήμιο 30/49

Page 45: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συνδεδεμένες ΛίστεςLinked Lists

Στόχος• πρόσβαση σε μία συλλογή στοιχείων με τη σειρά (ακολουθιακά)• αποδοτική αναδιάταξη στοιχείων, διαγραφή, προσθήκη, κ.τ.λ

Χαροκόπειο Πανεπιστήμιο 31/49

Page 46: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συνδεδεμένες ΛίστεςLinked Lists

ΟρισμόςΜία συνδεδεμένη λίστα είναι ένα σύνολο στοιχείων όπου κάθε στοιχείοαποτελεί τμήμα ενός κόμβου (node) ο οποίος περιέχει επίσης ένασύνδεσμο (link) προς κάποιον κόμβο.

Χαροκόπειο Πανεπιστήμιο 31/49

Page 47: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συνδεδεμένες ΛίστεςΤερματισμός

Με μηδενικό σύνδεσμο (null link)

NULL

Χαροκόπειο Πανεπιστήμιο 32/49

Page 48: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συνδεδεμένες ΛίστεςΤερματισμός

Με ψευδο-κόμβο (dummy node)

Χαροκόπειο Πανεπιστήμιο 32/49

Page 49: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Συνδεδεμένες ΛίστεςΤερματισμός

Χωρίς τερματισμό, κυκλική λίστα (circular)

Χαροκόπειο Πανεπιστήμιο 32/49

Page 50: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Διπλά Συνδεδεμένες Λίστες

Περιέχουν και σύνδεσμο προς το προηγούμενο στοιχείο της λίστας

Χαροκόπειο Πανεπιστήμιο 33/49

Page 51: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Χαρακτηριστικά Λιστών

• προσθήκη, διαγραφή, μετακίνηση σε O(1) χρόνο• αναζήτηση k-στού στοιχείου σε O(k) χρόνο• καταναλώνουν περισσότερο χώρο από πίνακες, αφού κρατάμε και τουςσυνδέσμους

Χαροκόπειο Πανεπιστήμιο 34/49

Page 52: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Προσθήκη σε Λίστα

x

t

Χαροκόπειο Πανεπιστήμιο 35/49

Page 53: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Προσθήκη σε Λίστα

x

t

Χαροκόπειο Πανεπιστήμιο 35/49

Page 54: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Προσθήκη σε Λίστα

x

t

Χαροκόπειο Πανεπιστήμιο 35/49

Page 55: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Διαγραφή από Λίστα

x

t

Χαροκόπειο Πανεπιστήμιο 36/49

Page 56: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Διαγραφή από Λίστα

x

t

Χαροκόπειο Πανεπιστήμιο 36/49

Page 57: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Διαγραφή από Λίστα

x

t

Χαροκόπειο Πανεπιστήμιο 36/49

Page 58: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Αφαίρεση (abstraction)

Ανάπτυξη αφηρημένων μοντέλων που διαχωρίζουν την λειτουργία από τηνυλοποίηση.

Για να αναπτύξουμε ένα πολύπλοκο σύστημα (όπως τα σημερινάυπολογιστικά συστήματα) βασιζόμαστε σε στρώσεις αφαίρεσης (layers ofabstraction).

Χαροκόπειο Πανεπιστήμιο 37/49

Page 59: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Στρώσεις αφαίρεσης

Παράδειγμα• bits από φυσικές ιδιότητες υλικών• αφηρημένο μοντέλο μηχανής από τις δυναμικές ιδιότητες των τιμώνενός συνόλου από bits

• αφηρημένο μοντέλο γλώσσας προγραμματισμού• αφηρημένη έννοια αλγορίθμου

Χαροκόπειο Πανεπιστήμιο 38/49

Page 60: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Αφηρημένος Τύπος Δεδομένων (ΑΤΔ)Abstract Data Type

ΟρισμόςΈνας αφηρημένος τύπος δεδομένων είναι ένας τύπος δεδομένων (ένασύνολο τιμών και μία συλλογή πράξεων ή λειτουργιών που εφαρμόζονται σεαυτές τις τιμές) ο οποίος μπορεί να προσπελαστεί μόνο μέσω κάποιαςδιασύνδεσης (interface).

Ονομάζουμε πελάτη (client) ένα πρόγραμμα που χρησιμοποιεί κάποιοναφηρημένο τύπο δεδομένων και υλοποίηση (implementation) έναπρόγραμμα στο οποίο ορίζεται ο τύπος δεδομένων.

Χαροκόπειο Πανεπιστήμιο 39/49

Page 61: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Αφηρημένος Τύπος Δεδομένων (ΑΤΔ)Abstract Data Type

• Χρήση μόνο μέσα από τηνδιασύνδεση

• Μπορούμε να αλλάξουμεελεύθερα την υλοποίηση

• Θα δούμε αργότεραπαραδείγματα διασύνδεση

υλοποίηση

Χαροκόπειο Πανεπιστήμιο 40/49

Page 62: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Στοίβαως ΑΤΔ

Μία στοίβα ώθησης προς τα κάτω (pushdown stack) είναι ένας ΑΤΔ πουπεριλαμβάνει τις εξής λειτουργίες:

• Εισαγωγή (ώθηση) ενός νέου στοιχείου, PUSH(S,x).• Διαγραφή (απώθηση, pop) του τελευταίου στοιχείου που προστέθηκεστη στοίβα, POP(S).

• Έλεγχος κενής στοίβας, EMPTY(S).• Επιστροφή του μεγέθους της στοίβας, SIZE(S).

Χαροκόπειο Πανεπιστήμιο 41/49

Page 63: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Στοίβα

Η στοίβα ακολουθεί την αρχή τελευταίο μέσα, πρώτο έξω ή αλλιώς LIFO(last-in, first-out)

PopPush

Αφού ορίζουμε μία στοίβα ως ΑΤΔ δεν μας ενδιαφέρει η ακριβής υλοποίησητης στοίβας. Μπορούμε για παράδειγμα να υλοποιήσουμε μια στοίβα μελίστα αλλά και με πίνακα.

Χαροκόπειο Πανεπιστήμιο 42/49

Page 64: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

Χαροκόπειο Πανεπιστήμιο 43/49

Page 65: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

Χαροκόπειο Πανεπιστήμιο 43/49

Page 66: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

A

Χαροκόπειο Πανεπιστήμιο 43/49

Page 67: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

S

Χαροκόπειο Πανεπιστήμιο 43/49

Page 68: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

A

Χαροκόπειο Πανεπιστήμιο 43/49

Page 69: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

Y

Χαροκόπειο Πανεπιστήμιο 43/49

Page 70: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

A

Χαροκόπειο Πανεπιστήμιο 43/49

Page 71: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

Q

Χαροκόπειο Πανεπιστήμιο 43/49

Page 72: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

Q

U

Χαροκόπειο Πανεπιστήμιο 43/49

Page 73: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

Q

U

E

Χαροκόπειο Πανεπιστήμιο 43/49

Page 74: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

Q

U

Χαροκόπειο Πανεπιστήμιο 43/49

Page 75: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

Q

Χαροκόπειο Πανεπιστήμιο 43/49

Page 76: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

A

Χαροκόπειο Πανεπιστήμιο 43/49

Page 77: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

S

Χαροκόπειο Πανεπιστήμιο 43/49

Page 78: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

S

T

Χαροκόπειο Πανεπιστήμιο 43/49

Page 79: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

A

S

Χαροκόπειο Πανεπιστήμιο 43/49

Page 80: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

A

Χαροκόπειο Πανεπιστήμιο 43/49

Page 81: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

Χαροκόπειο Πανεπιστήμιο 43/49

Page 82: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

I

Χαροκόπειο Πανεπιστήμιο 43/49

Page 83: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

I

O

Χαροκόπειο Πανεπιστήμιο 43/49

Page 84: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

I

Χαροκόπειο Πανεπιστήμιο 43/49

Page 85: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

I

N

Χαροκόπειο Πανεπιστήμιο 43/49

Page 86: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop() E

I

Χαροκόπειο Πανεπιστήμιο 43/49

Page 87: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

E

Χαροκόπειο Πανεπιστήμιο 43/49

Page 88: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Παράδειγμα Χρήσης Στοίβας

• EAS*Y*QUE***ST***IO*N***• τα γράμματα σημαίνουν push() και τααστεράκια pop()

Χαροκόπειο Πανεπιστήμιο 43/49

Page 89: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Εφαρμογή ΣτοίβαςΥπολογισμών εκφράσεων (infix notation)

Μια σημαντική εφαρμογή της στοίβας είναι ο υπολογισμός αριθμητικώνπαραστάσεων.

π.χ για να υπολογίσουμε την παράσταση

5× (((9 + 8)× (4× 6)) + 7)

πρέπει να έχουμε ένα μηχανισμό αποθήκευσης ενδιάμεσων αποτελεσμάτων.

Μία στοίβα είναι ένας ιδανικός μηχανισμός.

Χαροκόπειο Πανεπιστήμιο 44/49

Page 90: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Εφαρμογή ΣτοίβαςΥπολογισμών Εκφράσεων (infix notation)

Για να υπολογίσουμε ενθεματικές (infix) παραστάσεις, θα κάνουμε δύοβήματα:

1 μετατροπή από ενθεματική σε μεταθεματική (postfix) αναπαράσταση2 υπολογισμός την μεταθεματικής παράστασης

Και τα δύο βήματα θα γίνουν με την χρήση στοίβας.

Χαροκόπειο Πανεπιστήμιο 45/49

Page 91: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Εφαρμογή ΣτοίβαςΜεταθεματική Αναπαράσταση (postfix notation)

Η παράσταση5× (((9 + 8)× (4× 6)) + 7)

γράφεται ως εξής σε postfix

5 9 8 + 4 6×× 7 +×

Για να επιστρέψουμε σε ενθεματική μορφή αντικαθιστούμε όλες τιςεμφανίσεις των όρων a b × και a b + με (a× b) και (a+ b).

Χαροκόπειο Πανεπιστήμιο 46/49

Page 92: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Εφαρμογή ΣτοίβαςΥπολογισμός Μεταθεματικής Παράστασης (postfix notation)

Για να υπολογίσουμε την τιμή μιας μεταθεματικής παράστασης καθώςδιαβάζουμε σύμβολα κάνουμε τα εξής:

• εαν το σύμβολο που διαβάσαμε είναι αριθμός, τον αποθηκεύσουμε μέσαστην στοίβα

• εαν το σύμβολο είναι πράξη, βγάζουμε δύο στοιχεία από την στοίβα,εκτελούμε την πράξη μεταξύ τους και βάζουμε το αποτέλεσμα στηνστοίβα

Χαροκόπειο Πανεπιστήμιο 47/49

Page 93: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Εφαρμογή ΣτοίβαςΜετατροπή Πλήρους Ενθεματικής σε Μεταθεματική Παράσταση

Για να μετατρέψουμε μια πλήρης ενθεματική παράσταση σε μεταθεματικήκάνουμε την εξής διαδικασία:

• ωθούμε τους τελεστές σε μια στοίβα και τους όρους (αριθμούς) στηνέξοδο

• κάθε φορά που βλέπουμε μια δεξιά παρένθεση ), αποθούμε ένα τελεστήαπό την στοίβα και τον στέλνουμε στην έξοδο

Χαροκόπειο Πανεπιστήμιο 48/49

Page 94: Δομές Δεδομένων Εισαγωγή · 2020-07-01 · Βιβλιογραφία KurtMehlhornandPeterSanders:AlgorithmsandDataStructures,The BasicToolbox,Springer,2008. RobertSedgewick,ΑλγόριθμοισεC,Μέρη1-4

Ουρές FIFOπρώτο μέσα, πρώτο έξω (first-in, first-out)

Παρόμοια δομή με την στοίβα, με αντίθετο κανόνα διαγραφής.

Αφαιρείται το παλιότερο στοιχείο

Queue Dequeue

Λειτουργεί ακριβώς όπως η ουρά στο ταμείο μιας τράπεζας.

Χαροκόπειο Πανεπιστήμιο 49/49