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



Σχετικά έγγραφα
Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

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

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

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

Advanced Data Indexing

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

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

Advanced Data Indexing

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό

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

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

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

ΚΑΤΑΚΕΡΜΑΤΙΣΜΟΣ HASHING

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

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

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

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

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

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

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

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

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

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

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

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

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

Προγραμματισμός ΙI (Θ)

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Κατακερµατισµός Κεφάλαιο 14. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

Εισαγωγή στον Προγραμματισμό

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

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

Κεφα λαιο 9 Κατακερματισμός

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

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

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

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

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα

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

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

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

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

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

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

Τυπικές χρήσεις της Matlab

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

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

Διαδικασιακός Προγραμματισμός

Standard Template Library (STL) C++ library

Transcript:

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

Λεξικό Dictionary Ένα λεξικό (dictionary) είναι ένας αφηρημένος τύπος δεδομένων (ΑΤΔ) που διατηρεί ένα σύνολο στοιχείων με κλειδιά και υποστηρίζει τις εξής λειτουργίες: insert(item): προσθήκη του item στο σύνολο delete(item): διαγραφή του item από το σύνολο search(key): επιστροφή του αντικειμένου με κλειδί key εαν υπάρχει Υποθέτουμε πως τα κλειδιά έχουν μοναδικά κλειδιά ή πως αντικαθιστούμε αντικείμενα με ίδια κλειδιά. Χαροκόπειο Πανεπιστήμιο 2/33

Χρησιμότητα Το λεξικό είναι μια από τις σημαντικότερες δομές δεδομένων στην επιστήμη των υπολογιστών. Υπάρχουν υλοποιημένα στις περισσότερες γλώσσες προγραμματισμού: C++, C#, Java, Python, Perl, Ruby, Σε μερικές από αυτές είναι ενσωματωμένα μέσα στην ίδια την γλώσσα. Χαροκόπειο Πανεπιστήμιο 3/33

Χρησιμότητα Παραδείγματα μηχανές αναζήτησης web: λέξη σελίδες που περιέχουν την λέξη μεταγλωττιστές: όνομα μεταβλητή network routers: διεύθυνση IP καλώδιο network server: port εφαρμογή εικονική μνήμη: virtual address physical address Χαροκόπειο Πανεπιστήμιο 4/33

Ισοζυγισμένα ΔΔΑ Balanced BSTs Λεξικό με O(log n) χρόνο για εισαγωγή, διαγραφή, αναζήτηση. Προυποθέτει σύνολο που είναι διατεταγμένο από μία σχέση. Υποστηρίζουν όμως και πολλές άλλες λειτουργίες. Χαροκόπειο Πανεπιστήμιο 5/33

Ισοζυγισμένα ΔΔΑ Balanced BSTs Λεξικό με O(log n) χρόνο για εισαγωγή, διαγραφή, αναζήτηση. Προυποθέτει σύνολο που είναι διατεταγμένο από μία σχέση. Υποστηρίζουν όμως και πολλές άλλες λειτουργίες. Στόχος Θέλουμε O(1) χρόνο για κάθε λειτουργία. Χαροκόπειο Πανεπιστήμιο 5/33

Λεξικά Η πιο απλή λύση, απευθείας πρόσβαση σε πίνακα: αποθηκεύουμε τα αντικείμενα σε ένα πίνακα στην διεύθυνση του κλειδιού (τυχαία προσπέλαση) προβλήματα: 1 τα κλειδιά πρέπει να είναι μη αρνητικά (αλλιώς δύο πίνακες) 2 μεγάλο εύρος κλειδιών πολύ χώρος π.χ ένα κλειδί 10 15 είναι ένα Petabyte 0 1 2 key key value value Χαροκόπειο Πανεπιστήμιο 6/33

Κατακερματισμός Μειώνουμε το σύνολο U όλων των κλειδιών (π.χ ακέραιοι) σε ένα μικρότερο πιο ρεαλιστικό μέγεθος m ενός πίνακα. Ιδέα m n = αριθμός κλειδιών αποθηκευμένα στο λεξικό Συνάρτηση Κατακερματισμού (hash function) h : U {0, 1,..., m 1} T U k1 k3 k2 k3 k1 0 1 k2 m-1 Δύο κλειδιά x και y συγκρούονται (collide) εάν h(x) = h(y). Χαροκόπειο Πανεπιστήμιο 7/33

Επίλυση Συγκρούσεων Σύγκρουση Όταν για δύο κλειδιά k 1 και k 2 ισχύει h(k 1) = h(k 2). Χαροκόπειο Πανεπιστήμιο 8/33

