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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ελαφρύτατες διαδρομές

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

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

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

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

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

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

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

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

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

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

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

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

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

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

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

Transcript:

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

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

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

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

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

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

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

υαδικά έντρα #κορυφών για ύψος = h: h+1 #κορυφών 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 Ύψος για #κορυφών = n: log 2 (n+1) 1 ύψος n 1 8 9 10 11 12 13 14 15 Γεμάτο (full): Κάθε κορυφή είτε φύλλο είτε 2 παιδιά. Πλήρες (complete) : Όλα τα επίπεδα συμπληρωμένα (εκτός ίσως τελευταίο). Τέλειο (perfect) : n = 2 h+1 1 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 11

Σωροί και Μη-Σωροί 20 15 10 14 9 7 5 6 4 8 2 3 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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) Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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) Αύξηση προτεραιότητας : εισαγωγή (αποκατ. προς-τα-πάνω). Μείωση προτεραιότητας : διαγραφή (αποκατ. προς-τα-κάτω). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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 1) c, k log 2 n Χρόνος constructheap( ) = Θ(n). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 17

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

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

έντρο Συγκρίσεων Λειτουργία συγκριτικών αλγορίθμων αναπαρίσταται με δέντρο συγκρίσεων (ή αποφάσεων). Αλγόριθμος δέντρο συγκρίσεων. είσοδο: αλγ. ακολουθεί μοναδικό μονοπάτι από ρίζα σε φύλλο. x 1 x 2 Ταξινόμηση με εισαγωγή για 3 στοιχεία 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 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 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 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) Ουρές Προτεραιότητας 23

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