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

Σχετικά έγγραφα
Ουρά Προτεραιότητας: Heap

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

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

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

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

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

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

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

Αναζήτηση Κατά Πλάτος

Ελάχιστο Συνδετικό έντρο

Αναζήτηση Κατά Βάθος. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

Συντομότερες ιαδρομές

Συντομότερες ιαδρομές

Συντομότερα Μονοπάτια για Όλα τα Ζεύγη Κορυφών

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

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

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

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

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

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

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

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

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

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

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

Ασυμπτωτικός Συμβολισμός

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

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

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

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

Υπολογιστική Πολυπλοκότητα

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

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

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

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

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

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

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

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

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

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

Αναζήτηση Κατά Βάθος. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

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

Βασικές Έννοιες Θεωρίας Γραφημάτων

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Συντομότερες Διαδρομές

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

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

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

Συντομότερες Διαδρομές

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Βασικές Έννοιες Θεωρίας Γραφημάτων

Ελάχιστο Συνδετικό Δέντρο

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

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

Ελάχιστο Συνδετικό Δέντρο

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

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

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

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

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

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

Αναζήτηση Κατά Πλάτος

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

Ελάχιστο Συνδετικό έντρο

Συντομότερες ιαδρομές

Οντοκεντρικός Προγραμματισμός

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

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

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

Προχωρημένες έννοιες προγραμματισμού σε C

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

Δυναμικός Προγραμματισμός

Αναζήτηση Κατά Πλάτος

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

Αναζήτηση Κατά Πλάτος

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

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

Ελάχιστο Συνδετικό Δέντρο

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

Transcript:

Ουρά Προτεραιότητας: Heap ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

ομές εδομένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειμένων για αποδοτική ενημέρωση και ανάκτηση πληροφορίας. Αποδοτική υλοποίηση αλγορίθμων και Βάσεων εδομένων. (Αποδοτική) αναπαράσταση οργάνωση «σύνθετων» αντικειμένων με χρήση: Βασικών τύπων δεδομένων (ints, floats, chars, strings, arrays). Μηχανισμών που παρέχονται από γλώσσες προγραμματισμού (structs records, objects). ιαχείριση: υλοποίηση στοιχειωδών λειτουργιών Ταξινόμηση, αναζήτηση, min/max/median, first/last,... Εισαγωγή, διαγραφή, ενημέρωση. Λύσεις και τεχνικές για αποδοτική διαχείριση δεδομένων. Ανάλυση για απαιτήσεις και καταλληλότητα. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 2

Γενικευμένος Τύπος εδομένων Abstract Data Type (ADT): σύνολο (στιγμιότυπα) με λειτουργίες (μεθόδους) επί των στοιχείων του. ομή εδομένων: Υλοποίηση ενός ADT Αναπαράσταση οργάνωση στιγμιοτύπων και υλοποίηση λειτουργιών με κατάλληλους αλγόριθμους. ιατύπωση: ορισμός αναπαράστασης και περιγραφή υλοποίησης λειτουργιών (ψευδο-κώδικας). Ανάλυση: προσδιορισμός απαιτήσεων σε χώρο αποθήκευσης και χρόνο εκτέλεσης για κάθε (βασική) λειτουργία. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 3

Ουρά Προτεραιότητας (Priority Queue) Ουρά όπου σειρά διαγραφής καθορίζεται από προτεραιότητα (μεγαλύτερη μικρότερη). Στοιχεία (προτεραιότητα, πληροφορία). Ακολουθία από λειτουργίες: insert(x): εισαγωγή x. deletemax(): διαγραφή και επιστροφή στοιχείου μέγιστης προτεραιότητας. max(): επιστροφή στοιχείου μέγιστης προτεραιότητας (χωρίς διαγραφή). changepriority(k): αλλαγή προτεραιότητας θέσης k. isempty(), size(): βοηθητικές λειτουργίες. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 4

Εφαρμογές Άμεσες εφαρμογές: Υλοποίηση ουρών αναμονής με προτεραιότητες. ρομολόγηση με προτεραιότητες. Largest (Smallest) Processing Time First. Έμμεσες εφαρμογές: Βασικό συστατικό πολλών και αλγορίθμων: HeapSort (γενικά ταξινόμηση με επιλογή). Αλγόριθμος Huffman. Αλγόριθμοι Prim και Dijkstra.... Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 5

Στοιχεία Ουράς Προτεραιότητας Ουρές Προτεραιότητας: Ολική διάταξη στοιχείων με βάση προτεραιότητα. Στοιχεία είναι αριθμοί (με συνήθη διάταξη) που δηλώνουν προτεραιότητα. Εφαρμογή για στοιχεία κάθε συνόλου με σχέση ολικής διάταξης (αριθμοί, λέξεις, εισοδήματα,...). Γραμμικές ομές εδομένων: ολικά διατεταγμένα στοιχεία. Υλοποίηση ουράς προτεραιότητας με σωρό (heap). υαδικό δέντρο με διάταξη σε κάθε μονοπάτι ρίζα φύλλο. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 6