Επίλυση Συγκρούσεων Σύγκρουση Όταν για δύο κλειδιά k 1 και k 2 ισχύει h(k 1) = h(k 2). Θα δούμε δύο τρόπους επίλυσης: 1 Αλυσιδωτός κατακερματισμός (chaining) 2 Ανοιχτή διευθυνσιοδότηση (open addressing) Χαροκόπειο Πανεπιστήμιο 8/33

Αλυσιδωτός Κατακερματισμός Hashing with Chaining Λύνουμε το πρόβλημα της σύγκρουσης κρατώντας μια λίστα στοιχείων σε κάθε διεύθυνση του πίνακα κατακερματισμού. Χαροκόπειο Πανεπιστήμιο 9/33

Αλυσιδωτός Κατακερματισμός Hashing with Chaining εισαγωγή στοιχείου e με κλειδί key εισαγωγή στην λίστα T[h(key)] σταθερός χρόνος (θεωρώντας πως η συνάρτηση κατακερματισμού πέρνει επίσης σταθερό χρόνο) διαγραφή στοιχείου με κλειδί key αναζήτηση στη λίστα T[h(key)] και διαγραφή εάν δεν υπάρχει και όλα τα στοιχεία είναι στην θέση h(key) τότε στην χειρότερη περίπτωση Θ(n) αναζήτηση στοιχείου με κλειδί key αναζήτηση στη λίστα T[h(key)] εάν δεν υπάρχει και όλα τα στοιχεία είναι στην θέση h(key) τότε στην χειρότερη περίπτωση Θ(n) Χώρος O(n + m) Χαροκόπειο Πανεπιστήμιο 10/33

Συναρτήσεις Κατακερματισμού H συνάρτηση κατακερματισμού παίζει πάρα πολύ σημαντικό ρόλο στην απόδοση. Χαροκόπειο Πανεπιστήμιο 11/33

Συναρτήσεις Κατακερματισμού H συνάρτηση κατακερματισμού παίζει πάρα πολύ σημαντικό ρόλο στην απόδοση. Επιθυμητές Ιδιότητες Κατακερματισμού 1 τα κλειδιά πρέπει να διαμοιράζονται ομοιόμορφα ώστε να μην έχουμε πολλές συγκρούσεις ο αριθμός των συγκρούσεων επηρεάζει τον χρόνο αναζήτησης και διαγραφής Χαροκόπειο Πανεπιστήμιο 11/33

Συναρτήσεις Κατακερματισμού H συνάρτηση κατακερματισμού παίζει πάρα πολύ σημαντικό ρόλο στην απόδοση. Επιθυμητές Ιδιότητες Κατακερματισμού 1 τα κλειδιά πρέπει να διαμοιράζονται ομοιόμορφα ώστε να μην έχουμε πολλές συγκρούσεις ο αριθμός των συγκρούσεων επηρεάζει τον χρόνο αναζήτησης και διαγραφής 2 m = O(n) θέλουμε να ισχύει η ιδιότητα (1) χωρίς το μέγεθος του πίνακα m να είναι πολύ μεγαλύτερο από τον αριθμό των στοιχείων n. Χαροκόπειο Πανεπιστήμιο 11/33

Συναρτήσεις Κατακερματισμού H συνάρτηση κατακερματισμού παίζει πάρα πολύ σημαντικό ρόλο στην απόδοση. Επιθυμητές Ιδιότητες Κατακερματισμού 1 τα κλειδιά πρέπει να διαμοιράζονται ομοιόμορφα ώστε να μην έχουμε πολλές συγκρούσεις ο αριθμός των συγκρούσεων επηρεάζει τον χρόνο αναζήτησης και διαγραφής 2 m = O(n) θέλουμε να ισχύει η ιδιότητα (1) χωρίς το μέγεθος του πίνακα m να είναι πολύ μεγαλύτερο από τον αριθμό των στοιχείων n. 3 η συνάρτηση h πρέπει να είναι πολύ γρήγορη, θέλουμε η συνάρτηση να υπολογίζεται σε σταθερό χρόνο Χαροκόπειο Πανεπιστήμιο 11/33

Συναρτήσεις Κατακερματισμού Άσχημα Νέα Θεώρημα Για κάθε συνάρτηση κατακερματισμού h, εάν U > (n 1) m + 1, υπάρχει ένα σύνολο S μεγέθους n που όλα τα στοιχεία του κατακερματίζονται στην ίδια θέση. Απόδειξη Απευθείας από την αρχή του περιστερώνα. Χαροκόπειο Πανεπιστήμιο 12/33

