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

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

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

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

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

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

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

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

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

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

AVL-trees C++ implementation

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

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

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

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

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

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

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

ιαφάνειες παρουσίασης #10 (β)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

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

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

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

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

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

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

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

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

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

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

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

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

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

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

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

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

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

ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

Τεχνολογία μνημών Ημιαγωγικές μνήμες Μνήμες που προσπελαύνονται με διευθύνσεις:

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

Δημιουργία Δυαδικών Δέντρων Αναζήτησης

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

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

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

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Transcript:

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

Το πρόβλημα Αναζήτηση Θέλουμε να διατηρήσουμε αντικείμενα με κλειδιά και να μπορούμε εκτός από προσθαφαίρεση αντικειμένων να κάνουμε γρήγορη αναζήτηση κάποιου αντικειμένου με βάση ένα κλειδί. Χαροκόπειο Πανεπιστήμιο 2/82

Παράδειγμα Έχουμε αντικείμενα που αντιπροσωπεύουν τραπεζικές συναλλαγές και θέλουμε να κάνουμε αναζήτηση με βάση ένα κλειδί που είναι η ημερομηνία. Χαροκόπειο Πανεπιστήμιο 3/82

Αναζήτηση Μπορούμε να υλοποιήσουμε μία δομή που να παρέχει αναζήτηση με διάφορους τρόπους. Το ζητούμενο είναι να είναι η αναζήτηση αποδοτική ταυτόχρονα με τις υπόλοιπες λειτουργίες. π.χ μία υλοποίηση αναζήτησης σε λίστα δεν είναι αποδοτική Χαροκόπειο Πανεπιστήμιο 4/82

Δυαδικά Δέντρα Αναζήτησης (ΔΔΑ) Binary Search Tree (BST) Ορισμός Ένα δυαδικό δέντρο αναζήτησης είναι ένα δυαδικό δέντρο όπου κάθε κόμβος είναι συσχετισμένος με ένα κλειδί και με την πρόσθετη ιδιότητα ότι το κλειδί οποιουδήποτε κόμβου είναι μεγαλύτερο (ή ίσο) από τα κλειδιά όλων των κόμβων του αριστερού υποδέντρου αυτού του κόμβου, και μικρότερο από τα κλειδιά όλων των κόμβων του δεξιού υποδέντρου αυτού του κόμβου. Χαροκόπειο Πανεπιστήμιο 5/82

Δυαδικά Δέντρα Αναζήτησης (ΔΔΑ) Binary Search Tree (BST) k k > k k + Χαροκόπειο Πανεπιστήμιο 6/82

Παράδειγμα Δυαδικό Δέντρα Αναζήτησης (ΔΔΑ) 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 7/82

Αναζήτηση σε ΔΔΑ Αλγόριθμος ξεκινάμε από την ρίζα εάν είμαστε σε ένα κόμβο και βρούμε το κλειδί που ψάχνουμε τότε επιστρέφουμε την πληροφορία αυτού του κόμβου αλλιώς πάμε δεξιά ή αριστερά ανάλογα με την σύγκριση του κλειδιού που ψάχνουμε και του κλειδιού του κόμβου Χαροκόπειο Πανεπιστήμιο 8/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 9 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 9/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 9 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 9/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 9 9 < 15 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 9/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 9 9 < 15 15 9 < 13 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 9/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 9 9 < 15 15 9 < 13 13 18 6 14 16 19 9 > 6 5 9 Χαροκόπειο Πανεπιστήμιο 9/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 17 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 10/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 17 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 10/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 17 15 17 > 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 10/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 17 15 17 > 15 13 18 17 < 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 10/82

Αναζήτηση σε ΔΔΑ Αναζήτηση του 17 15 17 > 15 13 18 17 < 18 6 14 16 19 5 9 17 > 16 NULL Χαροκόπειο Πανεπιστήμιο 10/82

Διάσχιση inorder κανόνας Επισκεπτόμαστε πρώτα το αριστερό υποδέντρο, μετά τον κόμβο και μετά το δεξιό υποδέντρο Επισκεπτόμαστε τους κόμβους με αύξουσα σειρά κλειδιού. Η διάσχιση πέρνει γραμμικό χρόνο O(n) όπου n τα στοιχεία του δέντρου. Χαροκόπειο Πανεπιστήμιο 11/82

Εισαγωγή σε ΔΔΑ Αλγόριθμος τρέχουμε πρώτα μία αναζήτηση εάν βρούμε το κλειδί δεν κάνουμε τίποτα αλλιώς προσθέτουμε ένα καινούριο κόμβο με το νέο κλειδί στο σημείο που σταμάτησε η αναζήτηση Χαροκόπειο Πανεπιστήμιο 12/82

Εισαγωγή σε ΔΔΑ Εισαγωγή του 17 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 13/82

Εισαγωγή σε ΔΔΑ Εισαγωγή του 17 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 13/82

Εισαγωγή σε ΔΔΑ Εισαγωγή του 17 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 13/82

Εισαγωγή σε ΔΔΑ Εισαγωγή του 17 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 13/82

Εισαγωγή σε ΔΔΑ Εισαγωγή του 17 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 13/82

Εισαγωγή σε ΔΔΑ Εισαγωγή του 17 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 13/82

Εισαγωγή σε ΔΔΑ Εισαγωγή του 17 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 13/82

Διαγραφή σε ΔΔΑ Αλγόριθμος τρέχουμε πρώτα μία αναζήτηση εάν δεν βρούμε το κλειδί δεν κάνουμε τίποτα αλλιώς υπάρχουν 3 περιπτώσεις ανάλογα με τον αριθμό των παιδιών του κόμβου που πρέπει να αφαιρέσουμε Χαροκόπειο Πανεπιστήμιο 14/82

Διαγραφή σε ΔΔΑ Περίπτωση 1: Διαγραφή του 17 (κανένα παιδί) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 15/82

Διαγραφή σε ΔΔΑ Περίπτωση 1: Διαγραφή του 17 (κανένα παιδί) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 15/82

Διαγραφή σε ΔΔΑ Περίπτωση 1: Διαγραφή του 17 (κανένα παιδί) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 15/82

Διαγραφή σε ΔΔΑ Περίπτωση 1: Διαγραφή του 17 (κανένα παιδί) 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 15/82

