Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

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

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

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

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

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

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

Οργάνωση Αρχείων. Βάσεις Δεδομένων : Οργάνωση Αρχείων 1. Blobs

Τα δεδομένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο

Οργάνωση Αρχείων. Βάσεις Δεδομένων : Οργάνωση Αρχείων 1. Blobs

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

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

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

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

Αποθήκευση εδομένων. Μαγνητικές ταινίες για. Εισαγωγή. Μέχρι σήμερα, είδαμε το σχεδιασμό και υλοποίηση μιας βάσης δεδομένων χρησιμοποιώντας ένα Σ Β

Αποθήκευση εδομένων. Μαγνητικοί ίσκοι. Μαγνητικές ταινίες για. Εισαγωγή

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

Αποθήκευση εδοµένων. Εισαγωγή. Σχεδιασµό και υλοποίηση µιας βάσης δεδοµένων χρησιµοποιώντας ένα Σ Β

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

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

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

Αποθήκευση εδοµένων. Μαγνητικοί ίσκοι. Μαγνητικές ταινίες για. Εισαγωγή. Σχεδιασµό και υλοποίηση µιας βάσης δεδοµένων χρησιµοποιώντας

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

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

Αποθήκευση εδοµένων. Μαγνητικοί ίσκοι. Μαγνητικές ταινίες για. Εισαγωγή

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

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

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

Το εσωτερικό ενός Σ Β

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Union Find, Λεξικό. Δημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

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

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

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

Δυναμικός Κατακερματισμός

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

Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing)

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

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

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

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

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

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

Κεφάλαιο 13. Αποθήκευση σε Δίσκους, Βασικές Δομές Αρχείων, και Κατακερματισμός

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

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

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

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

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

Κεφάλαιο 13. Αποθήκευση σε ίσκους, Βασικές οµέςαρχείων, και Κατακερµατισµός. ιαφάνεια 13-1

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

Ευρετήρια. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια. Ευρετήρια. Ευρετήρια

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

Ευρετήρια. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια. Ευρετήρια. Ευρετήρια

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

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

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

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

Αλγόριθμοι Αναζήτησης

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1

(Γραμμικές) Αναδρομικές Σχέσεις

ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING)

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

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

Transcript:

Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινομημένα Αρχεία Φυσική διάταξη των εγγραφών ενός αρχείου με βάση την τιμή ενός από τα πεδία του το οποίο λέγεται πεδίο διάταξης (ordering field) 2 : Κατακερµατισµός 1

Οργάνωση Αρχείων Αρχεία Κατακερματισμού Βασική ιδέα: η τοποθέτηση των εγγραφών στα blocks του αρχείου γίνεται εφαρμόζοντας μια συνάρτηση κατακερματισμού σε κάποιο από τα πεδία της εγγραφής 3 Εσωτερικός Κατακερµατισµός ΕσωτερικόςΚατακερματισμός (τα δεδομένα είναι στη μνήμη, όπως στις δομές δεδομένων) Πίνακας κατακερματισμού με Μ θέσεις - κάδους (buckets) h: συνάρτηση κατακερματισμού h(k) = i Πεδίο αναζήτησης -Πεδίο κατακερματισμού Σε ποιο κάδο -τιμή από 0 έως Μ-1 4 : Κατακερµατισµός 2

Αρχεία Κατακερµατισµού ΕξωτερικόςΚατακερματισμός (εφαρμογή σε δεδομένα αποθηκευμένα σε αρχεία) Στόχος h(k) = i Τιμή του πεδίου κατακερματισμού Διεύθυνση(αριθμός) block του αρχείου που είναι αποθηκευμένη Η εγγραφή με τιμή στο πεδίο κατακερματισμού k αποθηκεύεται στο i-οστο block(κάδο) του αρχείου 5 Εξωτερικός Κατακερµατισµός Κάδος: μια συστάδα από συνεχόμενα blocks του αρχείου h(k) = i Σχετική διεύθυνση του κάδου (ποιος κάδος του αρχείου) Τιμή του πεδίου κατακερματισμού Ο κατακερματισμός είναι πολύ αποδοτικός για επιλογές (ερωτήσεις) ισότητας 6 : Κατακερµατισµός 3