Συναρτήσεις Κατακερματισμού Άσχημα Νέα Θεώρημα Για κάθε συνάρτηση κατακερματισμού h, εάν U > (n 1) m + 1, υπάρχει ένα σύνολο S μεγέθους n που όλα τα στοιχεία του κατακερματίζονται στην ίδια θέση. Απόδειξη Απευθείας από την αρχή του περιστερώνα. Εμείς θέλουμε μια συνάρτηση καλή για κάθε σύνολο στοιχείων, το οποίο δεν γίνεται σύμφωνα με το παραπάνω θεώρημα. Στην πράξη για μερικά τυπικά σύνολα S υπάρχουν απλές συναρτήσεις κατακερματισμού που λειτουργούν καλά. Χαροκόπειο Πανεπιστήμιο 12/33

Συναρτήσεις Κατακερματισμού Άσχημα Νέα Θεώρημα Για κάθε συνάρτηση κατακερματισμού h, εάν U > (n 1) m + 1, υπάρχει ένα σύνολο S μεγέθους n που όλα τα στοιχεία του κατακερματίζονται στην ίδια θέση. Απόδειξη Απευθείας από την αρχή του περιστερώνα. Εμείς θέλουμε μια συνάρτηση καλή για κάθε σύνολο στοιχείων, το οποίο δεν γίνεται σύμφωνα με το παραπάνω θεώρημα. Για να λύσουμε το πρόβλημα για οποιοδήποτε σύνολο προσθέτουμε τυχαίοτητα. Από ένα σύνολο H από συναρτήσεις επιλέγουμε μία συνάρτηση h τυχαία. Χαροκόπειο Πανεπιστήμιο 13/33

Συναρτήσεις Κατακερματισμού H συνάρτηση κατακερματισμού παίζει πάρα πολύ σημαντικό ρόλο στην απόδοση. Έστω H το σύνολο όλων των συναρτήσεων από το U στο 0... m 1. Ας υποθέσουμε πως η συνάρτηση h διαλέγεται τυχαία από το H. Θεώρημα Εάν n στοιχεία είναι αποθηκευμένα σε ένα πίνακα κατακερματισμού με m θέσεις με την χρήση μιας τυχαίας συνάρτησης κατακερματισμού, τότε ο αναμενόμενος χρόνος εκτέλεσης της διαγραφής ή αναζήτησης είναι O(1 + n m ). Χαροκόπειο Πανεπιστήμιο 14/33

Τυχαία Συνάρτηση Κατακερματισμού Θεώρημα Εάν n στοιχεία είναι αποθηκευμένα σε ένα πίνακα κατακερματισμού με m θέσεις με την χρήση μιας τυχαίας συνάρτησης κατακερματισμού, τότε ο αναμενόμενος χρόνος εκτέλεσης της διαγραφής ή αναζήτησης είναι O(1 + n m ). Απόδειξη Για ένα συγκεκριμένο κλειδί k οι συναρτήσεις αναζήτησης και διαγραφής χρειάζονται χρόνο σταθερό συν τον χρόνο να διαβάσουν την λίστα T[h(k)]. Χαροκόπειο Πανεπιστήμιο 15/33

Τυχαία Συνάρτηση Κατακερματισμού Θεώρημα Εάν n στοιχεία είναι αποθηκευμένα σε ένα πίνακα κατακερματισμού με m θέσεις με την χρήση μιας τυχαίας συνάρτησης κατακερματισμού, τότε ο αναμενόμενος χρόνος εκτέλεσης της διαγραφής ή αναζήτησης είναι O(1 + n m ). Απόδειξη Για ένα συγκεκριμένο κλειδί k οι συναρτήσεις αναζήτησης και διαγραφής χρειάζονται χρόνο σταθερό συν τον χρόνο να διαβάσουν την λίστα T[h(k)]. Ο αναμενόμενος χρόνος είναι O(1 + E[X]) όπου X είναι η τυχαία μεταβλητή που υποδηλώνει το μέγεθος της λίστας T[h(k)]. Χαροκόπειο Πανεπιστήμιο 15/33

Τυχαία Συνάρτηση Κατακερματισμού Θεώρημα Εάν n στοιχεία είναι αποθηκευμένα σε ένα πίνακα κατακερματισμού με m θέσεις με την χρήση μιας τυχαίας συνάρτησης κατακερματισμού, τότε ο αναμενόμενος χρόνος εκτέλεσης της διαγραφής ή αναζήτησης είναι O(1 + n m ). Απόδειξη Για ένα συγκεκριμένο κλειδί k οι συναρτήσεις αναζήτησης και διαγραφής χρειάζονται χρόνο σταθερό συν τον χρόνο να διαβάσουν την λίστα T[h(k)]. Ο αναμενόμενος χρόνος είναι O(1 + E[X]) όπου X είναι η τυχαία μεταβλητή που υποδηλώνει το μέγεθος της λίστας T[h(k)]. Έστω S το σύνολο των n στοιχείων που είναι αποθηκευμένα. Για κάθε e S, έστω X e η τυχαία μεταβλητή (indicator) όπου X e = 1 εάν h(e) = h(k) και X e = 0 αλλιώς. Χαροκόπειο Πανεπιστήμιο 15/33