Διαγραφή σε ΔΔΑ Περίπτωση 1: Διαγραφή του 17 (κανένα παιδί) 15 13 18 6 14 16 19 5 9 Χαροκόπειο Πανεπιστήμιο 15/82

Διαγραφή σε ΔΔΑ Περίπτωση 2: Διαγραφή του 16 (ένα παιδί) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 16/82

Διαγραφή σε ΔΔΑ Περίπτωση 2: Διαγραφή του 16 (ένα παιδί) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 16/82

Διαγραφή σε ΔΔΑ Περίπτωση 2: Διαγραφή του 16 (ένα παιδί) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 16/82

Διαγραφή σε ΔΔΑ Περίπτωση 2: Διαγραφή του 16 (ένα παιδί) 15 13 18 6 14 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 16/82

Διαγραφή σε ΔΔΑ Περίπτωση 2: Διαγραφή του 16 (ένα παιδί) 15 13 18 6 14 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 16/82

Διαγραφή σε ΔΔΑ Περίπτωση 2: Διαγραφή του 16 (ένα παιδί) 15 13 18 6 14 17 19 5 9 Χαροκόπειο Πανεπιστήμιο 16/82

Διαγραφή σε ΔΔΑ Περίπτωση 2: Διαγραφή του 16 (ένα παιδί) 15 13 18 6 14 17 19 5 9 Χαροκόπειο Πανεπιστήμιο 16/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 17/82

Υπολογισμός του επόμενου κλειδιού της ρίζας Χρήσιμη ρουτίνα για την διαγραφή Το πρόβλημα Έχοντας ένα υποδέντρο θέλουμε να βρούμε τον κόμβο με το αμέσως επόμενο κλειδί από τη ρίζα του υποδέντρου. Χαροκόπειο Πανεπιστήμιο 18/82

Υπολογισμός του επόμενου κλειδιού της ρίζας Χαροκόπειο Πανεπιστήμιο 19/82

Υπολογισμός του επόμενου κλειδιού της ρίζας Χαροκόπειο Πανεπιστήμιο 19/82

Υπολογισμός του επόμενου κλειδιού της ρίζας Χαροκόπειο Πανεπιστήμιο 19/82

Υπολογισμός του επόμενου κλειδιού της ρίζας Ο επόμενος κόμβος της ρίζας έχει το πολύ ένα παιδί. Χαροκόπειο Πανεπιστήμιο 19/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 20/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 20/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 20/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 15 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 20/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 16 13 18 6 14 16 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 20/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 16 13 18 6 14 19 5 9 17 Χαροκόπειο Πανεπιστήμιο 20/82

Διαγραφή σε ΔΔΑ Περίπτωση 3: Διαγραφή του 15 (δύο παιδιά) 16 13 18 6 14 17 19 5 9 Χαροκόπειο Πανεπιστήμιο 20/82

Επιδόσεις Όλες οι λειτουργίες χρειάζονται χρόνο ανάλογο με το ύψος του δέντρου. Χαροκόπειο Πανεπιστήμιο 21/82

Προβλήματα 1 2 3 4 5 6 7 4 2 6 1 3 5 7 Υπάρχουν πολλά δέντρα για τα ίδια αντικείμενα αριστερά η χειρότερη περίπτωση: ύψος h = O(n) δεξιά η καλύτερη περίπτωση: ύψος h = O(log n) Το δέντρο εξαρτάται από την σειρά της εισαγωγής και διαγραφής των στοιχείων του δέντρο, η οποία δεν είναι γνωστή εκ των προτέρων Χαροκόπειο Πανεπιστήμιο 22/82

Ισορροπημένα Δέντρα Αναζήτησης Balanced BSTs Δέντρα αναζήτησης τα οποία είναι ισορροπημένα ανά πάσα στιγμή ανεξάρτητα από την σειρά των εισαγωγών και διαγραφών στοιχείων. h = O(log n) Χαροκόπειο Πανεπιστήμιο 23/82

2-3-4 Δέντρα Αναζήτησης top-down Επιτρέπουμε κόμβους με 2, 3 ή 4 παιδιά 13 13 29 13 29 58 (, 13] (13, + ] (, 13] (13, 29] (29, + ] (, 13] (13, 29] (29, 58] (58, + ] Χαροκόπειο Πανεπιστήμιο 24/82

2-3-4 Δέντρα Αναζήτησης top-down Ορισμός Ένα ισορροπημένο δέντρο αναζήτησης 2-3-4 είναι ένα δέντρο το οποίο: είτε είναι κενό είτε αποτελείται από τρεις τύπους κόμβων: 2-κόμβους, 3-κόμβους και 4-κόμβους όλοι οι εξωτερικοί κόμβοι (nulls - κενοί σύνδεσμοι) ισαπέχουν από την ρίζα Χαροκόπειο Πανεπιστήμιο 25/82

Παράδειγμα Ισορροπημένου 2-3-4 Δέντρου 6 2 9 11 1 3 4 5 7 8 10 12 13 Χαροκόπειο Πανεπιστήμιο 26/82

Ύψος Ισορροπημένου 2-3-4 Δέντρου Θεώρημα Ένα 2-3-4 δέντρο αναζήτησης με n κλειδιά έχει ύψος O(log n). Απόδειξη Έστω h το ύψος του δέντρου. Χαροκόπειο Πανεπιστήμιο 27/82

Ύψος Ισορροπημένου 2-3-4 Δέντρου Θεώρημα Ένα 2-3-4 δέντρο αναζήτησης με n κλειδιά έχει ύψος O(log n). Απόδειξη Έστω h το ύψος του δέντρου. Κάθε επίπεδο i έχει τουλάχιστον 2 i κόμβους. Χαροκόπειο Πανεπιστήμιο 27/82

Ύψος Ισορροπημένου 2-3-4 Δέντρου Θεώρημα Ένα 2-3-4 δέντρο αναζήτησης με n κλειδιά έχει ύψος O(log n). Απόδειξη Έστω h το ύψος του δέντρου. Κάθε επίπεδο i έχει τουλάχιστον 2 i κόμβους. Άρα n 1 + 2 + 4 +... 2 h 1 = 2 h 1. Χαροκόπειο Πανεπιστήμιο 27/82

