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

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

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

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

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

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

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

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

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

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

Heapsort Using Multiple Heaps

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

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

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

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

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

Γενικό πλάνο. Μαθηµατικά για Πληροφορική. Παράδειγµα αναδροµικού ορισµού. οµική επαγωγή ΠΑΡΑ ΕΙΓΜΑ. 3ο Μάθηµα

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

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

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

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

Μαθηµατικά για Πληροφορική

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

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

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

Ταξινόμηση. 1. Στατιστικά Διάταξης 2. Στατιστικά σε Μέσο Γραμμικό Χρόνο. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

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

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

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

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

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

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

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

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

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

Δοµές Δεδοµένων. 12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας. Ε. Μαρκάκης

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

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

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

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

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

Ισοζυγισµένο έντρο (AVL Tree)

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

Οι ϐασικές πράξεις που ορίζονται για τη δοµή δεδοµένων σωρός, είναι η πράξη της εισαγωγής και η πράξη της διαγραφής ενός στοιχείου.

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

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

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

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

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

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

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

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

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

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

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

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

3 Αναδροµή και Επαγωγή

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

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

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

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

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

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

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

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

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

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 8-1

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

Βασικές Προτάσεις. έντρα. υαδικά έντρα Αναζήτησης ( Α) Ισοζυγισµένα έντρα και Υψος. Κάθε δέντρο µε n κόµβους έχει n 1 ακµές.

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

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

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

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

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

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

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

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

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

Transcript:

Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

ένδρα Ενα δένδρο είναι µια δοµή δεδοµένων η οποία µπορεί να είναι είτε ένα ατοµικό δένδρο (ένα ϕύλλο), είτε ένας κόµβος και µια ακολουθία από υποδένδρα. Οι κόµβοι ενός δένδρου διακρίνονται σε εσωτερικούς κόµβους και ϕύλλα. Τα ϕύλλα είναι κόµβοι οι οποίοι δεν έχουν παιδιά. Το ϐάθος ενός κόµβου είναι το µήκος του µονοπατιού το οποίο ενώνει τον κόµβο αυτό µε τη ϱίζα. Κατά σύµβαση ϑεωρούµε πάντα ότι η ϱίζα έχει ϐάθος 0. Το ύψος ενός κόµβου είναι το µήκος του µεγαλύτερου µονοπατιού που ενώνει τον κόµβο µε τα ϕύλλα. Το ύψος του δένδρου είναι το ύψος της ϱίζας. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

