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

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

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

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

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

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Υπολογιστικά & Διακριτά Μαθηματικά

Μαθηματικά. Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 4 : Πράξεις με bits. Δρ. Γκόγκος Χρήστος

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

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

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

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

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

9. Κόκκινα-Μαύρα Δέντρα

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 7: Τέλεια ισορροπία Nash για υποπαίγνια. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Μοντελοποίηση Λογικών Κυκλωμάτων

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

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

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Περιεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π.

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Υπολογιστικά & Διακριτά Μαθηματικά

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 6: Δομές ευρετηρίων για αρχεία

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Μαθηματικά Ενότητα 11: Θεώρημα Μέσης Τιμής Μονοτονία Συνάρτησης

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

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

Μαθηματικά. Ενότητα 6: Ασκήσεις Ορίων Συνάρτησης. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 3 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

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

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

Μαθηματικά. Ενότητα 12: Ακρότατα Συνάρτησης Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Υπολογιστικά & Διακριτά Μαθηματικά

Βάσεις Δεδομένων. Ενότητα 5: ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Μαθηματικά. Ενότητα 13: Κυρτότητα Συνάρτησης Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Οργάνωση Υπολογιστών

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

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

2 n N: 0, 1,..., n A n + 1 A

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

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

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

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

Λεξικό, Union Find. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

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

Υδραυλικά & Πνευματικά ΣΑΕ

Μαθηματικά. Ενότητα 1: Οι Αριθμοί. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

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

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

Λογιστικές Εφαρμογές Εργαστήριο

Βάσεις Δεδομένων ΙΙ Ενότητα 6

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

Διαδικαστικός Προγραμματισμός

Στατιστική Επιχειρήσεων Ι

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 5: Προτασιακός Λογισμός: Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών

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

Οικονομικά Μαθηματικά

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

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

Transcript:

Ενότητα 13: B-Δέντρα/AVL-Δέντρα Καθηγήτρια Μαρία Σατρατζέμη

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Σκοπός της ενότητας είναι να εισάγει τους φοιτητές στο Β-δένδρο και να παρουσιάζει μέσα από παράδειγμα τις βασικές πράξεις της εισαγωγής και διαγραφής κλειδιού. Σκοπός της ενότητας είναι να παρουσίασει τη ΔΔ AVL-Tree και τις βασικές πράξεις σ αυτό. 4

Περιεχόμενα ενότητας Βασικές έννοιες Εισαγωγή νέων κλειδιών/διαγραφή κλειδιών Παράδειγμα εισαγωγής Διαγραφή Παράδειγμα διαγραφής Βασικές έννοιες Εισαγωγή στοιχείου σε ένα AVL-δέντρο Παράγοντας ισοζύγισης Κόμβος περιστροφής Εισαγωγή στο ψηλότερο υποδέντρο 5

B-Δέντρα 6

Βασικές έννοιες Σ ένα Β-δένδρο κάθε κόμβος αποτελείται από μια ταξινομημένη ακολουθία κλειδιών και ένα σύνολο δεικτών. Το πλήθος των δεικτών είναι πάντα μεγαλύτερο από το πλήθος των κλειδιών. Έτσι Β-δένδρο τάξης d ορίζεται το δένδρο με τα ακόλουθα χαρακτηριστικά: Κάθε κόμβος περιέχει το μέγιστο 2d κλειδιά και 2d + 1 δείκτες. Κανένας κόμβος εκτός της ρίζας δεν μπορεί να έχει λιγότερο από d κλειδιά. Όλοι οι εξωτερικοί κόμβοι βρίσκονται στο ίδιο επίπεδο. Ως παράγοντας διακλάδωσης (fan-out factor) ορίζεται το πλήθος των δεικτών που είναι αποθηκευμένα σε κάθε κόμβο δένδρου. Άρα με βάση τα παραπάνω 3 χαρακτηριστικά σ ένα Β-δένδρο ο παράγοντας διακλάδωσης θα είναι μεταξύ d + 1 και 2d + 1. 7

