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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δένδρα van Emde Boas TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μελετάμε την περίπτωση όπου αποθηκεύουμε.
Advertisements

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
ΕΠΛ231 – Δομές Δεδομένων και Αλγόριθμοι
Διακριτά Μαθηματικά ΙI Δυαδικά Δέντρα Αναζήτησης
Διακριτά Μαθηματικά ΙI Δέντρα
Δομές Δεδομένων - Δυαδικά Δένδρα (binary trees)
12 Δενδρικές Μέθοδοι Προσπέλασης  Β-δένδρα  Β*-δένδρα  Β + -δένδρα  Άλλες παραλλαγές των Β-δένδρων.
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Δυναμικός Κατακερματισμός.
Ο αλγόριθμος του Ukkonen Βεργούλης Θανάσης Το suffix trie Το suffix trie του string D=“book” b o o k o o k k k $ $ $ $
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Lab 6: AVL Trees 29/10/20101ΕΠΛ231 - Δομές Δεδομένων και Αλγόριθμοι.
Τεχνικές Κατακερματισμού
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
A Balanced Tree Structure for Peer-to-Peer Networks
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
Ουρά Προτεραιότητας: Heap
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες:
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
EPL231 – Data Structures and Algorithms
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
Παράδειγμα B + -Tree Υποθέτουμε B + -Tree τάξης 3 (α=2, b=3)  Κάθε φύλλο θα έχει 2 ως 3 το πολύ στοιχεία  Κάθε εσωτερικός κόμβος θα έχει 2 ως 3 το πολύ.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Δομές Δεδομένων και Αρχεία
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
1 Είδη μέσων αποθήκευσης Πρωτεύοντα μέσα αποθήκευσης κεντρική μνήμη και όλες οι υπόλοιπες μνήμες (π.χ καταχωρητές, cache memory) Δευτερεύοντα μέσα αποθήκευσης.
17η Διάλεξη Ισορροπημένα δέντρα Ε. Μαρκάκης
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Δυναμικός Κατακερματισμός
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Δεντρικά Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
EPL231 – Data Structures and Algorithms
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε χρόνο εκτέλεσης
Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης
Ουρά Προτεραιότητας (priority queue)
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα (2,4) Δέντρα.
Φόρμες Φόρμες χρησιμοποιούνται για να δημιουργήσουμε ένα φιλικό περιβάλλον για την διαχείριση των δεδομένων της βάσης. Επίσης δίνεται η δυνατότητα δημιουργίας.
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Δυναμικός Κατακερματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Μεταγράφημα παρουσίασης:

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

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Δένδρα Γενίκευση των δυαδικών δένδρων αναζήτησης. Ορισμός: –Κάθε κόμβος περιέχει ένα ή δύο κλειδιά. –Ένας εσωτερικός κόμβος 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

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-3 Παράδειγμα 2-3 Δένδρου

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

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

Εισαγωγή κόμβου σε ένα 2-3 δένδρο Η εισαγωγή κάποιου κλειδιού k σε ένα 2-3 Δένδρο μπορεί να χωριστεί στις ακόλουθες 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) –Σε αυτή την φάση κάνουμε την εισαγωγή αν δεν πετύχαμε εισαγωγή στην τερματική φάση.

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

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

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

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

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

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

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