Εξωτερικός Κατακερµατισµός Ένας πίνακας που αποθηκεύεται στην επικεφαλίδα του αρχείου μετατρέπει τον αριθμό κάδου στην αντίστοιχη διεύθυνση block 0 διεύθυνση 1ου block του κάδου στο δίσκο 1 διεύθυνση 1ου block του κάδου στο δίσκο 2 διεύθυνση 1ου block του κάδου στο δίσκο... Μ-1 διεύθυνση 1ου block του κάδου στο δίσκο 7 Εξωτερικός Κατακερµατισµός Πέρα από την οργάνωση αρχείων, ο κατακερματισμός μπορεί να χρησιμοποιηθεί ως ευρετήριο h(k) = i Τιμή του πεδίου κατακερματισμού Δείκτης στο block του αρχείου δεδομένων που είναι αποθηκευμένη η εγγραφή με τιμή k στο πεδίο κατακερματισμού 8 : Κατακερµατισµός 4

Εξωτερικός Κατακερµατισµός Πρόβλημα: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης) Δυναμικός Κατακερματισμός Στατικός Κατακερματισμός Επεκτατός Γραμμικός 9 Δυναµικός Εξωτερικός Κατακερµατισµός Δυναμικός Εξωτερικός Κατακερματισμός Δυαδική αναπαράσταση του αποτελέσματος της συνάρτησης κατακερματισμού, δηλαδή ως μια ακολουθίας δυαδικών ψηφίων Κατανομήεγγραφώνμεβάσητηντιμήτωναρχικών(ή τελικών) ψηφίων 10 : Κατακερµατισµός 5

Δυναµικός Εξωτερικός Κατακερµατισµός Τοαρχείοξεκινάμεέναμόνοκάδο Μόλις γεμίσει ένας κάδος διασπάται σε δύο κάδους με βάση την τιμή του 1ου (ή τελευταίου) δυαδικού ψηφίου των τιμών κατακερματισμού -- δηλαδή οι εγγραφές που το πρώτο (τελευταίο) ψηφίο της τιμής κατακερματισμού τους είναι 1 τοποθετούνται σε ένακάδοκαιοιάλλες (με0)στονάλλο Νέα υπερχείλιση ενός κάδου οδηγεί σε διάσπαση του με βάση το αμέσως επόμενο δυαδικό ψηφίο κοκ 11 Δυναµικός Εξωτερικός Κατακερµατισµός Έτσι δημιουργείται μια δυαδική δενδρική δομή που λέγεται κατάλογος (dirtectory) ή ευρετήριο(index) με δύο ειδών κόμβους εσωτερικούς: που καθοδηγούν την αναζήτηση εξωτερικούς: που δείχνουν σε ένα κάδο 12 : Κατακερµατισµός 6

Δυναµικός Εξωτερικός Κατακερµατισµός (Παράδειγµα) Χρήση των τελευταίων bits της δυαδικής αναπαράστασης Αποτέλεσμα συνάρτησης κατακερματισμού 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 20 010100 4 εγγραφές ανά κάδο 13 Δυναµικός Εξωτερικός Κατακερµατισµός Αλγόριθμος αναζήτησης h := τιμή κατακερματισμού t := ρίζα του δέντρου i:= 1 while (t εσωτερικός κόμβος) if (i-οστό bit του h είναι 0) t := αριστερά του t else t := δεξιά του t i := i +1 14 : Κατακερµατισµός 7

