19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης

Slides:



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

Indexing.
Δομές Δεδομένων και Αλγόριθμοι
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
Συνάφεια Κρυφής Μνήμης σε Επεκτάσιμα Μηχανήματα. Συστήματα με Κοινή ή Κατανεμημένη Μνήμη  Σύστημα μοιραζόμενης μνήμης  Σύστημα κατανεμημένης μνήμης.
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
Διακριτά Μαθηματικά ΙI Δυαδικά Δέντρα Αναζήτησης
Κατακερματισμός Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Δυναμικός Κατακερματισμός.
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
ΘΠ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 Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Δομές Δεδομένων.
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη C Ακέραιοι.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Οργάνωση Αρχείων.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Παράδειγμα B + -Tree Υποθέτουμε B + -Tree τάξης 3 (α=2, b=3)  Κάθε φύλλο θα έχει 2 ως 3 το πολύ στοιχεία  Κάθε εσωτερικός κόμβος θα έχει 2 ως 3 το πολύ.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Δομές Δεδομένων και Αρχεία
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
1 Είδη μέσων αποθήκευσης Πρωτεύοντα μέσα αποθήκευσης κεντρική μνήμη και όλες οι υπόλοιπες μνήμες (π.χ καταχωρητές, cache memory) Δευτερεύοντα μέσα αποθήκευσης.
17η Διάλεξη Ισορροπημένα δέντρα Ε. Μαρκάκης
Μαγνητικός δίσκος (magnetic disk) Εισαγωγή στην Πληροφορκή1 Ο μαγνητικός δίσκος χρησιμοποιείται για μόνιμη αποθήκευση δεδομένων, παρέχοντας σχετικά μικρό.
Δομές Δεδομένων 13η Διάλεξη Πίνακες Συμβόλων Ε. Μαρκάκης.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Δυναμικός Κατακερματισμός
Στοιχειώδεις Δομές Δεδομένων: Πίνακες και Λίστες
Διερεύνηση γραφήματος
Δεντρικά Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Βάσεις Δεδομένων ΙΙ 7η διάλεξη
12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας Ε. Μαρκάκης
EPL231 – Data Structures and Algorithms
Δεντρικά Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε χρόνο εκτέλεσης
Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης
Ουρά Προτεραιότητας (priority queue)
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα (2,4) Δέντρα.
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Διαχρονικές Δομές Δεδομένων
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης Δομές Δεδομένων 19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης

Περίληψη Ακολουθιακή πρόσβαση Β-δέντρα Υλοποίηση πίνακα συμβόλων με Β-δέντρα Αναζήτηση Εισαγωγή Δομές Δεδομένων

Εισαγωγή Εσωτερική και εξωτερική αναζήτηση Εσωτερική: τα (περισσότερα) δεδομένα βρίσκονται στη μνήμη Κυριαρχεί το κόστος των πράξεων Εξωτερική: τα (περισσότερα) δεδομένα δεν βρίσκονται στη μνήμη αλλά σε εξωτερική συσκευή (π.χ. σκληρός δίσκος) Κυριαρχεί το κόστος μεταφοράς δεδομένων από/προς τη μνήμη Εφαρμογές εξωτερικής αναζήτησης Αναζήτηση σε αρχεία στο δίσκο Μεταφορά δεδομένων από/προς το δίσκο Αναζήτηση στην εικονική μνήμη Μεταφορά δεδομένων από/προς τη φυσική μνήμη Αναζήτηση σε βάσεις δεδομένων Μια βάση δεδομένων αποτελείται από πολλά αρχεία Οι ερωτήσεις στις βάσεις ανάγονται σε αναζητήσεις στα αρχεία Δομές Δεδομένων

