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

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

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

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

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

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

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

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

Heapsort Using Multiple Heaps

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

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

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

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

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

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

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

Αλγόριθμοι Eλάχιστα μονοπάτια

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

#4. Heaps (σωροί), η ταξινόμηση HeapSort, η δομή std::priority_queue της STL

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

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

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

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

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

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

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων

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

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Ταξινόμηση με συγχώνευση Merge Sort

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

JDSL Java Data Structures Library

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

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

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

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

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

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

Αλγόριθμοι Γραφημάτων

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

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

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

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Δομές Δεδομένων (Data Structures)

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

Δοµές Δεδοµένων. 12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας. Ε. Μαρκάκης

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

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

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

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

ΗΥ240 - Παναγιώτα Φατούρου 2

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

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

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

περιεχόμενα ρυθιμός αύξησης συναρτήσεων ασυμπτωτική πολυπλοκότητα ασυμπτωτική επίδοση ασυμπτωτικοί συμβολισμοί ασυμπτωτικός συμβολισμος

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

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

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

Transcript:

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

ταξινόμηση σωρού άλλος ένας αλγόριθμος ταξινόμησης πολυπλοκότητας O(n lgn) Ιδιαίτερα χαρακτηριστικά: χρησιμοποιεί μια δομή δεδομένων που ονομάζεται «σωρός» είναι επιτόπια: το πλήθος των στοιχείων της συστοιχίας εισόδου που είναι αποθηκευμένα εκτός της συστοιχίας αυτής ανά πάσα στιγμή δεν υπερβαίνει μια σταθερή ποσότητα ταξινόμηση σωρού

σωρός (heap) ένα αντικείμενο τύπου συστοιχίας ή πίνακα (array) το οποίο μπορεί να θεωρηθεί ως σχεδόν πλήρες δυαδικό δέντρο κάθε κόμβος του δέντρου αντιστοιχεί σε ένα στοιχείο τηςσυστοιχίαςκαιπεριέχειτηντιμήαυτού το δέντρο είναι συμπληρωμένο σε όλα τα επίπεδα εκτός ίσως από το τελευταίο το οποίο είναι συμπληρωμένο από τα αριστερά μέχρι κάποιου σημείου ταξινόμηση σωρού

οόροςheap σωρός (heap): δομή δεδομένων heap στο χώρο των λειτουργικών συστημάτων και των γλωσσών προγραμματισμού διαφορετικός όρος δεν σχετίζεται με τη δομή δεδομένων heap αναφέρεται στο χώρο δυναμικής δέσμευσης μνήμης 4 ταξινόμηση σωρού

συστοιχία Α για έναν σωρό το αντικείμενο συστοιχία Α που αντιπροσωπεύει έναν σωρό περιλαμβάνει τα ακόλουθα δύο πεδία μήκος [Α]: το πλήθος των στοιχείων της συστοιχίας μέγεθος-σωρού[α]: το πλήθος των στοιχείων του σωρού που είναι αποθηκευμένα εντός της συστοιχίας 5 ταξινόμηση σωρού

σωροί μια δομή δεδομένων που είναι ένα σχεδόν πλήρες δυαδικό δέντρο ικανοποιεί την ιδιότητα σωρού: A[parent(i)] A[i] πχ. 6 4 0 4 5 6 8 9 8 9 0 4 4 5 6 8 9 0 6 4 0 8 9 4 i Parent(i) { return } Left(i) { return i} Right(i) { return i+} ταξινόμηση σωρού 6

δυαδικό δέντρο δεν περιλαμβάνει κόμβο, ή ρίζα πχ. αριστερό υποδέντρο φύλλο: κόμβος χωρίς απογόνους σε πλήρες δυαδικό δέντρο: κάθε κόμβος έχει παιδιά ή κανένα παιδί όλα τα φύλλα έχουν το ίδιο βάθος όλοι οι εσωτερικοί κόμβοι έχουν παιδιά δεξί υποδέντρο ταξινόμηση σωρού

ελαχίστου ή μεγίστου δύοείδηδυαδικώνσωρών: σωροί μεγίστου ιδιότητα: Α[ΠΑΤΡΙΚΟΣ(i)] A[i] ρίζα: περιέχει το μεγαλύτερο στοιχείο σωροί ελαχίστου ιδιότητα: Α[ΠΑΤΡΙΚΟΣ(i)] A[i] ρίζα: περιέχει το μικρότερο στοιχείο ταξινόμηση σωρού 8

βασικές διαδικασίες αποκατάσταση ιδιότητας μεγίστου σωρού κατασκευή σωρού μεγίστου ταξινόμηση σωρού διαδικασίες εισαγωγή σε σωρό μεγίστου εξαγωγή μεγίστου σωρού αύξηση κλειδιού σωρού μέγιστο σωρού ταξινόμηση σωρού 9