Εισαγωγή νέων κλειδιών κλειδιών Το Β-δένδρο αυξάνεται καθώς γίνεται εισαγωγή νέων κλειδιών: Όταν ένα κλειδί εισάγεται σε κόμβο που είναι γεμάτος, τότε ο κόμβος διασπάται σε 3 φάσεις: Το μεσαίο κλειδί ανεβαίνει ένα επίπεδο προς τα πάνω, στον κόμβο πατέρα Όλα τα κλειδιά αριστερά του μεσαίου κλειδιού μένουν στον κόμβο, Τα δεξιά κλειδιά του μεσαίου κλειδιού τοποθετούνται σε νέο κόμβο. 8

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

Εισαγωγή νέων κλειδιών/διαγραφή κλειδιών -1- Μετά από εισαγωγές και διαγραφές κόμβων το Β-δένδρο θα παραμείνει ισοζυγισμένο μια και παραμένει θαμνώδες (bushy) ή με μικρό ύψος λόγω του μικρού ορίου που επιτρέπεται για τον παράγοντα διακλάδωσης. Οι εισαγωγές κλειδιών πραγματοποιούνται πάντα στους τερματικούς κόμβους: Η βασική διαδικασία συνίσταται στο να εντοπισθεί ο τερματικός κόμβος και να εισαχθεί το νέο στοιχείο του κόμβου (κλειδί και δείκτης). Επειδή υπάρχει το ενδεχόμενο ένας κόμβος να είναι ήδη γεμάτος εκείνο που επιχειρείται είναι να ανακατανείμουμε (redistribute) στοιχεία του κόμβου μεταξύ του πατέρα και του αδελφού κόμβου. Αν αυτό δεν μπορεί να συμβεί ο κόμβος διασπάται με το μεσαίο στοιχείο να ανεβαίνει ένα επίπεδο και να προστίθεται στον κόμβο πατέρα. 10

Παράδειγμα εισαγωγής -1- Έχουμε το παρακάτω Β-δένδρο τάξης 2 Σε αυτό το Β-δένδρο 2 επιπέδων θα εισάγουμε τα κλειδιά 20 και 25. 11

Παράδειγμα εισαγωγής -2- Η εισαγωγή του 20 γίνεται χωρίς προβλήματα αφού ο κόμβος (1) δεν είναι πλήρης: Η εισαγωγή του κλειδιού 25 προκαλεί υπερχείλιση στον κόμβο (1): Η υπερχείλιση του κόμβου (1) διορθώνεται με την ανακατανομή. Ανακατανομή σημαίνει ότι τα πλεονάζοντα κλειδιά μοιράζονται σε γειτονικό αδελφό κόμβο που δεν είναι πλήρης. 12

Παράδειγμα εισαγωγής -3- Η εισαγωγή του κλειδιού 25 προκαλεί υπερχείλιση στον κόμβο (1): Η υπερχείλιση του κόμβου (1) διορθώνεται με την ανακατανομή. Ανακατανομή σημαίνει ότι τα πλεονάζοντα κλειδιά μοιράζονται σε γειτονικό αδελφό κόμβο που δεν είναι πλήρης. Στην περίπτωσή μας ο κόμβος (2) δεν είναι πλήρης και επιλέγεται για ανακατανομή. Τα στοιχεία μεταξύ των 2 κόμβων μοιράζονται εξίσου. Στην περίπτωσή μας (5 + 3) / 2 = 4 στοιχεία σε κάθε κόμβο.. 13

Παράδειγμα εισαγωγής -4- Όμως το κλειδί 40 δεν μπορεί να μετακινηθεί στον κόμβο (2) γιατί το κλειδί 50 του κόμβου (0) που χωρίζει τους κόμβους (1) και (2) θα ήταν λάθος τοποθετημένο. Η ανακατανομή γίνεται ως εξής: τίθενται σε λεξικογραφική διάταξη όλα τα κλειδιά των κόμβων (1) και (2) (αδελφών κόμβων) αλλά και το κλειδί του κόμβου (0) που τα χωρίζει. Έτσι έχουμε: 10, 20, 25, 35, 40, 50, 60, 70, 80 Το μεσαίο κλειδί 40 αυτής της ακολουθίας αντικαθιστά το κλειδί 50 του κόμβου (0). Τα κλειδιά που βρίσκονται πριν το μεσαίο κλειδί πάνε στον κόμβο (1) ενώ τα δεξιά του στον κόμβο (2). Έτσι το δένδρο που προκύπτει είναι το εξής: 14

