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

Σχετικά έγγραφα
Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

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

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

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

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

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

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

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

Αλγόριθμοι ταξινόμησης

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

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

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

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

Εργαστήριο 2: Πίνακες

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

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

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

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

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

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

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

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

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

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

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

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

Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Heapsort Using Multiple Heaps

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

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

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

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

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

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

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

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

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

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

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

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

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

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

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

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

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

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα

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

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

Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής και Τηλεπικοινωνιών. Παραλληλία. Κ. Χαλάτσης, Εισαγωγή στην Επιστήµη της Πληροφορικής και των Τηλεπικοινωνιών

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

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

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

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

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

Εξωτερική Ταξινόμηση. Μ.Χατζόπουλος 1

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

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

Αλγόριθμοι Αναζήτησης

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

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

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

Transcript:

Διάλεξη 28: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Η διαδικασία PercolateDown, Δημιουργία Σωρού - O Αλγόριθμος Ταξινόμησης HeapSort - Υλοποίηση, Παραδείγματα Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1

Διαδικασία Καθόδου PercolateDown Έστω ένας πίνακας Α[1..n] και μια τιμή i, θα ορίσουμε διαδικασία PercoladeDown(i), η οποία μετακινεί το στοιχείο Α[i] μέσα στον σωρό προς τα κάτω όσο χρειάζεται. Έστω ότι Α[i] = k. Θεωρούμε πως η i είναι άδεια θέση. Αν η άδεια θέση έχει παιδί που περιέχει στοιχείο μικρότερο του k και xείναι το μικρότερο τέτοιο παιδί, τότε μετακινούμε το στοιχείο του xστην κενή θέση και μετακινούμε την κενή θέση στο x. Επαναλαμβάνουμε την ίδια διαδικασία μέχρι τη στιγμή που η κενήθέσηδεν έχει παιδιά με στοιχεία μικρότερα του k. Τότε αποθηκεύουμε το k στην θέση αυτή. Ο χρόνος εκτέλεσης είναι ανάλογος του ύψους του κόμβου που αντιστοιχεί στη θέση i του σωρού. Δηλαδή, στη χείριστη περίπτωση, όπου i=n, Ο(lgn). ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 2

Διαδικασία Καθόδου PercolateDown(συν.) Μη αναδρομική διαδικασία PercolateDown void PercolateDown(type A[], int n, int i) { type k = A[i]; int j; while( 2*i <=n ) { j = 2*i; if (j<n && A[j+1]<A[j]) j++; if (k > A[j]) { A[i] = A[j]; i=j; } else break; } A[i] = k; } ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3

Παράδειγμα Εκτέλεσης PercolateDown int A[]={-1, 13, 8, 15, 4, 7, 20, 18, 5, 2}; i=2, n=9, PercolateDown(A, 9, 2); k=8 Aν φανταστούμε τον πίνακα σαν δυαδικό δέντρο k=8 1. 13 4<7, k>4 13 2. 8 4 7 5 2 4. break Set to k 4 2 7 15 20 18 13 2<5, k>2 2:Move Up 15 20 18 3. 5 2 4 7 13 15 20 18 5. 4:Move Up 4 7 5 2 4 2 7 13 15 20 18 15 20 18 5 5 8 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 4

Παράδειγμα Εκτέλεσης PercolateDown int A[]={-1, 13, 8, 15, 4, 7, 20, 18, 5, 2}; i=2, n=9, PercolateDown(A, 9, 2); k=8 Aν φανταστούμε τον πίνακα σαν δυαδικό δέντρο 1. 2. 3. 4. 5. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 5

Διαδικασία DeleteMin(2) Αφαιρούμε το στοιχείο της ρίζας (είναι το μικρότερο κλειδί τουσωρού). Μεταφέρουμε το τελευταίο κλειδί στη ρίζα, και εφαρμόζουμε τη διαδικασία PercoladeDown(A, n, 1): type DeleteMin(HEAP* heap) { type min=null; type swap=null; if(!isemptyheap(heap)){ min = heap->contents[1]; swap(contents[1],contents[size]); heap->size --; PercolateDown(heap->contents, heap->size, 1); } return min; } Χρόνος Εκτέλεσης: O(h) = Ο(logn) ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 6

Παράδειγμα DeleteMin 3 Delete Min Swap with last 28 Percolate Down 28 22 27 22 27 22 27 44 26 28 44 26 28 44 26 22<27, 28>22 22: Move up 22 26<44, 28>26 26: Move up 22 22 27 27 26 27 44 26 44 26 44 28 0 1 2 3 4 5 6 0 22 26 27 44 28 break Set to 28 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 7

