Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)

Slides:



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

Indexing.
Δομές Δεδομένων και Αλγόριθμοι
ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΜΑΘΗΜΑ 5.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
1 ΥΠΟΛΟΓΙΣΤΙΚΉ ΓΕΩΜΕΤΡΊΑ. 2 Πρόβλημα:  Δυναμική διατήρηση N διαστημάτων με διαφορετικά ανά δύο σημεία αρχής και τέλους (σύνορα) έτσι ώστε να απαντάμε.
Συνάφεια Κρυφής Μνήμης σε Επεκτάσιμα Μηχανήματα. Συστήματα με Κοινή ή Κατανεμημένη Μνήμη  Σύστημα μοιραζόμενης μνήμης  Σύστημα κατανεμημένης μνήμης.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
ΠΡΟΗΓΜΕΝΗ ΕΥΡΕΤΗΡΙΑΣΗ ΔΕΔΟΜΕΝΩΝ Ταξινόμηση – Αναζήτηση.
Δομές Αναζήτησης 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 Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Βελτιστοποίηση και Επεξεργασία Ερωτημάτων
Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Προσεγγιστικοί Αλγόριθμοι
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Δομές Αναζήτησης 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 Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
Στοίβα, Ουρά.
Ουρά Προτεραιότητας: Heap
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Δομές Δεδομένων.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
Δυναμικά Σύνολα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Δυναμικό σύνολο Tα στοιχεία του μεταβάλλονται.
Μοντέλα - Αλγόριθμοι – Ταξινόμηση Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
Ελάχιστο Συνδετικό Δέντρο
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Δομές Αναζήτησης 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 Τύποι δεδομένων στη C Ακέραιοι.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Κατακερματισμός – Hashing (1 ο Μέρος)
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
ΕΠΛ 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 το πολύ.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 3. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Δεδομένα Δεδομένα (data) Δεδομένα (data) –αφαιρετική αναπαράσταση.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Δυναμικός Κατακερματισμός
Επίλυση Προβλημάτων με Αναζήτηση
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Χειμερινό εξάμηνο 2017 Πέμπτη διάλεξη
Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα (2,4) Δέντρα.
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Διαχρονικές Δομές Δεδομένων
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)

Διαχρονικά B-Δέντρα (Persistent B-trees)  Σε μερικές εφαρμογές βάσεων/δομών δεδομένων όπου γίνονται ενημερώσεις μας ενδιαφέρει η υποστήριξη ερωτημάτων που αφορούν και την τρέχουσα αλλά και προηγούμενες εκδόσεις της βάσης/δομής.  multiversion databases  multiversion structures  Είδη Διαχρονικότητας:  Μερική: Ενημερώνεται η τρέχουσα έκδοση μόνο (από όπου παίρνουμε την καινούργια έκδοση).  Πλήρης: Μπορεί να γίνονται ενημερώσεις σε όλες τις εκδόσεις (πιο δύσκολη περίπτωση).

Μία Εύκολη Λύση  Αντιγραφή ολόκληρης της δομής σε κάθε πράξη ενημέρωσης.  Διατήρηση μίας δομής «προσπέλασης εκδοχών» (σε B-Δέντρο)  Πλεονεκτήματα:  I/O κόστος Ο(log B N+Ζ/Β) για ερωτήματα περιοχής σε οποιαδήποτε έκδοση.  I/O κόστος Ο(log B N) για ερωτήματα αναζήτησης ή για μία ενημέρωση σε οποιαδήποτε έκδοση.  Μειονεκτήματα: αν U το πλήθος των ενημερώσεων, τότε:  O(UN/B) χώρος. i i+2 i+1 ενημέρωση i+3 i i+2 i+1

