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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

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

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

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

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

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

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

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

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

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

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

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

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

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

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

Advanced Data Indexing

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

Advanced Data Indexing

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

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

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

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

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

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

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

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

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

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

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

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

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

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

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

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

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

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

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

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

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

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

Εκτενείς Δομές Δεδομένων

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

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

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

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

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

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

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

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

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

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

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

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

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

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

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

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

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

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

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

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

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

Transcript:

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 14: Δέντρα IV - B-Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - 2-3 Δένδρα, Εισαγωγή και άλλες πράξεις - Άλλα Δέντρα: Β-δένδρα, Β+-δέντρα, R-δέντρα

2-3 (2 ή 3 παιδιά) Δένδρα Γενίκευση των δυαδικών δένδρων αναζήτησης. Ορισμός Κάθε κόμβος περιέχει ένα ή δύο κλειδιά. Ένας εσωτερικός κόμβος u με ένα κλειδί, k 1 έχει δύο παιδιά (υπόδενδρα): το αριστερό, u.left, το οποίο περιέχει κλειδιά < k 1, και το μεσαίο, u.center, το οποίο περιέχει κλειδιά > k 1. Ένας εσωτερικός κόμβος u με δύο κλειδιά, k 1 < k 2, έχει τρία παιδιά, το αριστερό, u.left, το μεσαίο, u.center, και το δεξί, u.right. Όλα τα κλειδιά του υποδένδρου u.left είναι < k 1, όλα τα κλειδιά του u.center είναι k 1 < και < k 2 και όλα τα κλειδιά του u.right είναι > k 2. Όλα τα φύλλα βρίσκονται στο ίδιο επίπεδο. k 1 < k 1 > k 1 k 1 k 2 < k 1 > k 2 k 1 < x< k 2 Κόμβος με 1 κλειδί Κόμβος με 2 κλειδιά Σημείωση: Θεωρήστε ότι σε περίπτωση ισότητας με το κλειδί, η εισαγωγή θα γίνεται αριστερά οπόταν η συνθήκη αριστερά είναι <= K1 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2

Παραδείγματα 2-3 Δένδρων ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 3 Όλα τα 2-3 δένδρα είναι ισοζυγισμένα. Δηλαδή όλα τα φύλλα έχουν την ίδια απόσταση από την ρίζα

Υλοποίηση 2-3 Δένδρων Ένας κόμβος 2-3 Δένδρου μπορεί να παρασταθεί ως μια εγγραφή με 6 πεδία: 1. numkeys, τύπου int, που δηλώνει τον αριθμό των κλειδιών που περιέχει ο κόμβος, 2. key1, όπου αποθηκεύεται το πρώτο κλειδί, 3. key2, όπου αποθηκεύεται το δεύτερο κλειδί, αν υπάρχει, 4. left, τύπου δείκτη, που δείχνει στο αριστερό παιδί του κόμβου, 5. center, τύπου δείκτη, που δείχνει στο μεσαίο παιδί του κόμβου, 6. right, τύπου δείκτη, που δείχνει στο δεξί παιδί του κόμβου αν υπάρχει. Ένα δένδρο αναπαρίσταται ως ένας δείκτης σε κόμβο 2-3 δένδρου (που δείχνει στη ρίζα) και επιτρέπει τις πράξεις εισαγωγής, διαγραφή και αναζήτησης. NODE *root; ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4

Ιδιότητες 2-3 δένδρου Αν Ν(h) είναι ο μικρότερος αριθμός κλειδιών ενός 2-3 δένδρου ύψους h, τότε Ν(0) = 1, Ν(h) = 1 + 2 N(h-1) Αν M(h) είναι ο μεγαλύτερος αριθμός κλειδιών ενός 2-3 δένδρου ύψους h, τότε M(0) = 2, M(h) = 2 + 3 M(h-1) Ο αριθμός κλειδιών ενός 2-3 δένδρου ύψους h είναι το πολύ 3 h+1 1 και το λιγότερο 2 h+1 1. Επομένως, το ύψος ενός 2-3 δένδρου με n κόμβους είναι O(log n). Η διαδικασία εύρεσης στοιχείου σε ένα 2-3 δένδρο είναι εύκολη (παρόμοια με αυτή ενός ΔΔΑ). Ο χρόνος εκτέλεσης της είναι τάξης O(log 2 n) ~ log 2 n/log 2 3=0.631 * log 2 n στην καλύτερη περίπτωση όπου κάθε κόμβος έχει 3 παιδιά ακριβώς. ~ log 2 n στην χειρότερη περίπτωση όπου κάθε κόμβος έχει 2 παιδιά ακριβώς ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5

