1 / 51

Εργασία 2

Εργασία 2.

telma
Download Presentation

Εργασία 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Εργασία 2 1. Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη από ροές: ροές εισόδου και ροές εξόδου. Μία ροή εισόδου θα πρέπει να υποστηρίζει τουλάχιστον μία διαδικασία open (εκκίνηση μίας υπάρχουσας ροής για ανάγνωση), μία διαδικασία read_next (ανάγνωση του επόμενου στοιχείου από τη ροή) και μία διαδικασία end_of_stream (επιστρέφει TRUE αν έχουμε φτάσει στο τέλος της ροής). Μία ροή εξόδου θα πρέπει να υποστηρίζει τις πράξεις create (δημιουργία μίας νέας ροής), write (εγγραφή ενός στοιχείου στη υπάρχουσα ροή) και close (τερματισμός της ροής). Υλοποιήστε τις ροές με τέσσερις διαφορετικούς τρόπους χρησιμοποιώντας τους παρακάτω διαφορετικούς μηχανισμούς για I/O. Και στις τέσσερις περιπτώσεις τα πραγματικά δεδομένα της ροής θα πρέπει να αποθηκευτούν σε ένα απλό αρχείο. Η ανάγνωση και η εγγραφή γίνεται για ένα στοιχείο τη φορά χρησιμοποιώντας τις διαδικασίες read και write. Η ανάγνωση και η εγγραφή γίνεται με χρήση των fread και fwrite συναρτήσεων από τη βιβλιοθήκη stdio (αυτές οι συναρτήσεις υλοποιούν δικούς τους μηχανισμούς ενδιάμεσης μνήμης – buffering). Η ανάγνωση και η εγγραφή γίνεται όπως στο (a) με τη διαφορά ότι η ροή έχει μία ενδιάμεση μνήμη μεγέθους B στην κύρια μνήμη. Όταν η ενδιάμεση αυτή μνήμη γίνει άδεια/γεμάτη τότε τα επόμενα B στοιχεία θα αναγνωστούν/εγγραφούν από/προς το αρχείο. Η ανάγνωση και η εγγραφή γίνεται αντιστοιχώντας και ακυρώνοντας αυτή την αντιστοίχηση ενός μέρους του αρχείου μεγέθους B στην κύρια μνήμη με χρήση των συναρτήσεων mmapκαι munmapαντίστοιχα.

  2. Εργασία 2 Πειραματιστείτε με κάθε μία υλοποίηση ροής από τις παραπάνω. Για παράδειγμα, προσπαθήστε να ανοίξετε kροές και και αναγνώστε/εγγράψτε Ν στοιχεία από/προς κάθε ροή. Προσπαθήστε να πειραματιστείτε με μεγάλα N και για k=1,2,3,8,…,MAX, όπου MAX είναι το μέγιστο πλήθος ροών που επιτρέπει το λειτουργικό σύστημα. Για τις περιπτώσεις ενδιάμεσης μνήμης (c) και (d) δοκιμάστε για διάφορες τιμές του B (ακόμα και αρκετά μεγάλες). Για κάθε μία από τις παραπάνω τέσσερις υλοποιήσεις ροών, βρείτε τις ιδιότητές τους και τους περιορισμούς τους και προσπαθήστε να βρείτε ποια υλοποίηση είναι η καλύτερη. Στην αναφορά θα πρέπει να έχετε μία συζήτηση όλων των αποτελεσμάτων που πήρατε. προσπαθήστε να εξηγήσετε ό,τι ανακαλύπτετε για κάθε υλοποίηση.

  3. Εργασία 2 2. Υλοποιήστε έναν συγχωνευτήd-δρόμων, στον οποίο θα δίνονται dταξινομημένες ροές εισόδου ακεραίων μήκους 32 bit και θα φτιάχνει μία ροή εξόδου που θα περιλαμβάνει όλα τα στοιχεία από τις ροές εισόδου ταξινομημένες. Η συγχώνευση θα πρέπει να βασιστεί την ουρά προτεραιότητας Heap (έτοιμος κώδικας από τον παραπάνω σύνδεσμο). 3. Υλοποιήστε έναν αλγόριθμο συγχώνευσης εξωτερικής μνήμης (Μergesort) για την ταξινόμηση ακεραίων μήκους 32 bit. Το πρόγραμμα θα πρέπει να παίρνει τις παραμέτρους N, Mκαι d και θα ταξινομεί ως εξής: Θα διαβάζει το αρχείο εισόδου και θα το σπάει σε ροές, όπου η κάθε μία θα έχει μέγεθος ≤ M. Κάθε παραγόμενη ροή θα ταξινομείται στην κύρια μνήμη με χρήση της QuickSort πριν γραφεί πάλι στο δίσκο. Αποθηκεύστε τις αναφορές (δείκτες;) στις ροές σε μία ουρά (αν χρειάζεται να την αποθηκεύσετε και αυτή στον δίσκο). Να επαναλάβετε την συγχώνευση των d (ή λιγότερων) πρώτων ροών στην ουρά και αποθηκεύστε την παραγόμενη ροή στο τέλος της ουράς. Αυτή η διαδικασία θα τερματίσει όταν στη ουρά παραμείνει μία μοναδική ροή (θα είναι όλο το αρχείο ταξινομημένο).

  4. Εργασία 2 4. Εκτελέστε πειράματα με τον υλοποιημένο αλγόριθμο συγχώνευσης χρησιμοποιώντας και τους τέσσερις τρόπους υλοποίησης των ροών ξεκινώντας με ένα μεγάλο αρχείο που θα περιέχει τυχαίους 32-bit ακεραίους. Δοκιμάστε για διαφορετικές τιμές των N, Mκαι dκαι δείξτε ποιος είναι ο κατάλληλος συνδυασμός των δύο τελευταίων παραμέτρων για διάφορες τιμές του N. Προσπαθήστε στην αναφορά να ερμηνεύσετε όλα τα αποτελέσματα που βρήκατε. 5. Υλοποιήστε τον απλό αλγόριθμο Quicksortγια κύρια μνήμη, για ταξινόμηση ενός πίνακα με N ακεραίους 32-bit (τον οποίο θα τον προσπελάσετε από ένα αρχείο με κύρια μνήμη M << Ν). 6. Να συγκρίνετε την καλύτερη υλοποίηση του Mergesort (ως προς τις διαφορετικές υλοποιήσεις του μηχανισμού των ροών) με τον αλγόριθμο Quicksort.

  5. αναζητηση

  6. Το Πρόβλημα του Λεξικού – Λύσεις Διατήρηση με αποδοτικό τρόπο ενός συνόλου κλειδιών ώστε οι εξής 3 πράξεις να υποστηρίζονται αποδοτικά: • Εύρεση ενός στοιχείου στο σύνολο • Ένθεση ενός νέου στοιχείου στο σύνολο • Διαγραφή ενός υπάρχοντος στοιχείου από το σύνολο Λύνουν και το πρόβλημα του προηγούμενου στοιχείου (predecessor) Κατακερματισμός Δέντρα

  7. Δενδρικές Δομές - Παραλλαγές

  8. Δέντρα Εύρεσης Εσωτερικής Μνήμης • Δυαδικό Δέντρο Εύρεσης: • Μέθοδο εύρεσης σε σύνολο Nστοιχείων • Υποθέτουμε ότι τα στοιχεία είναι στα φύλλα • Η εύρεση αφορά ένα μονοπάτι από τη ρίζα σε φύλλο • Εύρεση σε Ο(log2N) χρόνο

  9. Δένδρα Εύρεσης Εξωτερικής Μνήμης • Κατά πλάτος διαπέραση για μπλοκ: • Ύψος ως προς μπλοκ: Ο(log2N)/Ο(log2B)=O(logBN) • Τα κλειδιά εξόδου εξάγονται σε μπλοκ •  • Ερωτήσεις διαστήματος σε O(logBN + Τ/Β) • Βέλτιστο: O(N/B) χώρο και O(logBN + Τ/Β) ερώτηση

  10. Δένδρα Εύρεσης Εξωτερικής Μνήμης • Διατήρηση των κατά πλάτους (BFS) μπλοκ σε ενημερώσεις ; • Επαναζυγίζουμε με περιστροφές • Φαίνεται δύσκολο να διατηρήσεις το BFS κατά την περιστροφή • Επιπλέον η έξοδος θα πρέπει να είναι σε μορφή μπλοκ! x y y x

  11. B-δέντρα • Τα μπλοκ κατά BFS αντιστοιχούν σε δέντρο με βαθμό Θ(B) • Τα B-δέντρα επιτρέπουν την διακύμανση του βαθμού • Επαναζύγιση: Διάσπαση, Συγχώνευση και Διαμοίραση

  12. Παράδειγμα 8,15,22 8,15 3,5 12,14 19 19,22,32 19,22,29,32 29,32 1,2 4,4 5,6,7 15,18 20,21 23,29,30 32,108 30,31 23 31

  13. Β-δέντρα  (a,b)-δέντρα • Tείναι ένα (a,b)-δέντρο (a≥2και b≥2a-1) • Όλα τα φύλλα στο ίδιο επίπεδο (περιέχουν μεταξύ aκαι bστοιχεία) • Εκτός της ρίζας, όλοι οι κόμβοι έχουν βαθμό μεταξύ aκαιb • Η ρίζα έχει βαθμό μεταξύ 2 και b • Το (a,b)-δέντρο χρησιμοποιεί γραμμικό χώρο και έχει ύψος Ο(logαΝ) (2,4)–δέντρο

  14. Ένθεση ενός Στοιχείου Κόστος; Βρες και ένθεσε το νέο στοιχείο στο φύλλο v Έστω ότι ο vέχει b+1 στοιχεία/παιδιά Διάσπασηv: δημιουργούμε κόμβους v΄και v΄΄ με και στοιχεία και ένθεσε το νέο στοιχείο στον πατέρας(v)(φτιάξε νέα ρίζα αν είναι απαραίτητο) v=πατέρας(v) v v’ v’’

  15. Διαγραφή ενός Στοιχείου Κόστος; Εύρεση και διαγραφή του στοιχείου από το v Έστω ότι το vέχειa-1στοιχεία/παιδιά Συγχώνευσηvμε αδερφόv΄: μετακίνηση παιδιών του v΄στο v Διαγραφή στοιχείου από πατέρας(v) (διαγραφή ρίζας αν απαραίτητο) Αν ο vέχει >b (και ≤ a+b-1<2b) παιδιά τότε διάσπασηv v=πατέρας(v) v v

  16. Ιδιότητες των (a,b)-δένδρων (2,3)-δένδρο • Αν b≤2a-1κάθε ενημέρωση προκαλεί πολλές επαναζυγίσεις • Αν b≥2aοι ενημερώσεις έχουν Ο(1) επιμερισμένο κόστος • Ανb>2a επιμερισμένες επαναζυγιστικές πράξεις • Δεν θα αποδείξουμε τίποτα μιας και είναι λίγο δύσκολα ένθεση διαγραφή

  17. Το B-δένδρο • B-δένδρα: (a,b)-δένδρα όπου a,b= Θ(Β) • O(N/B) χώρος • O(logB N+T/B)ερώτηση • O(logB N)ενημέρωση • Τα B-δένδρα όπου τα στοιχεία είναι στα φύλλα μόνο ονομάζονται B+-δένδρα • Κατασκευή του δένδρου σε I/Oς • Ταξινομούμε τα στοιχεία και κατασκευάζουμε τα φύλλα • Χτίζουμε το δένδρο από κάτω προς τα πάνω (ανά επίπεδο)

  18. Συμπεράσματα: B-δένδρο • B-δένδρο μεπαράμετρο διακλάδωσηςbκαι παράμετρο φύλλωνk(b,k≥8) • Όλα τα φύλλα στο ίδιο επίπεδο και περιέχουν μεταξύ 1/4kκαιk στοιχεία • Εκτός της ρίζας, όλοι οι κόμβοι έχουν βαθμό μεταξύ 1/4bκαιb • Η ρίζα έχει βαθμό μεταξύ 2 καιb • B-δένδρο με παράμετρο φύλλων k=Ω(Β) • O(N/B)χώρος • Ύψος Ο(logb(N/B)) • O(1/k) επιμερισμένες επαναζυγίσεις φύλλων • Ο((1/bk)logb(N/B)) επιμερισμένες επαναζυγίσεις εσωτερικών κόμβων • B-tree με παράμετρο διακλάδωσης Bc, 0<c≤1, και παράμετρο φύλλωνB • O(N/B) χώρος • Ο(logBN) κόστος ενημερώσεων • Ο(logBN+Τ/Β) κόστος ερωτήσεων

  19. Δευτερεύουσες(όχι μνήμη) Δομές • Όταν χρησιμοποιούνται δευτερεύουσες δομές, η επαναζύγιση του vαπαιτεί συχνά O(w(v)) I/Oς(w(v) είναι το βάρος του v) • ΑνΩ(w(v)) ενθέσεις πρέπει να γίνουν κάτω από τον vμεταξύ διαδοχικών επαναζυγίσεων τουv  O(1)επιμερισμένο κόστος διάσπασης  Ο(logBN) επιμερισμένο κόστος ένθεσης • Οι κόμβοι του B-δένδρου δεν έχουν αυτή την ιδιότητα (2,4)-δένδρο

  20. y y2 y1 x x1 x2 2D Ερωτήσεις Περιοχής • Πως ανακαλύπτουμε αποδοτικά τα σημεία εντός του ορθογωνίου; • Ορθογώνιο Ερώτημα Περιοχής([x1, x2], [y1,y2]): βρες όλα τα σημεία (x, y) έτσι ώστε x1<x<x2και y1<y<y2

  21. BST ως προς y Ty(v) T v P(v) P(v) BST ως προς x Δένδρα Περιοχής • Το σύνολο P(v) ενός κόμβου vσε ένα BST είναι το σύνολο των σημείων που αποθηκεύονται στο υποδένδρο του v • Το δένδρο περιοχής είναι μία πολλαπλών επιπέδων δομή: • Η κύρια δομή είναι ένα BST T στις x-συντεταγμένες των σημείων • Κάθε κόμβος v του T αποθηκεύει ένα δείκτη στο BST Ty(v) (συσχετισμένη δομή του v), που αποθηκεύει το P(v) ως προς την y-συντεταγμένη • Τα 2D σημεία αποθηκεύονται στα φύλλα.

  22. Tx Ty(v) T4 p6 p5 p4 p3 p1 p2 p7 Ty(v) v v p7 p5 p6 p1 p2 p3 p4 p5 p6 p7 P(v) P(v) Δένδρα Περιοχής 22

  23. Ερώτηση :[x,x’] x’ x Δένδρα Περιοχής Κόστος Ερώτησης: Η ερώτηση για 1D-δένδρο απαιτεί O(log n+k) χρόνο. Πόσα 1D δένδρα (συσχετισμένες δομες) πρέπει να ρωτήσουμε; Το πολύ 2 ύψος τουT = 2 log n Κάθε 1D ερώτημα απαιτεί O(log n+k’) χρόνο.  Χρόνος ερώτησης = O(log2 n + k) Απάντηση= Ένωση των επιμέρους απαντήσεων: k = ∑k’.

  24. Δένδρα Περιοχής • Τι γίνεται όταν το δένδρο γίνεται δυναμικό; • Πώς υλοποιούνται οι επαναζυγιστικές πράξεις και ποια η επίπτωσή τους στις συσχετισμένες δομές;

  25. x y y x Το BB[]-δένδρο(κύρια μνήμη) • Στην κύρια μνήμη το BB[]-δένδρο έχει αυτή την ιδιότητα • Ορίζεται χρησιμοποιώντας περιορισμούς βάρους • Ο λόγος μεταξύ του βάρους του αριστερού παιδιού και του πατέρα του να είναι μεταξύ του και1- (<1)  ΎψοςO(log N) • Αν η επαναζύγιση μπορεί να γίνει με περιστροφές • Δύσκολη η αποδοτική Ι/Ο υλοποίηση των BB[]-δένδρων

  26. Επίπεδο λ Επίπεδο λ-1 ΒαροζυγισμένοB-δένδρο • Ιδέα: Συνδυασμός B-δένδρου και BB[]-δένδρου • Περιορισμοί βάρους στους κόμβους και όχι περιορισμοί στο βαθμό • Η επαναζύγιση γίνεται με διασπάση/συγχώνευση όπως στο B-δένδρο • ΒαροζυγισμέναB-δένδραμε παραμέτρουςbκαιk (b>8, k≥8) • Όλα τα φύλλα στο ίδιο επίπεδο και περιέχουν μεταξύ k/4καιk στοιχεία • Εσωτερικός κόμβος vστο επίπεδο λ έχει w(v)<bλk • Εκτός της ρίζας, ο εσωτερικός κόμβοςv στο επίπεδο λέχει w(v)>(1/4)bλk • Η ρίζα έχει περισσότερα από ένα παιδιά

  27. Επίπεδο λ Επίπεδο λ-1 ΒαροζυγισμέναB-δένδρα • Κάθε εσωτερικός κόμβος v έχει βαθμό |v|:  Ύψος: • Δευτερεύουσα μνήμη: • Επιλέγουμε 4b=B (ή Bcγια0 < c ≤ 1) • k=B  O(N/B) χώρος, ερώτηση

  28. Ένθεση • Εύρεση κατάλληλου φύλλου uκαι ένθεση του νέου στοιχείου • Ανεβαίνουμε το μονοπάτι από το uστη ρίζα: • Αν ο v(επίπεδο λ) έχει w(v)=bλk+1 τότε διάσπαση σε v΄και v΄ όπου: • Ο αλγόριθμος είναι σωστός: έτσι ώστε • Ιδιότητα Βάρους: • Ω(bλk)ενημερώσεις κάτω από τα v΄και v΄΄ πριν την επόμενη πράξη επαναζύγισης

  29. Διαγραφή • Εύρεση κατάλληλου φύλλου uκαι διαγραφή του στοιχείου • Ανεβαίνουμε το μονοπάτι από το uστη ρίζα: • Αν ο v(επίπεδο λ) έχει w(v)=(1/4)bλk-1 τότε συγχώνευσε με αδερφό σε v΄όπου: • Αν w(v΄)≥(7/8)bλk τότε διασπάμε σε δύο κόμβους με βάρος και • Ο αλγόριθμος είναι σωστός • Ιδιότητα Βάρους: • Ω(bλk)ενημερώσεις κάτω από τα v΄και v΄΄ πριν την επόμενη πράξη επαναζύγισης

  30. Ανακεφαλαίωση: ΒαροζυγισμένοB-δένδρο • ΒαροζυγισμένοB-δένδρο με παράμετρο διακλάδωσης bκαι παράμετρο φύλλωνk=Ω(B) • O(N/B) χώρος • Ύψος • O(logbN) επαναζυγιστικές πράξεις μετά από ενημέρωση • Ω(w(v)) ενημερώσεις κάτω από το vμεταξύ διαδοχικών επαναζυγίσεων στο v • ΒαροζυγισμένοB-δένδρο με παράμετρο διακλάδωσης Bcκαι παράμετρο φύλλων B • Ενημερώσεις σε O(logΒN) και ερωτήσεις σε O(logΒN+Τ/Β) I/Oς • Κατασκευή σε I/Oς

  31. Διαχρονικό B-δένδρο(Persistence) • Σε μερικές εφαρμογές μας ενδιαφέρει η προσπέλαση σε προηγούμενες εκδόσεις της δομής δεδομένων • Διαχρονικές Βάσεις Δεδομένων • Γεωμετρικές Δομές Δεδομένων (σε λίγο) • Μερική Διαχρονικότητα: • Ενημερώνουμε τρέχουσα έκδοση (από όπου παίρνουμε την καινούργια έκδοση) • Ερωτήσεις σε όλες τις εκδόσεις • Μερικώς διαχρονικό B-δένδρο με • O(N/B) χώρο– Nείναι το πλήθος των ενημερώσεων • Ο(logBN) Ι/Ος για ενημέρωση • Ο(logBN+Τ/Β) Ι/Ος για ερώτηση σε κάθε έκδοση

  32. ενημέρωση i+3 i i+2 i+1 Μία Εύκολη Λύση • Αντιγραφή της δομής σε κάθε πράξη • Διατήρηση μίας δομής «προσπέλασης εκδοχών» (B-δένδρο) • +: Ο(logBN+Τ/Β) Ι/Ος ερώτηση σε κάθε έκδοση, αλλά • O(N/B) I/Oς για ενημέρωση • O(N2/B)χώρος i i+2 i+1

  33. Μία πιο Αποδοτική Λύση • Ιδέα: Στα στοιχεία προστίθεται και ένα «διάστημα ύπαρξης» και αποθηκεύονται σε μία δομή. • Διαχρονικό B-δένδρομε παράμετρο b(>16): • Κατευθυνόμενο Γράφημα • Οι κόμβοι περιέχουν στοιχεία με διαστήματα ύπαρξης • Σε κάθε χρονική στιγμή t, οι κόμβοι με ζωντανά στοιχεία στην tδημιουργούν ένα B-δένδρο ((B/4,B)-δένδρο) • B-δένδρομε παράμετρο φύλλων και διακλάδωσης b  Αν b=B: • Ερώτηση σε κάθε χρονική στιγμή t είναι Ο(logBN+Τ/Β)I/Oς

  34. Ενημερώσεις • Ενημερώσεις όπως και στο B-δένδρο • Για να χρησιμοποιούμε χώρο Ο(Ν/Β) διατηρούμε τον εξής περιορισμό: • Κάθε νέος κόμβος περιέχει μεταξύ 3/8Β και 7/8Βζωντανά στοιχεία και καθόλου νεκρά στοιχεία

  35. Ένθεση • Εύρεση του φύλλου uκαι ένθεση του στοιχείου • Αν το u περιέχειB+1 στοιχεία: Υπερχείλιση μπλοκ • Διάσπαση Εκδοχών: Οuείναι νεκρός: νέος κόμβος u΄με xζωντανά στοιχεία • Αν x > 7/8B: Υπερχείλιση • Αν x < 3/8B: Υποχείλιση • Αν 3/8B x  7/8Bτότε αναδρομικά ενημέρωσε parent(u): Διαγραφή δείκτη σε uκαι ένθεση δείκτη σε u΄ u u΄

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

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

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

  39. Απόδοση • Ενημέρωση: Ο(logBN) • Εύρεση και επαναζύγιση σε μονοπάτι από τη ρίζα σε φύλλο • Χώρος:O(N/B) • Τουλάχιστον 1/8Βενημερώσεις σε διάστημα ύπαρξης • Όταν ένα φύλλο uγίνεται νεκρό • Το πολύ δύο μπλοκ δημιουργούνται • Το πολύ ένα μπλοκ θα υπο/υπερχειλίσει ένα επίπεδο πιο πάνω  • Έπειτα από Nενημερώσεις: • Ο(Ν/Β) φύλλα • Ο(Ν/Βi) κόμβοι στο i-οστό επίπεδο  μπλοκ

  40. Κατασκευή B-δένδρου • Στην κύρια μνήμη ταξινομούμε Nστοιχεία σε O(N log N) βήματα με ένα δυαδικό δένδρο εύρεσης: • Ένθεση όλων των στοιχείων (κατασκευή δένδρου) • Με ενδο-διαπέραση, αναφορά όλων των στοιχείων των φύλλων • Ο αλγόριθμος αυτός σε B-δένδρο απαιτεί Ο(ΝlogBN) I/Oς • Μη βέλτιστο κατά • Κατασκευή δένδρου από κάτω προς πάνω σε • Όμως τι γίνεται με το διαχρονικό δένδρο; • Γενικά θα θέλαμε μία δυναμική δομή για χρήση σε αλγόριθμους με απόδοση  I/Oς ανά ενημέρωση

  41. Mστοιχεία βαθμόςM/B B B • Ιδέα:Λογικά ομαδοποίησε τους κόμβους και πρόσθεσε ενδιάμεσες μνήμες (buffers) • Οι ενημερώσεις γίνονται με «τεμπέλικο» τρόπο –ενημερώνονται οι Ενδιάμεσες Μνήμες (ΕΜ). • Όταν οι ΕΜ γεμίσουν τα στοιχεία σπρώχνονται ένα επίπεδο παρακάτω. • Άδειασμα ΕΜ σε O(M/B) I/Oς •  αγγίζουμε κάθε μπλοκ σταθερό αριθμό φορών σε κάθε επίπεδο •  ένθεση Nστοιχείων (N/Bμπλοκ) κοστίζει Τεχνική Ενδιάμεσης ΜνήμηςΕΜ-Δένδρο (Ενδιάμεσης Μνήμης Δένδρο)

  42. M $m$ blocks B Το Βασικό ΕΜ-Δένδρο • Ορισμός: • B-δένδρο με παράμετρο διακλάδωσης Μ/Β και παράμετρο φύλλων Β • ΕΜ μεγέθους Mσε κάθε εσωτερικό κόμβο • Ενημερώσεις: • Πρόσθεσε χρονική ετικέτα για ένθεση/διαγραφή στοιχείου • Συλλογή Bστοιχείων στην κύρια μνήμη πριν την εισαγωγή του μπλοκ στην ΕΜ της ρίζας • Εκτέλεσης αδειάσματος της ΕΜ όταν αυτή είναι γεμάτη

  43. Το ΕΜ-Δένδρο Παρατήρηση: • Η ΕΜ μπορεί να είναι >Μ κατά την διάρκεια αναδρομικών αδειασμάτων ΕΜ. • Τα στοιχεία κατανέμονται στα παιδιά ταξινομημένα  το πολύ Mστοιχεία στην ΕΜ μη-ταξινομημένα • Επαναζύγιση όταν η ΕΜ ενός φύλλου αδειάσει • Το άδειασμα της ΕΜ ενός φύλλου μόνο όταν όλες οι ΕΜ των εσωτερικών κόμβων είναι άδειες M $m$ blocks B

  44. Άδειασμα ΕΜ Εσωτερικών Κόμβων • Φέρνουμε τα πρώτα M (μη ταξινομημένα) στην μνήμη και τα ταξινομούμε • Συγχωνεύουμε τα στοιχεία της κύριας μνήμης με τα υπόλοιπα (ήδη ταξινομημένα) • Διατρέχουμε την λίστα ενώ: • Διαγράφουμε «αντίστοιχες» ενθέσεις/διαγραφές • Κατανέμουμε τα στοιχεία στις ΕΜ των παιδιών • Αναδρομικά αδειάζουμε τις ΕΜ των παιδιών • Το άδειασμα της ΕΜ μεγέθους Xαπαιτεί O(X/B+M/B)=O(X/B) I/Oς M $m$ blocks

  45. Άδειασμα ΕΜ Φύλλων • Άδειασμα ΕΜ φύλλων με Kστοιχεία • Ταξινόμηση ΕΜ • Συγχώνευση στοιχείων ΕΜ με στοιχεία φύλλου • Διαγραφή «αντίστοιχων» ενθέσεων/διαγραφών και έχουμε συνολικά K΄ στοιχεία • ΑνK΄<Kτότε • Τα κενά φύλλα τα αφήνουμε ως έχουν Αλλιώς • Βάζουμε Kστοιχεία στα φύλλα • Επαναληπτικά ενθέτουμε ένα μπλοκ στοιχείων στα φύλλα και επαναζυγίζουμε • Σβήσιμο κενών φύλλων και επαναζύγιση όταν όλες οι ΕΜ αδειάσουν K

  46. v v΄ v Επαναζυγίσεις • Περιορισμός: Οι ΕΜ κόμβων στο μονοπάτι από τη ρίζα μέχρι το φύλλο με αδειασμένη ΕΜ είναι άδειες  • Διασπάσεις όπως στο Β-δένδρο • Επαναζύγιση Διαγραφής: η ΕΜ τουv΄αδειάζει πριν την συγχώνευση με το v • Σε κάθε διαγραφή άδειου μπλοκ θα πρέπει να γίνεται άδειασμα των ΕΜ • Ο περιορισμός διατηρείται v v’ v’’

  47. Απόδοση • Χωρίς επαναζυγίσεις, ένα άδειασμα μίας ΕΜ με X ≥ M στοιχεία (πλήρης) απαιτεί O(X/B) I/Oς  συνολικά για όλους τους πλήρης κόμβους: • Άδειασμα ΕΜ λόγω διαγραφής (όχι πλήρης) απαιτείO(M/B) I/Oς  κόστος διάσπασης/συγχώνευσηςO(M/B)I/Oς • Κατά τη διάρκεια Nενημερώσεων • O(N/B)διασπάσεις/συγχωνεύσεις φύλλων • διασπάσεις/συγχωνεύσεις εσωτερικών κόμβων  Συνολικό κόστος γιαNπράξεις:

  48. M $m$ blocks B Ταξινόμηση • Το άδειασμα όλων των ΕΜ μετά από Nενθέσεις: Το άδειασμα των ΕΜ γίνεται σε BFS σειρά  το συνολικό κόστος για πλήρης ΕΜ είναι άδειασμα μη-πλήρης ΕΜ: O(N/B) I/Os  • Nστοιχεία ταξινομούνται σε ΕΜ-δένδρο σε Ι/Ος

  49. Την ίδια τεχνική μπορούμε να εφαρμόσουμε και σε ουρές προτεραιότητας $m$ blocks Ανακεφαλαίωση • Μαζικές πράξεις σε B-δένδρα με χρήση ΕΜ μεγέθους M: • I/Oςεπιμερισμένο κόστος για ενημέρωση • Όλες οι ΕΜ αδειάζουν σε I/Os • Μονοδιάστατη ερώτηση περιοχής (μαζικές) υποστηρίζονται σε Ι/Ος • Οι ερωτήσεις αντιμετωπίζονται τεμπέλικα • Όλα τα στοιχεία αναφέρονται κατά το άδειασμα των ΕΜ • Άδειασμα ΕΜ σε O(X/B+T΄/B), όπου T΄είναι το πλήθος των αναφερόμενων στοιχείων • Χρησιμοποιώντας ΕΜ τεχνικές κατασκευάζουμε ένα διαχρονικό Β-δένδρο σε I/Oς

  50. Ανακεφαλαίωση • B-δένδρο • O(N/B) χώρος, O(logBN) ενημέρωση, O(logBN+T/B) ερώτηση • ΒαροζυγισμένοB-δένδρο • Ω(w(v)) ενημερώσεις κάτω από το vμεταξύ διαδοχικών πράξεων στο v • Διαχρονικό B-δένδρο • Ερώτηση σε οποιαδήποτε εκδοχή • ΕΜ-δένδρο • Μαζικές πράξεις με επιμερισμένο κόστος

More Related