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

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

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

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

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

υαδικά δέντρα αναζήτησης

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

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

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

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

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

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

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

Ουρά Προτεραιότητας: Heap

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

Ουρά Προτεραιότητας: Heap

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

Κεφ.11: Ευρετήρια και Κατακερματισμός

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

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

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

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

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Ουρά Προτεραιότητας: Heap

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

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

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

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

Δομές Δεδομένων Ενότητα 4

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

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

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

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

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

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

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

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

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

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

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

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

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα

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

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

Λεξικό, Union Find. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

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

Το εσωτερικό ενός Σ Β

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

10. Πίνακες Κατακερματισμού

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

Ουρά Προτεραιότητας (priority queue)

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

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

ιαφάνειες παρουσίασης #11

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

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

Επεξεργασία Ερωτήσεων

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

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 12. Ανασκόπηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 13/01/2017

Εξεταστέα Ύλη (Βιβλίο R.Lafore) Κεφ.1: Περίληψη Κεφ.2: Πίνακες Κεφ.3: Απλή Ταξινόμηση Κεφ.4: Στοίβες και Ουρές Κεφ.5: Συνδεδεμένες Λίστες Κεφ.6: Επανάληψη Κεφ.7: Προχωρημένη Ταξινόμηση Κεφ.8: υαδικά έντρα Κεφ.9: Κόκκινα-Μαύρα έντρα + Ισοζυγισμένα υαδικά έντρα Αναζήτησης (AVL-δέντρα) Κεφ.10: 2-3-4 έντρα Κεφ.11: Πίνακες κατακερματισμού Κεφ.12: Σωροί Κεφ.13: Γράφοι Κεφ.15: Πότε να χρησιμοποιείτε τι? Δομές Δεδομένων, 3ο Εξάμηνο 2

Οργάνωση Περιεχομένων Μαθήματος ομές δεδομένων Πίνακες, συνδεδεμένες λίστες, δέντρα, πίνακες κατακερματισμού Ειδικευμένες δομές δεδομένων Στοίβες, ουρές, ουρές προτεραιότητας, γράφοι Ταξινόμηση Γράφοι Φυσαλίδας, επιλογής, εισαγωγής Shellsort, quicksort, mergesort, heapsort Πίνακας γειτνίασης, λίστα γειτνίασης Αναζήτηση κατά βάθος, αναζήτηση κατά πλάτος, δέντρα ελάχιστου σκελετού Δομές Δεδομένων, 3ο Εξάμηνο 3

Δομές Δεδομένων Γενικού Σκοπού Δομές Δεδομένων, 3ο Εξάμηνο 4

Πίνακες Οι πίνακες είναι χρήσιμοι όταν Η ποσότητα των δεδομένων είναι σχετικά μικρή Η ποσότητα των δεδομένων είναι εκ των προτέρων γνωστή Αν η ταχύτητα εισαγωγής είναι σημαντική Χρήση μη ταξινομημένου πίνακα Αν η ταχύτητα αναζήτησης είναι σημαντική Χρήση ταξινομημένου πίνακα με δυαδική αναζήτηση Η διαγραφή είναι πάντα αργή Δομές Δεδομένων, 3ο Εξάμηνο 5

Δυαδική Αναζήτηση Εφαρμόσιμη μόνο σε ταξινομημένους πίνακες Πολύ ταχύτερη από τη γραμμική αναζήτηση (ειδικά για μεγάλους πίνακες) Πώς λειτουργεί η εύρεση του στοιχείου με τιμή Χ; Χωρίζει το πλήθος των κελιών στη μέση, ελέγχει το κλειδί Μ του μεσαίου κελιού, και επαναλαμβάνει τη διαδικασία στο αριστερό κομμάτι (εάν Χ<Μ) ή στο δεξιό κομμάτι (εάν Χ>Μ) του πίνακα Π.χ. Αναζήτηση του 71 0 1 2 3 4 5 6 7 8 9 11 22 37 42 58 67 71 83 Δομές Δεδομένων, 3ο Εξάμηνο 6