Εισαγωγή κόμβου σε ένα 2-3 δένδρο Η εισαγωγή κάποιου κλειδιού k σε ένα 2-3 Δένδρο μπορεί να χωριστεί στις ακόλουθες τρεις λογικές φάσεις 1. Καθοδική Φάση (Downward Phase) Σε αυτή την φάση διανύουμε αναδρομικά το δένδρο μέχρι να φθάσουμε σε τερματικό κόμβο (δηλαδή κάποιο φύλλο). Δηλαδή: αν k<u.key1 τότε προχώρα στον κόμβο u.left αν k>u.key2 τότε προχώρα στον κόμβο u.right αν u.key1 < k < u.key2 τότε προχώρα στον κόμβο u.center. 2. Τερματική Φάση (Terminal Phase) Όταν φτάσουμε σε φύλλο τότε προσπαθούμε να κάνουμε την εισαγωγή Αν δεν έχει αρκετό χώρο τότε διασπάται το φύλλο και «ανασηκώνουμε» (kick up) αναδρομικά το μεσαίο στοιχείο στον πατέρα. 3. Ανοδική Φάση (Upward Phase) Σε αυτή την φάση κάνουμε την εισαγωγή αναδρομικά στον γονέα αν δεν πετύχαμε εισαγωγή στην τερματική φάση. ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 6

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 7 Περιγραφή Κάποιων Συμβολισμών Στις επόμενες διαφάνειες θα χρησιμοποιήσουμε τους ακόλουθους συμβολισμούς Το στοιχείο το οποίο θέλουμε να εισάγουμε Ο κόμβος Χ Το υπόδενδρο r Τερματικός Κόμβος με 2 κενούς δείκτες

1) Καθοδική Φάση (Downward Phase) Εισαγωγή του στοιχείου v Η ρίζα περιέχει 1 στοιχείο insert insert Εισαγωγή του στοιχείου v η ρίζα περιέχει 2 στοιχεία Προσοχή: Σε αυτή την φάση απλά ζητάμε σε ένα από τα υποδένδρα να χειριστεί την εισαγωγή αλλά δεν κάνουμε την εισαγωγή ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 8

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 9 Καθοδική Φάση (συν.) Αν u.numkeys = 1, τότε αν k<u.key1 τότε προχώρα στον κόμβο u.left αν k>u.key1 τότε προχώρα στον κόμβο u.center αν k=u.key1 τότε σταμάτα. Αν u.numkeys = 2, τότε αν k<u.key1 τότε προχώρα στον κόμβο u.left αν k>u.key2 τότε προχώρα στον κόμβο u.right αν u.key1 < k < u.key2 τότε προχώρα στον κόμβο u.center. διαφορετικά, σταμάτα.

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 10 2) Τερματική Φάση (Terminal Phase) Α. Όταν φτάσουμε σε τερματικό κόμβο και υπάρχει χώρος τότε μπορούμε να κάνουμε την εισαγωγή κατευθείαν. Δηλαδή: Αν ΔΕΝ υπάρχει χώρος τότε διασπάται (split) ο τερματικός κόμβος και προάγεται (kick-up) το μεσαίο στοιχείο στον πατέρα (δες επόμενη διαφάνεια)

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 11 2) Τερματική Φάση (Terminal Phase) (συν.) Αναλυτικά οι υπό-φάσεις της Διάσπασης (Split) και Προαγωγής (Kick-up) Kick up insert Kick up split split insert Kick up split

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 12 Τερματική Φάση (συν.) Έστω ότι προσθέτουμε το κλειδί k στο φύλλο u. Αν u.numkeys = 1, k 1 = u.key1, τότε u.key1 = min (k 1, k), u.key2 = max (k 1, k), u.numkeys = 2 Αν u.numkeys = 2, k 1 = u.key1, k 2 =u.key2, τότε u.key1 = min (k 1, k 2, k), u.numkeys = 1, p.numkeys = 1, p.key1 = max(k 1, k 2,k). προχώρα στην ανοδική φάση με παραμέτρους p, mid(k 1, k 2,k)

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 13 3: Ανοδική Φάση (Upward Phase) Όταν φτάσουμε στον πατέρα και υπάρχει χώρος τότε μπορούμε να κάνουμε την εισαγωγή κατευθείαν. Δηλαδή: Kick up Kick up Αν ΔΕΝ υπάρχει χώρος τότε πρέπει να διασπαστεί ο πατέρας και να προαχθεί (kick-up) το μεσαίο στοιχείο στον πατέρα του πατέρα (δες επόμενη διαφάνεια)

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 14 3: Ανοδική Φάση (Upward Phase) συνέχεια Όταν φτάσουμε στον πατέρα και δεν υπάρχει χώρος τότε αναδρομικά διασπάμε τον πατέρα μέχρι να εισαχθεί το στοιχείο. Αν διασπαστεί η ρίζα τότε αυξάνεται και το ύψος του δένδρου κατά 1! : w <= X < Y X < w <= Y Y < w

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 15 Ανοδική Φάση (συν.) Έστω ότι προσθέτουμε το κλειδί k και την αναφορά p στον κόμβο u. Αν u.numkeys = 1, k 1 = u.key1, τότε αν k > k 1, u.key2 = k, u.right = p, αν k < k 1, u.key1 = k, u.key2 = k 1, u.right = u.center, u.center = p. u.nunkeys = 2. Αν u.numkeys = 2, k 1 = u.key1, k 2 = u.key2, u.left = p 1, u.center = p 2, u.right = p 3, τότε υπάρχουν 3 περιπτώσεις που εξαρτώνται από τη σχέση των κλειδιών k, k 1, k 2. Aς ασχοληθούμε με την περίπτωση k < k 1 (οι άλλες δύο είναι παρόμοιες). Τότε u.key1 = k, u.center = p, u.numkeys = 1, q.numkeys = 1, q.key1 = k 2, q.left = p2, q.center = p3 αν ο u είναι η ρίζα τότε προχώρα στη φάση 3, διαφορετικά επανάλαβε τη φάση 2(β) με παραμέτρους (q, k 1 ) στον πατέρα του u.