Ύψος Ισορροπημένου 2-3-4 Δέντρου Θεώρημα Ένα 2-3-4 δέντρο αναζήτησης με n κλειδιά έχει ύψος O(log n). Απόδειξη Έστω h το ύψος του δέντρου. Κάθε επίπεδο i έχει τουλάχιστον 2 i κόμβους. Άρα n 1 + 2 + 4 +... 2 h 1 = 2 h 1. Λογαριθμίζοντας πέρνουμε πως log 2 (n + 1) h. Χαροκόπειο Πανεπιστήμιο 27/82

Αναζήτηση σε Ισορροπημένο 2-3-4 Δέντρο 6 2 9 11 1 3 4 5 7 8 10 12 13 Αναζήτηση σε 2-3-4 Δέντρο: Γενίκευση του αλγόριθμου για ΔΔΑ Χαροκόπειο Πανεπιστήμιο 28/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Διατηρώντας την ισορροπία! Τρέχουμε αναζήτηση για να δούμε που πρέπει να προστεθεί το νέο κλειδί: εάν η αναζήτηση τερματιστεί σε 2-κόμβο τον κάνουμε 3-κόμβο εάν η αναζήτηση τερματιστεί σε 3-κόμβο τον κάνουμε 4-κόμβο εάν η αναζήτηση τερματιστεί σε 4-κόμβο σπάμε τον 4-κόμβο σε δύο 2-κόμβους μεταβιβάζοντας το μεσαίο κλειδί προς τα επάνω και μετά προσθέτουμε το καινούριο κλειδί σε έναν από τους 2-κόμβους (μπορεί να χρειαστεί να κάνουμε το ίδιο και στον πατέρα, μέχρι την ρίζα) Χαροκόπειο Πανεπιστήμιο 29/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 2-κόμβο (εισαγωγή του 14) 8 2 13 17 1 3 5 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 30/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 2-κόμβο (εισαγωγή του 14) 8 2 13 17 1 3 5 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 30/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 2-κόμβο (εισαγωγή του 14) 8 2 13 17 1 3 5 6 9 11 14 15 19 21 Χαροκόπειο Πανεπιστήμιο 30/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 2-κόμβο (εισαγωγή του 14) 8 2 13 17 1 3 5 6 9 11 14 15 19 21 Χαροκόπειο Πανεπιστήμιο 30/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 3-κόμβο (εισαγωγή του 10) 8 2 13 17 1 3 5 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 31/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 3-κόμβο (εισαγωγή του 10) 8 2 13 17 1 3 5 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 31/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 3-κόμβο (εισαγωγή του 10) 8 2 13 17 1 3 5 6 9 10 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 31/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 3-κόμβο (εισαγωγή του 10) 8 2 13 17 1 3 5 6 9 10 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 31/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 13 17 1 3 5 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 13 17 1 3 5 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 13 17 1 5 3 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 5 13 17 1 3 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 5 13 17 1 3 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 5 13 17 1 3 4 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 5 13 17 1 3 4 6 9 11 15 19 21 Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Τερματισμός σε 4-κόμβο (εισαγωγή του 4) 8 2 5 13 17 1 3 4 6 9 11 15 19 21 Υπάρχει όμως και η περίπτωση όπου και ο πατέρας είναι 4-κόμβος. Σε αυτήν την περίπτωση κάνουμε την ίδια διάσπαση ξανά, πιθανώς μέχρι την ρίζα Χαροκόπειο Πανεπιστήμιο 32/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Για να απλουστεύσουμε την διαδικασία εισαγωγής σε περίπτωση διάσπασης πολλών κόμβων, χρησιμοποιούμε την εξής τεχνική: φροντίζουμε η διαδρομή αναζήτησης να μη τερματίσει σε 4-κόμβο, χωρίζοντας κάθε 4-κόμβο που βρίσκουμε κατά την κάθοδο στο δέντρο Χαροκόπειο Πανεπιστήμιο 33/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 25 50 10 80 100 1 20 30 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 25 50 10 80 100 1 20 30 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 25 50 10 80 100 1 20 30 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 25 50 10 80 100 1 30 20 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 25 50 10 30 80 100 1 20 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 25 50 10 30 80 100 1 20 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 25 50 10 30 80 100 1 20 25 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 29 50 10 30 80 100 1 20 25 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 29 50 10 30 80 100 1 20 25 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 29 50 10 30 80 100 1 20 25 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 29 50 10 30 80 100 1 20 25 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 28 50 10 30 80 100 1 20 25 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 28 50 10 30 80 100 25 1 20 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 28 50 10 25 30 80 100 1 20 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 28 50 10 25 30 80 100 1 20 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 28 50 10 25 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 28 50 10 25 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 27 50 10 25 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 27 50 10 25 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 27 25 50 10 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 27 25 50 10 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 27 25 50 10 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 27 25 50 10 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 27 25 50 10 30 80 100 1 20 27 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 26 25 50 10 30 80 100 1 20 27 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 26 25 50 10 30 80 100 1 20 27 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 26 25 50 10 30 80 100 28 1 20 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 26 25 50 10 28 30 80 100 1 20 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 26 25 50 10 28 30 80 100 1 20 26 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Εισαγωγή σε Ισορροπημένο 2-3-4 Δέντρο Εισαγωγή του 26 25 50 10 28 30 80 100 1 20 26 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 34/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από μη-φύλλο Κάνουμε αναγωγή του προβλήματος στο πρόβλημα διαγραφής από φύλλο Χρησιμοποιούμε την τεχνική των ΔΔΑ π.χ για διαγραφή του 25, το αντικαθιστούμε πρώτα με τον inorder successor (26) ή με τον inorder predecessor (20). 25 50 10 28 30 80 100 1 20 26 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 35/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από μη-φύλλο Κάνουμε αναγωγή του προβλήματος στο πρόβλημα διαγραφής από φύλλο Χρησιμοποιούμε την τεχνική των ΔΔΑ π.χ για διαγραφή του 25, το αντικαθιστούμε πρώτα με τον inorder successor (26) ή με τον inorder predecessor (20). 26 50 10 28 30 80 100 1 20 26 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 35/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 2 κλειδιά (π.χ διαγραφή του 26 παρακάτω), δηλαδή είναι είτε 3-κόμβος, είτε 4-κόμβος. Έυκολη περίπτωση, απλά το διαγράφουμε. 25 50 10 28 30 80 100 1 20 26 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 36/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 2 κλειδιά (π.χ διαγραφή του 26 παρακάτω), δηλαδή είναι είτε 3-κόμβος, είτε 4-κόμβος. Έυκολη περίπτωση, απλά το διαγράφουμε. 25 50 10 28 30 80 100 1 20 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 36/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 1 κλειδί (underflow), δηλαδή είναι 2-κόμβος. κάποιος αδελφός κόμβος (sibling node) έχει 2 κλειδιά balance: π.χ διαγραφή του 90 25 50 10 28 30 80 100 1 20 27 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 37/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 1 κλειδί (underflow), δηλαδή είναι 2-κόμβος. κάποιος αδελφός κόμβος (sibling node) έχει 2 κλειδιά balance: π.χ διαγραφή του 90 25 50 10 28 30 80 100 110 1 20 27 29 40 60 70 120 Χαροκόπειο Πανεπιστήμιο 37/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 1 κλειδί (underflow), δηλαδή είναι 2-κόμβος. κάποιος αδελφός κόμβος (sibling node) έχει 2 κλειδιά balance: π.χ διαγραφή του 90 25 50 10 28 30 80 110 1 20 27 29 40 60 70 100 120 Χαροκόπειο Πανεπιστήμιο 37/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 1 κλειδί (underflow), δηλαδή είναι 2-κόμβος. όλοι οι αδελφοί κόμβοι (sibling nodes) έχουν 1 κλειδί (είναι δηλαδή 2-κόμβοι) fusion: π.χ διαγραφή του 1 25 50 10 28 30 80 110 1 20 27 29 40 60 70 100 120 Χαροκόπειο Πανεπιστήμιο 38/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 1 κλειδί (underflow), δηλαδή είναι 2-κόμβος. όλοι οι αδελφοί κόμβοι (sibling nodes) έχουν 1 κλειδί (είναι δηλαδή 2-κόμβοι) fusion: π.χ διαγραφή του 1 25 50 10 28 30 80 110 20 27 29 40 60 70 100 120 Χαροκόπειο Πανεπιστήμιο 38/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Το φύλλο έχει 1 κλειδί (underflow), δηλαδή είναι 2-κόμβος. όλοι οι αδελφοί κόμβοι (sibling nodes) έχουν 1 κλειδί (είναι δηλαδή 2-κόμβοι) fusion: π.χ διαγραφή του 1 25 50 28 30 80 110 10 20 27 29 40 60 70 100 120 Χαροκόπειο Πανεπιστήμιο 38/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Ο πατέρας έχει τώρα και αυτός πρόβλημα (underflow) επαλαμβάνουμε ή balance ή fusion ανάλογα με τους αδελφούς κόμβους του 25 50 28 30 80 110 10 20 27 29 40 60 70 100 120 Χαροκόπειο Πανεπιστήμιο 39/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Ο πατέρας έχει τώρα και αυτός πρόβλημα (underflow) επαλαμβάνουμε ή balance ή fusion ανάλογα με τους αδελφούς κόμβους του 25 50 28 30 80 110 10 20 27 29 40 60 70 100 120 Χαροκόπειο Πανεπιστήμιο 39/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Διαγραφή από Φύλλο Ο πατέρας έχει τώρα και αυτός πρόβλημα (underflow) επαλαμβάνουμε ή balance ή fusion ανάλογα με τους αδελφούς κόμβους του 28 50 25 30 80 110 10 20 27 29 40 60 70 100 120 Χαροκόπειο Πανεπιστήμιο 39/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Το fusion μπορεί να γίνει μέχρι και την ρίζα. Σε περίπτωση που φτάσει στην ρίζα το ύψος του δέντρου μειώνεται κατά ένα. Η διαγραφή υλοποιείτε σε χρόνο O(log n). Χαροκόπειο Πανεπιστήμιο 40/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 10 50 1 15 30 75 Διαγραφή του κλειδιού 1 Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 10 50 15 30 75 Διαγραφή του κλειδιού 1 Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 10 50 15 30 75 Κόμβος με underflow - δοκιμάζουμε πρώτα balance και μετά fusion Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 10 50 15 30 75 Balance δεν γίνεται - οι γείτονες δεν έχουν επιπλέον κλειδιά Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Fusion - χρησιμοποιούμε το κλειδί του αδελφού και του πατέρα Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Κόμβος με underflow - ένα επίπεδο επάνω Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Κόμβος με underflow - δοκιμάζουμε πρώτα balance και μετά fusion Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Balance δεν γίνεται - οι γείτονες δεν έχουν επιπλέον κλειδιά Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Fusion - χρησιμοποιούμε το κλειδί του αδελφού και του πατέρα Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Κόμβος με underflow - ένα επίπεδο επάνω Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Εαν η ρίζα έχει underflow - απλή διαγραφή Χαροκόπειο Πανεπιστήμιο 41/82