Γιατί δε Χρησιμοποιούμε τους Πίνακες για όλα; Θέματα απόδοσης Μη ταξινομημένοι πίνακες Γρήγορη εισαγωγή Ο(1), όμως αργή αναζήτηση Ο(Ν) Ταξινομημένοι πίνακες Γρήγορη αναζήτηση Ο(logN), όμως αργή εισαγωγή Ο(Ν) Σταθερό μέγεθος πινάκων κατά τη δημιουργία Πρέπει να εκτιμήσουμε το πλήθος των στοιχείων που θα αποθηκευθούν, πριν τη χρήση του πίνακα Υπερεκτίμηση μεγέθους κατανάλωση μνήμης άσκοπα Υποτίμηση μεγέθους ο πίνακας δεν μπορεί να καλύψει τις ανάγκες αποθήκευσης στοιχείων Δομές Δεδομένων, 3ο Εξάμηνο 7

Συνδεδεμένες Λίστες Χρησιμοποιούνται όταν Η ποσότητα των δεδομένων που θα αποθηκευτεί δεν μπορεί να προβλεφθεί εκ των προτέρων Θέλουμε να υποστηρίζονται συχνές εισαγωγές/διαγραφές Αποκτά το μέγεθος που απαιτείται καθώς προστίθενται νέα στοιχεία εν υπάρχει ανάγκη συμπλήρωσης κενών (όπως στους πίνακες) Η εισαγωγή είναι γρήγορη Η αναζήτηση και η διαγραφή είναι αργές Δομές Δεδομένων, 3ο Εξάμηνο 8

Εισαγωγή σε Απλά Συνδεδεμένη Λίστα tmp = new ListNode(x, current.next); current.next = tmp; // ο επόμενος κόμβος του a είναι ο x Δομές Δεδομένων, 3ο Εξάμηνο 9

Εισαγωγή σε Διπλά Συνδεδεμένη Λίστα newnode = new DoublyLinkedListNode(x); 1. newnode.previous = current; 2. newnode.next = current.next; 3. newnode.previous.next = newnode; 4. newnode.next.previous = newnode; Δομές Δεδομένων, 3ο Εξάμηνο 10

Δυαδικά Δέντρα Αναζήτησης Όλες οι πράξεις ενός Α έχουν στην καλύτερη περίπτωση πολυπλοκότητα O(logN), αλλά στη χειρότερη Ο(Ν) Όμως η διάσχιση διαρκεί O(N) Εύκολος εντοπισμός μέγιστου/ελάχιστου στοιχείου Εύκολη διάσχιση ενός εύρους στοιχείων Ένα μη ισοζυγισμένο Α είναι πιο εύκολο στον προγραμματισμό σε σχέση με ένα ισοζυγισμένο Πρόβλημα με δεδομένα που εισάγονται ταξινομημένα Μπορεί να μειώσουν την απόδοση σε χρόνο Ο(Ν) Για να αποφύγουμε κάτι τέτοιο, χρησιμοποιούμε ισοζυγισμένα Α Εάν όμως είμαστε βέβαιοι ότι τα δεδομένα εισάγονται σε τυχαία σειρά, τότε δεν υπάρχει λόγος χρήσης ισοζυγισμένου Α Δομές Δεδομένων, 3ο Εξάμηνο 11

3<7 3>2 Αναζήτηση του στοιχείου 3 3<5 3==3 Αναζήτηση στοιχείου 3 ΕΠΙΤΥΧΗΣ!! 6>2 6<7 Αναζήτηση του στοιχείου 6 6>5 ΤΕΛΟΣ!! ΑΝΑΖΗΤΗΣΗ στοιχείου 6 ΑΝΕΠΙΤΥΧΗΣ Δομές Δεδομένων, 3ο Εξάμηνο 12

Περίπτωση #1: Διαγραφή Κόμβου Χωρίς Παιδιά Αλλάζουμε το κατάλληλο πεδίο παιδιού στον πατέρα του κόμβου ώστε να είναι null και να μην δείχνει στον κόμβο parent if current node is left child parent.leftchild = null else parent.rightchild =null current node Δομές Δεδομένων, 3ο Εξάμηνο 13