Παράδειγμα εισαγωγής -5- Το επόμενο κλειδί που προστίθεται είναι το 30 το οποίο ανήκει στον (1) κόμβο. Σ αυτήν την περίπτωση δεν υπάρχει γειτονικός αδελφός κόμβος μη πλήρης έτσι δεν είναι δυνατόν να εφαρμόσουμε ανακατανομή. Αλλά είναι αναγκαίο να διασπάσουμε τον κόμβο (split). Έτσι: το μεσαίο στοιχείο ανεβαίνει ένα επίπεδο, στον πατέρα κόμβο, τα αριστερά στοιχεία του παραμένουν στον αρχικό κόμβο και τα δεξιά του στοιχεία τοποθετούνται σε νέο κόμβο. 15

Παράδειγμα εισαγωγής -6- Έτσι το στοιχείο 25 πρέπει να εισαχθεί στον κόμβο (0) που όμως με την σειρά του είναι πλήρης: Είναι ανάγκη να δημιουργηθεί νέος κόμβος. Είναι η μόνη περίπτωση που το δένδρο αυξάνει κατά ένα επίπεδο. Ο νέος κόμβος είναι ο (8) όπως φαίνεται στο σχήμα: 16

Διαγραφή -1- Η διαγραφή θα λέγαμε ότι είναι σχεδόν αντίστροφη της εισαγωγής: H μόνη διαφορά είναι όταν το στοιχείο που διαγράφεται δεν ανήκει σε τερματικό κόμβο. Όταν συμβούν διαγραφές σε τερματικό κόμβο, όπως συνήθως συμβαίνει, το στοιχείο απομακρύνεται από τον κόμβο. Μετά απ αυτό χρειάζεται να γίνει έλεγχος μήπως συμβεί υποχείλιση (underflow). Αυτό συμβαίνει όταν οποιοσδήποτε κόμβος έχει λιγότερα στοιχεία από d (εκτός της ρίζας). 17

Διαγραφή -2- Το πρώτο διέξοδο σε περίπτωση υποχείλισης είναι η ανακατανομή: Αν κάποιος γειτονικός αδελφός κόμβος έχει περισσότερα από d στοιχεία, τα στοιχεία μοιράζονται μεταξύ αυτών των 2 κόμβων, όπως συνέβη και στην εισαγωγή. Η ίδια διαδικασία που χρησιμοποιήθηκε για την ανακατανομή κατά την εισαγωγή μπορεί να χρησιμοποιηθεί και κατά την διαγραφή. Όπως και προηγουμένως στοιχείο του κόμβου πατέρα αλλάζει. Αν δεν υπάρχει γειτονικός αδελφός κόμβος η ανακατανομή αποτυγχάνει και ο κόμβος πρέπει να συνδυασθεί με τον αδελφό κόμβο. Είναι το αντίστροφο της διάσπασης κόμβου. 18

Παράδειγμα διαγραφής -1- Αν από το Β-δένδρο του παρακάτω σχήματος αφαιρεθεί το στοιχείο 30 τότε ο κόμβος (6) υποχειλίζει: Ο (6) είναι γειτονικός του (2) που έχει περισσότερα από d = 2 στοιχεία. Έτσι χρησιμοποιείται ανακατανομή για να ισοζυγιστούν οι κόμβοι (6) και (2). Έτσι ο 40 μετακινείται στον κόμβο (6) και το 50 εναλλάσσεται στον κόμβο (0). 19

Παράδειγμα διαγραφής -2-20