Ολοκληρωμένο Παράδειγμα Εισαγωγής (συνέχεια)

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-15 Εισαγωγή κόμβου Για την εισαγωγή κλειδιού k σε ένα 2-3 Δένδρο ακολουθούμε το μονοπάτι από τη ρίζα του δένδρου μέχρι το κατάλληλο φύλλο u. Υπάρχουν δύο περιπτώσεις 1.Αν ο u περιέχει μόνο 1 κλειδί, τότε προσθέτουμε το k στον u. 2.Αν ο u περιέχει 2 κλειδιά έστω k 1 και k 2, τότε δημιουργούμε ένα καινούριο κόμβο v, και διαμοιράζουμε τα κλειδιά του u, και το καινούριο κλειδί k έτσι ώστε: ο u να πάρει το μικρότερο των κλειδιών και ο v το μεγαλύτερο. Ο δείκτης προς τον v και το μεσαίο κλειδί, m, μεταβιβάζεται στον πατέρα w του u. –Αν ο w έχει μόνο ένα κλειδί, τότε προσθέτουμε το ζεύγος (m,v) στον κόμβο w. Διαφορετικά, δημιουργούμε ένα καινούριο κόμβο και επαναλαμβάνουμε το βήμα 2. –Αυτή η διαδικασία μπορεί να συνεχιστεί μέχρι τη ρίζα του δένδρου με αποτέλεσμα τη διάσπαση της ρίζας και την αύξηση του ύψους του δένδρου κατά 1.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-16 Αναλυτική Περιγραφή – Φάση 1 Ξεκινώντας από τη ρίζα, εφάρμοσε τον πιο κάτω αλγόριθμο σε κάθε κόμβο u μέχρι να φτάσεις σε κάποιο φύλλο, καταγράφοντας τη διαδρομή που ακολούθησες: Αν 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 – Δομές Δεδομένων και Αλγόριθμοι 8-17 Τρέχον παράδειγμα – εισαγωγή του 19 (1) Ξεκινώντας από τη ρίζα, p 0, ακολουθούμε και καταγράφουμε τη διαδρομή p 0, p 2, p p0p0 p1p1 p2p2 p3p3 p4p4 p5p5 p6p6

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-18 Φάση 2(α) – Περίπτωση Φύλλου Έστω ότι προσθέτουμε το κλειδί 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 = (NODE *)malloc(sizeof(NODE)), –p.numkeys = 1, –p.key1 = max(k 1, k 2,k). –προχώρα στη φάση 2(β) με παραμέτρους p, mid(k 1, k 2,k)

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-19 Τρέχον παράδειγμα – εισαγωγή του 19 (2) p0p0 p1p1 p2p2 p3p3 p4p4 p5p5 p6p q1q1 (20, q 1 )

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-20 Φάση 2(β) – Περίπτωση Εσωτερικού κόμβου Έστω ότι προσθέτουμε το κλειδί 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= (NODE *)malloc(sizeof(NODE)), q.numkeys = 1, q.key1 = k 2, q.left = p2, q.center = p3. –αν ο u είναι η ρίζα τότε προχώρα στη φάση 3, διαφορετικά επανάλαβε τη φάση 2(β) με παραμέτρους (q, k 1 ) στον πατέρα του u.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-21 Τρέχον παράδειγμα – εισαγωγή του 19 (3) Eισαγωγή του ζεύγους (20,q 1 ) στον κόμβο p p0p0 p1p1 p2p2 p3p3 p4p4 p5p5 p6p q1q1 (20, q 1 ) q2q2 (23, q 2 ) q1q1

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-22 Τρέχον παράδειγμα – εισαγωγή του 19 (4) Eισαγωγή του ζεύγους (23,q 2 ) στον κόμβο p p1p1 p2p2 p3p3 p4p4 p5p5 p6p q2q2 (23, q 2 ) q1q1 33 p0p0 q3q3 q2q2 (23, q 3 ) 18

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-23 Φάση 3: Νέα ρίζα Αν η ρίζα r διασπαστεί και ζητήσει την εισαγωγή ζεύγους (p,k) στον “ανύπαρκτο” πρόγονο της στο δένδρο, τότε –Δημιούργησε ένα καινούριο κόμβο v με ένα κλειδί k και v.left = r, v.center = p. O καινούριος κόμβος v θα είναι η νέα ρίζα του δένδρου. Έτσι, στο παράδειγμα, εισαγωγή του (q 3, 23) έχει σαν αποτέλεσμα: 18 p0p0 p1p1 q2q2 p3p3 p2p2 33 q3q3 23 Root (23,q 3 )

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-24 Εισαγωγή του κλειδιού

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-25 Εισαγωγή του κλειδιού

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-26 Εισαγωγή του κλειδιού

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

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-28 Παραλλαγή Οι πληροφορίες αποθηκεύονται μόνο στα φύλλα. Τα κλειδιά εσωτερικών κόμβων χρησιμεύουν μόνο για την αναζήτηση στο δένδρο. Δηλαδή, για κάποιο κόμβο u, το u.key1 δηλώνει το μικρότερο κλειδί σε φύλλο του u.center, και το u.key2 (αν υπάρχει) δηλώνει το μικρότερο κλειδί σε φύλλο του u.right

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-29 Β-δένδρα Γενίκευση του 2-3 δένδρου: μπορεί να αποθηκεύει περισσότερα από 2 κλειδιά σε κάθε κόμβο. Ένα δένδρο τάξης m ικανοποιεί τις πιο κάτω ιδιότητες: –Έχει μια ρίζα η οποία είτε είναι φύλλο, είτε έχει 2 μέχρι m παιδιά. –Όλοι οι εσωτερικοί κόμβοι (εκτός τη ρίζα) έχουν από  m/2  μέχρι m παιδιά. –Όλα τα φύλλα βρίσκονται στο ίδιο επίπεδο. –Τα δεδομένα φυλάσσονται στα φύλλα. Κάθε φύλλο περιέχει από  m/2  - 1 μέχρι m – 1 κλειδιά. –Ένας εσωτερικός κόμβός με δείκτες p 0, p 1, …, p n, έχει κλειδιά k 1,…,k n, όπου k i είναι το μικρότερο κλειδί του υποδένδρου που δείχνεται από τον δείκτη p i. Ένα 2-3 δένδρο, είναι Β-δένδρο, τάξης 3.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-30 Παράδειγμα Β-δένδρου τάξης

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-31 Ένα Β-δένδρο … τάξης m με n κλειδιά έχει ύψος Έχει διαδικασίες παρόμοιες με αυτές ενός 2-3 δένδρου, οι οποίες επίσης μπορεί να προκαλέσουν διάσπαση ή συγχώνευση της ρίζας. Έχει το πλεονέκτημα έναντι των 2-3 δένδρων … Έχει το μειονέκτημα … Το κόστος των διαδικασιών είναι ανάλογο του (ύψος του δένδρου)  (κόστος επεξεργασίας ενός κόμβου) Το κόστος επεξεργασίας ενός κόμβου Ο(m) μπορεί να γίνει O(log m) αν κάθε κόμβος οργανωθεί ως AVL-δένδρο. Σε βάσεις δεδομένων οι κόμβοι αποθηκεύονται σε δευτερεύουσα μνήμη του υπολογιστή. Το κόστος πρόσβασης ενός κόμβου είναι πολύ μεγαλύτερο απ’αυτό της επεξεργασίας του. Η τιμή του m επιλέγεται βάσει του πόσα κλειδιά μπορούν να αποθηκευτούν σε ένα καταχώρημα (block) μνήμης.