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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

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

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

Συλλογές, Στοίβες και Ουρές

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

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

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

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

Βασικές Δομές Δεδομένων

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

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

Στοίβες με Δυναμική Δέσμευση Μνήμης

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

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

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔυαδικάΔΕΝΔΡΑΑναζήτησης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 3 Δέντρα

Βασικές οµές εδοµένων

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

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

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

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

Red-Black Δέντρα. Red-Black Δέντρα

Transcript:

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

Ουρά Προτεραιότητας Η δομή δεδομένων Ουρά (Queue) υποστηρίζει FIFO (first- in first- out) στρατηγική για εισαγωγές και διαγραφές στοιχείων. Σε διάφορες εφαρμογές, όμως, υπάρχει η ανάγκη επιλογής στοιχείων από κάποιο σύνολο σύμφωνα με κάποια σειρά προτεραιότητας (π.χ., σε λειτουργικά συστήματα). Σε ουρές προτεραιότητας κύρια σημασία έχει η προτεραιότητα του κάθε στοιχείου, πρώτο βγαίνει πάντα το στοιχείο με τη μεγαλύτερη προτεραιότητα. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2

Ουρά Προτεραιότητας (συν.) Ουρά Προτεραιότητας Ο ΑΤΔ ουρά προτεραιότητας ορίζεται ως μια ακολουθία στοιχείων συνοδευόμενη από τις πράξεις: Delete_Min*: Διαγράφει το ελάχιστο στοιχείο Θεωρούμε ότι το μικρότερο κλειδί έχει τη μεγαλύτερη προτεραιότητα Insert: Εισάγει ένα καινούριο στοιχείο ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 3

Υλοποίηση Ουράς Προτεραιότητας Πιθανές υλοποιήσεις: 1. Συνδεδεμένη λίστα Insert: Ο(1), Delete_Min: O(n) 2. Ταξινομημένη συνδεδεμένη λίστα Insert: Ο(n), Delete_Min: O(1) 3. Δυαδικό δένδρο αναζήτησης Insert, Delete_Min: O(log n) Ερώτηση: Υπάρχει καλύτερη υλοποίηση; Ναι, μια ενδιαφέρουσα τάξη δυαδικών δένδρων, οι σωροί. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4

Ο ΑΤΔ Σωρός Σωρός ελαχίστων (MinHeap) είναι ένα δυαδικό δένδρο που ικανοποιεί: δομική ιδιότητα: είναι πλήρες ιδιότητα σειράς: το κλειδί ενός κόμβου είναι μικρότερο από τα κλειδιά των παιδιών του Σε κάθε υπόδενδρο, το μικρότερο στοιχείο βρίσκεται στη ρίζα. Δεν υπάρχει καμιά σχέση μεταξύ κλειδιών αδελφών. Ποια από τα πιο κάτω δένδρα είναι σωροί; 28 28 28 44 60 44 23 60 44 33 60 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5

Πλήρη Δυαδικά Δέντρα Σε ένα πλήρες δυαδικό δένδρο, στο επίπεδο k υπάρχουν το πολύ 2 k- 1 κόμβοι. Σε ένα πλήρες δυαδικό δένδρο ύψους h όλα τα επίπεδα μέχρι το h- οστό είναι εντελώς γεμάτα, και το επίπεδο h+1 είναι γεμάτο από τα αριστερά στα δεξιά. Ο αριθμός των κόμβων μέχρι το επίπεδο h δίνεται από το άθροισμα i=1 h 2 (i 1) = 2 h 1 Επομένως, ένα πλήρες δένδρο ύψους h έχει μεταξύ 2 h και 2 h+1 1 κόμβους. Ένα πλήρες δένδρο με n κόμβους έχει ύψος Ο(log n). ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 6