Διαγραφή σε Ισορροπημένο 2-3-4 Δέντρο Παράδειγμα αλυσιδωτής διαγραφής μέχρι την ρίζα 25 50 10 15 30 75 Εαν η ρίζα έχει underflow - απλή διαγραφή Χαροκόπειο Πανεπιστήμιο 41/82

2-3-4 Δέντρα θετικά: απλός αλγόριθμος εισαγωγής για διατήρηση ύψους πολυπλοκότητα O(log n) για εισαγωγή, διαγραφή και αναζήτηση αρνητικά: 3 διαφορετικοί κόμβοι πολύπλοκες διαδικασίες λόγω πολλών συνδέσμων, αντιγραφών συνδέσμων, κ.τ.λ Χαροκόπειο Πανεπιστήμιο 42/82

Κόκκινα-Μαύρα Δέντρα Ένα κόκκινο-μαύρο δέντρο είναι ένα δυαδικό δέντρο αναζήτησης (ΔΔΑ) με τις επιπλέον ιδιότητες: Κάθε κόμβος είναι ή κόκκινος ή μαύρος Η ρίζα είναι μαύρη Κανένας κόκκινος κόμβος δεν έχει κόκκινο παιδί Κάθε μονοπάτι από την ρίζα προς εξωτερικό κόμβο (null) περνάει από τον ίδιο αριθμό μαύρων κόμβων 100 90 150 50 125 200 110 Χαροκόπειο Πανεπιστήμιο 43/82