Περίπτωση #2: Διαγραφή Κόμβου με Ένα Παιδί parent current ιαγραφή του 5 parent.rightchild =current.leftchild Δομές Δεδομένων, 3ο Εξάμηνο 14

Περίπτωση #3: Διαγραφή Κόμβου με Δύο Παιδιά Για να διαγράψουμε έναν κόμβο με δύο παιδιά αντικαθιστούμε τον κόμβο με τον ενδοδιατεταγμένο διάδοχό του (inorder) Ενδοδιατεταγμένος διάδοχος ή διάδοχος ενός κόμβου Ο κόμβος με το επόμενο μεγαλύτερο κλειδί Δομές Δεδομένων, 3ο Εξάμηνο 15

Εύρεση Διαδόχου Ξεκινάμε από το δεξί παιδί του κόμβου και ακολουθούμε το μονοπάτι των αριστερών παιδιών ιαγραφή 2 εν υπάρχει αριστερό παιδί Ο 3 είναι διάδοχος του 2 Αντικατάσταση κόμβου 2 με το διάδοχό του Δομές Δεδομένων, 3ο Εξάμηνο 16

Διαγραφή: Ο Διάδοχος Δεξί Παιδί του προς Διαγραφή Κόμβου Μετακίνηση του υποδέντρου που είναι η ρίζα του διαδόχου και τοποθέτησή του εκεί που ήταν ο διαγραμμένος κόμβος 50 πατέρας 50 Βήμα 1 75 Πατέρας διαδόχου (current) ιαγραφή 75 87 Βήμα 2 62 87 ιάδοχος(successor) 62 93 93 1. parent.rightchild = successor; 2. successor.leftchild = current.leftchild; Δομές Δεδομένων, 3ο Εξάμηνο 17

Διαγραφή: Ο Διάδοχος Αριστερός Απόγονος του Δεξιού Παιδιού του προς Διαγραφή Κόμβου Μετακίνηση του υποδέντρου που είναι η ρίζα του διαδόχου και τοποθέτησή του εκεί που ήταν ο διαγραμμένος κόμβος 50 parent 50 Βήμα 3 62 75 (delnode-current) ιαγραφή 75 successorparent 87 Βήμα 4 62 77 Βήμα 1 Βήμα 2 87 79 93 ιάδοχος (successor) 77 79 93 1. successorparent.leftchild = successor.rightchild; 2. successor.rightchild = delnode.rightchild; 3. parent.rightchild = successor; 4. successor.leftchild = current.leftchild; 18 Δομές Δεδομένων, 3ο Εξάμηνο

50 15 62 5 20 58 91 3 8 37 60 24 Α. είξτε το Α που προκύπτει μετά από καθεμία από τις παρακάτω πράξεις: 1) Εισαγωγή 7, 1, 55, 29 και 19 2) ιαγραφή 8, 37 και 62 Δομές Δεδομένων, 3ο Εξάμηνο 19

Ισοζυγισμένα Δέντρα AVL έντρα Εγγυημένη απόδοση O(logN) πάντα ύσκολα στον προγραμματισμό Δομές Δεδομένων, 3ο Εξάμηνο 20

Πίνακες Κατακερματισμού Είναι η γρηγορότερη δομή αποθήκευσης δεδομένων Χρήσιμο εργαλείο στον προγραμματισμό Όταν δηλαδή ένα πρόγραμμα (κι όχι ένας άνθρωπος) αλληλεπιδρά με τα δεδομένα εν είναι ευαίσθητοι στη σειρά εισαγωγής δεδομένων Μπορούν να αντικαταστήσουν ένα ισοζυγισμένο Α Είναι πολύ απλούστεροι στον προγραμματισμό Στηρίζονται σε πίνακες, οπότε πρέπει να είναι εκ των προτέρων γνωστό το πλήθος των δεδομένων Η απόδοσή τους πέφτει σημαντικά όταν υπερκορεστούν (όταν αρχίσουν να γεμίζουν) εν έχουν φτιαχτεί για να υποστηρίζουν κανένα είδος διατεταγμένης διάσχισης (παρόλο που υλοποιήσεις αυτών, π.χ. HashMap, δίνουν τη δυνατότητα διάσχισης της δομής) Δομές Δεδομένων, 3ο Εξάμηνο 21