Μία πιο Αποδοτική Λύση  Ιδέα: Αντί να κρατάμε αντίγραφα όλης της δομής, έχουμε μόνο μία δομή και σε κάθε στοιχείο της δομής προστίθεται και ένα «διάστημα ύπαρξής» του.  Η αρχή του διαστήματος εκφράζει τη στιγμή της εισαγωγής του στην δομή (insert).  Το τέλος του διαστήματος εκφράζει τη στιγμή της διαγραφής του από την δομή (delete).  Αν τα στοιχεία είναι πολυδιάστατα και έχουμε ενημέρωση (update) σε κάποιες μόνο διαστάσεις ενός στοιχείου, μία λύση είναι να το διαγράψουμε και να το επανεισάγουμε ενημερωμένο (delete+insert).  Η δομή θα πρέπει να είναι σύνθετη ώστε να διαχειρίζεται και τα διαστήματα ύπαρξης και τα ίδια τα στοιχεία.  Λύση: Συνδυασμός ενός κατευθυνόμενου γράφου και ενός Β-Δέντρου.

Διαχρονικά B-Δέντρα  Ένα Διαχρονικό B-Δέντρο με παράμετρο b (>16) αποτελείται από:  Ένα Κατευθυνόμενο Γράφο T G όπου: Οι κόμβοι του περιέχουν στοιχεία με διαστήματα ύπαρξης. Σε κάθε χρονική στιγμή t, οι κόμβοι με ζωντανά στοιχεία την στιγμή t (τα στοιχεία που έχουν την στιγμή t στο διάστημα ύπαρξής τους), διαμορφώνουν ένα B-Δέντρο με παράμετρο φύλλων και διακλάδωσης b.  Ένα B-δένδρο T B με παράμετρο φύλλων και διακλάδωσης b, που έχει φύλλα του τους κόμβους ρίζες (roots) του T G (κόμβοι με in-deg=0), ταξινομημένους ως προς τις χρονικές στιγμές της αρχής των διαστημάτων ύπαρξης (insert times). TGTG TBTB

Διαχρονικά B-Δέντρα  Αν θέσουμε b=B τότε μπορούμε να σχηματίσουμε οποιαδήποτε έκδοση του διαχρονικού Β-Δέντρου με κόστος: Ο(log B N+Z/Β) I/Oς.  Για να κάνουμε ένα οποιοδήποτε ερώτημα τη χρονική στιγμή t:  Βρίσκουμε τον κατάλληλο κόμβο ρίζα στο γράφημα T G χρησιμοποιώντας το T B.  Κάνουμε την αναζήτηση στο T G όπως σε ένα κανονικό Β-Δέντρο. TGTG TBTB

Αποδοτική Ενημέρωση (της τελευταίας έκδοσης [current version])  Οι ενημερώσεις γίνονται όπως και στο απλό B-Δέντρο. Όλα τα φύλλα περιέχουν από b/4 έως b στοιχεία.  Για να έχουμε γραμμικό χώρο Ο(Ν/Β), θέτουμε b=B και διατηρούμε τον εξής περιορισμό:  Κάθε νέος κόμβος θα πρέπει να περιέχει μεταξύ 3B/8 και 7B/8 ζωντανά στοιχεία και καθόλου νεκρά στοιχεία: Στην κόκκινη περιοχή απαγορεύεται η εισαγωγή στοιχείων. Στην πράσινη περιοχή αποθηκεύονται τα ζωντανά στοιχεία ενώ οι κίτρινες περιοχές είναι περιοχές όπου προσωρινά μπορούμε να έχουμε στοιχεία αλλά το αποφεύγουμε. Ζωντανά στοιχεία είναι αυτά που είναι ενεργά μέχρι αυτή τη στιγμή. Τα νεκρά δεν υφίστανται στην τελευταία έκδοση.

Ένθεση (στην τρέχουσα έκδοση)  Εύρεση του αντίστοιχου φύλλου u και ένθεση του στοιχείου  Αν το u περιέχει B+1 στοιχεία έχουμε Υπερχείλιση μπλοκ:  Γίνεται Διάσπαση Εκδοχών (version split): Αντιγράφονται όλα τα x ζωντανά στοιχεία του u σε νέο κόμβο u΄, διαγράφεται ο δείκτης του u από την τρέχουσα έκδοση ενώ προστίθεται ο δείκτης του u΄.  Αν x > 7B/8: Υπερχείλιση (  )  Αν x < 3B/8: Υποχείλιση (  )  Αν 3B/8  x  7B/8 τότε αναδρομικά ενημερώνεται ο πατέρας του u. uu΄u΄

