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

Σχετικά έγγραφα
Δομές Δεδομένων Ενότητα 4

Ανάκτηση Πληροφορίας

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

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

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

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

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

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010

ταξινόμηση σωρού Παύλος Εφραιμίδης Δομές Δεδομένων και

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

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

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

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

7ο ΕΡΓΑΣΤΗΡΙΟ AAAABBBBAAAAABBBBBBCCCCCCCCCCCCCCBBABAAAABBBBBBCCCCD

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

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

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

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

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

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

Heapsort Using Multiple Heaps

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Λειτουργίες επί των Κειµένων. Προεπεξεργασία Clustering Συµπίεση

σωροί ταξινόμηση σωρού οόροςheap σωρός (heap) συστοιχία Α για έναν σωρό μια δομή δεδομένων που πχ.

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

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

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

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

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

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

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

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

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

Λειτουργίες επί των Κειµένων. Προεπεξεργασία Κειµένων. Προεπεξεργασία Clustering Συµπίεση

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

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

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

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

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

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

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

ΘΕΩΡΙΑ ΠΛΗΡΟΦΟΡΙΑΣ. Κεφάλαιο 3 : Πηγές Πληροφορίας Χρήστος Ξενάκης. Πανεπιστήμιο Πειραιώς, Τμήμα Ψηφιακών Συστημάτων

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

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

Ταχεία Ταξινόμηση Quick-Sort

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

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

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Red-Black Δέντρα. Red-Black Δέντρα

Διάλεξη 18: B-Δένδρα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Red-black δέντρα (Κεφ. 5)

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

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

Τεχνολογία Πολυμέσων. Ενότητα # 9: Κωδικοποίηση εντροπίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. 5)

DOMES DEDOMENWN KAI ANALUSH ALGORIJMWN. ParousÐash 8: Huffman Encoding

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Εισαγωγή στους Αλγορίθμους Ενότητα 3η

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

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

Ταξινόμηση. Σαλτογιάννη Αθανασία

Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Αρχές κωδικοποίησης. Τεχνολογία Πολυµέσων 08-1

Αντισταθμιστική ανάλυση

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

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

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

Συμπίεση χωρίς Απώλειες

Ανάλυση Επεξεργασία και Παρουσίαση των Αλγορίθμων Ταξινόμησης Heapsort και WeakHeapsort. Αναγνώστου Χρήστος Μεταπτυχιακός Φοιτητής. ιπλωματική Εργασία

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

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

Ταξινόμηση. 1. Στατιστικά Διάταξης 2. Στατιστικά σε Μέσο Γραμμικό Χρόνο. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Transcript:

Σωροί 1

Ορισμοί Ένα δέντρο μεγίστων (δένδρο ελαχίστων) είναι ένα δένδρο, όπου η τιμή κάθε κόμβου είναι μεγαλύτερη (μικρότερη) ή ίση με των τιμών των παιδιών του Ένας σωρός μεγίστων (σωρός ελαχίστων) είναι ένα δέντρο μεγίστων (ελαχίστων) το οποίο είναι επίσης συμπληρωμένο δένδρο. Έστω σωρός με αναπαράσταση θέσης κόμβων : η θέση της ρίζας είναι 1, του αριστερού παιδιού 2, του δεξιού παιδιού 3 κ.τ.λ. Αφού ο σωρός είναι συμπληρωμένο δυαδικό δέντρο, ένας σωρός με n στοιχεία έχει ύψος άνω όριο log2(n+1). Συνεπώς αν μπορούμε να εισάγουμε και να διαγράψουμε σε χρόνο O(ύψος) τότε αυτές οι πράξεις έχουν πολυπλοκότητα O(logn) 2

Παράδειγμα Ι 24 16 15 10 3 11 12 4 2 1 Αυτό είναι σωρός 3

Παράδειγμα ΙI 24 16 15 10 3 17 12 4 2 1 Δεν είναι σωρός, γιατί δεν ικανοποιείται η ιδιότητα του σωρού (17 > 15) 4

Παράδειγμα ΙII 24 16 15 10 3 11 12 4 2 1 Δεν είναι σωρός, γιατί ο κόμβος με το 1 δεν είναι σε σωστή θέση. 5