Υλοποίηση με πίνακες Ένα πλήρες δυαδικό δένδρο μπορεί να αποθηκευτεί σε πίνακα ως εξής: στη θέση 1 βάζουμε το στοιχείο της ρίζας αν κάποιος κόμβος u βρίσκεται στη θέση i, τότε τοποθετούμε το αριστερό του παιδί στη θέση 2i, και το δεξιό του παιδί στη θέση 2i +1. Ο πατέρας ενός κόμβου στη θέση i (εκτός από τη ρίζα) βρίσκεται στη θέση i/2. Πλεονέκτημα: Δεν χρειάζονται δείκτες, έτσι εξοικονομούμε μνήμη και έχουμε πιο απλές διαδικασίες. Μειονέκτημα: πρέπει να γνωρίζουμε από την αρχή το μέγιστο μέγεθος του σωρού. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 7

Παράδειγμα αναπαράστασης σωρού ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 8 28 44 42 60 Θέση 0 1 2 3 4 5 6 7 Στοιχείο 0 28 44 42 60

Παράδειγμα αναπαράστασης σωρού ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 9 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Θέση 0 1 2 3 4 5 6 7 8 9 10 Στοιχείο 0 Α Β Γ Δ Ε Ζ Η Θ Ι Κ

Υλοποίηση Σωρού Ένας σωρός μπορεί να υλοποιηθεί ως μια εγγραφή Ηeap με τρία πεδία: 1. size (τύπου int): αποθηκεύει το μέγεθος του σωρού. 2. maxsize (τύπου int): το μέγιστο μέγεθος του πίνακα, 3. contents (τύπου πίνακα): τα στοιχεία του σωρού. Αυτή η δομή θα πρέπει να υποστηρίζει τις πράξεις: makeεmpty, isempty, isfull, insert, deletemin. public class Heap { private int contents[]; private int size; private int maxsize; public Heap(int n) { this.contents = new int[n]; this.size = 0; this.maxsize = n- 1; public boolean isempty(){ return this.size==0; public boolean isfull(){ return this.size==this.maxsize; ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 10

Εισαγωγή κόμβου Σε ένα πλήρες δυαδικό δένδρο υπάρχει μία μόνο θέση όπου μπορεί να εισαχθεί κόμβος και η εισαγωγή να διατηρήσει το δένδρο πλήρες. Αυτή η θέση είναι η πιο δεξιά στο τελευταίο επίπεδο του δένδρου, και αντιστοιχεί στη θέση size+1 του πίνακα. Για να εισάγουμε ένα κλειδί k σε ένα σωρό σκεφτόμαστε ως εξής: Πιθανόν το k να μην μπορεί να μπει στην κενή θέση size+1, γιατί μια τέτοια εισαγωγή να παραβιάζει τη δεύτερη ιδιότητα του σωρού. Έστω ότι η κενή θέση είναι η x, o πατέρας αυτής της θέσης είναι ο u, και k είναι το κλειδί του u. Τότε εφαρμόζουμε τα εξής: 1. αν k>k, ή, η θέση x αντιστοιχεί στη ρίζα, τότε contents[x] = k 2. αν k<k, τότε βάλε το k στη θέση x, και ανάλαβε να γεμίσεις τη θέση u, δηλαδή contents[x] =k ; x=u; και 3. επανάλαβε τη διαδικασία. Αυτή η διαδικασία σύγκρισης με τον πατρικό κόμβο και αναρρίχησης μπορεί να συνεχιστεί μέχρι τη ρίζα του δένδρου. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 11

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 12 Σωρός με Στατική Δέσμευση Μνήμης: Υλοποίηση Συνάρτηση public void insert(int k); : public void insert(int k) { if (this.size < this.maxsize) { int index = this.size + 1; while (index > 1 && this.contents[(index / 2)] > k) { this.contents[index] = this.contents[(index / 2)]; index = index / 2; this.contents[index] = k; this.size++; this.contents[0] = this.size;

Παράδειγμα 1: Εισαγωγή σε Σωρό ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 13 29 29 44 42 Insert 3 44 42 3<29è Move 29 3 root=3 3<è Move 44 42 29 44 42 29 0 1 2 3 4 5 6 7 0 3 44 42 29

Παράδειγμα 2: Εισαγωγή σε Σωρό ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 14 29 29 44 42 Insert 28 44 42 28<29è Move 29 28>è Save 28 44 42 29 44 42 29 0 1 2 3 4 5 6 7 0 28 44 42 29

Διαγραφή Ελάχιστου Στοιχείου Το ελάχιστο στοιχείο βρίσκεται πάντοτε στην κορυφή και η διαγραφή του προκαλεί μια κενή θέση στη ρίζα. Θα πρέπει να κατεβάσουμε αυτή την κενή θέση προς τα κάτω και δεξιά. Σε κάθε βήμα ελέγχουμε τα παιδιά της εκάστοτε κενής θέσης. Έστω ότι x είναι η κενή θέση: 1. Αν το κλειδί που βρίσκεται στην τελευταία θέση του σωρού είναι μικρότερο από τα κλειδιά των παιδιών του x τότε μεταφέρουμε το κλειδί αυτό στην κενή θέση και μειώνουμε το μέγεθος του σωρού contents [x] = contents [size]; size- - ; και τερματίζουμε τη διαδικασία. 2. Διαφορετικά, διαλέγουμε το παιδί u του x το οποίο έχει το μικρότερο κλειδί, μεταφέρουμε το κλειδί του u στο x και κάνουμε κενή θέση τη u: contents[x] = u; x = u 3. Eπαναλαμβάνουμε τη διαδικασία. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 15

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 16 Σωρός με Στατική Δέσμευση Μνήμης: Υλοποίηση Συνάρτηση public int deletemin() : public int deletemin() { int min = 0, last; int x = 1, child = 0; if (!isempty()) { min = this.contents[1]; last = this.contents[this.size]; this.size- - ; this.contents[0] = this.size; while ((x * 2) <= this.size) { child = x * 2; if (child!= this.size && this.contents[child + 1] < this.contents[child]) child++; if (last > this.contents[child]) { this.contents[x] = this.contents[child]; x = child; else break; this.contents[x] = last; return min;

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 17 Παράδειγμα 3: Εξαγωγή από Σωρό 22 44 26 3 28 Delete Min Decrease Size Last 28 22 44 26 22< è 22:Move up Last 28 44 26 22 26<44, Last>26 è 26:Move up 22 22 44 26 Reached Leafè Set to last 26 44 28 0 1 2 3 4 5 6 0 22 26 44 28

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 18 Παράδειγμα 4: Εξαγωγή από Σωρό 3 Delete Min Last 22< è 22:Move up 22 Decrease Size 102 22 104 109 101 102 104 109 101 Last 102 22 22 104 109 101 104<109, Last<104 è Last:Move up BREAK 102 104 109 101 0 1 2 3 4 5 6 0 22 102 104 109 101

Μερικά Σχόλια Ο χρόνος εκτέλεσης των διαδικασιών InsertHeap και DeleteMin είναι της τάξης O(h) δηλαδή Ο(log n). (h: ύψος, n: αριθμός κόμβων) Ποιο είναι το όφελος της δομής σε σύγκριση με δυαδικά δένδρα αναζήτησης; Οι σωροί χρησιμοποιούνται ευρέως σε λειτουργικά συστήματα, συστήματα όπου γίνεται διαμερισμός του χρόνου του υπολογιστή σε > 1 εργασίες (task scheduling) και σε μεταγλωττιστές. Συμμετρικά, μπορούμε να ορίσουμε τη δομή maxheap, όπου η ρίζα περιέχει το μέγιστο στοιχείο. Εκτός από δυαδικούς σωρούς, μπορούμε να ορίσουμε τους δ- σωρούς (d- heaps), όπου κάθε κόμβος έχει d παιδιά. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 19