Πίνακες Κατακερματισμού. Hash Tables. Προγραμματισμός II 1

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

Διδάσκων: Κωνσταντίνος Κώστα

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

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

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

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

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

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

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

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

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

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

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

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

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

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

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

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

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

Advanced Data Indexing

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

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

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

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

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

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

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

10. Πίνακες Κατακερματισμού

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

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

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

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις

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

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

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

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

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

Standard Template Library (STL) C++ library

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

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

Οργάνωση Αρχείων. Διάγραμμα Σχεσιακού σχήματος. Ευρετήρια. Ταξινομημένα ευρετήρια B + δένδρα Ευρετήρια κατακερματισμού

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

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

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

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

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

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

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

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

Οργάνωση Αρχείων. Ευρετήρια. Ταξινοµηµένα ευρετήρια B + -δένδρα Ευρετήρια κατακερµατισµού. Αρχεία σωρού ιατεταγµένα αρχεία Αρχεία κατακερµατισµού

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

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

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

Συναρτήσεις Κατακερματισμού και Πίνακες Κατακερματισμού

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Advanced Data Indexing

Κεφάλαιο 14. Δομές Ευρετηρίων για Αρχεία. Copyright 2007 Ramez Elmasri and Shamkant B. Navathe Ελληνική Έκδοση,

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Ευρετήρια. Βάσεις Δεδομένων. Διδάσκων: Μαρία Χαλκίδη

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

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

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Linear Hashing. Linear vs other Hashing

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

Week 7: Java Collection Classes

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

Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα του προγράμματος

Ευρετήρια και Κατακερματισμός

Ανάκληση Πληποφοπίαρ. Information Retrieval. Διδάζκων Δημήηριος Καηζαρός

Slide 6 / 43. Slide 5 / 43. Α. Σαββίδης. Α. Σαββίδης. Slide 8 / 43. Slide 7 / 43. Α. Σαββίδης. Α. Σαββίδης HY340, 2009 HY340, 2009 HY340, 2009

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

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Προγραμματισμός Ι (ΗΥ120)

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

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

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

Προγραµµατισµός Ι (ΗΥ120)

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Δομές Δεδομένων. Κατακερματισμός. Δομές Δεδομένων & Αλγόριθμοι. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 1

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

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

ΗΥ460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης, Δημήτρης Πλεξουσάκης, Χαρίδημος Κονδυλάκης

Transcript:

Πίνακες Κατακερματισμού Hash Tables Προγραμματισμός II lalis@inf.uth.gr

Δομές αναζήτησης μέχρι στιγμής Δομή Αναζήτηση Table Ο(Ν) Sorted Table Ο(log N) List Ο(Ν) Sorted List Ο(N) Balanced Binary Tree Ο(log N) Προγραμματισμός II lalis@inf.uth.gr

Υπάρχει κάτι καλύτερο; Ένα ιδανικό ευρετήριο θα υποστήριζε όλες τις πράξεις (προσθήκης, αναζήτησης, απομάκρυνσης) με σταθερό κόστος που είναι ανεξάρτητο του αριθμού των στοιχείων που περιέχει το ερευτήριο της τάξης Ο() Μια τέτοια ιδιότητα φαίνεται αδύνατη Με κατάλληλα «μαγικά», είναι εφικτή Πίνακες κατακερματισμού (hash tables) Προγραμματισμός II lalis@inf.uth.gr

Δομές αναζήτησης Δομή Αναζήτηση Table Ο(Ν) Sorted Table Ο(log N) List Ο(Ν) Sorted List Ο(N) Balanced Binary Tree Ο(log N) Hash table Ο() Προγραμματισμός II 4 lalis@inf.uth.gr

Πίνακας κατακερματισμού Κάθε θέση του πίνακα δείχνει σε ένα ξεχωριστό δοχείο (bucket) που περιέχει τις επιμέρους εγγραφές πίνακας N θέσεων: Ν ξεχωριστά δοχεία H αντιστοίχιση των εγγραφών στα δοχεία του πίνακα γίνεται χρησιμοποιώντας ως «κλειδί» την τιμή από ένα ή περισσότερα πεδία της εγγραφής Το κλειδί μετασχηματίζεται μέσα από μια συνάρτηση κατακερματισμού (hash function) επιστρέφεται ένα hash value/tag, που καθορίζει την θέση του πίνακα/δοχείου που θα τοποθετηθεί η εγγραφή Προγραμματισμός II 5 lalis@inf.uth.gr

hash table buckets χώρος τιμών κλειδιού hash_function(key) -> index π.χ., integers, strings Προγραμματισμός II 6 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 7 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 8 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 9 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 0 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 4 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 5 lalis@inf.uth.gr