Κόκκινα-Μαύρα Δέντρα Θεώρημα Ένα κόκκινο-μαύρο δέντρο με n κόμβους έχει ύψος O(log n). Αντί για απόδειξη θα δούμε μία αντιστοίχιση των κόκκινων/μαύρων δέντρων με τα 2-3-4 δέντρα. Μπορούμε να δούμε τα κόκκινα-μαύρα δέντρα ως μία αναπαράσταση των 2-3-4 δέντρων. Αυτή η αντιστοίχιση μας επιτρέπει να δείξουμε εύκολα τις ιδιότητες των κόκκινων-μαύρων δέντρων. Χαροκόπειο Πανεπιστήμιο 44/82

Κόκκινα-Μαύρα Δέντρα 10 25 30 25 10 30 60 70 70 60 60 70 60 60 Χαροκόπειο Πανεπιστήμιο 45/82

Κόκκινα-Μαύρα Δέντρα 10 25 30 10 25 30 60 70 60 70 60 70 60 60 Χαροκόπειο Πανεπιστήμιο 45/82

Κόκκινα-Μαύρα Δέντρα Αναζήτηση, εισαγωγή και διαγραφή Αναζήτηση Τα κόκκινα-μαύρα δέντρα είναι ΔΔΑ! Εισαγωγή και Διαγραφή Αντιστοιχία με τα 2-3-4 δέντρα, απλά περιγράφουμε τις κινήσεις με αλλαγή χρωμάτων και περιστροφές. Χαροκόπειο Πανεπιστήμιο 46/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές ΔΔΑ b a a b > b a a > a b > a b > b Χαροκόπειο Πανεπιστήμιο 47/82

Κόκκινα-Μαύρα Δέντρα Παράδειγμα 50 10 25 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 48/82

Κόκκινα-Μαύρα Δέντρα Παράδειγμα 50 10 25 30 80 100 1 20 28 29 40 60 70 90 110 120 Χαροκόπειο Πανεπιστήμιο 48/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές (πρώτη) 5 5 10 25 30 10 25 30 Χαροκόπειο Πανεπιστήμιο 49/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές (πρώτη) 5 5 25 10 30 10 25 30 Χαροκόπειο Πανεπιστήμιο 49/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές (πρώτη) 5 25 5 25 10 30 10 25 30 Χαροκόπειο Πανεπιστήμιο 49/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές (δεύτερη) 2 5 2 5 10 25 30 10 25 30 Χαροκόπειο Πανεπιστήμιο 50/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές (δεύτερη) 2 5 2 5 25 10 30 10 25 30 Χαροκόπειο Πανεπιστήμιο 50/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές (δεύτερη) 2 5 25 2 5 10 30 10 25 30 Χαροκόπειο Πανεπιστήμιο 50/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές (δεύτερη) 2 5 25 2 5 25 10 30 10 30 Χαροκόπειο Πανεπιστήμιο 50/82

Κόκκινα-Μαύρα Δέντρα Περιστροφές Υπάρχουν και άλλες περιπτώσεις... Χαροκόπειο Πανεπιστήμιο 51/82

Κόκκινα-Μαύρα Δέντρα Χρόνοι Εισαγωγής και Διαγραφής Υπάρχουν αρκετοί πολύπλοκοι κανόνες! Όλοι όμως βγάζουν εύκολα νόημα εαν τους συνδέσουμε με το αντίστοιχο 2-3-4 δέντρο. Η προσομοίωση των αλλαγών ενός κόμβου σε ένα 2-3-4 δέντρο με τους αντίστοιχους κόμβους ενός κόκκινου-μαύρου δέντρου παίρνει O(1) χρόνο. Αφού τα 2-3-4 δέντρα υποστηρίζουν εισαγωγή σε O(log n) χρόνο, το ίδιο ισχύει και για τα κόκκινα-μαύρα δέντρα. Η ίδια ιδέα λειτουργεί και για τις διαγραφές. Χαροκόπειο Πανεπιστήμιο 52/82

Κόκκινα-Μαύρα Δέντρα Ύψος Θεώρημα Ένα κόκκινο-μαύρο δέντρο με n κόμβους έχει ύψος O(log n). Απόδειξη Μπορούμε να μαζέψουμε όλους τους κόκκινους κόμβους στους γονείς τους, ώστε να μετατρέψουμε το δέντρο σε 2-3-4. Το ύψος του δέντρου το πολύ να υποδιπλασιαστεί. Το 2-3-4 δέντρο που προκύπτει έχει ύψος O(log n), και άρα το αρχικό κόκκινο/μαύρο δέντρο έχει ύψος 2 O(log n) = O(log n). Χαροκόπειο Πανεπιστήμιο 53/82

Άλλα Ισορροπημένα Δέντρα AVL δέντρα: O(log n) ύψος χρησιμοποιώντας περιστροφές splay δέντρα scapegoat δέντρα Χαροκόπειο Πανεπιστήμιο 54/82

AVL Δέντρα Το πρώτο ισοζυγισμένο δέντρο! G.M. Adelson-Velskii and E.M. Landis. An algorithm for the organization of information, Proceedings of the USSR Academy of Sciences 146: 263 266, 1962. Ονομάστηκε από τα αρχικά των συγγραφέων. Χαροκόπειο Πανεπιστήμιο 55/82

AVL Δέντρα Δυαδικό δέντρο αναζήτησης Επιπλέον συνθήκη ισορροπίας Η επιπλέον συνθήκη ισορροπίας πρέπει να διατηρείται εύκολα και να διατηρεί το ύψος του δέντρου σε O(log n). Χαροκόπειο Πανεπιστήμιο 56/82

AVL Δέντρα Ορισμός Ένα δέντρο AVL είναι ένα δυαδικό δέντρο αναζήτησης T όπου για κάθε κόμβο v T τα ύψη των υποδέντρων του διαφέρουν το πολύ κατά 1. Το ύψος του κενού υποδέντρου ορίζεται σε -1. Χαροκόπειο Πανεπιστήμιο 57/82

AVL Δέντρα 12 12 8 16 8 16 4 10 14 4 10 14 2 6 2 6 7 Αριστερά AVL δέντρο, δεξιά μη-avl δέντρο. Χαροκόπειο Πανεπιστήμιο 58/82

AVL Δέντρα Ύψος Θεώρημα Ένα AVL δέντρο με n κλειδιά έχεις ύψος O(log n). Χαροκόπειο Πανεπιστήμιο 59/82