Ένθεση (στην τρέχουσα έκδοση)  Υπερχείλιση (x > 7B/8)  Διάσπαση u σε u΄ και u΄΄ με x/2 στοιχεία στον καθένα (3Β/8<x/2  B/2)  Αναδρομική ενημέρωση parent(u): Διαγραφή δείκτη u και ένθεση δεικτών u΄ και u΄΄  Υποχείλιση (x < 3B/8)  Συγχώνευση x στοιχείων με y ζωντανά στοιχεία από διάσπαση εκδοχών σε κάποιο αδερφό του (Β/2  x+y  11B/8) [B/4+B/4  x+y  3B/8+B].  Αν x+y  7B/8 τότε (υπερχείλιση) διάσπαση σε κόμβους με (x+y)/2 στοιχεία ο καθένας (7Β/16  (x+y)/2  11B/16) [(1/2)7B/8  x+y  (1/2)11B/8].  Αναδρομική ενημέρωση parent(u): διαγραφή δύο δεικτών και ένθεση ενός/δύο δεικτών.

Διαγραφή (στην τρέχουσα έκδοση)  Εύρεση αντίστοιχου φύλλου u, και διαγραφή του στοιχείου.  Αν το u περιέχει x<B/4 ζωντανά στοιχεία: Υποχείλιση μπλοκ  Διάσπαση εκδοχής: Ο u καταργείται: καινούργιος κόμβος u΄ με x ζωντανά στοιχεία από u.  Υποχείλιση (x < 3B/8): Συγχώνευση (διάσπαση εκδοχής) και πιθανώς διάσπαση (υπερχείλιση)  Αναδρομική ενημέρωση parent(u): Διαγραφή δύο δεικτών και ένθεση ενός/δύο δεικτών

Το Διαχρονικό Β-Δέντρο Ένθεση Διαγραφή ΟΚ Υπερχείλιση μπλοκ Υποχείλιση μπλοκ ΟΚ Διάσπαση Εκδοχής Υπερχείλιση Υποχείλιση Συγχώνευση Διάσπαση ΟΚ Υπερχείλιση Διάσπαση ΟΚ -1,+1 -1,+2 -2,+2 -2,+1 0,0 Διάσπαση Εκδοχής

Απόδοση  Σε ένα άδειο διαχρονικό Β-Δέντρο μετά από N ενημερώσεις:  Κάθε ένθεση ή διαγραφή απαιτεί Ο(log B N) επαναζυγίσεις (ύψος).  Σε κάθε πράξη επαναζύγισης ενός φύλλου το πολύ δύο νέα μπλοκ δημιουργούνται.  Από τη στιγμή της δημιουργίας ενός νέου φύλλου απαιτούνται τουλάχιστον Β/8 ενημερώσεις μέχρι να ξανασυμβεί νέα πράξη επαναζύγισης.  Το πολύ 2N/(B/8) = 16Ν/Β = O(N/B) φύλλα θα δημιουργηθούν.  Στο αμέσως ανώτερο επίπεδο (1 ο ) θα γίνουν το πολύ κόμβοι.  Στο επίπεδο i θα γίνουν το πολύ κόμβοι.  Έτσι το σύνολο των κόμβων που θα δημιουργηθούν θα είναι:  Συνολικός απαιτούμενος χώρος γραμμικός: Ο(Ν/Β). καθώς b=B>16

Απόδοση Διαχρονικού Β-Δέντρου  Ενημέρωση: Ο(log B N)  Χώρος: O(N/B)  Έχει I/O κόστος αναζητήσεων: Ο(log B N).  Έχει I/O κόστος ερωτημάτων περιοχής: Ο(log B N+Z/Β) TGTG TBTB

