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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

ΠΛΗ 20, 6 η ΟΣΣ: Δέντρα Εξετάσεις

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

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

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

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

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

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

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

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

Heapsort Using Multiple Heaps

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

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

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

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

Transcript:

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

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

Δοµές Δεδοµένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειµένων για αποδοτική ενηµέρωση και ανάκτηση πληροφορίας. Αποδοτική υλοποίηση αλγορίθµων και Βάσεων Δεδοµένων. (Αποδοτική) αναπαράσταση οργάνωση «σύνθετων» αντικειµένων µε χρήση: Βασικών τύπων δεδοµένων (ints, floats, chars, strings, arrays). Μηχανισµών που παρέχονται από γλώσσες προγραµµατισµού (structs records, objects). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

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

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

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

Γενικευµένος Τύπος Δεδοµένων Abstract Data Type (ADT): σύνολο (στιγµιότυπα) µε λειτουργίες (µεθόδους) επί των στοιχείων του. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 3

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

Ουρά Προτεραιότητας (Priority Queue) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 4

Ουρά Προτεραιότητας (Priority Queue) Ουρά όπου σειρά διαγραφής καθορίζεται από προτεραιότητα (µεγαλύτερη µικρότερη). Στοιχεία (προτεραιότητα, πληροφορία). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 4

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

Εφαρµογές Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 5

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

Στοιχεία Ουράς Προτεραιότητας Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 6

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

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

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

Ιεραρχικές Δοµές: Δέντρα Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 7

Ιεραρχικές Δοµές: Δέντρα Γράφηµα ακυκλικό και συνεκτικό. Δέντρο µε n κορυφές έχει m = n 1 ακµές. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 7

Ιεραρχικές Δοµές: Δέντρα Γράφηµα ακυκλικό και συνεκτικό. Δέντρο µε n κορυφές έχει m = n 1 ακµές. Δέντρο µε ρίζα : Ιεραρχία Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 7

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

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

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

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

Δυαδικά Δέντρα n(h): #κορυφών σε ΔΔ ύψους h. h + 1 n(h) 2 h+1 1 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 8

Δυαδικά Δέντρα n(h): #κορυφών σε ΔΔ ύψους h. h + 1 n(h) 2 h+1 1 h+1 επίπεδα, 1 κορ. / επίπ. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 8

Δυαδικά Δέντρα n(h): #κορυφών σε ΔΔ ύψους h. h + 1 n(h) 2 h+1 1 h+1 επίπεδα, 1 κορ. / επίπ. 2 i κορυφές στο επίπεδο i. 1 + 2 + + 2 h = 2 h + 1 1 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 8

Δυαδικά Δέντρα n(h): #κορυφών σε ΔΔ ύψους h. h + 1 n(h) 2 h+1 1 h+1 επίπεδα, 1 κορ. / επίπ. 2 i κορυφές στο επίπεδο i. 1 + 2 + + 2 h = 2 h + 1 1 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 8

Δυαδικά Δέντρα n(h): #κορυφών σε ΔΔ ύψους h. h + 1 n(h) 2 h+1 1 h+1 επίπεδα, 1 κορ. / επίπ. 2 i κορυφές στο επίπεδο i. 1 + 2 + + 2 h = 2 h + 1 1 h(n): ύψος ΔΔ µε n κορυφές: log 2 (n+1) 1 h(n) n 1 Γεµάτο (full): Κάθε κορυφή είτε φύλλο είτε 2 παιδιά. Πλήρες (complete) : Γεµάτο και όλα τα επίπεδα συµπληρωµένα. n = 2 h+ 1 1 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 8

Σχεδόν Πλήρες Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. n(h): #κορυφών για ύψος h: 2 h n(h) 2 h + 1 1 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. n(h): #κορυφών για ύψος h: 2 h n(h) 2 h + 1 1 Πλήρες(h) : 2 h+ 1 1 Πλήρες(h 1) + 1 : (2h 1) + 1 = 2h. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. n(h): #κορυφών για ύψος h: 2 h n(h) 2 h + 1 1 Πλήρες(h) : 2 h+ 1 1 Πλήρες(h 1) + 1 : (2h 1) + 1 = 2h. h(n): ύψος για n κορυφές: log 2 (n+1) 1 h(n) log 2 n Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Σχεδόν Πλήρες Όλα τα επίπεδα συµπληρωµένα εκτός ίσως από τελευταίο που πληρώνεται από αριστερά προς τα δεξιά. n(h): #κορυφών για ύψος h: 2 h n(h) 2 h + 1 1 Πλήρες(h) : 2 h+ 1 1 Πλήρες(h 1) + 1 : (2h 1) + 1 = 2h. h(n): ύψος για n κορυφές: log 2 (n+1) 1 h(n) log 2 n Ύψος : h( n ) = log 2 n #φύλλων = n / 2 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 9