AVL Δέντρα Ύψος Θεώρημα Ένα AVL δέντρο με n κλειδιά έχεις ύψος O(log n). Απόδειξη Έστω n(h) ο ελάχιστος αριθμός κόμβων ενός AVL δέντρου με ύψος h. Χαροκόπειο Πανεπιστήμιο 59/82

AVL Δέντρα Ύψος Θεώρημα Ένα AVL δέντρο με n κλειδιά έχεις ύψος O(log n). Απόδειξη Έστω n(h) ο ελάχιστος αριθμός κόμβων ενός AVL δέντρου με ύψος h. Εύκολα φαίνεται πως n(1) = 1 και n(2) = 2. Για h > 2 ένα AVL δέντρο έχει την ρίζα και δύο υποδέντρα, ένα AVL υποδέντρο με ύψος h 1 και ένα AVL υποδέντρο με ύψος h 2. h-1 h-2 h Άρα n(h) = 1 + n(h 1) + n(h 2). Χαροκόπειο Πανεπιστήμιο 59/82

AVL Δέντρα Ύψος Θεώρημα Ένα AVL δέντρο με n κλειδιά έχεις ύψος O(log n). Απόδειξη Έστω n(h) ο ελάχιστος αριθμός κόμβων ενός AVL δέντρου με ύψος h. Επειδή n(h 1) > n(h 2) έχουμε πως n(h) = 1 + n(h 1) + n(h 2) > 2n(h 2) > 4n(h 4) > 8n(h 6) >... και μέσω αναγωγής n(h) > 2 i n(h 2i) Επειδή n(1) = 1 πέρνουμε πως n(h) > 2 (h 1)/2 και λογαριθμίζοντας πέρνουμε h < 2 log n(h) + 1. Χαροκόπειο Πανεπιστήμιο 59/82

Εισαγωγή σε AVL δέντρο Η εισαγωγή γίνεται κανονικά όπως και στα ΔΔΑ αλλά στην συνέχεια μπορεί να χρειαστεί να φτιάξουμε το δέντρο. Θα φροντίσουμε να κάνουμε O(d) πράξεις όπου d είναι το βάθος όπου γίνεται η εισαγωγή. Χαροκόπειο Πανεπιστήμιο 60/82

Εισαγωγή σε AVL δέντρο Θα φτιάξουμε το δέντρο με περιστροφές. Έστω x ο κόμβος με το μεγαλύτερο βάθος που είναι μη-ισοζυγισμένος. Υπάρχουν 4 περιπτώσεις ανάλογα με το αν η εισαγωγή είναι στο 1 αριστερό υποδέντρο του αριστερού παιδιού του x 2 δεξί υποδέντρο του αριστερού παιδιού του x 3 αριστερό υποδέντρο του δεξιού παιδιού του x 4 δεξί υποδέντρο του δεξιού παιδιού του x Οι περιπτώσεις 1&4 λύνονται με μονή περιστροφή ενώ οι περιπτώσεις 2&3 με διπλή περιστροφή. Χαροκόπειο Πανεπιστήμιο 61/82

Μονή Περιστροφή a b Z h h+1 X Y h X < b < Y < a < Z Χαροκόπειο Πανεπιστήμιο 62/82

Μονή Περιστροφή a b Z h h+1 X Y h X < b < Y < a < Z Χαροκόπειο Πανεπιστήμιο 62/82

Μονή Περιστροφή b a h+1 X Y h Z h X < b < Y < a < Z Χαροκόπειο Πανεπιστήμιο 62/82

Μονή Περιστροφή 15 5 20 3 10 17 21 2 4 1 Χαροκόπειο Πανεπιστήμιο 63/82

Μονή Περιστροφή 15 3 20 2 5 17 21 1 4 10 Χαροκόπειο Πανεπιστήμιο 63/82

Άλλες περιπτώσεις Στις περιπτώσεις 2&3 δεν λειτουργεί η μονή περιστροφή. a b Z h X h h+1 Y X < b < Y < a < Z Χαροκόπειο Πανεπιστήμιο 64/82

Άλλες περιπτώσεις Στις περιπτώσεις 2&3 δεν λειτουργεί η μονή περιστροφή. b a X h h+1 Y Z h X < b < Y < a < Z Χαροκόπειο Πανεπιστήμιο 64/82

Διπλή Περιστροφή a b c h Z X h Y 1 h Y 2 h-1 X < b < Y 1 < c < Y 2 < a < Z Χαροκόπειο Πανεπιστήμιο 65/82

Διπλή Περιστροφή a b c h Z X h Y 1 h Y 2 h-1 X < b < Y 1 < c < Y 2 < a < Z Χαροκόπειο Πανεπιστήμιο 65/82

Διπλή Περιστροφή a c b Y 2 h-1 h Z X h Y 1 h X < b < Y 1 < c < Y 2 < a < Z Χαροκόπειο Πανεπιστήμιο 65/82

Διπλή Περιστροφή a c b Y 2 h-1 h Z X h Y 1 h X < b < Y 1 < c < Y 2 < a < Z Χαροκόπειο Πανεπιστήμιο 65/82

Διπλή Περιστροφή c b a h-1 X h h Y 2 Y 1 Z h X < b < Y 1 < c < Y 2 < a < Z Χαροκόπειο Πανεπιστήμιο 65/82

Διαγραφή Η διαγραφή στοιχείων από ένα AVL δέντρο γίνεται με τον ίδιο τρόπο όπως και σε ΔΔΑ με επιπλέον πιθανές περιστροφές. O(log n) στην χειρότερη περίπτωση Χαροκόπειο Πανεπιστήμιο 66/82

Ιεραρχία Μνήμης (Χρονιά 2010) Υπάρχει μεγάλο δίλημα μεταξύ ταχύτητας και μεγέθους όσο αφορά την μνήμη. SRAM (Static Random Access Memory) Φτιάχνονται οι καταχωρητές Πολύ γρήγορη (1ns = 10 9 sec - αντέχει ταχύτητες GHz) Πολύ ακριβή (1GB 5000$) DRAM (Dynamic Random Access Memory) Φτιάχνεται η μνήμη Γρήγορη (25ns) Λιγότερο ακριβή (16GB 100$) Σκληρός Δίσκος Πολύ αργός (5ms = 5 10 3 sec) Πολύ φθηνός Χαροκόπειο Πανεπιστήμιο 67/82