διατήρηση της ιδιότητας σωρού συνθήκη: το A[i] μπορεί να έχει πάρει τιμή μικρότερη από (κάποιο από) τα παιδιά του A[i] σωροί ταξινόμηση σωρού 0

αποκατάσταση ιδιότητας σωρού δίνεται: συστοιχία Α θέση i κάποιου στοιχείου της συστοιχίας τα δυαδικά υπο-δέντρα απόγονοι του κόμβου i είναι σωροί μεγίστου το A[i] ενδέχεται να παραβιάζει την ιδιότητα σωρού μεγίστου λύση: γίνετε μετακύλιση της τιμής Α[i] προς το κατάλληλο υποδέντρο ταξινόμηση σωρού

Heapify(A,): 6 4 0 4 4 5 6 9 8 9 8 0 Heapify(A,4): 6 4 0 4 4 5 6 9 8 9 8 0 Heapify(A,9): 6 4 0 4 5 6 8 9 8 9 0 4 ταξινόμηση σωρού

ψευδοκώδικας Heapify(A,i) χρόνος: O(lg n), T(n) T(n/)+Θ() ταξινόμηση σωρού

κατασκευή σωρού βασικές ιδέες: χρησιμοποιούμε τη μέθοδο αποκατάστασης σωρού προχωράμεμελογικήbottom-up (αναβιβαστικά) ταξινόμηση σωρού 4

παράδειγμα κατασκευής σωρού A 4 5 6 8 9 0 4 6 9 0 4 8 4 4 4 5 6 i 6 9 0 4 i 5 6 6 9 0 8 9 0 8 9 0 4 8 4 8 4 4 i 0 i 4 5 6 4 5 6 4 6 9 0 4 6 9 8 9 0 8 8 9 0 8 ταξινόμηση σωρού 5

4 i 6 6 0 4 4 5 6 9 8 9 8 0 4 0 4 8 5 6 9 8 9 4 0 ταξινόμηση σωρού 6

ανάλυση h = k k- 0 lgn = k η διαίσθηση: O(nlgn) κάθε κλήση της Heapify στοιχίζει Θ(lg n) γίνονται O(n) κλήσεις επομένως, η δημιουργία του σωρού στοιχίζει O(nlgn) πιο σφιχτή (tighter) ανάλυση: O(n) θεωρούμε n = k - και πλήρες δυαδικό δέντρο ο χρόνος που απαιτεί η Heapify όταν εκτελείται για έναν κόμβο ύψους h είναι O(h) συνολικό κόστος = lg n lg n n h O ( h ) = O ( n ) = O ( n ) h + h h 0 = h = 0 h χρησιμοποιώντας (άσκηση) ότι: = h = h 0 ταξινόμηση σωρού

ταξινόμηση σωρού Έστω ότι έχουμε υλοποιημένη μια δομή δεδομένων σωρός. Πως μπορούμε να τη χρησιμοποιήσουμε για να ταξινομήσουμε μία ακολουθία στοιχείων; ταξινόμηση σωρού 8

αλγόριθμος heapsort ----O(n) ----O(lg n) πολυπλοκότητα χρόνου = O(n lg n) ταξινόμηση σωρού 9

ουρές προτεραιότητας ταξινόμηση σωρού 0

ουρά προτεραιότητας (priority queue) μιαδομήδεδομένωνγιατηδιαχείρισηενός συνόλου στοιχείων S κάθε στοιχείο στοιχείο χαρακτηρίζεται από μία τιμή που ονομάζεται κλειδί (key) εφαρμογή: χρονοδρομολόγηση εργασιών εξομοίωση λειτουργίες μιας ουράς προτεραιότητας: Insert(S,x) Maximum(S) Extract-Max(S) Implement with a heap. ταξινόμηση σωρού

εισαγωγή στοιχείου εισαγωγή στοιχείου στο σωρό. επεκτείνουμε το σωρό κατά θέση. στην καινούργια θέση (που βρίσκεται στην τελευταία θέση) τοποθετούμε την ελάχιστη δυνατή τιμή, πχ. μείον άπειρο. εκτελούμε τη διαδικασία αύξησης της τιμής κλειδιού για το στοιχείο στην τελευταία θέση από την ελάχιστη δυνατή τιμή στην επιθυμητή τιμή: διαδικασία Heap-Increase-Key(A,i,key) ταξινόμηση σωρού

----O(lg n) ταξινόμηση σωρού

----O(lg n) ταξινόμηση σωρού 4

A κλειδί = 5, HeapInsert(A,κλειδί): 6 6 4 0 4 0 4 5 6 8 9 4 5 6 8 9 8 9 0 4 8 9 0 4 5 6 4 0 4 8 5 5 6 9 6 5 0 4 8 5 4 6 9 8 9 0 4 8 9 0 4 ταξινόμηση σωρού 5

ταξινόμηση σωρού 6

Αναφορές/Πηγές Εισαγωγή στους αλγόριθμους, Κεφάλαιο 6 ταξινόμηση σωρού