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



Σχετικά έγγραφα
ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

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

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

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

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

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

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

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

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

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

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

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

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

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

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

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

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

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

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

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

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

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

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

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

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

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

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

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

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

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

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

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

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

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

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

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

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

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

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

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

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

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

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

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

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

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

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

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

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

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

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

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

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας

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

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

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

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

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

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Διαχρονικές δομές δεδομένων

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

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

Κεφ.11: Ευρετήρια και Κατακερματισμός

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

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

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

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

JDSL Java Data Structures Library

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Transcript:

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων

Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις

Ουρές προτεραιότητας Priority Queue Συχνά χρειαζόμαστε δομές δεδομένων για την εισαγωγή στοιχείων που: το καθένα έχει κάποια προτεραιότητα η σειρά διαγραφής να καθορίζεται από προτεραιότητα (μεγαλύτερη - μικρότερη), χωρίς να µας ενδιαφέρει η σειρά µε την οποία έγινε η εισαγωγή

Ουρές προτεραιότητας Priority Queue Συχνά χρειαζόμαστε δομές δεδομένων για την εισαγωγή στοιχείων που: το καθένα έχει κάποια προτεραιότητα η σειρά διαγραφής να καθορίζεται από προτεραιότητα (μεγαλύτερη - μικρότερη), χωρίς να µας ενδιαφέρει η σειρά µε την οποία έγινε η εισαγωγή Μια τέτοια ουρά ονομάζεται ουρά προτεραιότητας

Ορισμός Τι είναι η Ουρά Προτεραιότητας;

Ορισμός Τι είναι η Ουρά Προτεραιότητας; Είναι ένας Αφηρημένος Τύπος Δεδομένων που: Διατηρεί ένα σύνολο στοιχείων S, όπου κάθε στοιχείο έχει µια συσχετισμένη τιμή key(v), η οποία υποδηλώνει την προτεραιότητα του στοιχείου.

Εφαρμογές Τι είναι η Ουρά Προτεραιότητας; Είναι ένας Αφηρημένος Τύπος Δεδομένων που: Διατηρεί ένα σύνολο στοιχείων S, όπου κάθε στοιχείο έχει µια συσχετισμένη τιμή key(v), η οποία υποδηλώνει την προτεραιότητα του στοιχείου. Υποστηρίζει τις πράξεις: MakeQueue( ): Δημιουργία κενής ουράς Insert(Q,x): Εισαγωγή του στοιχείου x στην ουρά Q Delete(Q,x): Διαγραφή του στοιχείου x από την ουρά Q FindMin(Q): Επιστρέφει ένα δείκτη στην ελάχιστη τιμή της Q DeleteMin(Q): Διαγραφή του στοιχείου που περιέχει την μικρότερη τιμή Meld(Q 1, Q 2 ): Ένωση των ουρών Q 1 και Q 2 DecreaseKey(Q,x,k): Ανάθεση της τιμής k στο κλειδί που είναι αποθηκευμένο στο στοιχείο x της ουράς Q.

Εφαρμογές Άμεσες εφαρμογές: Υλοποίηση ουρών αναμονής με προτεραιότητες o ρομολόγηση με προτεραιότητες o Largest (Smallest) Processing Time First Έμμεσες εφαρμογές: Βασικό συστατικό πολλών και αλγορίθμων: o HeapSort o Αλγόριθμος Huffman o Αλγόριθμος Prim

Πιθανές υλοποιήσεις 1. Συνδεδεμένη λίστα 2. Ταξινομημένη συνδεδεμένη λίστα 3. Δυαδικό δένδρο αναζήτησης

Πιθανές υλοποιήσεις 1. Συνδεδεμένη λίστα 2. Ταξινομημένη συνδεδεμένη λίστα 3. Δυαδικό δένδρο αναζήτησης Υπάρχει καλύτερη υλοποίηση;

Πιθανές υλοποιήσεις 1. Συνδεδεμένη λίστα 2. Ταξινομημένη συνδεδεμένη λίστα 3. Δυαδικό δένδρο αναζήτησης Υπάρχει καλύτερη υλοποίηση; Οι ουρές προτεραιότητας είναι μία παραλλαγή της κλασσικής σωρού

Τι είναι η Διωνυμική Ουρά Προτεραιότητας; Είναι ένα δάσος που αποτελείται από ένα αριθμό δένδρων, τα οποία ονομάζονται Διωνυµικά Δένδρα (Binomial Trees)

Διωνυμικό Δέντρο Συμβολίζω ένα Διωνυμικό Δέντρο έστω B k Ορισμός i. Το δέντρο B 0 αποτελείται από ένα μόνο στοιχείο ii. Το δέντρο B k, k 1, αποτελείται από 2 B k-1 δέντρα που συνδέονται μεταξύ τους έτσι ώστε η ρίζα του ενός να είναι το αριστερότερο παιδί της ρίζας του άλλου