Τυχαία Συνάρτηση Κατακερματισμού Θεώρημα Εάν n στοιχεία είναι αποθηκευμένα σε ένα πίνακα κατακερματισμού με m θέσεις με την χρήση μιας τυχαίας συνάρτησης κατακερματισμού, τότε ο αναμενόμενος χρόνος εκτέλεσης της διαγραφής ή αναζήτησης είναι O(1 + n m ). Απόδειξη Για ένα συγκεκριμένο κλειδί k οι συναρτήσεις αναζήτησης και διαγραφής χρειάζονται χρόνο σταθερό συν τον χρόνο να διαβάσουν την λίστα T[h(k)]. Ο αναμενόμενος χρόνος είναι O(1 + E[X]) όπου X είναι η τυχαία μεταβλητή που υποδηλώνει το μέγεθος της λίστας T[h(k)]. Έστω S το σύνολο των n στοιχείων που είναι αποθηκευμένα. Για κάθε e S, έστω X e η τυχαία μεταβλητή (indicator) όπου X e = 1 εάν h(e) = h(k) και X e = 0 αλλιώς. Έχουμε X = e S X e. Χαροκόπειο Πανεπιστήμιο 15/33

Τυχαία Συνάρτηση Κατακερματισμού Θεώρημα Εάν n στοιχεία είναι αποθηκευμένα σε ένα πίνακα κατακερματισμού με m θέσεις με την χρήση μιας τυχαίας συνάρτησης κατακερματισμού, τότε ο αναμενόμενος χρόνος εκτέλεσης της διαγραφής ή αναζήτησης είναι O(1 + n m ). Απόδειξη Για ένα συγκεκριμένο κλειδί k οι συναρτήσεις αναζήτησης και διαγραφής χρειάζονται χρόνο σταθερό συν τον χρόνο να διαβάσουν την λίστα T[h(k)]. Ο αναμενόμενος χρόνος είναι O(1 + E[X]) όπου X είναι η τυχαία μεταβλητή που υποδηλώνει το μέγεθος της λίστας T[h(k)]. Έστω S το σύνολο των n στοιχείων που είναι αποθηκευμένα. Για κάθε e S, έστω X e η τυχαία μεταβλητή (indicator) όπου X e = 1 εάν h(e) = h(k) και X e = 0 αλλιώς. Έχουμε X = e S X e. Χρησιμοποιώντας την γραμμικότητα της μέσης τιμής πέρνουμε E[X] = E[ X e ] = e S e S E[X e ] = e Sprob(X e = 1). Χαροκόπειο Πανεπιστήμιο 15/33

Τυχαία Συνάρτηση Κατακερματισμού Θεώρημα Εάν n στοιχεία είναι αποθηκευμένα σε ένα πίνακα κατακερματισμού με m θέσεις με την χρήση μιας τυχαίας συνάρτησης κατακερματισμού, τότε ο αναμενόμενος χρόνος εκτέλεσης της διαγραφής ή αναζήτησης είναι O(1 + n m ). Απόδειξη Για ένα συγκεκριμένο κλειδί k οι συναρτήσεις αναζήτησης και διαγραφής χρειάζονται χρόνο σταθερό συν τον χρόνο να διαβάσουν την λίστα T[h(k)]. Ο αναμενόμενος χρόνος είναι O(1 + E[X]) όπου X είναι η τυχαία μεταβλητή που υποδηλώνει το μέγεθος της λίστας T[h(k)]. Έστω S το σύνολο των n στοιχείων που είναι αποθηκευμένα. Για κάθε e S, έστω X e η τυχαία μεταβλητή (indicator) όπου X e = 1 εάν h(e) = h(k) και X e = 0 αλλιώς. Έχουμε X = e S X e. Χρησιμοποιώντας την γραμμικότητα της μέσης τιμής πέρνουμε E[X] = E[ X e ] = e S e S E[X e ] = e Sprob(X e = 1). Μια τυχαία συνάρτηση αντιστοιχεί ένα στοιχείο e σε όλες τις m θέσεις με ίδια πιθανότητα 1/m και άρα E[X] = n/m. Χαροκόπειο Πανεπιστήμιο 15/33