Ιεραρχία Μνήμης (Χρονιά 2010) Ιδέα: Χρησιμοποίησε πολλούς τύπους μνήμης για καλύτερη απόδοση. Registers L1 Cache L2 Cache Main Memory Solid State Disks Hard Disks Tapes 0.25-1ns 1-5ns 5-25ns 25-100ns 100-150ns 2-20ms sequential access Χαροκόπειο Πανεπιστήμιο 68/82

Εξωτερική Μνήμη seek time: χρόνος ώστε οι κεφαλές να μετακινηθούν στο κατάλληλο σημείο (track) rotational delay: χρόνος αναμονής ώστε να περιστραφεί o κύλινδρος και να έρθει το κατάλληλο sector που ψάχνουμε Χαροκόπειο Πανεπιστήμιο 69/82

Εξωτερική Μνήμη η μνήμη των υπολογιστών (DRAM) έχει χρόνο πρόσβασης της τάξης των nanoseconds: 10 9 sec, πχ 25-100 nsec οι δίσκοι έχουν χρόνο πρόσβασης της τάξης των milliseconds: 10 3, πχ 2-20 ms Συμπέρασμα Δεν συμφέρει να διαβάζουμε λίγα δεδομένα από το δίσκο. Για αυτό τον λόγο οι δίσκοι διαβάζουν πάντα ένα block που είναι της τάξης των Kilobytes, πχ 512K. Χαροκόπειο Πανεπιστήμιο 70/82

Βήτα Δέντρα δομή αναζήτησης η οποία είναι αποτελεσματική για αποθήκευση σε δίσκο, γενικεύει τα 2-3-4 δέντρα σε δέντρα με κόμβους μεταξύ t και 2t για t 2. Χαροκόπειο Πανεπιστήμιο 71/82

Ορισμός Βήτα Δέντρων Ένα δέντρο B-tree είναι ένα δέντρο με ρίζα και τις εξής ιδιότητες: 1 κάθε κόμβος x έχει τα εξής πεδία: (a) n[x], ο αριθμός των κλειδιών που έχει ο κόμβος x (b) τα n[x] κλειδιά σε σειρά: key 1 [x] key 2 [x]... key n[x] [x] (c) τιμή leaf[x] που είναι αλήθεια αν και μόνο αν ο κόμβος x είναι φύλλο Χαροκόπειο Πανεπιστήμιο 72/82

Ορισμός Βήτα Δέντρων Ένα δέντρο B-tree είναι ένα δέντρο με ρίζα και τις εξής ιδιότητες: 1 κάθε κόμβος x έχει τα εξής πεδία: (a) n[x], ο αριθμός των κλειδιών που έχει ο κόμβος x (b) τα n[x] κλειδιά σε σειρά: key 1 [x] key 2 [x]... key n[x] [x] (c) τιμή leaf[x] που είναι αλήθεια αν και μόνο αν ο κόμβος x είναι φύλλο 2 εαν ο x είναι εσωτερικός κόμβος περιέχει n[x] + 1 δείκτες c 1[x], c 2[x],..., c n[x]+1 [x] στα παιδιά του. Τα φύλλα δεν έχουν παιδιά οπότε οι δείκτες αυτοί δεν ορίζονται. Χαροκόπειο Πανεπιστήμιο 72/82

Ορισμός Βήτα Δέντρων Ένα δέντρο B-tree είναι ένα δέντρο με ρίζα και τις εξής ιδιότητες: 1 κάθε κόμβος x έχει τα εξής πεδία: (a) n[x], ο αριθμός των κλειδιών που έχει ο κόμβος x (b) τα n[x] κλειδιά σε σειρά: key 1 [x] key 2 [x]... key n[x] [x] (c) τιμή leaf[x] που είναι αλήθεια αν και μόνο αν ο κόμβος x είναι φύλλο 2 εαν ο x είναι εσωτερικός κόμβος περιέχει n[x] + 1 δείκτες c 1[x], c 2[x],..., c n[x]+1 [x] στα παιδιά του. Τα φύλλα δεν έχουν παιδιά οπότε οι δείκτες αυτοί δεν ορίζονται. 3 Τα κλειδιά key i [x] χωρίζουν τις κλίμακες των κλειδιών που αποθηκεύονται σε κάθε υποδέντρο: εαν το k i είναι ένα κλειδί που αποθηκεύεται στο υποδέντρο με ρίζα c i [x] k 1 key 1 [x] k 2 key 2 [x] key n[x] [x] k n[x]+1. Χαροκόπειο Πανεπιστήμιο 72/82

Ορισμός Βήτα Δέντρων 4 Κάθε φύλλο έχει το ίδιο βάθος, το ύψος του δέντρου h. Χαροκόπειο Πανεπιστήμιο 73/82

Ορισμός Βήτα Δέντρων 4 Κάθε φύλλο έχει το ίδιο βάθος, το ύψος του δέντρου h. 5 Έστω t 2 ο ελάχιστος βαθμός του δέντρου: 1 Κάθε κόμβος εκτός της ρίζας πρέπει να έχει τουλάχιστον t 1 κλειδιά (δηλαδή τουλάχιστον t παιδιά). Εαν το δέντρο είναι μη-κενό, η ρίζα πρέπει να έχει τουλάχιστον ένα κλειδί. 2 Κάθε κόμβος μπορεί να περιέχει μέχρι 2t 1 κλειδιά, δηλαδή το πολύ 2t παιδιά. Ένας κόμβος λέγεται γεμάτος (full) εαν περιέχει ακριβώς 2t 1 κλειδιά. Χαροκόπειο Πανεπιστήμιο 73/82

Ορισμός Βήτα Δέντρων 4 Κάθε φύλλο έχει το ίδιο βάθος, το ύψος του δέντρου h. 5 Έστω t 2 ο ελάχιστος βαθμός του δέντρου: 1 Κάθε κόμβος εκτός της ρίζας πρέπει να έχει τουλάχιστον t 1 κλειδιά (δηλαδή τουλάχιστον t παιδιά). Εαν το δέντρο είναι μη-κενό, η ρίζα πρέπει να έχει τουλάχιστον ένα κλειδί. 2 Κάθε κόμβος μπορεί να περιέχει μέχρι 2t 1 κλειδιά, δηλαδή το πολύ 2t παιδιά. Ένας κόμβος λέγεται γεμάτος (full) εαν περιέχει ακριβώς 2t 1 κλειδιά. Το πιο απλό Βήτα-δέντρο είναι για t = 2. Κάθε εσωτερικός κόμβος έχει 2, 3 ή 4 παιδιά δηλαδή ένα 2-3-4 δέντρο. Στην πράξη όμως έχουμε πολύ μεγαλύτερες τιμές για το t. Χαροκόπειο Πανεπιστήμιο 73/82