Διωνυμικό Δέντρο Β 0

Διωνυμικό Δέντρο Β 1

Διωνυμικό Δέντρο Β 0 Β 1 Β 0

Διωνυμικό Δέντρο Β 1

Διωνυμικό Δέντρο Β 2

Διωνυμικό Δέντρο Β 2

Διωνυμικό Δέντρο Β 2

Διωνυμικό Δέντρο Β 3

Διωνυμικό Δέντρο Β 3

Διωνυμικό Δέντρο Β 3

Διωνυμικό Δέντρο Β 4

Διωνυμικό Δέντρο Β 4

Διωνυμικό Δέντρο Β 4

Διωνυμικό Δέντρο Τι παρατηρούμε; 1. Το δέντρο B k έχει 2 k κόμβους 2. Το δέντρο έχει ύψος k k i 3. Στο επίπεδο i υπάρχουν κόμβοι 4. Η ρίζα του δέντρου B k έχει k παιδιά

Διωνυμικό Δέντρο Β 4

Διωνυμικό Δέντρο Το Β 4 έχει 16 κόμβους 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Β 4 16

Διωνυμικό Δέντρο Το Β 4 έχει 16 κόμβους 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Έχει ύψος 4 Β 4 16

Διωνυμικό Δέντρο Το Β 4 έχει 16 κόμβους Στο επίπεδο 3 έχει 4 κόμβους 2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 Έχει ύψος 4 Β 4 16

Διωνυμικό Δέντρο Το Β 4 έχει 16 κόμβους Η ρίζα έχει 4 παιδιά Στο επίπεδο 3 έχει 4 κόμβους 2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 Έχει ύψος 4 Β 4 16

Τι είναι ο Διωνυμικός Σωρός; Ένα σύνολο Διωνυμικών Δέντρων ή αλλιώς Ένα δάσος Διωνυμικών Δέντρων

Διωνυμικός Σωρός Οι ρίζες των δέντρων είναι οργανωμένες σε διασυνδεδεμένη λίστα Λίστα Ριζών Σε κάθε Διωνυμικό Δέντρο ενός Διωνυμικού Σωρού η τιμή που είναι αποθηκευμένη στο γονέα είναι μικρότερη από την τιμή/τις τιμές που είναι αποθηκευμένη/ες στα παιδιά του.

Διωνυμικός Σωρός Οι ρίζες των δέντρων είναι οργανωμένες σε διασυνδεδεμένη λίστα Λίστα Ριζών Σε κάθε Διωνυμικό Δέντρο ενός Διωνυμικού Σωρού η τιμή που είναι αποθηκευμένη στο γονέα είναι μικρότερη από την τιμή/τις τιμές που είναι αποθηκευμένη/ες στα παιδιά του. Που θα αποθηκευτεί η μικρότερη τιμή;;

Διωνυμικός Σωρός Οι ρίζες των δέντρων είναι οργανωμένες σε διασυνδεδεμένη λίστα Λίστα Ριζών Σε κάθε Διωνυμικό Δέντρο ενός Διωνυμικού Σωρού η τιμή που είναι αποθηκευμένη στο γονέα είναι μικρότερη από την τιμή/τις τιμές που είναι αποθηκευμένη/ες στα παιδιά του. Που θα αποθηκευτεί η μικρότερη τιμή;; Ανάλογα με τον αριθμό κόμβων δημιουργούμε τον Διωνυμικό Σωρό: Μετατρέπουμε τον αριθμό σε δυαδικό Με βάση την δύναμη του 2 που αντιστοιχεί σε 1 φτιάχνουμε τα αντίστοιχα Διωνυμικά Δέντρα Τοποθετούμε τα Διωνυμικά Δέντρα από αριστερά προς δεξιά κατά αύξουσα τάξη

Παράδειγμα - Διωνυμικός Σωρός 7 στοιχείων 7 (10) = 0111 (2) 7 (10) = 2 2 + 2 1 + 2 0

Παράδειγμα - Διωνυμικός Σωρός 7 στοιχείων 7 (10) = 0111 (2) 7 (10) = 2 2 + 2 1 + 2 0 Άρα ο Διωνυμικός Σωρός 7 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0

Παράδειγμα - Διωνυμικός Σωρός 7 στοιχείων 7 (10) = 0111 (2) 7 (10) = 2 2 + 2 1 + 2 0 Άρα ο Διωνυμικός Σωρός 7 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0 B 0