Οι κανόνες του παιχνιδιού Μοντέλο κόστους Η συσκευή μνήμης αποτελείται από σελίδες (μπλοκ πληροφοριών) Σελίδες μνήμης: μεταφέρονται από/προς την κρυφή μνήμη (cache) Σελίδες (μπλοκ) δίσκου: μεταφέρονται από/προς την κύρια μνήμη Κάθε σελίδα περιέχει πολλά συνεχόμενα δεδομένα Ο χρόνος ανάγνωσης/εγγραφής των σελίδων κυριαρχεί Ο χρόνος επεξεργασίας σελίδων είναι 100-1000 φορές μικρότερος Η πρώτη πρόσβαση σε μία σελίδα ονομάζεται διερεύνηση Δεδομένα και ευρετήρια Τα δεδομένα είναι αποθηκευμένα σε ένα αρχείο Ο εντοπισμός των δεδομένων γίνεται μέσω ενός ευρετηρίου Μπορούμε να έχουμε πολλά ευρετήρια ανά αρχείο (με βάση διαφορετικό κλειδί) Κάθε κλειδί μπορεί να παρέχει άλλου είδους επεξεργασία Τα ευρετήρια περιέχουν μόνο κλειδιά και όχι δεδομένα Διατηρούμε αναφορές στα πραγματικά δεδομένα αντι να κρατάμε αντίγραφα σε κάθε ευρετήριο Δομές Δεδομένων

Ακολουθιακή πρόσβαση Βασική ιδέα: ταξινομημένος πίνακας Πίνακας με κλειδιά και αναφορές σε δεδομένα Δυαδική αναζήτηση για εντοπισμό κλειδιών 1η βελτίωση: ισορροπημένο δέντρο Κατάτμηση του ευρετηρίου σε σελίδες Εσωτερικοί κόμβοι: αναφέρονται στο ευρετήριο Εξωτερικοί κόμβοι (φύλλα): αναφέρονται στα δεδομένα 2η βελτίωση: χρήση Μ-αδικού δέντρου Το βασικό κόστος είναι η ανάγνωση σελίδων Γεμίζουμε τη σελίδα με Μ κλειδιά / αναφορές Φτάνουμε στη βάση με logMN διερευνήσεις Αν Μ=1000, logMN < 5 για N = 1 τρισεκατομμύριο! Αυτή είναι η ακολουθιακή πρόσβαση με ευρετήριο (indexed sequential access) Δομές Δεδομένων

Ακολουθιακή πρόσβαση Παράδειγμα: αναπαράσταση με 5-αδικό δέντρο Τριψήφια οκταδικά κλειδιά (9 bits) Κάθε σελίδα είναι ένας κόμβος Εσωτερικοί κόμβοι: δείχνουν σε κλειδιά (στο μικρότερο κλειδί της σελίδας) Εξωτερικοί κόμβοι: δείχνουν σε δεδομένα Δομές Δεδομένων

Ακολουθιακή πρόσβαση Απόδοση ευρετηρίου Αναζήτηση: σταθερό πλήθος διερευνήσεων Στην πράξη το logMN είναι σταθερό Παράδειγμα: έστω 1030 αντικείμενα (!!!) log10001030 = 10 αφού (103)10 = 1030 Εισαγωγή: αν δεν είμαστε προσεκτικοί κοστίζει πολύ Πιθανή ανακατασκευή ολόκληρου του ευρετηρίου μετά από 1 εισαγωγή Σε παλιότερα συστήματα χρησιμοποιούσαμε σελίδες υπερχείλισης Στα σύγχρονα συστήματα χρησιμοποιούμε B-δέντρα Δομές Δεδομένων

Β-δέντρα Β-δέντρα: γενίκευση των δέντρων 2-3-4 Μ-αδικά δέντρα με περιορισμούς στο πλήθος συνδέσμων κάθε κόμβου Επιλέγουμε άρτιο M τέτοιο ώστε κάθε κόμβος να χωράει σε μία σελίδα Κάθε κόμβος πρέπει να έχει M/2 έως M συνδέσμους Η ρίζα (μόνο) επιτρέπεται να έχει 2 έως M συνδέσμους Τα δέντρα 2-3-4 είναι B-δέντρα με M=4 Προτάθηκαν από τους Bayer, McCreight 1970 4-5-6-7-8 δέντρο = Β-δέντρο με Μ = 8 Δομές Δεδομένων