Ύψος Βήτα Δέντρου Θεώρημα Ένα Βήτα δέντρο με n 1 κλειδιά και ελάχιστο βαθμό t 2 έχει ύψος n + 1 h log t. 2 Απόδειξη Ένα Βήτα δέντρο με ύψος h έχει ελάχιστο αριθμό κόμβων αν η ρίζα έχει ένα κλειδί και όλοι οι υπόλοιποι κόμβοι t 1 κλειδιά. Στο επίπεδο 0 υπάρχει ένα κόμβος. Στο επίπεδο 1 υπάρχουν 2 κόμβοι. Στο επίπεδο 2 υπάρχουν 2t κόμβοι, στο επίπεδο 3 υπάρχουν 2t 2 κόμβοι, κ.τ.λ Χαροκόπειο Πανεπιστήμιο 74/82

Ύψος Βήτα Δέντρου Θεώρημα Ένα Βήτα δέντρο με n 1 κλειδιά και ελάχιστο βαθμό t 2 έχει ύψος n + 1 h log t. 2 Απόδειξη Ο αριθμός λοιπόν των κλειδιών είναι: n 1 + (t 1) = 1 + 2(t 1) = 2t h 1 h i=1 2t i 1 ( t h 1 t 1 ) Χαροκόπειο Πανεπιστήμιο 74/82

Προσπελάσεις Δίσκου Φροντίζοντας κάθε κόμβος να χωρά σε μια σελίδα δίσκου, κάνουμε τόσες προσπελάσεις δίσκου όσες και το ύψος του δέντρου 1000 1001 1000 1000 1000 1001 1001 1001 1000 1000 1000 1 κόµβος 1000 κλειδιά 1001 κόµβοι 1.001.000 κλειδιά 1.002.001 κόµβοι 1.002.001.000 κλειδιά Το δέντρο έχει ύψος O(log t n). Χαροκόπειο Πανεπιστήμιο 75/82

Βασικές Παραδοχές για Υλοποίηση Βήτα Δέντρων (i) Η ρίζα του Βήτα δέντρου θα είναι πάντα στην μνήμη (ii) Θα έχουμε δύο συναρτήσεις που διαβάζουν και γράφουν έναν κόμβο στον σκληρό δίσκο DISK READ(x) DISK WRITE(x) Χαροκόπειο Πανεπιστήμιο 76/82

Αναζήτηση σε Βήτα Δέντρο Η αναζήτηση δουλεύει όπως και στα ΔΔΑ (Δυαδικά Δέντρα Αναζήτησης) μόνο που τώρα έχουμε περισσότερες επιλογές σε κάθε κόμβο. B TREE SEARCH(x, k) i = 1 while i n[x] and k > key i [x] do i = i + 1 end if i n[x] and k = key i [x] then return (x, i) end if leaf[x] then return nil else DISK READ(c i [x]) end return B TREE SEARCH(c i [x], k) Χαροκόπειο Πανεπιστήμιο 77/82

Εισαγωγή σε Βήτα Δέντρα Καθώς αναζητούμε την θέση εισαγωγής ενός στοιχείου, διαιρούμε στα δύο οποιουσδήποτε κόμβους είναι γεμάτοι (έχουν 2t 1 κλειδιά). Όταν διαιρείται ένας κόμβος το μεσαίο κλειδί ανεβαίνει προς τα επάνω. Με αυτό τον τρόπο κάνουμε χώρο για πιθανές διαιρέσεις κόμβων που βρίσκονται παρακάτω. Χαροκόπειο Πανεπιστήμιο 78/82

Διαίρεση κόμβου (split) t = 4 x keyi 1[x] keyi[x] N W x keyi 1[x] keyi[x] keyi+1[x] N S W y = ci[x] P Q R S T U V y = ci[x] P Q R z = ci+1[x] T U V T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 Χαροκόπειο Πανεπιστήμιο 79/82

Παράδειγμα t = 3 G M P X A C D E J K N O R S T U V Y Z Χαροκόπειο Πανεπιστήμιο 80/82

Παράδειγμα t = 3, εισαγωγή του B G M P X A B C D E J K N O R S T U V Y Z Χαροκόπειο Πανεπιστήμιο 80/82

Παράδειγμα t = 3, εισαγωγή του Q G M P T X A B C D E J K N O Q R S U V Y Z Χαροκόπειο Πανεπιστήμιο 80/82

Παράδειγμα t = 3, εισαγωγή του L P G M T X A B C D E J K L N O Q R S U V Y Z Χαροκόπειο Πανεπιστήμιο 80/82

Παράδειγμα t = 3, εισαγωγή του F P C G M T X A B D E F J K L N O Q R S U V Y Z Χαροκόπειο Πανεπιστήμιο 80/82

Διαγραφή από Β-Δέντρα Λειτουργεί με παρόμοιο τρόπο με τα 2-3-4 δέντρα. Μπορεί να χρειαστεί να κάνουμε balance fuse Χαροκόπειο Πανεπιστήμιο 81/82

Διάβασμα και Επιπλέον Πηγές Ενότητες 7.1, 7.2, 7.3 Kurt Mehlhorn και Peter Sanders. Αλγόριθμοι και Δομές Δεδομένων, Τα βασικά εργαλεία, Έκδοση 1η, Κλειδάριθμος, 2014. Ενότητες 12.5, 12.6, 12.8, 12.9, 13.3, 13.4, 16.3 Robert Sedgewick. Αλγόριθμοι σε C: Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση, Αναζήτηση. Έκδοση 3η, Κλειδάριθμος, 2006. Ενότητες 12.1, 12.2, 12.3, 13.1, 13.2, 13.3, 13.4 Cormen, Leiserson, Rivest και Stein, Εισαγωγή στους Αλγορίθμους (σε ένα τόμο). Έκδοση 1η, Πανεπιστημιακές Εκδόσεις Κρήτης, 2012. Χαροκόπειο Πανεπιστήμιο 82/82