Ιεραρχικές ομές: έντρα Γράφημα ακυκλικό και συνεκτικό. έντρο με n κορυφές έχει m = n 1 ακμές. έντρο με ρίζα : Ιεραρχία Ύψος : μέγιστη απόσταση από ρίζα. υαδικό δέντρο : έχει ρίζα και κάθε κορυφή 2 παιδιά : Αριστερό και δεξιό. Κάθε υποδέντρο είναι δυαδικό δέντρο. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 7

υαδικά έντρα n(h): #κορυφών σε ύψους h. h+1 n(h) 2 h+1 1 h+1 επίπεδα, 1 κορ. / επίπ. 2 1 3 2 i κορυφές στο επίπεδο i. 1 + 2 + + 2 h = 2 h +1 1 4 5 6 7 h(n): ύψος με n κορυφές: log 2 (n+1) 1 h(n) n 1 Γεμάτο (full): Κάθε κορυφή είτε φύλλο είτε 2 παιδιά. Πλήρες (complete) : Γεμάτο και όλα τα επίπεδα συμπληρωμένα. n = 2 h+1 1 8 9 10 11 12 13 14 15 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 8

Σχεδόν Πλήρες Όλα τα επίπεδα συμπληρωμένα εκτός από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. n(h): #κορυφών για ύψος h: 2 h n(h) 2 h +1 1 Πλήρες(h) : 2 h+1 1 Πλήρες(h 1)+1:(2 h 1)+1 = 2 h. h(n): ύψος για n κορυφές: log 2 (n+1) 1 h(n) log 2 n Ύψος : h(n) = log 2 n #φύλλων = n /2 2 1 4 5 6 8 9 10 11 12 13 11 14 15 12 3 7 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 9

Αναπαράσταση είκτες σε παιδιά, πατέρα (δυναμική). Σχεδόν πλήρη δυαδικά δέντρα : Πίνακας (στατική). Αρίθμηση αριστερά δεξιά και πάνω κάτω. Ρίζα : Π[1] Π[i] : πατέρας Π[i /2] αριστερό παιδί Π[2i ] δεξιό παιδί Π[2i +1] 17 10 16 6 8 3 15 20 12 20 17 12 10 16 6 4 8 3 15 1 2 3 4 5 6 7 8 9 10 4 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 10

Σωρός (heap) έντρο μέγιστου (ελάχιστου): Τιμές στις κορυφές και τιμή κάθε κορυφής ( ) τιμές παιδιών της. Σωρός : σχεδόν πλήρες δυαδικό δέντρο μέγιστου (ελάχιστου). Ύψος Θ(log n), #φύλλων = n /2 17 12 10 16 6 4 1 20 2 3 4 5 6 7 Πίνακας Α[ ] ιδιότ. σωρού : i A[ i ] A[2i], A[2i+1]. 8 9 10 8 3 15 Μέγιστο : ρίζα Ελάχιστο : κάποιο φύλλο 20 17 12 10 16 6 4 8 3 15 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 11

Σωροί και Μη-Σωροί 20 15 10 14 9 7 5 6 4 8 2 3 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 12

Σωρός σαν Ουρά Προτεραιότητας int A[n], hs; max() : Ο(1) int max() { return(a[1]); } deletemax() : int deletemax() { if (isempty()) return(empty); max = A[1]; A[1] = A[hs--]; combine(1); return(max); } 20 15 17 12 10 16 6 4 8 3 15 15 20 17 12 10 16 6 4 8 3 15 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 13

Αποκατάσταση Προς-τα-Κάτω combine(i) : Ενόσω όχι σωρός, - Α[i] max{a[2i], A[2i+1]} - συνεχίζω στο αντίστοιχο υποδέντρο. combine(int i) { l = 2*i; r = 2*i+1; mp = i; if ((l <= hs) && (A[l] > A[mp])) mp = l; if ((r <= hs) && (A[r] > A[mp])) mp = r; if (mp!= i) { swap(a[i], A[mp]); combine(mp); } } 17 15 16 15 17 10 16 15 6 8 3 12 15 17 17 15 16 12 10 16 15 6 4 8 3 4 Χρόνος για deletemax() : Ο(ύψος) = O(log n) Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 14

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ): Εισαγωγή στο τέλος. 20 Ενόσω όχι σωρός, A[i] A[i /2] insert(int k) { A[++hs] = k; i = hs; p = i / 2; while ((i > 1) && (A[p] < A[i])) { swap(a[p], A[i]); i = p; p = i / 2; } } 17 19 10 19 17 6 8 3 15 16 12 4 Χρόνος για insert() : Ο(ύψος) = O(log n) Αύξηση προτεραιότητας : εισαγωγή (αποκατ. προς-τα-πάνω). Μείωση προτεραιότητας : διαγραφή (αποκατ. προς-τα-κάτω). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 15