Αποδοτική Κατασκευή B-Δέντρων  Είδαμε ότι η κατασκευή ενός οποιουδήποτε Β-Δέντρου με τη μέθοδο insertion-load, γίνεται εισάγοντας τα στοιχεία ένα-ένα. Για Ν στοιχεία όπου το κάθε ένα εισάγεται με κόστος O(log Β N) έχουμε συνολικό Ι/Ο κόστος: O(Nlog Β N) (μη βέλτιστο).  Στο άλλο άκρο είδαμε ότι η μέθοδος bulk-load ταξινομεί όλα τα N στοιχεία στην δευτερεύουσα μνήμη, κατασκευάζει τα φύλλα και κτίζει το δέντρο από κάτω προς τα πάνω ανά επίπεδο, ώστε να πετύχει το βέλτιστο κόστος:  Αν όμως η δομή μας θέλουμε να είναι δυναμική;  Αν έχουμε μεγάλο πλήθος ενημερώσεων;  Αν έχουμε διαχρονικό δέντρο;

Αποδοτική Κατασκευή B-Δέντρων  Στις περιπτώσεις αυτές ακόμα και να κάνουμε για το αρχικό πλήθος στοιχείων bulk-load, σε κάθε νέα εισαγωγή ή γενικά ενημέρωση (και θα είναι πολλές) θα πρέπει να πληρώνουμε Ι/Ο κόστος O(log Β N) και έτσι απομακρυνόμαστε σημαντικά από το βέλτιστο κόστος.  Μπορούμε να έχουμε μία δυναμική δομή για χρήση σε αλγόριθμους με επιμερισμένο Ι/Ο κόστος: ανά ενημέρωση;  Τότε όσες ενημερώσεις και να γίνουν θα έχουμε αθροιστικά πάντα το βέλτιστο κόστος.

Δέντρο Ενδιάμεσης Μνήμης (ΕΜ-Δέντρο)  Βασική Ιδέα:  Καθυστέρηση στις ενημερώσεις ώστε να μην γίνονται μία προς μία αλλά ομαδικά.  Χρήση Ενδιάμεσων Μνημών (Buffers) στους κόμβους στους οποίους θα μαζεύονται οι ενημερώσεις με χρονολογική σειρά.  Κάθε φορά που θα γίνεται μία ενημέρωση (π.χ. μία εισαγωγή) θα καταγράφεται απλά στον buffer της ρίζας.  Μόλις γεμίσει ένας buffer τότε αυτός αδειάζει μεταφέροντας όλες τις ενημερώσεις στους αντίστοιχους buffers του παρακάτω επιπέδου. Αν κάποιος από αυτούς επίσης γεμίσει τότε η διαδικασία συνεχίζεται για όσα επίπεδα χρειαστεί αναδρομικά.

Δέντρο Ενδιάμεσης Μνήμης (ΕΜ-Δέντρο)  Βασική Δομή:  Για να εκμεταλλευτούμε την διαθέσιμη μνήμη θα πάρουμε B-Δέντρο με παράμετρο διακλάδωσης b=Μ/Β και παράμετρο φύλλων k=Β.  Το μέγεθος των buffers θα είναι M.  Τότε το άδειασμα ενός buffer απαιτεί O(M/B) I/Oς.  Σε Ν πλήθος ενημερώσεων, κάθε μπλοκ στοιχείων του δέντρου συμμετέχει σταθερό αριθμό φορών:  Συνεπώς το συνολικό κόστος I/O είναι:

 Ορισμός:  B-Δέντρο με παράμετρο διακλάδωσης Μ/Β και παράμετρο φύλλων Β.  Κάθε εσωτερικός κόμβος έχει buffer μεγέθους M.  Ενημερώσεις:  Προστίθεται χρονική ετικέτα (time stamp) για κάθε ένθεση/διαγραφή στοιχείου, καθώς και το είδος της ενημέρωσης.  Οι ενημερώσεις προωθούνται αρχικά προς τον buffer της ρίζας. Το Βασικό ΕΜ-Δέντρο $m$ blocks B M στοιχεία βαθμός

 Όταν μαζευτούν B στοιχεία προς ενημέρωση (εισαγωγή/διαγραφή) στην κύρια μνήμη τότε εισάγονται στον buffer της ρίζας.  Αν ο buffer αυτός περιέχει παραπάνω από Μ στοιχεία τότε ξεκινάει η διαδικασία αδειάσματός του (buffer-emptying process).  Διαφορετικά αδειάζουν οι buffers των εσωτερικών κόμβων που έχουν παιδιά άλλους εσωτερικούς (level>1) και διαφορετικά οι buffers των εσωτερικών κόμβων που έχουν παιδιά φύλλα (level=1). Το Βασικό ΕΜ-Δέντρο