Συγκρούσεις Η συνάρτηση κατακερματισμού μπορεί να επιστρέψει την ίδια τιμή για διαφορετικές τιμές κλειδιών Αυτό ονομάζεται σύγκρουση (collision) Οι εγγραφές που έχουν τα ίδια hash values τοποθετούνται στο ίδιο δοχείο παρότι έχουν διαφορετικές τιμές κλειδιά Πρέπει να υποστηρίζεται αναζήτηση εγγραφών μέσα σε ένα δοχείο με βάση την τιμή του κλειδιού κατάλληλη δομή αναζήτησης π.χ. ταξινομημένη λίστα (chained buckets) Προγραμματισμός II 6 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 7 lalis@inf.uth.gr

str[0] % 4 0 Προγραμματισμός II 8 lalis@inf.uth.gr

str[0] % 4 0 Katia Προγραμματισμός II 9 lalis@inf.uth.gr

str[0] % 4 0 Katia Katia Προγραμματισμός II 0 lalis@inf.uth.gr

str[0] % 4 0 Babis Katia Προγραμματισμός II lalis@inf.uth.gr

str[0] % 4 0 Babis Babis Katia Προγραμματισμός II lalis@inf.uth.gr

str[0] % 4 0 Babis Babis Katia Προγραμματισμός II lalis@inf.uth.gr

Απόδοση Επιλογή καλής συνάρτησης κατακερματισμού ομοιόμορφη κατανομή των τιμών των κλειδιών στα δοχεία Ιδανικά, αν ο πίνακας είναι αρκετά μεγάλος για να χωρέσει (σχεδόν όλες) τις εγγραφές, οι πράξεις προσθήκης, αναζήτησης, διαγραφής είναι Ο() Όσο πιο ανομοιόμορφα γεμίζουν τα δοχεία (τόσο περισσότερες εγγραφές καταλήγουν στα ίδια δοχεία), τόσο περισσότερο η απόδοση του πίνακα κατακερματισμού τείνει προς στην απόδοση της δομής αναζήτησης μέσα στα δοχεία Προγραμματισμός II 4 lalis@inf.uth.gr

Μετρικές Μέγεθος του πίνακα (Ν) Αριθμός εισαγωγών (Ε) Μέγεθος δοχείων (Β) Load factor: Ε/Ν ~ => ο πίνακας είναι υπερ-φορτωμένος << => ο πίνακας είναι υπο-φορτωμένος Max/mean/average bucket: μέγιστη τιμή B ~ => γρήγορη αναζήτηση μέσα στα δοχεία >> => αργή αναζήτηση μέσα στα δοχεία Προγραμματισμός II 5 lalis@inf.uth.gr

Τακτικές βελτιώση απόδοσης Αλλαγή/προσαρμογή της συνάρτησης κατακερματισμού όταν Max bucket >> παρότι Load factor << Δυναμική αύξηση του μεγέθους του πίνακα όταν Load factor ~ οι συγκρούσεις είναι «νομοτελειακά» αναπόφευκτες, όσο καλή και να είναι η συνάρτηση κατακερματισμού Δυναμική μείωση του μεγέθους του πίνακα όταν Load factor << σπατάλη μνήμης Προγραμματισμός II 6 lalis@inf.uth.gr

str[0] % 4 0 Olga Babis Katia Προγραμματισμός II 7 lalis@inf.uth.gr

str[0] % 4 0 Olga Babis Katia Olga Προγραμματισμός II 8 lalis@inf.uth.gr

0 str[0] % 8 Babis Katia 4 5 6 7 Προγραμματισμός II 9 lalis@inf.uth.gr

str[0] % 8 0 4 5 6 7 Babis Katia Προγραμματισμός II 0 lalis@inf.uth.gr

str[0] % 8 0 Babis Olga 4 5 6 7 Katia Προγραμματισμός II lalis@inf.uth.gr

str[0] % 8 0 Babis Olga 4 5 6 Katia 7 Olga Προγραμματισμός II lalis@inf.uth.gr

str[0] % 8 0 Babis Pavlos 4 5 6 Katia 7 Olga Προγραμματισμός II lalis@inf.uth.gr

str[0] % 8 0 Pavlos Babis Pavlos 4 5 6 Katia 7 Olga Προγραμματισμός II 4 lalis@inf.uth.gr

str[0] % 8 0 Pavlos Babis Nikos 4 5 6 Katia 7 Olga Προγραμματισμός II 5 lalis@inf.uth.gr

str[0] % 8 0 Pavlos Babis Nikos 4 5 Katia 6 7 Nikos Olga Προγραμματισμός II 6 lalis@inf.uth.gr

str[0] % 8 0 Pavlos Babis Nikos 4 5 Katia 6 7 Nikos Olga Προγραμματισμός II 7 lalis@inf.uth.gr

str[0] % 8 0 4 5 Pavlos Babis Katia 6 7 Nikos Olga Προγραμματισμός II 8 lalis@inf.uth.gr