Δυναµικός Εξωτερικός Κατακερµατισµός Που αποθηκεύεται ο κατάλογος στημνήμη,εκτόςανείναιπολύμεγάλος τότε στο δίσκο οπότε θα απαιτούνται επιπρόσθετες προσπελάσεις Δυναμική επέκταση αλλά μέγιστος αριθμός επιπέδων (το πλήθος των δυαδικών ψηφίων της συνάρτησης κατακερματισμού) Ισοζύγιση Συνένωση κάδων (δυναμική συρρίκνωση) 15 Επεκτατός Εξωτερικός Κατακερµατισµός Ο κατάλογος είναι ένας πίνακας με 2 d διευθύνσεις κάδων (d: ολικό βάθος του καταλόγου) Κάδος για τις εγγραφές με τιμές 000 κατακερματισμού που τελειώνουν σε 000 001 010 011 Extendible hashing 100 101 110 111 Τα τελευταία d ψηφία της τιμής κατακερματισμού χρησιμοποιούνται ως δείκτης στον πίνακα Στις διαφάνειες, χρησιμοποιούμε τα τελευταία bits της δυαδικής αναπαράστασης 16 : Κατακερµατισµός 8

Επεκτατός Εξωτερικός Κατακερµατισµός Δε χρειάζεται ένας διαφορετικός κάδος για κάθε μία από τις 2 d θέσεις - μπορεί η θέση του πίνακα να δείχνει στη διεύθυνση του ίδιου κάδου αν αυτές χωράνε σεένακάδο 000 001 010 011 100 101 110 111 Κάδος για τις εγγραφές με τιμές κατακερματισμού που τελειώνουν από 00 Για κάθε κάδο, τοπικό βάθος d o αριθμός των δυαδικών ψηφίων στα οποία βασίζεται η χρήση του κάδου Παράδειγμα: 2 εγγραφές ανά κάδο εισαγωγή 2, 4, 3, 10, 7, 9 17 Επεκτατός Εξωτερικός Κατακερµατισµός (Παράδειγµα) Χρήση των τελευταίων bits της δυαδικής αναπαράστασης 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 4 εγγραφές ανά κάδο 18 : Κατακερµατισµός 9

Επεκτατός Εξωτερικός Κατακερµατισµός (Παράδειγµα) Χρήση των τελευταίων bits της δυαδικής αναπαράστασης 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 19 Επεκτατός Εξωτερικός Κατακερµατισµός Η τιμή του d μπορεί να αυξάνεται (μέχρι 2 κ, κ: αριθμός δυαδικών ψηφίων της τιμής κατακερματισμού) ή να μειώνεται Αύξηση της τιμής του d Όταν ένας κάδος με τιμή d = d υπερχειλίσει Διπλασιασμός του πίνακα Μείωση της τιμής του d Όταν για όλους τους κάδους d < d Μείωση του μεγέθους του πίνακα στο μισό Δε χρειάζεται rehash (επανα-κερματισμό), διασπάμε κάθε κάδο Επίσης, κάθε φορά μόνο τον κάδο που υπερχείλισε 20 : Κατακερµατισµός 10

Επεκτατός Εξωτερικός Κατακερµατισµός (Παράδειγµα) 20 010100 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 Διάσπαση- > Ολικό βάθος 3 21 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 20 010100 Επεκτατός Εξωτερικός Κατακερµατισµός 4 12 32 16 20 -> διάσπαση 22 : Κατακερµατισµός 11

Κατακερµατισµός Επανάληψη: Τι αποθηκεύουμε στους κάδους Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή (ως τρόπος οργάνωσης αρχείου) μέγεθος κάδου-> 1 block(ή συστοιχία από συνεχόμενα blocks) Τιμή του πεδίου κατακερματισμού + δείκτη στο υπόλοιπο της εγγραφής; (ως ευρετήριο) Τι γίνεται αν το πεδίο κατακερματισμού δεν είναι κλειδί (παραπάνω από μια εγγραφή με την ίδια τιμή) 23 Γραµµικός Εξωτερικός Κατακερµατισµός Γραμμικός Κατακερματισμός Θέλουμε να αποφύγουμε τη χρήση καταλόγου + Διπλασιασμό μεγέθους του καταλόγου Προσοχή! Αυτή η μέθοδος: Διατηρεί λίστες υπερχείλισης Δε χρησιμοποιεί τη δυαδική αναπαράσταση 24 : Κατακερµατισµός 12