Τυχαία Συνάρτηση Κατακερματισμού Δυστυχώς η υπόθεση της τυχαίας συνάρτησης κατακερματισμού είναι τελείως αβάσιμη. Έστω H όλες οι συναρτήσεις από το U στο 0... m 1. Υπάρχουν m U συναρτήσεις στο σύνολο H. Για να διαλέξουμε μια συνάρτηση από το H χρειαζόμαστε log 2 m U = U log 2 m bits. Έτσι καταργούμε τον στόχο μας να μειώσουμε τον χώρο από U σε n. Χαροκόπειο Πανεπιστήμιο 16/33

Καθολικός Κατακερματισμός Στόχοι θέλουμε να διαλέγουμε τυχαία μία συνάρτηση από ένα μικρότερο σύνολο από συναρτήσεις, η επιλογή μιας συνάρτησης πρέπει να μπορεί να γίνει με σταθερό χώρο, πρέπει οι συναρτήσεις να υπολογίζονται εύκολα. Χαροκόπειο Πανεπιστήμιο 17/33

Καθολικός Κατακερματισμός Ορισμός Έστω c μια θετική σταθερά. Μια οικογένεια συναρτήσεων από το U στο 0... m 1 λέγεται c-καθολική (c-universal) εάν δυο διαφορετικά κλειδιά συγκρούονται με πιθανότητα το πολύ c m. Χαροκόπειο Πανεπιστήμιο 18/33

Καθολικός Κατακερματισμός Ορισμός Έστω c μια θετική σταθερά. Μια οικογένεια συναρτήσεων από το U στο 0... m 1 λέγεται c-καθολική (c-universal) εάν δυο διαφορετικά κλειδιά συγκρούονται με πιθανότητα το πολύ c m. Για κάθε x, y U με x y έχουμε: h H : h(x) = h(y) c m H. Χαροκόπειο Πανεπιστήμιο 18/33

Καθολικός Κατακερματισμός Ορισμός Έστω c μια θετική σταθερά. Μια οικογένεια συναρτήσεων από το U στο 0... m 1 λέγεται c-καθολική (c-universal) εάν δυο διαφορετικά κλειδιά συγκρούονται με πιθανότητα το πολύ c m. Για κάθε x, y U με x y έχουμε: Με άλλα λόγια, για τυχαία h H, h H : h(x) = h(y) c m H. prob(h(x) = h(y)) c m Χαροκόπειο Πανεπιστήμιο 18/33

Καθολικός Κατακερματισμός Ορισμός Έστω c μια θετική σταθερά. Μια οικογένεια συναρτήσεων από το U στο 0... m 1 λέγεται c-καθολική (c-universal) εάν δυο διαφορετικά κλειδιά συγκρούονται με πιθανότητα το πολύ c m. Για κάθε x, y U με x y έχουμε: Με άλλα λόγια, για τυχαία h H, h H : h(x) = h(y) c m H. prob(h(x) = h(y)) c m Μία c-καθολική συνάρτηση λειτουργεί μια χαρά στην απόδειξη που κάναμε με τις τυχαίες συναρτήσεις. Χαροκόπειο Πανεπιστήμιο 18/33

Καθολική Συνάρτηση Κατακερματισμού Ερώτηση Μπορούμε να κατασκευάσουμε μία c-καθολική οικογένεια συναρτήσεων; Χαροκόπειο Πανεπιστήμιο 19/33