Παράδειγμα διαγραφής -3- Διαγραφή του 20 επίσης δημιουργεί υποχείλιση στον κόμβο (1). Τώρα δεν υπάρχει γειτονικός κόμβος με περισσότερα από d στοιχεία, οπότε οι κόμβοι πρέπει να συνδυαστούν. Αν συνδυαστούν οι κόμβοι (1) και (6), ο πατέρας στοιχείο που τους χωρίζει 25 επίσης περιλαμβάνεται στον συνδυασμένο κόμβο. Η αφαίρεση του 25 από τον κόμβο (0) δημιουργεί υποχείλιση. Και σ αυτή την περίπτωση δεν υπάρχει γειτονικός αδελφός κόμβος με περισσότερα από d στοιχεία, οπότε είναι αναγκαίο να συνδυασθούν κόμβοι. 21

Παράδειγμα διαγραφής -4- Οι κόμβοι (0) και (7) συνδυάζονται και ο συνδυασμένος κόμβος περιλαμβάνει και το κλειδί 90 που μεταφέρθηκε από τον πατέρα κόμβο. Οπότε ο κόμβος ρίζα γίνεται κενός, οπότε διαγράφεται και ο κόμβος (0) γίνεται ρίζα. 22

Παράδειγμα διαγραφής -5- Όταν συμβεί να διαγραφεί στοιχείο σε εσωτερικό κόμβο τότε αντικαθίστανται από ένα στοιχείο τερματικού κόμβου. Οπότε τροποποιείται το παραπάνω πρόβλημα σε διαγραφή στοιχείου τερματικού κόμβου. Όπως αναφέρθηκε παραπάνω το τερματικό στοιχείο μπορεί να είναι είτε το δεξιότερο στοιχείο του αριστερού υποδένδρου ή το αριστερότερο στοιχείο του δεξιού υποδένδρου. Αν από το δένδρο του παραπάνω σχήματος αφαιρεθεί το στοιχείο 90 τότε μπορεί να μετακινηθεί είτε το 80 είτε το 90 για να το αντικαταστήσουν. Αυτό μπορεί να οδηγήσει σε υποχείλιση που αντιμετωπίζεται όπως προηγούμενα. 23

AVL-Δέντρα 24

Βασικές έννοιες -1- Ένα AVL-δέντρο (AVL-tree) είναι ένα δυαδικό δέντρο αναζήτησης στο οποίο για κάθε κόμβο του ισχύει ότι hl-hr <=1, όπου hl & hr είναι τα ύψη του αριστερού και δεξιού υποδένδρου αντίστοιχα, δηλαδή για κάθε κόμβο το ύψος του αριστερού υποδέντρου διαφέρει από το ύψος του δεξιού υποδέντρου του κόμβου αυτού το πολύ κατά 1. Για παράδειγμα, το δυαδικό δέντρο 25

Βασικές έννοιες -2- είναι AVL-δέντρο δεν είναι AVL-δέντρο, αφού το ύψος του αριστερού υποδέντρου της ρίζας είναι 1 ενώ το ύψος του δεξιού υποδέντρου είναι 3. 26

Εισαγωγή στοιχείου σε ένα AVLδέντρο -1- Εφόσον ένα AVL-δέντρο είναι ένα δυαδικό δέντρο αναζήτησης, θα ακολουθήσουμε τη διαδικασία της εισαγωγής στοιχείου σε δυαδικό δέντρο αναζήτησης, την οποία περιγράψαμε στο 5ο Κεφάλαιο. Το αποτέλεσμα της διαδικασίας αυτής μπορεί να είναι ένα δυαδικό δέντρο αναζήτησης που εξακολουθεί να είναι ένα AVL-δέντρο. 27

Εισαγωγή στοιχείου σε ένα AVLδέντρο -1- Παράδειγμα: αν εισάγουμε το 1 ή το 9 στο AVL-δέντρο προκύπτουν αντίστοιχα τα δέντρα τα οποία είναι και τα δύο AVL-δέντρα. 28