Γραµµικός Εξωτερικός Κατακερµατισµός Χρησιμοποιεί μια οικογένεια από συναρτήσεις κατακερματισμού h 0 (k), h 1 (k),, h d (k) Κάθε συνάρτηση διπλάσιους κάδους από την προηγούμενη: h 0 (k) = k mod M, h 1 (k) = k mod 2M, h 2 (k) = k mod 4M,, h j (k) = k mod 2 j M Όταν συμβαίνει η πρώτη υπερχείλιση ενός κάδου, πάμε στην επόμενη συνάρτηση μέχρι να διασπαστούν όλοι οι κάδοι με αυτήν τη συνάρτηση ΠΡΟΣΟΧΗ: δε διασπάμε τον κάδο που υπερχειλίζει, αλλά έναν-έναν τον κάδο με τη σειρά! 25 Γραµµικός Εξωτερικός Κατακερµατισµός Βασικά σημεία Πολλές συναρτήσεις κατακερματισμού (άλλη σε κάθε βήμα) Οι κάδοι σε κάθε βήμα διασπώνται με τη σειρά (ο ένας μετά τον άλλο ανεξάρτητα αν έχουν ή όχι υπερχειλίσει) Επίσης, υποθέτουμε ότι κάθε υπερχείλιση, οδηγεί σε διάσπαση 26 : Κατακερµατισµός 13

Γραµµικός Εξωτερικός Κατακερµατισµός Αρκούν 2 μεταβλητές Βήμα Διάσπασης - ποια συνάρτηση χρησιμοποιούμε Πλήθος Διασπάσεων (στο τρέχον βήμα) ποιος είναι ο επόμενος κάδο που θα διασπαστεί 27 Γραµµικός Εξωτερικός Κατακερµατισµός Αρχικά: Βήμα Διάσπασης (ποια συνάρτηση χρησιμοποιούμε) αρχικά j = 0: Πλήθος Διασπάσεων (στο τρέχον βήμα) αρχικά n = 0, j-> ποια συνάρτηση χρησιμοποιούμε n->ποιοκάδοδιασπάμε Έστω αρχικά Μ κάδους αριθμημένους από 0 έως Μ - 1 και αρχική συνάρτηση κατακερματισμού h 0 (k) = k mod M 28 : Κατακερµατισµός 14

j -> ποια συνάρτηση χρησιμοποιούμε n -> ποιο κάδο διασπάμε Γραµµικός Εξωτερικός Κατακερµατισµός Όταν συμβεί μια υπερχείλιση σε έναν οποιοδήποτε κάδο, ο κάδος 0 χωρίζεται σε δύο κάδους: τον αρχικό κάδο 0 και ένα νέο κάδο Μ στο τέλος τουαρχείουμεβάσητηνσυνάρτησηh 1 (k)=kmod2m Βήμα Διάσπασης (ποια συνάρτηση χρησιμοποιούμε) j = 1 Πλήθος Διασπάσεων n = 1 Συνεχίζουμε γραμμικά, διασπώντας με τη σειρά τους κάδους 1, 2, 3,... μέχρι να διασπαστούν όλοιοι «παλιοί» κάδοι η μεταβλητή n («ΠλήθοςΔιασπάσεων») κρατάει ποιος κάδος έχει σειρά για διάσπαση 29 Γραµµικός Εξωτερικός Κατακερµατισµός Βήμα διάσπασης (ποια συνάρτηση χρησιμοποιούμε) j = 1: ΠλήθοςΔιασπάσεωνn=m-1: Όταν συμβεί μια υπερχείλιση σε έναν οποιοδήποτε κάδο, οκάδοςm-1 χωρίζεταισεδύοκάδους:τοναρχικόκάδοm-1καιένανέο κάδο m + k - 1 στο τέλος του αρχείου με βάση την συνάρτηση h 1 (k) = k mod2m Δηλαδή, σε κάθε υπερχείλιση χωρίζουμε όλους τους κάδους με τη σειρά ξεκινώντας από τον πρώτο κάδο 30 : Κατακερµατισµός 15