Παρατηρήσεις:  Ένας buffer μπορεί κατά τη διαδικασία αναδρομικών αδειασμάτων να έχει και περισσότερα από Μ στοιχεία προσωρινά (αν κατανεμηθούν από ανώτερα επίπεδα προς το ίδιο παιδί).  Τα στοιχεία από την μνήμη κατανέμονται στα παιδιά ταξινομημένα. Όμως τα στοιχεία στον buffer δεν είναι απαραίτητα ταξινομημένα (το πολύ Μ στοιχεία αταξινόμητα). Συνεπώς πρώτα τα ταξινομούμε και μετά τα συγχωνεύουμε με τα ήδη ταξινομημένα της μνήμης. $m$ blocks M B

Άδειασμα ΕΜ Κόμβων (level>1)  Φέρνουμε τα M (μη ταξινομημένα) στοιχεία από τον buffer στην μνήμη και τα ταξινομούμε. [O((M/B)log M/B (M/B)) = O(M/B)]  Τα συγχωνεύουμε με τα προηγούμενα στοιχεία της κύριας μνήμης (ήδη ταξινομημένα). [αν X (>M) όλα μαζί τότε: O(X/B)]  Καθώς διατρέχουμε την ταξινομημένη λίστα: Διαγράφουμε οποιαδήποτε ζεύγη ενημερώσεων που αφορούν ενθέσεις και μεταγενέστερες διαγραφές ιδίων στοιχείων (πριν την κατανομή). Κατανέμουμε τα στοιχεία στους buffers των παιδιών [Θ(M/B)].  Αναδρομικά αδειάζουμε τους buffers των παιδιών (όπου είναι απαραίτητο).  Συνεπώς το άδειασμα ενός buffer απαιτεί συνολικά: O(X/B+M/B)=O(X/B) I/Oς. (χωρίς τις αναδρομές) $m$ blocks M

 Βασικός Περιορισμός:  Το άδειασμα του buffer ενός κόμβου που έχει παιδιά φύλλα (επιπέδου 1) γίνεται μόνον όταν όλοι οι buffers των εσωτερικών κόμβων των ανωτέρω επιπέδων είναι άδειοι.  Αυτό εξασφαλίζει ότι μπορούν να γίνουν τυχόν επαναζυγίσεις του δέντρου με αλλαγές στη δομή (splits/fuses) όταν δεν υπάρχουν «εκκρεμότητες».  Μάλιστα οι επαναζυγίσεις γίνονται αφού γίνουν και οι τελικές ενημερώσεις στα φύλλα, δηλαδή αφού αδειάσει και ο buffer του κόμβου επιπέδου 1. Άδειασμα ΕΜ Κόμβων (level=1) k

 Έστω ότι ο κόμβος v επιπέδου 1 έχει k παιδιά (φύλλα) και πρέπει να αδειάσει ο buffer του. Τότε:  Γίνεται ταξινόμηση των στοιχείων του buffer του v. [O(M/B)]  Διαγράφονται οποιαδήποτε ζεύγη ενημερώσεων που αφορούν ενθέσεις και μεταγενέστερες διαγραφές ιδίων στοιχείων (όπως και πριν).  Προωθούνται και γίνονται οι αντίστοιχες ενημερώσεις στα στοιχεία των k φύλλων. [O(X/B)]  Αν λόγω των ενημερώσεων (π.χ. πολλών διαγραφών) δεν έχουμε αρκετά στοιχεία για να κρατήσουμε τα k φύλλα, τοποθετούμε προσωρινά ψεύτικα στοιχεία μέχρι να αδειάσουν όλοι οι buffer, μετά τα σβήνουμε ένα-ένα και καλούμε επαναζύγιση του δέντρου.  Αν λόγω των ενημερώσεων (π.χ. πολλών ενθέσεων) έχουμε παραπάνω από τα στοιχεία που μπορούν να κρατήσουν τα k φύλλα, εισάγουμε αυτά που δεν χωρούν ένα-ένα στο δέντρο και καλούμε επαναζύγισή του.  Συνεπώς το άδειασμα του buffer απαιτεί πάλι: O(X/B) I/Oς. (αν X>M) k