Ανοιχτή ιεύθυνση: Γραμμική Εξέταση Δομές Δεδομένων, 3ο Εξάμηνο 22

Ανοιχτή ιεύθυνση: ευτεροβάθμια Εξέταση January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 23

Παράδειγμα Ξεχωριστής Αλυσίδας κενό 906 881 807 κενό 458 383 333 559 Πίνακας Συνδεδεμένες λίστες Δομές Δεδομένων, 3ο Εξάμηνο 24

Σχέση Δομών Δεδομένων Γενικού Σκοπού Αρχή Μικρή ποσότητα δεδομένων; ΝΑΙ Προσδοκώμ ενη ποσότητα ΟΧΙ δεδομένων; ΟΧΙ Συνδ.Λίστα Πίνακας Κατακερματι σμού έντρο υαδικής Αναζήτησης ΝΑΙ ΝΑΙ ΟΧΙ Αναζήτηση, Εισαγωγή να είναι γρήγορες; ΟΧΙ Η κατανομή κλειδιών εγγυάται την ταχύτητα; Ισοζυγισμένο έντρο ΟΧΙ ΝΑΙ Ταχύτητα αναζήτησης σημαντικότε ρη από εισαγωγής; ΟΧΙ Μη ταξινομημέν ος Πίνακας ΝΑΙ ιατεταγμέν ος Πίνακας Δομές Δεδομένων, 3ο Εξάμηνο 25

Σύγκριση ομή Αναζήτηση Εισαγωγή ιαγραφή ιάσχιση εδομένων Πίνακας O(N) O(1) O(N) - Ταξινομημένος Πίνακας Συνδεδεμένη Λίστα ιατεταγμένη Συνδ.Λίστα Α (μέσος όρος) Α (χειρότερη περίπτωση) Ισοζυγισμένο έντρο Πίνακας Κατακερματισμού O(logN) O(N) O(N) O(N) O(N) O(1) O(N) - O(N) O(N) O(N) O(N) O(logN) O(logN) O(logN) O(N) O(N) O(N) O(N) O(N) O(logN) O(logN) O(logN) O(N) O(1) O(1) O(1) - January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 26

Δομές Δεδομένων Ειδικού Σκοπού Δομές Δεδομένων, 3ο Εξάμηνο 27

Στοίβα Ουρά Ουρά Προτεραιότητας Είναι αφηρημένοι τύποι δεδομένων (ADT) που υλοποιούνται από μια πιο βασική δομή δεδομένων (πίνακας, λίστα, σωρός) Παρέχουν μια απλή διεπαφή στο χρήστη επιτρέποντας συνήθως την εισαγωγή, διαγραφή ή προσπέλαση ενός μόνο στοιχείου (για στοίβες) το τελευταίο στοιχείο που εισήχθη (για ουρές) το πρώτο στοιχείο που εισήχθη (για ουρές προτεραιότητας) το στοιχείο με την υψηλότερη προτεραιότητα εν υποστηρίζουν αναζήτηση με βάση το κλειδί ή διάσχιση Δομές Δεδομένων, 3ο Εξάμηνο 28

Στοίβα Χρησιμοποιείται όταν θέλουμε να προσπελάσουμε μόνο το τελευταίο στοιχείο που εισήχθη ομή Last-In-First-Out (LIFO) Υλοποιείται με πίνακα ή με λίστα Ανάλογα με το εάν μπορεί να προβλεφθεί το πλήθος των στοιχείων που διατηρεί Δομές Δεδομένων, 3ο Εξάμηνο 29

Παράδειγμα Λειτουργιών Στοίβας January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 30

Ουρά Χρησιμοποιείται όταν θέλουμε να προσπελάσουμε μόνο το πρώτο στοιχείο που εισήχθη ομή First-In-First-Out (FIFO) Υλοποιείται με πίνακα ή με λίστα Ανάλογα με το εάν μπορεί να προβλεφθεί το πλήθος των στοιχείων που διατηρεί Η υλοποίηση με πίνακα πρέπει να υποστηρίζει αναδίπλωση Η υλοποίηση με λίστα απαιτεί συνδεδεμένη λίστα δύο άκρων Δομές Δεδομένων, 3ο Εξάμηνο 31