Ολοκληρωμένο Παράδειγμα Εισαγωγής Παράδειγμα εισαγωγής της λέξης A L G O R I T H M S (γράμμα-γράμμα) σε ένα κενό 2-3 δένδρο. συνέχεια στην επόμενη διαφάνεια ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 16

Ολοκληρωμένο Παράδειγμα Εισαγωγής (συν.) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 17 Προσοχή σε αυτό το σημείο

Διαδικασία Εισαγωγής Κόμβου: Χρόνος Εκτέλεσης Η αναδρομική διαδικασία εισαγωγής κόμβου, παίρνει παραμέτρους: 1. την αναφορά στον κόμβο όπου θα γίνει η εισαγωγή, 2. το κλειδί που θέλουμε να προσθέσουμε (κατά την κάθοδο στο δένδρο), και επιστρέφει το ζεύγος (αναφορά σε παιδί, κλειδί) που θέλουμε να προσθέσουμε (κατά την άνοδο στο δένδρο). ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 18 Η διαδικασία εξαγωγής κλειδιών χρησιμοποιεί παρόμοιες ιδέες. Σ αυτή όμως την περίπτωση, αντί διάσπαση κόμβου έχουμε συγχώνευση κόμβων. Όλες οι διαδικασίες έχουν χρόνο εκτέλεσης ανάλογο με το ύψος του δένδρου. Άρα είναι τάξης Θ(log n).

Διαδικασία Εξαγωγής Κόμβου ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 19 Η διαδικασία εξαγωγής κλειδιών χρησιμοποιεί παρόμοιες ιδέες. Δηλαδή υπάρχουν πάλι οι τρεις φάσεις αλλά αντί διάσπαση κόμβου έχουμε συγχώνευση κόμβων. Όλες οι διαδικασίες έχουν χρόνο εκτέλεσης ανάλογο με το ύψος του δένδρου. Άρα είναι τάξης Ο(log n).

From: Sedgewick, Wayne ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 20

Για να μην έχουμε κόμβους διαφορετικών τύπων ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 21 From: Sedgewick, Wayne