Εισαγωγή στοιχείου σε ένα AVLδέντρο -2- Ωστόσο, αν εισάγουμε τα στοιχεία 1, 3, 5 ή 7 στο AVL-δέντρο παραβιάζουμε την ιδιότητα των AVLδέντρων. Για παράδειγμα, η εισαγωγή του 3 έχει ως αποτέλεσμα το δέντρο : που δεν είναι AVL-δέντρο, αφού το ύψος του αριστερού υποδέντρου της ρίζας είναι 3 ενώ το ύψος του δεξιού υποδέντρου είναι 1. 29

Παράγοντας ισοζύγισης -1- Προκειμένου να αντιμετωπίσουμε το πρόβλημα της παραβίασης της ιδιότητας των AVL-δέντρων κατά την εισαγωγή ενός στοιχείου σε ένα AVLδέντρο, είναι βολικό σε κάθε κόμβο του δέντρου να αντιστοιχίσουμε τον παράγοντα ισοζύγισης (balance factor), δηλαδή να χρησιμοποιήσουμε ένα επιπλέον πεδίο, έστω Balance, το οποίο θα έχει τιμή -1, 0 ή 1 που προκύπτει ως εξής: Ύψος του αριστερού υποδέντρου του κόμβου - Ύψος του δεξιού υποδέντρου 30

Παράγοντας ισοζύγισης -2- Όταν εισάγουμε ένα νέο στοιχείο σε ένα δυαδικό δέντρο αναζήτησης ξεκινάμε από τη ρίζα και διασχίζουμε μια ακολουθία κόμβων μέχρι να δημιουργήσουμε ένα νέο αριστερό ή δεξί παιδί του τελευταίου κόμβου της ακολουθίας και να το χρησιμοποιήσουμε για να αποθηκεύσουμε το νέο στοιχείο. Αυτή την ακολουθία των κόμβων την ονομάζουμε μονοπάτι αναζήτησης του νέου στοιχείου, αφού είναι εξάλλου το μονοπάτι που θα ακολουθούσαμε αν αναζητούσαμε το νέο στοιχείο. 31

Παράγοντας ισοζύγισης -3- Την παραπάνω διαδικασία την εξειδικεύουμε για την περίπτωση ενός AVL-δέντρου. Συγκεκριμένα, αν για κάθε κόμβο του μονοπατιού αναζήτησης ενός νέου στοιχείου ισχύει Balance=0, τότε η εισαγωγή του στοιχείου θα έχει ως αποτέλεσμα την αλλαγή της τιμής του πεδίου Balance σε καθένα από τους κόμβους εκείνους, οι οποίοι θα πάρουν την τιμή -1 ή 1, έτσι ώστε το δέντρο να διατηρήσει την ιδιότητα των AVL-δέντρων. 32

Παράγοντας ισοζύγισης -4- Παράδειγμα: η εισαγωγή του στοιχείου με κλειδί 3 στο AVLδέντρο (στο οποίο οι αριθμοί στις παρενθέσεις είναι οι τιμές του πεδίου Balance των κόμβων) έχει ως αποτέλεσμα τη δημιουργία του εξής δέντρου 33

Κόμβος περιστροφής -1- Στη συνέχεια ας θεωρήσουμε ότι τουλάχιστον ένας κόμβος στο μονοπάτι αναζήτησης έχει μη μηδενική τιμή στο πεδίο Balance. Έστω ότι ο κόμβος του μονοπατιού αναζήτησης με μη μηδενική τιμή που βρίσκεται πιο κοντά στο νέο κόμβο που θα χρησιμοποιούσαμε για την εισαγωγή σε ένα δέντρο δυαδικής αναζήτησης είναι ο κόμβος Α. Ο κόμβος Α ονομάζεται κόμβος περιστροφής (pivot node). 34

Κόμβος περιστροφής -2- Ας θεωρήσουμε, για παράδειγμα, το AVLδέντρο 35