Παράδειγμα - Διωνυμικός Σωρός 7 στοιχείων 7 (10) = 0111 (2) 7 (10) = 2 2 + 2 1 + 2 0 Άρα ο Διωνυμικός Σωρός 7 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0 1 Διωνυμικό Δέντρο B 1 B 0 B 1

Παράδειγμα - Διωνυμικός Σωρός 7 στοιχείων 7 (10) = 0111 (2) 7 (10) = 2 2 + 2 1 + 2 0 Άρα ο Διωνυμικός Σωρός 7 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0 1 Διωνυμικό Δέντρο B 1 1 Διωνυμικό Δέντρο B 2 B 0 B 1 B 2

Παράδειγμα - Διωνυμικός Σωρός 7 στοιχείων 7 (10) = 0111 (2) 7 (10) = 2 2 + 2 1 + 2 0 Άρα ο Διωνυμικός Σωρός 7 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0 1 Διωνυμικό Δέντρο B 1 1 Διωνυμικό Δέντρο B 2 Παρατηρούμε ότι B 0 ΚΑΘΕ ΡΙΖΑ ΕΧΕΙ ΔΙΑΦΟΡΕΤΙΚΟ ΒΑΘΜΟ! B 1 B 2

Παράδειγμα - Διωνυμικός Σωρός 13 στοιχείων 13 (10) = 1101 (2) 13 (10) = 2 3 + 2 2 + 2 0

Παράδειγμα - Διωνυμικός Σωρός 13 στοιχείων 13 (10) = 1101 (2) 13 (10) = 2 3 + 2 2 + 2 0 Άρα ο Διωνυμικός Σωρός 13 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0 15

Παράδειγμα - Διωνυμικός Σωρός 13 στοιχείων 13 (10) = 1101 (2) 13 (10) = 2 3 + 2 2 + 2 0 Άρα ο Διωνυμικός Σωρός 13 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0 1 Διωνυμικό Δέντρο B 2 15 11 9 6 10

Παράδειγμα - Διωνυμικός Σωρός 13 στοιχείων 13 (10) = 1101 (2) 13 (10) = 2 3 + 2 2 + 2 0 Άρα ο Διωνυμικός Σωρός 13 στοιχείων θα αποτελείται από: 1 Διωνυμικό Δέντρο B 0 1 Διωνυμικό Δέντρο B 2 1 Διωνυμικό Δέντρο B 3 15 11 9 16 20 Οι τιμές που είναι αποθηκευμένες στους γονείς είναι μικρότερη από τις τιμές στα παιδιά 6 10 12 18 8 14 7 5

Αναπαράσταση Διωνυμικών Σωρών Χρησιμοποιείται η τεχνική αριστερό παιδί - δεξιός γείτονας, δηλαδή κάθε κόμβος αποθηκεύει ένα δείκτη για το αριστερό παιδί του ένα δείκτη για το δεξιό γείτονά του Και επιπλέον ένα δείκτη στο γονέα του ένα πεδίο με τον βαθμό του ένα πεδίο με την τιμή που έχει αποθηκευμένη σε αυτόν ένα πεδίο με διάφορα δεδομένα που δεν χρησιμοποιούνται στο σωρό

Πράξεις σε Διωνυμικούς Σωρούς 1. MakeQueue( ): Δημιουργεί έναν κενό σωρό σε Θ(1) χρόνο και μας επιστρέφει ένα δείκτη σε αυτόν το σωρό. 2. FindMin(Q): Για να βρούμε το ελάχιστο στοιχείο κάνουμε σειριακή αναζήτηση στη λίστα ριζών και βάζουμε ένα δείκτη στη ρίζα με την μικρότερη τιμή. 3. Meld(Q 1, Q 2 ): Για να ενώσουμε 2 ουρές (2 διωνυμικούς σωρούς) εκτελούμε 2 στάδια o Συγχωνεύουμε τις λίστες ριζών, προσέχοντας κάθε λίστα των ουρών να έχουν μοναδικό βαθμό o Μετά τη συγχώνευση οι βαθμοί στη λίστα που προκύπτει εμφανίζονται σε αύξουσα σειρά Για πιο εύκολα παραλληλίστε την παραπάνω διαδικασία με την πρόσθεση δυαδικών αριθμών

Ουρά Fibonacci Βασίζεται στο Διωνυμικό Σωρό (δηλαδή αποτελεί μια συλλογή από δένδρα) αλλά έχει πιο χαλαρή δομή. Καθένα από τα δέντρα ικανοποιεί την ιδιότητα του σωρού. Η αναπαράσταση του δάσους γίνεται με μία διπλά συνδεδεμένη κυκλική λίστα των ριζών των δέντρων.