Red-Black Trees are everywhere! ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 22 From: Sedgewick, Wayne

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 23 Παραλλαγή Οι πληροφορίες αποθηκεύονται μόνο στα φύλλα. Τα κλειδιά εσωτερικών κόμβων χρησιμεύουν μόνο για την αναζήτηση στο δένδρο. Δηλαδή, για κάποιο μη-τερματικό κόμβο u, το u.key1 δηλώνει το μικρότερο κλειδί στο μεσαίο υπόδενδρο (u.middle), ενώ το u.key2 (αν υπάρχει) δηλώνει το μικρότερο κλειδί στο δεξί υπόδενδρο (u.right). 18 16 25 32 9 12 16 17 18 22 25 27 32 39

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 24 Β-δένδρα Γενίκευση του 2-3 δένδρου: μπορεί να αποθηκεύει περισσότερα από 2 κλειδιά σε κάθε κόμβο. Ένα δένδρο τάξης m ικανοποιεί τις πιο κάτω ιδιότητες: Έχει μια ρίζα η οποία έχει 0 ή περισσότερα παιδιά. Τα δεδομένα φυλάσσονται στα φύλλα και όλα τα φύλλα βρίσκονται στο ίδιο επίπεδο. Ένας εσωτερικός κόμβος με δείκτες p 0, p 1,, p n, έχει κλειδιά k 1,,k n, όπου k i είναι το μικρότερο κλειδί του υποδένδρου που δείχνεται από τον δείκτη p i. Όλοι οι εσωτερικοί κόμβοι (εκτός τη ρίζα) έχουν από m/2μέχρι m παιδιά, εναλλακτικά οι κόμβοι συμπτύσσονται 18 3 8 25 32 43 1 2 3 4 5 7 8 12 18 22 23 25 27 32 39 43 47

Β-Δένδρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 25 typically of page size e.g., ~4 KB Memory Disk From: Sedgewick, Wayne

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 26 Ένα Β-δένδρο τάξης m με n κλειδιά έχει ύψος O(log m n) Έχει διαδικασίες παρόμοιες με αυτές ενός 2-3 δένδρου, οι οποίες επίσης μπορεί να προκαλέσουν διάσπαση ή συγχώνευση της ρίζας. Διάφορες παραλλαγές τους χρησιμοποιούνται σε βάσεις δεδομένων (Databases) όπου οι κόμβοι αποθηκεύονται σε δευτερεύουσα μνήμη του υπολογιστή Το κόστος πρόσβασης ενός κόμβου στον μαγνητικό δίσκο είναι πολύ μεγαλύτερο απ αυτό της επεξεργασίας του. Για αυτό η μείωση του χρόνου αναζήτησης είναι πολύ σημαντική! Η τιμή του m επιλέγεται βάσει του πόσα κλειδιά μπορούν να αποθηκευτούν σε ένα καταχώρημα (block) μνήμης.

B-δένδρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 27!!!!!!!!! From: Sedgewick, Wayne

Β+ Δέντρα Παραλλαγή του Β-δέντρου όπου τα φύλλα είναι συνδεδεμένα μέσω αναφορών όπως σε μία συνδεδμένη λίστα Πλεονέκτημα όταν θέλουμε να δόύμε τις τιμές κάποιου block διαδοχικά ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 28

B-Trees for databases ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 29 http://www.unofficialmysqlguide.com/btrees.html

From: Sedgewick, Wayne ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 30

You know your algorithm is successful when ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 31 https://youtu.be/ypnfn-loply

Spatial Data Structures ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 32 R-Tree M-Tree

R-δέντρα Τα R-δέντρα χρησιμοποιούνται για χωρικές πληροφορίες, για παράδειγμα: Γεωγραφικές συντεταγμένες Ορθογώνια Πολύγωνα Παραδείγματα Επερωτήσεων Βρες όλα τα μουσεία που είναι 2km από την τοποθεσία μου Επέστρεψε όλα τα τμήματα του δρόμου σε απόσταση 5km ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 33

Kd-Trees Γενίκευση ΔΔΑ σε k-διαστάσεις. Σε κάθε επίπεδο του δέντρου, επιλέγουμε διάσταση και χωρίζουμε τα δεδομένα σε μικρότερα και μεγαλύτερα From: https://en.wikipedia.org/wiki/k-d_tree ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 34

Computer Graphics + spatial data-structures = L.F.E. We love to generate cool images fast Typical Data Structures: Kd-trees Binary Space Partitioning Trees Quad + Oct-trees ΕΠΛ426: Γραφικά Υπολογιστών We are waiting for you ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 35

The Stanford Dragon Model ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 36

The Stanford Dragon Model ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 37

The Stanford Dragon Model ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 38 From: https://www.artstation.com/artwork/xkkya

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 39 2-3 Δέντρα: Ασκήσεις Εισάγετε τα στοιχεία 65, 76, 71, 79, 82, 73, 84, 72, 77, 83 σε ένα 2-3 δέντρο

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 40 2-3 Δέντρα: Ασκήσεις Εισάγετε το στοιχείο 19 στο πιο κάτω 2-3 δέντρο 18 33 23 30 12 48 10 15 20 21 24 45 47 31 50 52

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 41 2-3 Δέντρα: Ασκήσεις Υλοποιήστε μία αποδοτική συνάρτηση που να επιστρέφει το ύψος ενός 2-3 δέντρου σε χρόνο τάξης Θ(h)