Κόμβος περιστροφής -3- Για την εισαγωγή ενός στοιχείου με τιμή κλειδιού 5 "ακολουθούμε" το μονοπάτι αναζήτησης 8, 4, 6, ενώ για την εισαγωγή ενός στοιχείου με τιμή κλειδιού 9 το μονοπάτι αναζήτησης είναι 8, 10. Και στις 2 περιπτώσεις ο κόμβος Α, στον οποίο βρίσκεται το στοιχείο με τιμή κλειδιού 8, είναι ο κόμβος περιστροφής. Εφόσον το πεδίο Balance του κόμβου Α έχει μη μηδενική τιμή τα υποδέντρα του έχουν διαφορετικό ύψος και στη συνέχεια θα αναφερόμαστε σε αυτά ως ψηλότερο και χαμηλότερο υποδέντρο. Είναι προφανές ότι αν εισάγουμε ένα στοιχείο στο χαμηλότερο από τα 2 υποδέντρα του Α τότε το πεδίο Balance του Α θα πάρει την τιμή 0 και το δέντρο που προκύπτει θα ικανοποιεί την ιδιότητα των AVLδέντρων, χωρίς να χρειάζεται να κάνουμε καμία άλλη ενέργεια. Αυτό συμβαίνει αν εισάγουμε το 9 στο παραπάνω δέντρο. 36

Εισαγωγή στο ψηλότερο υποδέντρο -1- Ας εξετάσουμε τώρα τι συμβαίνει αν η εισαγωγή πρέπει να γίνει στο ψηλότερο από τα 2 υποδέντρα του Α. Αν εφαρμόζαμε τη διαδικασία της εισαγωγής, όπως αυτή εφαρμόζεται σε ένα δέντρο δυαδικής αναζήτησης, τότε η τιμή του πεδίου Balance θα άλλαζε σε 2 ή -2 και θα καταστρεφόταν η ιδιότητα των AVL-δέντρων. Στη συνέχεια θα δούμε πως αναδιατάσσουμε τα στοιχεία των κόμβων στο υποδέντρο με ρίζα Α μαζί με το νέο στοιχείο, έτσι ώστε να δημιουργήσουμε ένα AVL-δέντρο. 37

Εισαγωγή στο ψηλότερο υποδέντρο -2- Ας υποθέσουμε ότι το ψηλότερο υποδέντρο του Α είναι το αριστερό υποδέντρο, που σημαίνει ότι το πεδίο Balance του Α έχει τιμή 1. Επίσης, ας υποθέσουμε ότι η ρίζα του συγκεκριμένου υποδέντρου είναι Β: σύμφωνα με τον ορισμό του κόμβου περιστροφής Α το πεδίο Balance του Β θα έχει τιμή 0. Το υποδέντρο με ρίζα Α μπορεί να αναπαρασταθεί σχηματικά, πριν από την εισαγωγή του νέου στοιχείου ως εξής όπου Tr (A) είναι το δεξί υποδέντρο του Α, ενώ T l (B) και T r (Β) είναι το αριστερό και δεξί υποδέντρο αντίστοιχα του Β. Εφόσον, για τον κόμβο Α έχουμε Balance = 1 και για τον Β Balance = 0, τα 3 υποδέντρα T r (A), T l (B) και T r (Β) έχουν όλα το ίδιο ύψος. 38

Εισαγωγή στο ψηλότερο υποδέντρο -3- Οι περιπτώσεις που πρέπει να λάβουμε υπόψη είναι 2: 1. στην 1η αναφερόμαστε ως LL: το νέο στοιχείο θα έπρεπε να εισαχθεί στο αριστερό υποδέντρο Tl (B) του Β. 2. Η απευθείας εισαγωγή όμως θα οδηγούσε στη δημιουργία ενός νέου αριστερού υποδέντρου Tl '(B) με ύψος μεγαλύτερο κατά 1 από το υποδέντρο Tl (B), και συνεπώς το υποδέντρο με ρίζα τον κόμβο Α θα γινόταν και για τον κόμβο Α θα είχαμε Balance = 2, το οποίο δεν επιτρέπεται 39

Τέλος Ενότητας