ημιουργία Σωρού Α[n] σωρός με n εισαγωγές [3, 4, 6, 10, 8, 15, 16, 17, 12, 11, 20] 3 Χρόνος O(nlogn). 20 4 16 6 Ιεραρχικά (bottom-up): Υποδέντρα-σωροί ενώνονται σε δέντρο-σωρό. constructheap(int n) { hs = n; for (i = n / 2; i > 0; i--) combine(i); } 10 17 20 11 8 15 17 10 12 11 4 20 8 16 6 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 16

Χρόνος ημιουργίας for (i = n / 2; i > 0; i--) combine(i); Χρόνος combine( i ) = Ο(ύψος i). n /4στοιχεία χρόνος 1 c n /8στοιχεία χρόνος 2 c...................... n /2 k στοιχεία χρόνος k c, k log 2 n Χρόνος constructheap( ) = Θ(n). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 17

Απόδοση Σωρού Χώρος : Θ(n) (in-place) Χρόνοι : createheap : Θ(n) insert, deletemax : O(log n) max, size, isempty : Θ(1) Εξαιρετικά εύκολη υλοποίηση! Συμπέρασμα: Γρήγορη και ευρύτατα χρησιμοποιούμενη ουρά προτεραιότητας. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 18

Heap-Sort Αρχικοποίηση : δημιουργία σωρού με n στοιχεία. constructheap() : χρόνος Θ(n). Εξαγωγή μέγιστου και τοποθέτηση στο τέλος (n 1 φορές). deletemax() : χρόνος Θ(log n). Χρόνος : Θ(n) + n Θ(log n) = Θ(n log n). hs = n; constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Χρονική Πολυπλοκότητα Ταξινόμησης: Ο(n log n). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 19

Heap-Sort : Παράδειγμα 21 76 54 3 constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } 54 12 6 31 42 1 1 3 2 2 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 20

Συγκριτικοί Αλγόριθμοι Ταξινόμηση μόνο με συγκρίσεις και μετακινήσεις στοιχείων. Καμία άλλη ενέργεια στα στοιχεία (π.χ. ομαδοποίηση με βάση δυαδική αναπαράσταση). Κάθε ντετερμινιστικός συγκριτικός αλγ. ταξινόμησης χρειάζεται Ω(n log n) συγκρίσεις μεταξύ στοιχείων. Αντίστοιχο κάτω φράγμα για πιθανοτικούς αλγόριθμους. Χρονική Πολυπλοκότητα Ταξινόμησης: Θ(n log n) Υπάρχουν αλγόριθμοι με γραμμικό χρόνο για συγκεκριμένους τύπους δεδομένων (π.χ. αριθμούς). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 21

έντρο Συγκρίσεων Λειτουργία συγκριτικών αλγορίθμων αναπαρίσταται με δέντρο συγκρίσεων (ή αποφάσεων). Αλγόριθμος δέντρο συγκρίσεων. είσοδο: αλγ. ακολουθεί μοναδικό μονοπάτι από ρίζα σε φύλλο. x 1 x 2 Ταξινόμηση με εισαγωγή x 2 x 3 x 1 x 3 x 1 x 2 x 3 x 1 x 3 x 2 x 1 x 3 x 2 x 3 x 1 x 3 x 2 x 3 x 1 x 2 x 2 x 3 x 1 x 3 x 2 x 1 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 22

έντρο Συγκρίσεων Ύψος δέντρου καθορίζει #συγκρίσεων (χ.π.) και αποτελεί κάτω φράγμα στο χρόνο εκτέλεσης. Ταξινόμηση n στοιχείων: τουλάχιστον n! φύλλα (όλες μεταθέσεις). υαδικό δέντρο. x 1 x 2 x 2 x 3 x 1 x 3 x 1 x 2 x 3 x 1 x 3 x 2 x 1 x 3 x 2 x 3 x 1 x 3 x 2 x 3 x 1 x 2 x 2 x 3 x 1 x 3 x 2 x 1 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 23

έντρο Συγκρίσεων υαδικό δέντρο ύψους h έχει 2 h φύλλα. Χρόνος εκτέλεσης = Ω(h). Ταξινόμηση n στοιχείων: 2 h n! Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2010) Ουρές Προτεραιότητας 24

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.