Β-δέντρα Υλοποίηση B-δέντρων Κάθε κόμβος είναι ένας πίνακας στοιχείων/συνδέσμων Αναζήτηση: ξεκινάμε από τη ρίζα, τελέιώνουμε πάντα στο τελευταίο επίπεδο Δεν κρατάμε δεδομένα σε εσωτερικούς κόμβους Σε κάθε επίπεδο κάνουμε δυαδική αναζήτηση για το κλειδί Αν το κλειδί υπάρχει θα βρεθεί στο τελευταίο επίπεδο Εισαγωγή: ξεκινάμε όπως στην αναζήτηση Εισάγουμε το κλειδί στο τελευταίο επίπεδο Αν δεν χωράει, σπάμε τον κόμβο σε δύο ίσα μέρη (αναδρομικά) Ανοδική εισαγωγή Μπορούμε να υλοποιήσουμε και καθοδική εισαγωγή όπως στα 2-3-4 δέντρα Δομές Δεδομένων

Β-δέντρα Παράδειγμα εισαγωγής Οι εσωτερικοί κόμβοι δεν δείχνουν σε δεδομένα αλλά σε κλειδιά Δομές Δεδομένων

Β-δέντρα Παράδειγμα εισαγωγής Η ρίζα μπορεί να έχει μόνο 2 στοιχεία Δομές Δεδομένων

Β-δέντρα Πρακτική υλοποίηση B-δέντρων Οι εξωτερικές σελίδες περιέχουν τα ίδια τα κλειδιά Κάθε καταχώριση δείχνει σε ένα στοιχείο στο δίσκο Οι εσωτερικές σελίδες περιέχουν αντίγραφα των κλειδιών Κάθε καταχώριση k δείχνει σε μία άλλη σελίδα Η σελίδα περιέχει κλειδιά που ξεκινάνε από k Περιεχόμενα κόμβου Πίνακας καταχωρίσεων Πλήθος ενεργών καταχωρίσεων (M/2 ως Μ εκτός από τη ρίζα) Κάθε καταχώριση στον κόμβο περιέχει Κλειδί: χρησιμοποιείται σε όλους τους κόμβους Δείκτης προς κόμβο: μόνο για εσωτερικούς κόμβους Δείκτης προς στοιχείο: μόνο για εξωτερικούς κόμβους Θα μπορούσαμε να έχουμε και διαφορετικούς τύπους κόμβων Δομές Δεδομένων