Παράδειγμα Λειτουργίας Ουράς με Κυκλικό Πίνακα (Αναδίπλωση) Όταν οι δείκτες back, front που δείχνουν στο τέλος και στην αρχή της ουράς αντίστοιχα φτάσουν στο τέλος του πίνακα Επαναορίζουμε τους δείκτες ώστε να δείχνουν και οι δύο στην αρχή January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 32

Ουρά Προτεραιότητας Χρησιμοποιείται όταν η μόνη προσπέλαση γίνεται στο στοιχείο με τη μέγιστη προτεραιότητα Αυτό είναι το στοιχείο με το μεγαλύτερο (ή μικρότερο) κλειδί Μπορεί να υλοποιηθεί ως Ταξινομημένος πίνακας Εισαγωγή αργή, διαγραφή γρήγορη Σωρός Λογαριθμικό κόστος εισαγωγής και διαγραφής Αν η ταχύτητα εισαγωγής δεν αποτελεί πρόβλημα, χρησιμοποιείται πίνακας (αλλιώς σωρός) Αντί για πίνακα μπορεί να χρησιμοποιηθεί συνδεδεμένη λίστα δύο άκρων Δομές Δεδομένων, 3ο Εξάμηνο 33

Παράδειγμα Σωρού Αν ο αριθμός δείκτη του κόμβου είναι index: Αριστερό παιδί:2*index + 1 εξιό παιδί: 2*index + 2 και ο γονέας του είναι: (index-1)/2 January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 34

Απομάκρυνση του Μέγιστου Κόμβου (Ρίζα) January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 35

Εισαγωγή Κόμβου Αν απομακρύνουμε έναν κόμβο και τον επαναεισάγουμε, το αποτέλεσμα δεν είναι απαραίτητα η αποκατάσταση του αρχικού σωρού Ένα δοθέν σύνολο κόμβων μπορεί να διευθετηθεί με πολλούς έγκυρους σωρούς, ανάλογα με τη σειρά εισαγωγής των κόμβων January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 36

Σύγκριση ομή εδομένων Εισαγωγή ιαγραφή Σχόλιο Στοίβα (πίνακας ή συνδεδεμένη λίστα) Ο(1) Ο(1) ιαγράφει το τελευταίο στοιχείο που εισήχθη Ουρά (πίνακας ή συνδεδεμένη λίστα) Ο(1) Ο(1) ιαγράφει το πρώτο στοιχείο που εισήχθη Ουρά προτεραιότητας (ταξινομημένος πίνακας) Ουρά προτεραιότητας (σωρός) Ο(Ν) Ο(1) ιαγράφει το στοιχείο με την υψηλότερη προτεραιότητα O(logN) O(logN) ιαγράφει το στοιχείο με την υψηλότερη προτεραιότητα Δομές Δεδομένων, 3ο Εξάμηνο 37

Ταξινόμηση Δομές Δεδομένων, 3ο Εξάμηνο 38

Τι Χρησιμοποιούμε Πότε; Για μικρά σύνολα δεδομένων, η ταξινόμηση εισαγωγής δουλεύει (αργή αλλά απλή ταξινόμηση) Επίσης, δουλεύει καλά για σχεδόν ταξινομημένα δεδομένα ιαφορετικά, μπορεί να χρησιμοποιηθεί η shellsort (σχετικά εύκολη στην υλοποίηση) Αν και αυτή είναι αργή, χρησιμοποιούμε πιο σύνθετες αλλά γρηγορότερες ταξινομήσεις (ταξινόμηση σύζευξης, heapsort ή quicksort) Η ταξινόμηση σύζευξης απαιτεί επιπλέον μνήμη Η heapsort απαιτεί μια δομή δεδομένων σωρού Η quicksort είναι πιο γρήγορη από τις άλλες δύο, όμως όταν τα δεδομένα είναι τυχαία μπορεί να πέσει σε O(N 2 ) Δομές Δεδομένων, 3ο Εξάμηνο 39