Αναπαράσταση Ουράς Fibonacci Σε κάθε κόμβο x έχουμε: d(x): αριθμός παιδιών mark(x): boolean πεδίο, 1 όταν ο x χάνει ένα παιδί p(x): δείκτης προς τον γονέα c(x): δείκτης προς κάποιο παιδί l(x) και r(x): δείκτες στον αριστερό και δεξιό του γείτονα αντίστοιχα γονέας p(x) αριθμός παιδιών d(x) bit επισήμανσης mark(x) αριστερός γείτονας l(x) δεξιός γείτονας r(x) παιδί (οποιοδήποτε) c(x)

Αναπαράσταση Ουράς Fibonacci δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων 23 7 3 17 24 18 52 38 30 26 46 39 41 35 Η σωρός Fibonacci είναι πιο χαλαρή δομή από την διωνυμική σωρό

Αναπαράσταση Ουράς Fibonacci d(x) = 3 mark(x) = 0 δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων 23 7 3 17 24 18 52 38 30 26 46 39 41 35 Η σωρός Fibonacci είναι πιο χαλαρή δομή από την διωνυμική σωρό

Αναπαράσταση Ουράς Fibonacci δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων 23 7 3 17 24 d(x) = 1 mark(x) = 1 18 52 38 30 26 46 39 41 35 Η σωρός Fibonacci είναι πιο χαλαρή δομή από την διωνυμική σωρό

Πράξεις σε σωρούς Fibonacci Όταν θέλουμε να ενώσουμε 2 σωρούς Fibonacci (Meld) ενώνουμε τις λίστες ριζών και καθορίζουμε τον δείκτη ελαχίστου στη νέα δομή που δημιουργήθηκε. Όταν θέλουμε να εισάγουμε ένα στοιχείο σε ένα σωρό δημιουργούμε ένα διωνυμικό δέντρο για αυτό το στοιχείο μόνο και μετά το συνενώνουμε με το σωρό Fibonacci που έχουμε ήδη. Επανορθωτικές πράξεις εκτελούμε όταν διαγράφουμε κάποιο στοιχείο από τον σωρό.

Εισαγωγή κόμβου σε σωρό Fibonacci 23 7 3 18 52 38 17 30 24 26 46 Δημιουργείται νέο δένδρο με μόνο ένα κόμβο και εισάγεται στη λίστα των ριζών δίπλα από το min[h] 39 41 εισαγωγή(8) 23 7 8 3 18 52 38 17 30 35 24 26 46 Αν το εισαγόμενο κλειδί είναι το ελάχιστο τότε ο δείκτης min[h] δείχνει στο νέο κόμβο 39 41 35

Εισαγωγή κόμβου σε σωρό Fibonacci 23 7 3 18 52 38 17 30 24 26 46 Δημιουργείται νέο δένδρο με μόνο ένα κόμβο και εισάγεται στη λίστα των ριζών δίπλα από το min[h] εισαγωγή(2) 39 41 35 23 7 2 3 18 52 38 39 41 17 30 24 26 46 35 Αν το εισαγόμενο κλειδί είναι το ελάχιστο τότε ο δείκτης min[h] δείχνει στο νέο κόμβο

Ένωση δύο σωρών Fibonacci 23 7 3 18 52 38 39 41 17 30 24 26 46 35 2 5 12 33 53 Ενώνει τις αντίστοιχες λίστες ριζικών κόμβων χρησιμοποιώντας τους δείκτες min[h 1 ] και min[h 2 ] 23 7 2 5 12 33 53 3 18 52 38 39 41 17 30 24 26 46 35 Ο δείκτης δείχνει στον κόμβο με το ελάχιστο κλειδί μεταξύ των min[h 1 ] και min[h 2

Εξαγωγή ελάχιστου σωρού Fibonacci 23 7 21 3 18 52 38 17 30 24 26 46 1 ο βήμα διαγραφής μέγιστου 39 41 35 23 7 21 18 52 38 39 41 17 30 24 26 46 Διαγράφει τον κόμβο με το ελάχιστο κλειδί και ενοποιεί δένδρα στο ριζικό επίπεδο 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 17 24 23 39 41 30 26 46 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 17 24 23 39 41 30 26 46 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 38 24 17 23 52 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 21 18 38 24 17 23 52 39 41 26 46 30 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 18 38 24 17 23 21 39 41 26 46 30 52 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 18 38 24 17 23 21 39 41 26 46 30 52 35

Εξαγωγή ελάχιστου σωρού Fibonacci Η ρουτίνα ενοποίησης χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών 0 1 2 3 7 18 38 24 17 23 21 39 41 26 46 30 52 35

Εξαγωγή ελάχιστου σωρού Fibonacci 7 18 38 24 17 23 21 39 41 26 46 30 52 35