Αναπαράσταση -Με πίνακα -Με δυναμική δέσμευση μνήμης 6

Αναπαράσταση με Πίνακα 1 4 3 15 7 10 9 17 19 8 1 4 3 15 7 10 9 17 19 8 7

Αναπαράσταση με Πίνακα Για τον κόμβο που είναι στη θέση A[i], Αριστερό παιδί στη θέση A[2i] Δεξιό παιδί στη θέση A[2i+1] Γονέας στη θέση A[ i/2 ] Και τα τρία τα βρίσκουμε σε χρόνο O(1) 8

Εισαγωγή σε σωρό Ελαχίστων Έστω ότι έχουμε ένα σωρό και θέλουμε να εισάγουμε ένα νέο στοιχείο. Μέθοδος Βάζουμε το νέο στοιχείο στο τέλος του σωρού. Πρέπει να βεβαιωθούμε ότι ικανοποιείται η ιδιότητα του σωρού. 9

Εισάγουμε το 0 1 5 3 0 7 6 9 8 10

Τοποθετούμε το 0 στην τελευταία θέση του σωρού. 1 5 3 7 6 9 8 0 11

Ανταλλαγή 7 0 1 5 3 0 6 9 8 7 12

Ανταλλαγή 5 0 1 0 3 5 6 9 8 7 13

Ανταλλαγή 1 0 0 1 3 5 6 9 8 7 14

Κόστος Εισαγωγής Για την αναδιάρθρωση του σωρού δεν απαιτείται πάντα να φτάσουμε μέχρι τη ρίζα. Απαιτούμενο κόστος: O(log n) αφού το ύψος του σωρού που έχει n στοιχεία είναι O(log n) 15

Διαγραφή της Κορυφής Ακολουθούμε την ακόλουθη μέθοδο: Διαγράφουμε το στοιχείο στην κορυφή και το αντικαθιστούμε με το τελευταίο στοιχείο του σωρού. Ακολουθεί αναδιάρθρωση του σωρού εάν απαιτείται. 16

Διαγραφή του 0 0 1 3 6 5 9 8 17

Διαγραφή του 0 1 3 6 5 9 8 18

Αντικατάσταση με το τελευταίο στοιχείο (8) 8 1 3 6 5 9 19

Διαγραφή του τελευταίου κόμβου που είναι άδειος. 8 1 3 6 5 9 20

Ανταλλαγή 8 1 1 8 3 6 5 9 21

Ανταλλαγή 8 5 1 5 3 Είναι σωρός ;;; 6 8 9 22

Κατασκευή Σωρού Πολλές φορές έχουμε ένα σύνολο στοιχείων τα οποία ικανοποιούν τις δομικές απαιτήσεις του σωρού (έχουμε δηλαδή ένα σχεδόν πλήρες δυαδικό δένδρο). Πως θα κατασκευάσουμε σωρό ; 23

20 1 9 17 8 10 3 4 15 7 24

20 1 9 17 8 10 3 4 15 7 25

20 1 9 17 7 10 3 4 15 8 26

20 1 9 17 7 10 3 4 15 8 27

20 1 9 4 7 10 3 17 15 8 28

20 1 9 4 7 10 3 17 15 8 29

20 1 3 4 7 10 9 17 15 8 30

20 1 3 4 7 10 9 17 15 8 31

20 1 3 4 7 10 9 17 15 8 32

20 1 3 4 7 10 9 17 15 8 33

1 4 3 15 7 10 9 17 20 8 34

Κόστος Κατασκευής Απλή εκτίμηση: Αφού στη χειρότερη περίπτωση θα φτάσουμε μέχρι τη ρίζα και τα μισά στοιχεία πρέπει να μετακινηθούν, το συνολικό κόστος είναι n/2 * C * logn = O(n logn) 35