Καθολική Συνάρτηση Κατακερματισμού Ερώτηση Μπορούμε να κατασκευάσουμε μία c-καθολική οικογένεια συναρτήσεων; Η απάντηση είναι ΝΑΙ! Χαροκόπειο Πανεπιστήμιο 19/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) Έστω: Τα κλειδιά έχουν μήκος u bits. Ο πίνακας T έχει μέγεθος 2 b όπου b είναι ο αριθμός των bits για την διευθυνσιοδότηση του. Χαροκόπειο Πανεπιστήμιο 20/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) Έστω: Τα κλειδιά έχουν μήκος u bits. Ο πίνακας T έχει μέγεθος 2 b όπου b είναι ο αριθμός των bits για την διευθυνσιοδότηση του. Τότε: Επιλέγουμε έναν τυχαίο 0/1 πίνακα h διαστάσεων b u Ορίζουμε h(x) = h x όπου κάνουμε πρόσθεση με υπόλοιπο 2 (mod 2). Χαροκόπειο Πανεπιστήμιο 20/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) - Παράδειγμα h(x) = h x = 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 = Τα κλειδιά μας έχουν μήκος u = 8 bits (π.χ 256 χαρακτήρες του πίνακα ASCII) Ο πίνακας T έχει μέγεθος 2 4 = 16 και άρα χρειαζόμαστε b = 4 bits για την διευθυνσιοδότηση του. Επιλέγουμε έναν τυχαίο 0/1 πίνακα h διαστάσεων 4 8 Ορίζουμε h(x) = h x όπου κάνουμε πρόσθεση με υπόλοιπο 2 (mod 2). 0 1 0 1 Χαροκόπειο Πανεπιστήμιο 21/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) Θεώρημα Για x y, Pr h [h(x) = h(y)] = 1 2 b. Απόδειξη Καταρχήν, τι σημαίνει ο πολλαπλασιασμός h επί x; Μπορούμε να σκεφτούμε πως προσθέτουμε κάποιες στήλες του h (πρόσθεση mod 2) και τα 1 του x μας λένε ποιες στήλες να προσθέσουμε. Χαροκόπειο Πανεπιστήμιο 22/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) Θεώρημα Για x y, Pr h [h(x) = h(y)] = 1 2 b. Απόδειξη Καταρχήν, τι σημαίνει ο πολλαπλασιασμός h επί x; Μπορούμε να σκεφτούμε πως προσθέτουμε κάποιες στήλες του h (πρόσθεση mod 2) και τα 1 του x μας λένε ποιες στήλες να προσθέσουμε. Έστω οποιοδήποτε ζευγάρι κλειδιών x, y ώστε x y. Πρέπει να διαφέρουν κάπου, ας υποθέσουμε λοιπόν πως x i = 0 και y i = 1 για κάποια θέση i. Χαροκόπειο Πανεπιστήμιο 22/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) Θεώρημα Για x y, Pr h [h(x) = h(y)] = 1 2 b. Απόδειξη Καταρχήν, τι σημαίνει ο πολλαπλασιασμός h επί x; Μπορούμε να σκεφτούμε πως προσθέτουμε κάποιες στήλες του h (πρόσθεση mod 2) και τα 1 του x μας λένε ποιες στήλες να προσθέσουμε. Έστω οποιοδήποτε ζευγάρι κλειδιών x, y ώστε x y. Πρέπει να διαφέρουν κάπου, ας υποθέσουμε λοιπόν πως x i = 0 και y i = 1 για κάποια θέση i. Φανταστείτε πως διαλέγουμε πρώτα όλο τον πίνακα h εκτός από την i στήλη. Σε σχέση με τις αναπομείναντες επιλογές η h(x) είναι σταθερή μιας και ισχύει x i = 0. Χαροκόπειο Πανεπιστήμιο 22/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) Θεώρημα Για x y, Pr h [h(x) = h(y)] = 1 2 b. Απόδειξη Καταρχήν, τι σημαίνει ο πολλαπλασιασμός h επί x; Μπορούμε να σκεφτούμε πως προσθέτουμε κάποιες στήλες του h (πρόσθεση mod 2) και τα 1 του x μας λένε ποιες στήλες να προσθέσουμε. Έστω οποιοδήποτε ζευγάρι κλειδιών x, y ώστε x y. Πρέπει να διαφέρουν κάπου, ας υποθέσουμε λοιπόν πως x i = 0 και y i = 1 για κάποια θέση i. Φανταστείτε πως διαλέγουμε πρώτα όλο τον πίνακα h εκτός από την i στήλη. Σε σχέση με τις αναπομείναντες επιλογές η h(x) είναι σταθερή μιας και ισχύει x i = 0. Τώρα, κάθε μία από τις 2 b διαφορετικές επιλογές για την i στήλη, δίνει διαφορετική τιμή στην h(y) (κάθε φορά που αλλάζει ένα bit στην στήλη, αλλάζει και το αντίστοιχο bit στην h(y)). Χαροκόπειο Πανεπιστήμιο 22/33

1-Καθολική Οικογένεια Συναρτήσεων Η μέθοδος του πίνακα (matrix method) Θεώρημα Για x y, Pr h [h(x) = h(y)] = 1 2 b. Απόδειξη Καταρχήν, τι σημαίνει ο πολλαπλασιασμός h επί x; Μπορούμε να σκεφτούμε πως προσθέτουμε κάποιες στήλες του h (πρόσθεση mod 2) και τα 1 του x μας λένε ποιες στήλες να προσθέσουμε. Έστω οποιοδήποτε ζευγάρι κλειδιών x, y ώστε x y. Πρέπει να διαφέρουν κάπου, ας υποθέσουμε λοιπόν πως x i = 0 και y i = 1 για κάποια θέση i. Φανταστείτε πως διαλέγουμε πρώτα όλο τον πίνακα h εκτός από την i στήλη. Σε σχέση με τις αναπομείναντες επιλογές η h(x) είναι σταθερή μιας και ισχύει x i = 0. Τώρα, κάθε μία από τις 2 b διαφορετικές επιλογές για την i στήλη, δίνει διαφορετική τιμή στην h(y) (κάθε φορά που αλλάζει ένα bit στην στήλη, αλλάζει και το αντίστοιχο bit στην h(y)). Άρα υπάρχει ακριβώς 1 2b πιθανότητα να ισχύει h(x) = h(y). Χαροκόπειο Πανεπιστήμιο 22/33