Γραµµικός Εξωτερικός Κατακερµατισµός Συνεχίζουμε... Όλοι οι κάδοι έχουν διασπαστεί όταν: n = M Τότε έχουμε 2M κάδους Όταν n = M, μηδενίζουμε το n, n = 0 και για οποιαδήποτε νέα διάσπαση εφαρμόζουμε την h 2 (k) = k mod 4M Διασπώντας πάλι τον κάδο 0, 1,... κ.τ.λ 31 Γραµµικός Εξωτερικός Κατακερµατισµός Γενικά βήμα διάσπασης j(j = 0, 1, 2, ) h j (k) = k mod 2 j M, και την h j+1 (k) για διασπάσεις 32 : Κατακερµατισµός 16

Γραµµικός Εξωτερικός Κατακερµατισµός 32 9 44 31 25 5 35 7 36 14 18 10 11 30 Κάθε κάδος 4 εγγραφές Αρχικά4κάδους(M=4) ΠΡΟΣΟΧΗ: Δε χρησιμοποιούμε τη δυαδική αναπαράσταση 33 Γραµµικός Εξωτερικός Κατακερµατισµός (παράδειγµα) h 0 (k) = k mod 4 h 1 (k) = k mod 8 Για μη διασπασμένους κάδους: παλιά συνάρτηση Για διασπασμένους κάδους: νέα συνάρτηση 37 29 Βήμα διάσπασης 0 (χρήση h 0 ) Πλήθος διασπάσεων = 0 43 Διασπάμε τον πρώτο κάδο 22 66 34 34 : Κατακερµατισµός 17

Γραµµικός Εξωτερικός Κατακερµατισµός (παράδειγµα) 50 Βήμα διάσπασης 0 (χρήση h 0 ) Πλήθος διασπάσεων = 0 35 Γραµµικός Εξωτερικός Κατακερµατισµός Αναζήτηση Εγγραφής (γενικά) Τι χρειάζεται να ξέρουμε για να βρεθεί ο κάδος της εγγραφής k που ψάχνουμε; ποια συνάρτηση χρησιμοποιούμε (δηλαδή, το j) σε ποια διάσπαση βρισκόμαστε (δηλαδή το n) Έστω ότι είμαστε στο βήμα j, Τότε θα πρέπει να κοιτάξουμε είτε το ή το h j (k) αν ο κάδος δεν έχει διασπαστεί h j+1 (k) αν έχει διασπαστεί Πως θα ελέγξουμε αν ο κάδος έχει διασπαστεί ή όχι 36 : Κατακερµατισµός 18

Γραµµικός Εξωτερικός Κατακερµατισµός Αναζήτηση Εγγραφής Κρατάμε μια μεταβλητή το πλήθος n των διασπάσεων Έστω n ο αριθμός διασπάσεωνκαι ότι αναζητούμε το k, βρίσκεται στον κάδο h 0 (k) τότε αν n h 0 (k)o κάδος δεν έχει διασπαστεί ενώ αν n > h 0 (k)o κάδος έχει διασπαστεί και εφαρμόζουμε την h 1 (k) 37 Γραµµικός Εξωτερικός Κατακερµατισµός Αλγόριθμος Αναζήτησης j : βήμα διάσπασης if (n = 0) else { } then m := h j (k); m := h j (k); if (m < n) then m := h j+1 (k) n : πλήθος διασπάσεων στο βήμα j σημαίνει ότι ο κάδος έχει διασπαστεί 38 : Κατακερµατισµός 19