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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Red-black δέντρα (Κεφ. 5)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

JDSL Java Data Structures Library

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

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

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

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

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

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

Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. 5)

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

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

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

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

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

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

Transcript:

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Παπαγιαννόπουλος Δημήτριος 30 Μαρτίου 2017 18 Μαΐου 2017 papagianno@ceid.upatras.gr 1

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

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

Ορισμός Τι είναι η Ουρά Προτεραιότητας; Είναι ένας Αφηρημένος Τύπος Δεδομένων που: Διατηρεί ένα σύνολο στοιχείων 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. 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διωνυμικός Σωρός-Παράδειγμα Παράδειγμα - Διωνυμικός Σωρός 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 Παρατηρούμε ότι ΚΑΘΕ ΡΙΖΑ ΕΧΕΙ ΔΙΑΦΟΡΕΤΙΚΟ ΒΑΘΜΟ! B1 B 2 31

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

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

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

Ουρά-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) 35

Ουρά-Fibonacci - Αναπαράσταση δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων 23 7 3 17 24 18 52 38 30 26 46 39 41 35 Η σωρός Fibonacci είναι πιο χαλαρή δομή από την διωνυμική σωρό Δυναμικό μιας ουράς Fibonacci Η ορίζεται : Φ(Η)= t(h) + 2m(H) t(h) είναι το πλήθος των δέντρων και m(h) είναι το πλήθος των επισημασμένων κόμβων Φ(Η)= 5 + 2*3=11 36

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

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

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

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

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

Ουρά-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 3 18 52 38 17 30 24 26 46 Ο δείκτης δείχνει στον κόμβο με το ελάχιστο κλειδί μεταξύ των min[h 1 ] και min[h 2 53 39 41 35 42

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ουρά-Fibonacci - Εξαγωγή 7 18 38 24 17 23 21 39 41 26 46 30 52 35 62