Μέγεθος Πίνακα Αλυσιδωτός Κατακερματισμός μέσος χρόνος αναζήτησης/διαγραφής: O(1 + n/m) υποθέτοντας καθολική συνάρτηση κατακερματισμού Μέγεθος Πίνακα; θέλουμε πάντα m = O(n) και άρα μέσο χρόνο αναζήτησης/διαγραφής O(1) δεν ξέρουμε το n κατά την δημιουργία του πίνακα πολύ μικρό m αργή αναζήτηση/διαγραφή πολύ μεγάλο m χάσιμο χώρου Χαροκόπειο Πανεπιστήμιο 23/33

Επανακατακερματισμός Rehashing Ιδέα αρχικά μικρό m (σταθερά) αύξηση (& μείωση) ανάλογα με την χρήση Επανακατακερματισμός (rehashing) Για να μεγαλώσει ή να μικρύνει ο πίνακας κατακερματισμού πρέπει να αλλάξει η συνάρτηση κατακερματισμού. επιλέγουμε νέα συνάρτηση κατακερματισμού από το σύνολο H ο πίνακας πρέπει να φτιαχτεί από την αρχή κάθε αντικείμενο του παλιού πίνακα κατακερματισμού προστίθεται στον καινούριο πίνακα Χαροκόπειο Πανεπιστήμιο 24/33

Επανακατακερματισμός Rehashing Έχοντας μια καθολική συνάρτηση κατακερματισμού μπορούμε να έχουμε γραμμικό χώρο και σταθερό αναμενόμενο χρόνο όλων των λειτουργιών του πίνακα κατακερματισμού 1 φροντίζουμε πάντα m = Θ(n) 2 εαν το n γίνει > m τότε διπλασιάζουμε το μέγεθος του πίνακα 3 εαν το n γίνει < 1 m υποδιπλασιάζουμε το μέγεθος του πίνακα 4 Κάθε φορά που αλλάζουμε το μέγεθος του πίνακα, διαλέγουμε μια καινούρια συνάρτηση κατακερματισμού και υπολογίζουμε τις θέσεις όλων των στοιχείων με βάση τη νέα συνάρτηση. Χαροκόπειο Πανεπιστήμιο 25/33

Επανακατακερματισμός Rehashing Έχοντας μια καθολική συνάρτηση κατακερματισμού μπορούμε να έχουμε γραμμικό χώρο και σταθερό αναμενόμενο χρόνο όλων των λειτουργιών του πίνακα κατακερματισμού 1 φροντίζουμε πάντα m = Θ(n) 2 εαν το n γίνει > m τότε διπλασιάζουμε το μέγεθος του πίνακα 3 εαν το n γίνει < 1 m υποδιπλασιάζουμε το μέγεθος του πίνακα 4 Μερικές λειτουργίες κοστίζουν γραμμικό χρόνο αλλά ο μέσος όρος είναι O(1) Χαροκόπειο Πανεπιστήμιο 25/33

Ανοιχτή Διευθυνσιοδότηση Open Addressing 1 όλα τα στοιχεία είναι απευθείας στον πίνακα, όχι σύνδεσμοι 2 υποχρεωτικά n < m 3 βασική ιδέα: εάν μία θέση είναι γεμάτη, αναζήτησε άλλη Επίλυση Σύγκρουσης Σε περίπτωση που η θέση T[h(key)] έχει ήδη κάποιο στοιχείο αναζητάμε κάποια ελεύθερη θέση με βάση κάποια συγκεκριμένη στρατηγική. Χαροκόπειο Πανεπιστήμιο 26/33

Γραμμική Διερεύνηση Linear Probing Η απλούστερη μέθοδος ανοιχτής διευθυνσιοδότησης ονομάζεται γραμμική διερεύνηση. Ο πίνακας κατακερματισμού αποθηκεύει όλα τα στοιχεία. Κενές θέσεις συμβολίζονται με κάποιο ειδικό σύμβολο, π.χ. Ένα στοιχείο e αποθηκεύεται στην θέση t[h(e)] ή στην πρώτη κενή προς τα δεξιά εάν το e είναι στην θέση t[i] με i > h(e) πρέπει υποχρεωτικά οι θέσεις h(e) μέχρι και i 1 να μην είναι κενές ( ). Χαροκόπειο Πανεπιστήμιο 27/33

