σωροί ταξινόμηση σωρού οόρος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

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

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

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

Heapsort Using Multiple Heaps

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

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

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

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα

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

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

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

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

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

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

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

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

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

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

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

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

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

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

Εκτενείς Δομές Δεδομένων

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

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

JDSL Java Data Structures Library

Transcript:

Παύλος Εφραιμίδης άλλος ένας αλγόριθμος ταξινόμησης πολυπλοκότητας O(n lgn) Ιδιαίτερα χαρακτηριστικά: χρησιμοποιεί μια δομή δεδομένων που ονομάζεται «σωρός» είναι επιτόπια: το πλήθος των στοιχείων της συστοιχίας εισόδου που είναι αποθηκευμένα εκτός της συστοιχίας αυτής ανά πάσα στιγμή δεν υπερβαίνει μια σταθερή ποσότητα σωρός (heap) οόροςheap ένα αντικείμενο τύπου συστοιχίας ή πίνακα (array) το οποίο μπορεί να θεωρηθεί ως σχεδόν πλήρες δυαδικό δέντρο κάθε κόμβος του δέντρου αντιστοιχεί σε ένα στοιχείο της συστοιχίας και περιέχει την τιμή αυτού το δέντρο είναι συμπληρωμένο σε όλα τα επίπεδα εκτός ίσως από το τελευταίο το οποίο είναι συμπληρωμένο από τα αριστερά μέχρι κάποιου σημείου σωρός (heap): δομή δεδομένων heap στο χώρο των λειτουργικών συστημάτων και των γλωσσών προγραμματισμού διαφορετικός όρος δεν σχετίζεται με τη δομή δεδομένων heap αναφέρεται στο χώρο δυναμικής δέσμευσης μνήμης συστοιχία Α για έναν σωρό το αντικείμενο συστοιχία Α που αντιπροσωπεύει έναν σωρό περιλαμβάνει τα ακόλουθα δύο πεδία μήκος [Α]: το πλήθος των στοιχείων της συστοιχίας μέγεθος-σωρού[α]: το πλήθος των στοιχείων του σωρού που είναι αποθηκευμένα εντός της συστοιχίας σωροί μια δομή δεδομένων που είναι ένα σχεδόν πλήρες δυαδικό δέντρο ικανοποιεί την ιδιότητα σωρού: A[parent()] A[] πχ. 0 Parent() { return } Left() { return } 0 Rght() { return +} 0 0

δυαδικό δέντρο δεν περιλαμβάνει κόμβο, ή ρίζα πχ. αριστερό υποδέντρο φύλλο: κόμβος χωρίς απογόνους σε πλήρες δυαδικό δέντρο: κάθε κόμβος έχει παιδιά ή κανένα παιδί όλα τα φύλλα έχουν το ίδιο βάθος όλοι οι εσωτερικοί κόμβοι έχουν παιδιά δεξί υποδέντρο ελαχίστου ή μεγίστου δύοείδηδυαδικώνσωρών: σωροί μεγίστου ιδιότητα: Α[ΠΑΤΡΙΚΟΣ()] A[] ρίζα: περιέχει το μεγαλύτερο στοιχείο σωροί ελαχίστου ιδιότητα: Α[ΠΑΤΡΙΚΟΣ()] A[] ρίζα: περιέχει το μικρότερο στοιχείο βασικές διαδικασίες αποκατάσταση ιδιότητας μεγίστου σωρού κατασκευή σωρού μεγίστου διαδικασίες εισαγωγή σε σωρό μεγίστου εξαγωγή μεγίστου σωρού αύξηση κλειδιού σωρού μέγιστο σωρού διατήρηση της ιδιότητας σωρού συνθήκη: το A[] μπορεί να έχει πάρει τιμή μικρότερη από (κάποιο από) τα παιδιά του A[] σωροί 0 αποκατάσταση ιδιότητας σωρού δίνεται: συστοιχία Α θέση κάποιου στοιχείου της συστοιχίας τα δυαδικά υπο-δέντρα απόγονοι του κόμβου είναι σωροί μεγίστου το A[] ενδέχεται να παραβιάζει την ιδιότητα σωρού μεγίστου λύση: γίνετε μετακύλιση της τιμής Α[] προς το κατάλληλο υποδέντρο Heapfy(A,): 0 0 Heapfy(A,): 0 0 Heapfy(A,): 0 0

ψευδοκώδικας Heapfy(A,) κατασκευή σωρού βασικές ιδέες: χρησιμοποιούμε τη μέθοδο αποκατάστασης σωρού προχωράμεμελογικήbottom-up (αναβιβαστικά) χρόνος: O(lg n), T(n) T(n/)+Θ() παράδειγμα κατασκευής σωρού 0 A 0 0 0 0 0 0 0 0 0 0 0 0 0 ανάλυση η διαίσθηση: O(nlgn) κάθε κλήση της Heapfy στοιχίζει Θ(lg n) γίνονται O(n) κλήσεις επομένως, η δημιουργία του σωρού στοιχίζει O(nlgn) πιο σφιχτή (tghter) ανάλυση: O(n) θεωρούμε n = k - και πλήρες δυαδικό δέντρο ο χρόνος που απαιτεί η Heapfy όταν εκτελείται για έναν κόμβο ύψους h είναι O(h) συνολικό κόστος = χρησιμοποιώντας (άσκηση) ότι: n h = k k- 0 lgn = k lg n lg n O ( h ) = O ( n ) = O ( n h + h h 0 = h = 0 h = h h= 0 h ) Έστω ότι έχουμε υλοποιημένη μια δομή δεδομένων σωρός. Πως μπορούμε να τη χρησιμοποιήσουμε για να ταξινομήσουμε μία ακολουθία στοιχείων;

αλγόριθμος heapsort ----O(n) ουρές προτεραιότητας πολυπλοκότητα χρόνου = O(nlgn) 0 ουρά προτεραιότητας (prorty queue) μια δομή δεδομένων για τη διαχείριση ενός συνόλου στοιχείων S κάθε στοιχείο στοιχείο χαρακτηρίζεται από μία τιμή που ονομάζεται κλειδί (key) εφαρμογή: χρονοδρομολόγηση εργασιών εξομοίωση λειτουργίες μιας ουράς προτεραιότητας: Insert(S,x) Maxmum(S) Implement wth a heap. Extract-Max(S) εισαγωγή στοιχείου εισαγωγή στοιχείου στο σωρό. επεκτείνουμε το σωρό κατά θέση. στην καινούργια θέση (που βρίσκεται στην τελευταία θέση) τοποθετούμε την ελάχιστη δυνατή τιμή, πχ. μείον άπειρο. εκτελούμε τη διαδικασία αύξησης της τιμής κλειδιού για το στοιχείο στην τελευταία θέση από την ελάχιστη δυνατή τιμή στην επιθυμητή τιμή: διαδικασία Heap-Increase-Key(A,,key)

κλειδί =, HeapInsert(A,κλειδί): A 0 0 0 0 0 0 0 0 Αναφορές/Πηγές Εισαγωγή στους αλγόριθμους, Κεφάλαιο