Αναπαράσταση Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 10

Αναπαράσταση Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 10

Αναπαράσταση Δείκτες σε παιδιά, πατέρα (δυναµική). Σχεδόν πλήρη δυαδικά δέντρα : Πίνακας (στατική). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 10

Αναπαράσταση Δείκτες σε παιδιά, πατέρα (δυναµική). Σχεδόν πλήρη δυαδικά δέντρα : Πίνακας (στατική). Αρίθµηση αριστερά δεξιά και πάνω κάτω. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 10

Αναπαράσταση Δείκτες σε παιδιά, πατέρα (δυναµική). Σχεδόν πλήρη δυαδικά δέντρα : Πίνακας (στατική). Αρίθµηση αριστερά δεξιά και πάνω κάτω. Ρίζα : Π[1] Π[ i ] : πατέρας Π[ i / 2 ] αριστερό παιδί Π[ 2 i ] δεξιό παιδί Π[ 2 i + 1 ] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 10

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

Σωρός (heap) Δέντρο µέγιστου (ελάχιστου): Τιµές στις κορυφές και τιµή κάθε κορυφής ( ) τιµές παιδιών της. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 11

Σωρός (heap) Δέντρο µέγιστου (ελάχιστου): Τιµές στις κορυφές και τιµή κάθε κορυφής ( ) τιµές παιδιών της. Σωρός : σχεδόν πλήρες δυαδικό δέντρο µέγιστου (ελάχιστου). Ύψος Θ(log n), #φύλλων = n / 2 Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 11

Σωρός (heap) Δέντρο µέγιστου (ελάχιστου): Τιµές στις κορυφές και τιµή κάθε κορυφής ( ) τιµές παιδιών της. Σωρός : σχεδόν πλήρες δυαδικό δέντρο µέγιστου (ελάχιστου). Ύψος Θ(log n), #φύλλων = n / 2 Πίνακας Α[ ] ιδιότ. σωρού : i A[ i ] A[ 2i ], A[ 2i + 1 ]. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 11

Σωρός (heap) Δέντρο µέγιστου (ελάχιστου): Τιµές στις κορυφές και τιµή κάθε κορυφής ( ) τιµές παιδιών της. Σωρός : σχεδόν πλήρες δυαδικό δέντρο µέγιστου (ελάχιστου). Ύψος Θ(log n), #φύλλων = n / 2 Πίνακας Α[ ] ιδιότ. σωρού : i A[ i ] A[ 2i ], A[ 2i + 1 ]. Μέγιστο : ρίζα Ελάχιστο : κάποιο φύλλο Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 11

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωροί και Μη-Σωροί Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 12

Σωρός σαν Ουρά Προτεραιότητας Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 13

Σωρός σαν Ουρά Προτεραιότητας int A[n], hs; Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 13

Σωρός σαν Ουρά Προτεραιότητας int A[n], hs; max() : Ο(1) int max() { return(a[1]); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 13

Σωρός σαν Ουρά Προτεραιότητας 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); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 13

Σωρός σαν Ουρά Προτεραιότητας 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); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 13

Αποκατάσταση Προς-τα-Κάτω Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 14

Αποκατάσταση Προς-τα-Κάτω combine( i ) : Ενόσω όχι σωρός, - Α[ i ] max{a[ 2i ], A[ 2i+1 ] } - συνεχίζω στο αντίστοιχο υποδέντρο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 14

Αποκατάσταση Προς-τα-Κάτω combine( i ) : Ενόσω όχι σωρός, - Α[ i ] max{a[ 2i ], A[ 2i+1 ] } - συνεχίζω στο αντίστοιχο υποδέντρο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 14

Αποκατάσταση Προς-τα-Κάτω 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); } } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 14

Αποκατάσταση Προς-τα-Κάτω 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); } } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 14

Αποκατάσταση Προς-τα-Κάτω 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); } } Χρόνος για deletemax() : Ο(ύψος) = O(log n) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 14

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ) : Εισαγωγή στο τέλος. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ) : Εισαγωγή στο τέλος. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ) : Εισαγωγή στο τέλος. Ενόσω όχι σωρός, A[ i ] A[ i / 2 ] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ) : Εισαγωγή στο τέλος. Ενόσω όχι σωρός, 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; } } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ) : Εισαγωγή στο τέλος. Ενόσω όχι σωρός, 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; } } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ) : Εισαγωγή στο τέλος. Ενόσω όχι σωρός, 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; } } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