υαδικά ένδρα Μια ειδική κατηγορία δένδρων είναι τα δυαδικά δένδρα στα οποία κάθε κόµβος έχει το πολύ δύο παιδιά. Γενικά το επίπεδο i περιέχει το πολύ i κόµβους. Σχεδόν πλήρες καλείται ένα δυαδικό δένδρο όταν όλες οι γραµµές, εκτός ίσως από την τελευταία, περιέχουν το µέγιστο αριθµό κόµβων (δηλαδή i ). Επιπλέον ισχύει µια σειρά από ιδιότητες όπως: Τα ϕύλλα της τελευταίας γραµµής είναι όλα αριστερά Τα ϕύλλα ϐρίσκονται όλα στην τελευταία και ενδεχοµένως στην προτελευταία γραµµή Οι εσωτερικοί κόµβοι είναι όλοι δυαδικοί, εκτός από το δεξιότερο της προτελευταίας γραµµής, ο οποίος µπορεί να µην έχει δεξιό παιδί. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Αρίθµηση κόµβων Κάθε κόµβος έχει τον πατέρα του στη ϑέση i/, το αριστερό παιδί του κόµβου i, είναι ο κόµβος i και το δεξιό παιδί του κόµβου i είναι το i +. Σε ένα δυαδικό δένδρο µε m κόµβους και ύψος h ισχύει log m h m Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Σχεδόν πλήρες δυαδικό δένδρο 0 0 0 0 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Η δοµή σωρού Εστω ότι πελάτες παρουσιάζονται στο ταµείο µιας τράπεζας µε ένα νούµερο σε ένα χαρτί αντιπροσωπεύοντας τον αριθµό προτεραιότητας του καθενός.χρειαζόµαστε: Αναζήτηση του µέγιστου αριθµού στην ουρά ιαγραφή αυτού του στοιχείου από την ουρά Εισαγωγή ενός νέου στοιχείου στην ουρά Μια πιθανή λύση ϑα ήταν η ταξινόµηση κατά αύξουσα σειρά των στοιχείων της ουράς. Ετσι η διαγραφή και η αναζήτηση του µεγίστου γίνεται σε σταθερό χρόνο, αλλά η εισαγωγή απαιτεί γραµµικό χρόνο. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Η δοµή σωρού (συν.) Μια άλλη λύση ϑα ήταν απλά µια ουρά, αλλά τότε ενώ η εισαγωγή ϑα γινόταν πολύ γρήγορα, η διαγραφή και η αναζήτηση στην ουρά ϑα χρειάζονταν επίσης γραµµικό χρόνο. Η ουρά n στοιχείων παριστάνεται από ένα δυαδικό δένδρο το οποίο σε κάθε κόµβο περιέχει ένα στοιχείο της ουράς. Το δένδρο αυτό ϑα πληρεί δύο ϐασικές ιδιότητες: Η τιµή κάθε κόµβου είναι µεγαλύτερη ή ίση της τιµής των παιδιών του κόµβου ιδιότητα σωρού Το δέντρο είναι σχεδόν πλήρες δοµική ιδιότητα Η αναπαράσταση µε σωρό µας επιτρέπει να κάνουµε τις πράξεις της αναζήτησης του µέγιστου στοιχείου, της εισαγωγής και της διαγραφής σε χρόνο O(log n). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Υλοποίηση µε πίνακα ενός σωρού Κατά πλάτος αρίθµηση των κόµβων του δέδρου Το νούµερο κάθε κόµβου του δένδρου δίνει τον δείκτη του πίνακα που περιέχει την τιµή του κόµβου. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Ενας σωρός και η υλοποίησή του µε πίνακα i a[i] 0 0 0 0 Θέση = + 0 0 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Εισαγωγή Εισάγουµε το στοιχείο σαν τελευταίο ϕύλλο στο πλήρες δυαδικό δένδρο. Συγκρίνουµε την τιµή του µε αυτήν του πατέρα του και αν έχει µεγαλύτερη τιµή, τις αντιµεταθέτουµε. Η διαδικασία επαναλαµβάνεται εωσότου ικανοποιείται η συνθήκη του σωρού. Στην χείριστη περίπτωση η πολυπλοκότητα είναι O(log n). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 0 /

Αλγόριθµος εισαγωγής Σωρός-Εισαγωγή(u : στοιχείο). n = n+. k = n, a[k] = u. while a[k/] < a[k]. swap (a[k], a[k/]). k = k/. end while Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Εισαγωγή ενός νέου στοιχείου στο σωρό() 0 0 0 0 0 0 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Εισαγωγή ενός νέου στοιχείου στο σωρό() 0 0 0 0 0 0 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

ιαγραφή Η διαδικασία διαγραφής του ου στοιχείου του σωρού αντικαθιστά τη ϱίζα του δέντρου που παριστάνει τον σωρό, µε το δεξιότερο ϕύλλο του τελευταίου επιπέδου του δένδρου. Επειτα συγκρίνεται η τιµή της νέας ϱίζας µε των παιδιών της και αν είναι µικρότερη από κάποια, την αντιµεταθέτουµε µε την µεγαλύτερη. Η διαδικασία επαναλαµβάνεται για το νέο στοιχείο, µέχρι να ικανοποιηθεί η συνθήκη του σωρού. Στην χείριστη περίπτωση η πολυπλοκότητα είναι O(log n). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Σωρός - ιαγραφή. a[] = a[n]. n = n, i =. do. l = i, r = i +. if l n and a[l] > a[i] then max = l. else max = i. if r n and a[r] > a[max] then max = r. if i max then swap (a[i], a[max]), i = max. else break 0. while (i < n) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

ιαγραφή της ϱίζας από το το σωρό () 0 0 0 0 0 0 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

ιαγραφή της ϱίζας από το το σωρό () 0 0 0 0 0 0 Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Εισαγωγή ενός νέου στοιχείου στο σωρό Εισαγωγή Εισαγωγή Εισαγωγή Εισαγωγή Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Αλγόριθµος κατασκευής σωρού Κατασκευή-Σωρού (πίνακας a µε n στοιχεία). for i = to n do. Σωρός-Εισαγωγή(a[i]). end for Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Αλγόριθµος διατήρησης ιδιότητας σωρού ιατήρηση-σωρού( πίνακας a µε n στοιχεία, ϑέση i). l = i. r = i +. if l n and a[l] > a[i]. max = l. else. max = i. if r n and a[r] > a[max]. max = r. if i max then 0. swap (a[i], a[max]). ιατήρηση-σωρού (a, max) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 0 /