Επαναζυγίσεις  Βασικός Περιορισμός: Οι buffers των κόμβων στο μονοπάτι από τη ρίζα μέχρι τον κόμβο v που επαναζυγίζεται πρέπει να είναι άδειοι.  Οι Διασπάσεις (splits) γίνονται όπως στο κανονικό Β-Δέντρο.  Οι συγχωνεύσεις έχουν έναν επιπλέον περιορισμό: ο buffer του αδερφού κόμβου v΄ πρέπει επίσης να αδειάσει πριν την συγχώνευσή του με τον v. v v v΄v΄ v v’ v’’

Απόδοση ΕΜ-Δέντρου  Χωρίς τις επαναζυγίσεις το άδειασμα ενός buffer απαιτεί O(X/B) I/Oς (μόνον όταν Χ>Μ) ή Ο(Μ/B) I/Oς.  Συνεπώς το άδειασμα όλων των buffers από τους γεμάτους κόμβους έχει Ι/Ο κόστος (χωρίς τις επαναζυγίσεις):  Μετά από Ν ενημερώσεις το συνολικό πλήθος των επαναζυγίσεων των εσωτερικών κόμβων του δέντρου είναι:  Εφόσον κάθε τέτοια πράξη απαιτεί και Ο(Μ/B) Ι/Ος για το άδειασμα του κάθε buffer, το συνολικό κόστος Ν ενημερώσεων με τις επαναζυγίσεις θα είναι:

Ταξινόμηση με χρήση ΕΜ-Δέντρου  Μία βασική εφαρμογή του ΕΜ-Δέντρου είναι η χρήση του για την ταξινόμηση Ν στοιχείων στην δευτερεύουσα μνήμη.  Απαιτείται μόνο η υλοποίηση μίας διαδικασίας αδειάσματος όλων των buffers και η διάσχιση των στοιχείων των φύλλων.  Διαδικασία:  Εισάγονται τα Ν στοιχεία στο ΕΜ-Δέντρο.  Το άδειασμα των buffers γίνεται με BFS σειρά προτεραιότητας.  Αναφέρονται τα ταξινομημένα στοιχεία διασχίζοντας τα φύλλα.  Το συνολικό απαιτούμενο Ι/Ο κόστος είναι βέλτιστο: $m$ blocks M B

 Υποστήριξη μαζικών ενημερώσεων με χρήση buffers μεγέθους M:  Επιμερισμένο κόστος Ι/Ο ανά ενημέρωση:  Όλοι οι buffers αδειάζουν με κόστος Ι/Ο:  Υποστήριξη μαζικών ερωτημάτων περιοχής με Ι/Ο κόστος: ανά ερώτημα.  Όλα τα στοιχεία αναφέρονται μετά το άδειασμα των buffers.  Συνεπώς τα ερωτήματα δεν απαντώνται ένα-ένα αλλά μαζικά στο τέλος.  Μερικά αποτελέσματα συγκεντρώνονται για όλα τα ερωτήματα κατά τη διαδικασία.  Χρησιμοποιώντας την τεχνική των buffers κατασκευάζεται ένα διαχρονικό Β-Δέντρο με: κόστος I/O.  Η ίδια τεχνική μπορεί να εφαρμοστεί και σε ουρές προτεραιότητας. Άλλες Εφαρμογές ΕΜ-Δέντρου $m$ blocks

Highlights  B-Δέντρο  O(N/B) χώρος, O(log B N) ενημέρωση, O(log B N+Z/B) ερώτημα περιοχής.  Βαροζυγισμένο B-Δέντρο  Ω(w(v)) ενημερώσεις κάτω από τον v μεταξύ διαδοχικών πράξεων στον v.  Διαχρονικό B-Δέντρο  Ερώτημα σε οποιαδήποτε εκδοχή:  ΕΜ-Δέντρο  Μαζικές ενημερώσεις με επιμερισμένο κόστος.

ΤΕΛΟΣ 29