Β-δέντρα Τάξη B-δέντρου: το HT δείχνει το επίπεδο της ρίζας class ST { private class entry { // κλάση καταχώρισης KEY key; ITEM item; Node next; entry(KEY v, ITEM x) { key = v; item = x; } entry(KEY v, Node u) { key = v; next = u; } } private class Node { int m; // πλήθος ενεργών καταχωρίσεων entry[] b; // πίνακας καταχωρίσεων Node(int k){b = new entry[M]; m = k; } } private Node head; private int HT; //επίπεδο ρίζας ST(int maxN) { HT = 0; head = new Node(0); } ITEM search(KEY key) void insert(ITEM x)} Δομές Δεδομένων

Β-δέντρα Αναζήτηση σε B-δέντρο Στο επίπεδο 0 ψάχνουμε για το ίδιο το κλειδί Στα άλλα επίπεδα ψάχνουμε για τον κατάλληλο κόμβο private ITEM searchR(Node h, KEY v, int ht) { if (ht == 0) for (int j = 0; j < h.m; j++) { entry e = h.b[j]; if (equals(v, e.key)) return e.item; } else for (int j = 0; j < h.m; j++) if ((j+1 == h.m) || less(v, h.b[j+1].key)) return searchR(h.b[j].next, v, ht-1); return null; } ITEM search(KEY key) {return searchR(head, key, HT);} Δομές Δεδομένων

Β-δέντρα Εισαγωγή σε B-δέντρο Αρχικά εισάγουμε αναδρομικά το στοιχείο (θα εισαχθεί τελικά στο τελευταίο επίπεδο, πιθανό να χριεαστεί διάσπαση κόμβου στα 2) Αν επιστραφεί null δεν χρειάζεται να σπάσει η ρίζα Αλλιώς, φτιάχνουμε νέα ρίζα με 2 στοιχεία Το πρώτο δείχνει στην παλιά ρίζα και έχει το πρώτο κλειδί της Το δεύτερο δείχνει στον νέο κόμβο και έχει το πρώτο κλειδί του Αυξάνουμε το ύψος του δέντρου void insert(ITEM x) { Node u = insertR(head, x, HT); if (u == null) return; Node t = new Node(2); t.b[0] = new entry((head.b[0]).key, head); t.b[1] = new entry((u.b[0]).key, u); head = t; HT++; } Δομές Δεδομένων

Β-δέντρα Αναδρομική εισαγωγή σε B-δέντρο: 1ο μέρος Στο τέλος το j δείχνει στο επόμενο στοιχείο Αν δεν χρειάζεται αλλαγή στον κόμβο επιστρέφουμε private Node insertR(Node h, ITEM x, int ht) { int i, j; KEY v = x.key(); Node u; entry t = new entry(v, x); if (ht == 0) for (j = 0; j < h.m; j++) { if (less(v, (h.b[j]).key)) break; } else for (j = 0; j < h.m; j++) if ((j+1 == h.m) || less(v, (h.b[j+1]).key)) { u = insertR(h.b[j++].next, x, ht-1); if (u == null) return null; t.key = (u.b[0]).key; t.next = u; break; } Δομές Δεδομένων

Β-δέντρα Αναδρομική εισαγωγή σε B-δέντρο: 2ο μέρος Εισάγουμε το στοιχείο t πριν το j Αν έχουμε M στοιχεία χρειάζεται διάσπαση for (i = h.m; i > j; i--) h.b[i] = h.b[i-1]; h.b[j] = t; h.m++; if (h.m < M) return null; else return split(h); } Διάσπαση κόμβου σε B-δέντρο Αντιγράφουμε τα M/2 μεγαλύτερα κλειδιά στον νέο κόμβο private Node split(Node h) { Node t = new Node(M/2); h.m = M/2; for (int j = 0; j < M/2; j++) t.b[j] = h.b[M/2+j]; return t; } Δομές Δεδομένων

Β-δέντρα Απόδοση B-δέντρων Αφαίρεση στοιχείων Υποθέτουμε ότι οι κόμβοι χωράνε M κλειδιά Στην παραπάνω υλοποίηση σπάνε πάντα όταν έχουν M κλειδιά Η απόκλιση είναι ελάχιστη για πρακτικές τιμές του M Η αναζήτηση/εισαγωγή απαιτεί logMN ως logM/2N διερευνήσεις Στην πράξη είναι ένας μικρός σταθερός αριθμός Η εισαγωγή μπορεί να οδηγήσει στο ίδιο πλήθος διασπάσεων Ο απαιτούμενος χώρος είναι 1,44N/M σελίδες κατά μέσο όρο Αφαίρεση στοιχείων Τι γίνεται όταν ένας κόμβος έχει λιγότερα από M/2 στοιχεία; Απαιτείται ανακατανομή στοιχείων με τα αδέλφια Μεταφορά ορισμένων δεικτών από τον διπλανό κόμβο Αναδρομική τροποποιήση των δεικτών του πατέρα Δομές Δεδομένων