Από πίνακες σε σωρούς Έστω πίνακας Α[1..n]. Μπορούμε να θεωρήσουμε τον πίνακα ως ένα πλήρες δυαδικό δένδρο με n κόμβους. Αν για μια τιμή i το αριστερό και το δεξί υπόδενδρο του i ικανοποιούντις ιδιότητες ενός σωρού, τότε, αν καλέσουμε τη διαδικασίαpercolatedown(a, n, i) θα έχουμε σαν αποτέλεσμα το υπόδενδρο πουριζώνει στη θέση i να ικανοποιεί τις ιδιότητες ενός σωρού. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8

Κτίσιμο σωρού από ένα πίνακα Μπορούμε να μετατρέψουμε ένα πίνακα Α[1..n] σε ένα σωρό με διαδοχικήεφαρμογή της διαδικασίας PercoladeDown() από κάτω προς τα πάνω. Παρατήρηση: οι θέσεις > n/2 αντιστοιχούν σε φύλλα. void BuildHeap( int A[], int n) { for (int i=n/2; i>0; i--) PercolateDown(A,n,i); } Ορθότητα(αποδεικνύεται με τη μέθοδο της επαγωγής):μετά από την εφαρμογή της διαδικασίας PercoladeDown(A,n,i), τα υπόδενδρα που ριζώνουν στις θέσεις i,..., n, ικανοποιούν τις ιδιότητες σωρού. Ανάλυση του Χρόνου Εκτέλεσης:Ο ολικός χρόνος εκτέλεσης είναι ανάλογος τουαθροίσματος των υψών όλων των εσωτερικών κόμβων, το οποίο είναι Ο(n). ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 9

Τι κάνει ο πιο κάτω αλγόριθμος; void mystery (type A[], int n) { BuildHeap(A, n); type swap; for (int i=n; i>1; i--){ swap (A[1], A[i]); PercolateDown(A, i-1, 1); } } ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 10

Παράδειγμα Εκτέλεσης Διαδικασίας mystery Είσοδος, Α={ -, 34, 8, 64, 57, 32, 21} 34 8 64 57 32 21 Μετά την εκτέλεση της γραμμής BuildHeap 8 32 21 57 34 64 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 11

Παράδειγμα Εκτέλεσης Διαδικασίας mystery Μετά από την πρώτη επανάληψη του for 21 32 64 57 34 8 Μετά από την δεύτερη επανάληψη του for 32 34 64 57 21 8 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 12

Παράδειγμα Εκτέλεσης Διαδικασίας mystery Μετά από την τρίτη επανάληψη του for 34 57 64 32 21 8 Μετά από την τέταρτη επανάληψη του for 57 64 34 32 21 8 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 13

Παράδειγμα Εκτέλεσης Διαδικασίας mystery Μετά από την πέμπτη επανάληψη του for 64 57 34 32 21 8 Σε επίπεδο πίνακα - 64 57 34 32 21 8 ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 14

Ο αλγόριθμος ταξινόμησης HeapSort H διαδικασία mysteryταξινομεί ένα πίνακα σε φθίνουσα σειρά. Αρχικά δημιουργεί ένα σωρό σε χρόνο Ο(n). Στη συνέχεια επαναλαμβάνει το εξής: αφαιρεί το μικρότερο στοιχείο(της ρίζας του σωρού) και το μετακινεί στο τέλος (εκτελεί τηνpercolatedown). Κάθε εκτέλεση της PercoladeDown χρειάζεται χρόνο της τάξης Ο(log n). Ολικός Χρόνος Εκτέλεσης: Ο(n log n) O αλγόριθμος ονομάζεται Heapsort Μπορούμε εύκολα να αλλάξουμε τον κώδικα ώστε να επιστρέφεται η λίστα σε αύξουσα σειρά. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 15

Άλλες διαδικασίες σε σωρούς Παρόλο που εύρεση του ελάχιστου κλειδιού σε ένα σωρό μπορεί να πραγματοποιηθεί σε σταθερό χρόνο, η εύρεση τυχαίου στοιχείου στηχειρότερη περίπτωση επιβάλλει διερεύνηση ολόκληρης της δομής(δηλαδή, είναι της τάξης Ο(n)). Αν όμως γνωρίζουμε τη θέση στοιχείων με κάποιο άλλο τρόπο, διαδικασίες σε σωρούς πραγματοποιούνται εύκολα, π.χ. οι πιο κάτω εκτελούνται σε χρόνο λογαριθμικό. Increase_Key(P,Δ), αυξάνει την προτεραιότητα του κλειδιού P,κατά Δ. Χρησιμοποιείται από χειριστές λειτουργικών συστημάτων για αύξηση της προτεραιότητας σημαντικών διεργασιών. Η συμμετρική διαδικασία Decrease_Key(P,Δ) συχνά εκτελείται αυτόματα σε λειτουργικά συστήματα σε περίπτωση που κάποια δουλειά χρησιμοποιεί υπερβολικά μεγάλη ποσότητα χρόνου του CPU. Remove(I), αφαιρεί τον κόμβο της θέσης Ι (χρήσιμη σε περίπτωση τερματισμού διαδικασίας). ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 16