Γραμμική Διερεύνηση Linear Probing Εισαγωγή του στοιχείου e: ψάχνουμε στον πίνακα ξεκινώντας από την θέση t[h(e)] προς τα δεξιά μέχρι να βρούμε ένα. Εκεί αποθηκεύουμε το στοιχείο e. Αναζήτηση του στοιχείου e: ψάχνουμε στον πίνακα ξεκινώντας από την θέση t[h(e)] προς τα δεξιά μέχρι να βρούμε το e ή ένα. Και στις δύο περιπτώσεις χρησιμοποιούμε τον πίνακα ως κυκλικό πίνακα, καθώς κινούμαστε προς τα δεξιά. Χαροκόπειο Πανεπιστήμιο 28/33

Γραμμική Διερεύνηση Διαγραφή Η διαγραφή ενός στοιχείου e είναι η μόνη δύσκολη διαδικασία: αφού βρούμε το e δεν μπορούμε απλά να το διαγράψουμε γράφοντας στην θέση του μπορεί να δημιουργήσουμε πρόβλημα σε άλλα στοιχεία π.χ έστω τα στοιχεία x, y, z τα οποία προστίθενται με αυτή την σειρά και έστω h(x) = h(z) και h(y) = h(x) + 1. Το z αποθηκεύεται στην θέση h(x) + 2. Όταν θέλουμε να σβήσουμε το y δεν μπορούμε απλά να γράψουμε στην θέση h(x) + 1 το μιας και θα κάνει το στοιχείο z μη προσβάσιμο. Χαροκόπειο Πανεπιστήμιο 29/33

Γραμμική Διερεύνηση Διαγραφή Υπάρχουν 3 λύσεις: 1 να μην επιτρέπουμε διαγραφές 2 μπορούμε να σημαδέψουμε το στοιχείο e αλλά να μην το αφαιρέσουμε. Οι αναζητήσεις μπορούν να σταματάνε σε αλλά όχι σε σημαδεμένο στοιχείο. 3 να διορθώσουμε την κατάσταση Η δεύτερη περίπτωση παρουσιάζει το πρόβλημα πως ο πίνακας γεμίζει και τελικά γίνονται αργές οι αναζητήσεις. Χαροκόπειο Πανεπιστήμιο 30/33

Γραμμική Διερεύνηση Διαγραφή Έστω πως θέλουμε να διαγράψουμε το στοιχείο στην θέση i. γράφουμε στην θέση του το αφήνοντας ένα κενό στην συνέχεια ψάχνουμε στα δεξιά για να δούμε εαν χαλάσαμε τίποτα, θέτουμε j = i + 1 εάν t[j] = είμαστε καλά και τερματίζουμε αλλιώς έστω f το στοιχείο που είναι αποθηκευμένο στο t[j] εάν h(f) > i δεν μπορούμε να κάνουμε τίποτα και αυξάνουμε τον δείκτη j εάν h(f) i αφήνοντας το κενό θα δημιουργούσε πρόβλημα, και θα χανόταν το f. Για να λύσουμε το πρόβλημα αντιμεταθέτουμε τα t[i] και t[j], δηλαδή αντιμεταθέτουμε τα f και. Θέτουμε την θέση του κενού i στην νέα θέση j και συνεχίζουμε με j = j + 1. Χαροκόπειο Πανεπιστήμιο 31/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 12 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 12 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 16 12 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 16 12 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 16 12 17 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 9 10 16 12 17 Χαροκόπειο Πανεπιστήμιο 32/33

Παράδειγμα Γραμμική Διερεύνηση Έστω ένας πίνακας κατακερματισμού με μέγεθος m = 7 συνάρτηση κατακερματισμού h(k) = k mod 7. όπου θέλουμε να εισάγουμε τα στοιχεία 9, 10, 12, 16, 17, 23. 0 1 2 3 4 5 6 23 9 10 16 12 17 Χαροκόπειο Πανεπιστήμιο 32/33

Άλλες Στρατηγικές Στην γενική μορφή η συνάρτηση κατακερματισμού είναι: h(key, i) = (h1(key) + F(i)) mod size. όπου F είναι μία συνάρτηση επίλυσης συγκρούσεων. Linear Probing F(i) = i Quadratic Probing F(i) = i 2 Double Hashing F(i) = i h2(key) Χαροκόπειο Πανεπιστήμιο 33/33