Παράδειγμα: Ταξινόμηση Φυσαλίδας Επανέλαβε μέχρι να μην απαιτούνται άλλες αλλαγές Δομές Δεδομένων, 3ο Εξάμηνο 40

Παράδειγμα: Ταξινόμηση Επιλογής Παράδειγμα January 13, 2017διαφάνειες μαθήματος Data Δομές structures, Δεδομένων, GMU, 3ο Εξάμηνο 2005 (instructor: J. Lin) 41

Παράδειγμα: Ταξινόμηση Εισαγωγής January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 42

Βασική Ιδέα: Σύζευξη Ταξινομημένων Πινάκων Α 23 42 87 99 C 0 1 2 3 4 5 6 7 8 12 21 23 42 55 77 87 92 99 Β 12 21 55 77 92 Η σύζευξη δύο ταξινομημένων πινάκων A και B δημιουργεί έναν τρίτο πίνακα C, που περιέχει όλα τα στοιχεία των A και B ταξινομημένα Υποθέστε ότι αρχικά ο C είναι κενός Το σχήμα δείχνει τον C μετά τη διαδικασία συγχώνευσης Δομές Δεδομένων, 3ο Εξάμηνο 43

Παράδειγμα MergeSort January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 44

low low high Pivot, high Low σταματά στο μεγαλύτερο στοιχείο 8 high σταματά στο μικρότερο στοιχείο 2 Τα στοιχεία 2 και 8 αντιμετατίθενται low high Low σταματά στο μεγαλύτερο στοιχείο 9 high σταματά στο μικρότερο στοιχείο 5 Τα στοιχεία 5 και 9 αντιμετατίθενται Οι δείκτες low και high διασταυρώνονται high low Αντιμετάθεση του στοιχείου pivot με αυτό στη θέση low January 13, 2017 Δομές Δεδομένων, 3ο Εξάμηνο 45

Παράδειγμα QuickSort Πηγή: https://cs.nyu.edu/courses/fall02/v22.0310-002/lectures/lecture-22.html Δομές Δεδομένων, 3ο Εξάμηνο 46

HeapSort Αλγόριθμος Ταξινόμησης ημιουργία σωρού Εισαγωγή στοιχείων 7, 1, 8, 0, 6, 2, 9, 4 σε σωρό Απομάκρυνση στοιχείου από το σωρό (άρα σε ταξινομημένη σειρά) και εισαγωγή σε πίνακα ιαγραφή πάντα από ρίζα Πολυπλοκότητα: O(N*logN) for (j=0 ; j < size ; j++) theheap.insert( anarray[j] ); // from unsorted array for (j=0 ; j < size ; j++) anarray[j] = theheap.remove(); // to sorted array Δομές Δεδομένων, 3ο Εξάμηνο 47

Σύγκριση Ταξινόμηση Μέσος όρος Χειρότερος χρόνος Σύγκριση Επιπλέον μνήμη Φυσαλίδας O(N 2 ) O(N 2 ) Χαμηλή Όχι Επιλογής O(N 2 ) O(N 2 ) Μέτρια Όχι Εισαγωγής O(N 2 ) O(N 2 ) Καλή Όχι Shellsort O(N 3/2 ) O(N 3/2 ) - Όχι Quicksort O(N*logN) O(N 2 ) Καλή Όχι Ταξινόμηση O(N*logN) O(N*logN) Μέτρια Ναι σύζευξης Heapsort O(N*logN) O(N*logN) Μέτρια Όχι Δομές Δεδομένων, 3ο Εξάμηνο 48

Γράφοι Δομές Δεδομένων, 3ο Εξάμηνο 49

Γράφοι εν αποθηκεύουν δεδομένα γενικού σκοπού Αναπαριστούν πραγματικές καταστάσεις Η δομή του γράφου αντανακλά τη δομή του προβλήματος εν μπορεί να αντικατασταθεί από άλλη δομή δεδομένων και η μόνη επιλογή είναι ως προς τον τρόπο αναπαράστασης Πίνακας γειτνίασης (καλή επιλογή για πλήρεις γράφους) Λίστα γειτνίασης (καλή επιλογή για αραιούς γράφους) Δομές Δεδομένων, 3ο Εξάμηνο 50