Αλγόριθµος κατασκευής σωρού σε γραµµικό χρόνο Θεωρούµε τώρα ότι στην αταξινόµητη ακολουθία όλα τα στοιχεία που είναι ϕύλλα του σωρού είναι υπο-σωροί που πληρούν την ιδιότητα του σωρού. Για κάθε επόµενο εσωτερικό κόµβο (από κάτω προς τα πάνω, δηλαδή από n/ εώς ) επιβάλλουµε την συνέπεια µε την ιδιότητα σωρού χρησιµοποιώντας τον αλγ οριυµο ιατήρηση-σωρού Κατασκευή-Σωρού (πίνακας a µε n στοιχεία). for i = n/ to do. ιατήρηση-σωρού (a, i). end for Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Κατασκευή Σωρού Υποθέτουµε ότι τα στοιχεία έρχονται µε µια σειρά και δεν είναι γνωστά εκ των προτέρων. Στην χείριστη περίπτωση (αύξουσα ακολουθία), αν εισάγεται στο ϐήµα i, τότε ϑα χρειαστεί O(log i) ϐήµατα. Ο χρόνος του αλγορίθµου ϕράσσεται ως: O(log )+O(log )+...+O(log n) = O(n log n) Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Κατασκευή Σωρού (συν.) Μπορούµε να επιτύχουµε καλύτερο χρόνο για την κατασκευή του σωρού αν γνωρίζουµε από την αρχή όλην την ακολουθία εισόδου και την έχουµε αποθηκευµένη σε έναν πίνακα. Ο αρχικός πίνακας εισόδου a είναι η αναπαράσταση ενός αταξινόµητου σωρού, επιβάλλουµε την ιδιότητα του σωρού, από τους χαµηλότερους εσωτερικούς κόµβους και πηγαίνοντας προς την ϱίζα. Ο αλγόριθµος συγκρίνει το τρέχον στοιχείο µε τα παιδιά του ανυψώνοντας το µεγαλύτερο, εωσότου και τα δύο παιδιά του έχουν µικρότερη τιµή. Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Αλγόριθµος κατασκευής σωρού σε γραµµικό χρόνο() Εκτέλεση του αλγορίθµου κατασκευής του σωρού, όταν ο πίνακας εισόδου είναι ο [,,,,,,,, ]. Βήµα Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Αλγόριθµος κατασκευής σωρού σε γραµµικό χρόνο () Βήµα Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Αλγόριθµος κατασκευής σωρού σε γραµµικό χρόνο () Βήµα Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Αλγόριθµος κατασκευής σωρού σε γραµµικό χρόνο () Βήµα Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Πολυπλοκότητα Η πολυπλοκότητα µίας κλήσης της συνάρτησης ιατήρηση-σωρού είναι O(h) άρα η συνολική πολυπλοκότητα τηςκατασκευή-σωρού ϕράσσεται από log n h=0 n ( log n O(h) = h+ O n h=0 h ) h Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Πολυπλοκότητα (συν.) Επειδή τώρα για x = / έχουµε kx k = k=0 k=0 x ( x) k k = Αρα η πολυπλοκότητα της κατασκευής του σωρού ϕράσσεται από O(n ) = O(n). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Ταξινόµηση µε σωρό Αρχικά, κατασκευάζούµε τον σωρό των προς ταξινόµηση στοιχείων και κάνουµε διαδοχικές διαγραφές της ϱίζας του δένδρου. Η συνάρτησημέγιστος-σωρού()επιστρέφει την ϱίζα του σωρού. HeapSort (πίνακας a µε n στοιχεία). Κατασκευή-Σωρού (a). for i = to n. a[i] = Μέγιστος-Σωρού(). Σωρός- ιαγραφή() Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 0 /

Ταξινόµηση µε σωρό Παράδειγµα: Να ταξινοµηθούν µε τη ϐοήθεια σωρού τα παρακάτω στοιχεία,,,,,,. Λύση: Κατασκευάζουµε το σωρό. Σχήµα: Ο σωρός Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Ταξινόµηση µε σωρό Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /

Πολυπλοκότητα Αφαιρούµε διαδοχικά το µεγαλύτερο στοιχείο. Το πρώτο ϐήµα του αλγορίθµου απαιτεί χρόνο O(n), το δεύτερο απαιτεί χρόνο O(n log n). Συνολικά εποµένως ο αλγόριθµος ταξινόµησης µε σωρό έχει πολυπλοκότητα O(n log n). Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 /