Κόστος Κατασκευής Καλύτερη εκτίμηση Κατά την κατασκευή έχουμε το πολύ n/2 2 στοιχεία που μετακινούνται 1 θέση κάτω n/2 3 στοιχεία που μετακινούνται 2 θέσεις κάτω n/2 4 στοιχεία που μετακινούνται 3 θέσεις κάτω t(n) = O(1*n/2 2 + 2*n/2 3 + 3*n/2 4 + ) =O((n/2)(1/2 + 2/2 2 + 3/2 3 + 4/2 4 + ) =O(n) 36

Εφαρμογές Σωρού Ταξινόμηση με σωρό (HeapSort) Εκτέλεση εργασιών με προτεραιότητες Κωδικοποίηση Huffman 37

Heapsort Heapsort(A) { BuildHeap(A); for (i = length(a) downto 2) { Swap(A[1], A[i]); heap_size(a) -= 1; Heapify(A, 1); } } 38

Ανάλυση Heapsort BuildHeap() απαιτεί O(n) κόστος Κάθε μία από τις n-1 κλήσεις της Heapify() απαιτεί O(log n) χρόνο Συνολικά έχουμε για την HeapSort() = O(n) + (n - 1) O(log n) = O(n) + O(n log n) = O(n log n) 39

Παράδειγμα Ξεκινώντας µε ένα άδειο σωρό να εφαρµόσετε διαδοχικά εισαγωγή των στοιχείων 15, 20, 9, 5, 10, 2, 8, 6, 1, δείχνοντας το αποτέλεσµα της κάθε µιας από τις εισαγωγές. 40

Λύση Ξεκινώντας µε ένα άδειο ελαχίστων σωρό να εφαρµόσετε διαδοχικά εισαγωγή των στοιχείων 15, 20, 9, 5, 10, 2, 8, 6, 1, δείχνοντας το αποτέλεσµα της κάθε µιας από τις εισαγωγές. 41

Κωδικοποίηση Huffman Βασικά Σημεία: Ο κύριος στόχος ενός κωδικοποιητή είναι η αντιστοίχιση μικρών κωδικών σε συχνά εμφανιζόμενα σύμβολα και μεγάλων κωδικών σε σπάνια εμφανιζόμενα σύμβολα. Ο χρόνος κωδικοποίησης και αποκωδικοποίησης είναι σημαντικός. Μερικές φορές προτιμούμε να έχουμε μικρότερο λόγο συμπίεσης προκειμένου να κερδίσουμε σε χρόνο (π.χ. WinZIP). 42

Κωδικοποίηση Huffman Έστω τα σύμβολα A,B,C,D με τους εξής κωδικούς: Code( A ) = 0 Code( B ) = 000 Code( C ) = 11 Code( D ) = 1 DDDAAA DCB CDAAA DDDB Ο κωδικός 111000 σε ποια σειρά χαρακτήρων αντιστοιχεί; 43

Κωδικοποίηση Huffman Βασική προϋπόθεση: Μετά τη φάση της κωδικοποίησης κανένας κωδικός δεν πρέπει να αποτελεί πρόθεμα (prefix) άλλου κωδικού. 44

Κωδικοποίηση Huffman Έστω το ακόλουθο κείμενο: one two three one two one one one two three four five one: 5/12 two: 3/12 three: 2/12 four: 1/12 five: 1/12 Συχνότητες εμφάνισης λέξεων 45

Κωδικοποίηση Huffman Δένδρο Huffman 0 7/12 0 12/12 0 2/12 0 1 4/12 1 1 1 five 1/12 four 1/12 three 2/12 two 3/12 one 5/12 46

Κωδικοποίηση Huffman Μετά την κωδικοποίηση προκύπτουν οι εξής κωδικοί: five: 0000 four: 0001 three: 001 two: 01 one: 1 Τι παρατηρούμε; 47

Κωδικοποίηση Huffman Τι συμπίεση επιτυγχάνουμε για το παράδειγμα; one two three one two one one one two three four five Απαιτούνται 42*8 = 336 bits για το αρχικό κείμενο (χωρίς τους κενούς χαρακτήρες) Απαιτούνται 25 bits για το συμπιεσμένο κείμενο 48

Κωδικοποίηση Huffman Έστω το ακόλουθο κείμενο ABRACADABRA A 5/11 B 2/11 C 1/11 D 1/11 R 2/11 49

Κωδικοποίηση Huffman 0 Δένδρο Huffman 6/11 0 1 2/11 4/11 0 1 0 1 11/11 1 C 1/11 D 1/11 B 2/11 R 2/11 A 5/11 000 001 010 011 1 50