Advanced Data Indexing

Σχετικά έγγραφα
Advanced Data Indexing

Προηγμένη Ευρετηρίαση Δεδομένων (ΠΜΣ) Ενδεικτικές ερωτήσεις-θέματα για την εξέταση της θεωρίας

Advanced Data Indexing

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

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

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

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

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

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

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

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

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

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

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

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

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

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

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

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

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

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

Επιµέλεια Θοδωρής Πιερράτος

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

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

Ταξινόμηση. Σαλτογιάννη Αθανασία

Ταξινόμηση με συγχώνευση Merge Sort

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

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

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

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

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

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

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

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

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

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

Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, Τ.Ε.Π Π.Μ, Μάθημα: Γραφικά με Η/Υ

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

Δυναμική Διατήρηση Γραμμικής Διάταξης

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

Επεξεργασία Ερωτήσεων

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

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

JDSL Java Data Structures Library

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

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

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Κατανεμημένα Συστήματα Ι

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

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

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

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

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

Ευρετήρια. Ευρετήρια. Βάσεις εδοµένων :ευρετήρια 1

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

4. Συνδεδεμένες Λίστες

Εισαγωγή στους Αλγορίθμους

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

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

1η Σειρά Γραπτών Ασκήσεων

Εξωτερική Ταξινόμηση. Μ.Χατζόπουλος 1

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

Για παράδειγμα η αρχική και η τελική κατάσταση αναπαριστώνται ως εξής: (ένα λίτρο)

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

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση, Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-1

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

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

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

Κατακερματισμός (Hashing)

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

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

Θεωρία Γραφημάτων 6η Διάλεξη

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

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

Επεξεργασία Ερωτήσεων

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

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

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

Φροντιστήριο Αποθήκευση σε δίσκο, βασικές οργανώσεις αρχείων κατακερματισμός και δομές ευρετηρίων για αρχεία

Επεξεργασία Ερωτήσεων

Εισαγωγή στην Επιστήμη των Υπολογιστών

Επεξεργασία Ερωτήσεων

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

Insert (P) : Προσθέτει ένα νέο πρότυπο P στο λεξικό D. Delete (P) : Διαγράφει το πρότυπο P από το λεξικό D

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΛΟΣ 29