Πίνακας Γειτνίασης (Adjacency Matrix) a b c d e a 0 1 1 1 0 b 1 0 0 0 1 c 1 0 0 1 1 d 1 0 1 0 1 e 0 1 1 1 0 a d c b e Δομές Δεδομένων, 3ο Εξάμηνο 51

Λίστα Γειτνίασης (Adjacency List) a b d c a b b a e c d a d e a c e c e b c d d e Δομές Δεδομένων, 3ο Εξάμηνο 52

Αναζήτηση κατά Βάθος (Παράδειγμα) 3 4 2 Β F H 5 1 C Α 6 7 8 D G I E 9 Δομές Δεδομένων, 3ο Εξάμηνο 53

Αναζήτηση κατά Πλάτος (Παράδειγμα) 6 8 2 Β F H 3 1 C Α 4 7 9 D G I E 5 Δομές Δεδομένων, 3ο Εξάμηνο 54

Πολυπλοκότητα Αναζήτηση κατά βάθος και κατά πλάτος Πίνακας γειτνίασης: O(V 2 ) Λίστα γειτνίασης: O(V+E) Δομές Δεδομένων, 3ο Εξάμηνο 55

Ανάλυση Αλγορίθμων και Πολυπλοκότητα Δομές Δεδομένων, 3ο Εξάμηνο 56

Ασυμπτωτικός Συμβολισμός: Ορίζοντας το Big-O Παρότι αληθεύει ότι 7n-3 είναι O(n 5 ), ο big-o χαρακτηρισμός πρέπει να είναι όσο το δυνατό πιο μικρής τάξης. Απλοί κανόνες αγνόησε τις σταθερές επέλεξε την τιμή n που αυξάνεται ταχύτερα Παράδειγμα: Έστω ότι ένας αλγόριθμος έχει την ακόλουθη συνάρτηση αύξησης: f(n) = 16n 2 + 3n + 7 = n 2 + n - σβήσε τις σταθερές = n 2 - σβήσε τις μικρότερες τιμές του n Έστω f(n) = 8n 2 logn + 5n 2 +n O(n 2 logn) Σημείωση: Κάθε πολυώνυμο του n είναι O(n k ) δεδομένου ότι κάθε όρος του πολυωνύμου έχει εκθέτη k ή μικρότερο. Δομές Δεδομένων, 3ο Εξάμηνο 57

Ασυμπτωτικός Συμβολισμός Ειδικές κατηγορίες αλγορίθμων: σταθερού χρόνου (constant time) O(1) λογαριθμικός (logarithmic) O(log n) γραμμικός (linear) O(n) n log n O(n log n) δευτεροβάθμιος (quadratic) O(n 2 ) πολυωνυμικός (polynomial) O(n k ), k > 1 εκθετικός (exponential) O(a n ), n > 1 O(1) < O(logn) < O(n) < O(nlogn) < O(n 2 ) < O(n 3 ) < O(2 n ) Δομές Δεδομένων, 3ο Εξάμηνο 58

Επίλογος Δομές Δεδομένων, 3ο Εξάμηνο 59

Σχετικά Μαθήματα στο Πρόγραμμα Σπουδών ομές εδομένων (3 ο εξάμηνο) Αλγόριθμοι & Πολυπλοκότητα (4 ο εξάμηνο) Σχεδιασμός Βάσεων εδομένων (4 ο εξάμηνο) Βάσεις εδομένων (5 ο εξάμηνο) Αποθήκες και Εξόρυξη εδομένων (6 ο εξάμηνο) Ανάκτηση Πληροφοριών (6 ο εξάμηνο) ιαχείριση εδομένων στον Π.Ι. (7 ο εξάμηνο) Εργαστήριο Ανάπτυξης Εφαρμογών Β (7 ο εξάμηνο) Εργαστήριο Συστημάτων Επεξεργασίας Πληροφοριών Π.Ι. (8 ο εξάμηνο) 60