Εισαγωγή: Αποκατάσταση Προς-τα-Πάνω insert( k ) : Εισαγωγή στο τέλος. Ενόσω όχι σωρός, 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; } } Χρόνος για insert() : Ο(ύψος) = O(log n) Αύξηση προτεραιότητας : εισαγωγή (αποκατ. προς-τα-πάνω). Μείωση προτεραιότητας : διαγραφή (αποκατ. προς-τα-κάτω). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 15

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

Δηµιουργία Σωρού Α[n] σωρός µε n εισαγωγές [3, 4, 6, 10, 8, 15, 16, 17, 12, 11, 20] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 16

Δηµιουργία Σωρού Α[n] σωρός µε n εισαγωγές [3, 4, 6, 10, 8, 15, 16, 17, 12, 11, 20] Χρόνος O(n log n). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 16

Δηµιουργία Σωρού Α[n] σωρός µε n εισαγωγές [3, 4, 6, 10, 8, 15, 16, 17, 12, 11, 20] Χρόνος O(n log n). Ιεραρχικά (bottom-up): Υποδέντρα-σωροί ενώνονται σε δέντρο-σωρό. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 16

Δηµιουργία Σωρού Α[n] σωρός µε n εισαγωγές [3, 4, 6, 10, 8, 15, 16, 17, 12, 11, 20] Χρόνος O(n log n). Ιεραρχικά (bottom-up): Υποδέντρα-σωροί ενώνονται σε δέντρο-σωρό. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 16

Δηµιουργία Σωρού Α[n] σωρός µε n εισαγωγές [3, 4, 6, 10, 8, 15, 16, 17, 12, 11, 20] Χρόνος O(n log n). Ιεραρχικά (bottom-up): Υποδέντρα-σωροί ενώνονται σε δέντρο-σωρό. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 16

Δηµιουργία Σωρού Α[n] σωρός µε n εισαγωγές [3, 4, 6, 10, 8, 15, 16, 17, 12, 11, 20] Χρόνος O(n log n). Ιεραρχικά (bottom-up): Υποδέντρα-σωροί ενώνονται σε δέντρο-σωρό. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 16

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

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

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

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

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

Χρόνος Δηµιουργίας for (i = n / 2; i > 0; i--) combine(i); Χρόνος combine( i ) = Ο(ύψος i ). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 17

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

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

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

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

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

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

Απόδοση Σωρού Χώρος : Θ(1) (in-place) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 18

Απόδοση Σωρού Χώρος : Θ(1) (in-place) Χρόνοι : createheap : Θ(n) insert, deletemax : O(log n) max, size, isempty : Θ(1) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 18

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

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

Heap-Sort Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 19

Heap-Sort Αρχικοποίηση : δηµιουργία σωρού µε n στοιχεία. constructheap() : χρόνος Θ(n). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 19

Heap-Sort Αρχικοποίηση : δηµιουργία σωρού µε n στοιχεία. constructheap() : χρόνος Θ(n). Εξαγωγή µέγιστου και τοποθέτηση στο τέλος (n 1 φορές). deletemax() : χρόνος Θ(log n). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 19

Heap-Sort Αρχικοποίηση : δηµιουργία σωρού µε n στοιχεία. constructheap() : χρόνος Θ(n). Εξαγωγή µέγιστου και τοποθέτηση στο τέλος (n 1 φορές). deletemax() : χρόνος Θ(log n). Χρόνος : Θ(n) + n Θ(log n) = Θ(n log n). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 19

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

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

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Heap-Sort : Παράδειγµα constructheap(n); for (i = n; i > 1; i--) { swap(a[1], A[i]); hs--; combine(1); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 20

Συγκριτικοί Αλγόριθµοι Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 21

Συγκριτικοί Αλγόριθµοι Ταξινόµηση µόνο µε συγκρίσεις και µετακινήσεις στοιχείων. Καµία άλλη ενέργεια στα στοιχεία (π.χ. οµαδοποίηση µε βάση δυαδική αναπαράσταση). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 21

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

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

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

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

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

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

Δέντρο Συγκρίσεων Ύψος δέντρου καθορίζει #συγκρίσεων (χ.π.) και αποτελεί κάτω φράγµα στο χρόνο εκτέλεσης. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 23

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

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

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

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

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

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