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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Advanced Data Indexing

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

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

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

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

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

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

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

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

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

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

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

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

Εκτενείς Δομές Δεδομένων

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

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

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

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

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

Insert(K,I,S) Delete(K,S)

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

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

Advanced Data Indexing

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

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

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

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

Ουρά Προτεραιότητας: Heap

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

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

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

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

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

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

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

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

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

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

Ουρά Προτεραιότητας: Heap

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

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

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

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

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

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

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

Σημειωματάριο Τετάρτης 29 Νοε. 2017

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

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

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

Εισαγωγή στους Αλγορίθμους

Red-black δέντρα (Κεφ. 5)

Κεφάλαιο 6 Ουρές Προτεραιότητας

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

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

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. 5)

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

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

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

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

Transcript:

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

Πρόβλημα (ADT) Λεξικού υναμικά μεταβαλλόμενη συλλογή αντικειμένων που αναγνωρίζονται με «κλειδί» (π.χ. κατάλογοι, πίνακες Β ) Λεξικό: συλλογή αντικειμένων με μοναδικό «κλειδί» «Κλειδί»: αριθμός ή τύπος δεδομένων με ολική διάταξη Γενίκευση και για μη-μοναδικά κλειδιά ADT λεξικού υποστηρίζει ακολουθίες λειτουργιών: Αναζήτηση στοιχείου με κλειδί x member(x): ελέγχει ύπαρξη στοιχείου με κλειδί x search(x): επιστρέφει δείκτη σε θέσεις x Εισαγωγή στοιχείου με κλειδί x α ιαγραφή ραφήσο στοιχείου με κλειδί x Cuckoo Hashing 2

Υλοποιήσεις Λεξικού Μη-ταξινομημένη διασυνδεδεμένη λίστα: Εισαγωγή: Ο(1) Αναζήτηση / τυχαία διαγραφή: Ο(n) Κατάλληλη όταν συχνές εισαγωγές, σπάνιες αναζητήσεις / διαγραφές μεμονωμένες ή στο τέλος (π.χ. χ log file) Ταξινομημένος πίνακας: ( υαδική) αναζήτηση: Ο(log n) Στατική συλλογή: «εισαγωγή» O(log n) / στοιχείο Χρόνος ταξινόμησης: O(n log n) υναμική συλλογή: εισαγωγή / διαγραφή Ο(n) Κατάλληλη για συχνές αναζητήσεις όταν τα δεδομένα μεταβάλλονται σπάνια (π.χ. χ αγγλο-ελληνικό λεξικό) Cuckoo Hashing 3

Υλοποιήσεις Λεξικού Ζυγισμένο (δυαδικό) δέντρο αναζήτησης: Αναζήτηση / εισαγωγή / διαγραφή: O(log n) Μέγιστο / ελάχιστο / προηγούμενο / επόμενο / k-οστό: O(log n) Range queries σε γραμμικό χρόνο Πλήρως δυναμική επιπλέον χώρος για δείκτες Πίνακας κατακερματισμού (hashing) Υπάρχουν πολλοί αλγόριθμοι, όμως θέλουμε κάτι πολύ γρήγορο Ιδανικά όλα σε O(1) ΠΩΣ ;; Cuckoo Hashing 4

Αλγόριθμοι Hashing Hashing with Chaining Lists: εισαγωγή σε O(1), αναζήτηση και διαγραφή: Ο(n) Balanced Trees: εισαγωγή, αναζήτηση και διαγραφή σε Ο(logn) Perfect Hash Function Hash Function χωρίς conflicts Πολύ περίπλοκη υλοποίηση Cuckoo Hashing Αναζήτηση και διαγραφή σε Ο(1) Εισαγωγή σε amortized, expected O(1) Cuckoo Hashing 5

Cuckoo Hashing ύο πίνακες μεγέθους r και δύο hash functions h 1 (x), h 2 (x) Επιστέφουν «random» hash values στο {1,, r} Έχουμε δύο πιθανές θέσεις για κάθε στοιχείο Αποθηκεύουμε το πολύ ένα στοιχείο σε κάθε θέση ιαγραφή / Αναζήτηση: Ο(1) Έχουμε να κοιτάξουμε μόνο σε δύο θέσεις Εισαγωγή σε amortized O(1) Θέλουμε να τοποθετήσουμε στη δομή το στοιχείο x Ελέγχουμε τη θέση h 1 (x) Αν είναι άδεια, βάζουμε το x και επιστρέφουμε Αλλιώς βάζουμε το x και «ξεσπιτώνουμε» το στοιχείο y που υπήρχε εκεί Αυτό προορίζεται τώρα για τη θέση h 1 (y) ή h 2 (y), ανάλογα α με το που βρισκόταν πριν κοκ Cuckoo Hashing 6

Cuckoo Hashing Εισαγωγή Οι αλλαγές θέσεων συνεχίζονται μέχρι να βρεθεί κενή θέση ή μέχρι να γίνουν n προσπάθειες Αν η εισαγωγή αποτύχει, τότε κάνουμε rehashing Επιλέγονται νέες hash functions και δομείται ξανά όλος ο πίνακας Hash functions: πολυωνυμικές συναρτήσεις με τυχαίους συντελεστές Η εισαγωγή αποτυγχάνει αν προκύψει κύκλος δηλαδή αν επισκεφτούμε ξανά την ίδια θέση με το ίδιο στοιχείο π.χ. 38, 53 => rehashing 29 12 53 38 Cuckoo Hashing 7

Εισαγωγή void insert (x) { if (T[h1(x)] == x or T[h2(x)] == x) return; pos = h1(x); for (i=0; i<n; i++) { if (T[pos] == NULL) {T[pos] = x; return;} swap(x, T[pos]); if (pos = h1(x)) pos=h2(x); else pos=h1(x);} rehash(); insert(x); } 29 12 53 38 Cuckoo Hashing 8

Hash tables 8 θέσεων, h 1 (x) = x mod 8, h 2 (x) = x mod 7 Θέλουμε να εισάγουμε τα στοιχεία: {,,, 75, 39, 51, 106, 162} Cuckoo Hashing 9

{,,, 75, 39, 51, 106, 162} Cuckoo Hashing 10

{,,, 75, 39, 51, 106, 162} Cuckoo Hashing

{,, 75, 39, 51, 106, 162} Cuckoo Hashing 12

{,, 75, 39, 51, 106, 162} Cuckoo Hashing 13

{, 75, 39, 51, 106, 162} Cuckoo Hashing 14

{, 75, 39, 51, 106, 162} Cuckoo Hashing 15

{75, 39, 51, 106, 162} Cuckoo Hashing 16

{75, 39, 51, 106, 162} Cuckoo Hashing 17

{75, 39, 51, 106, 162} Cuckoo Hashing 18

{39, 51, 106, 162} 75 Cuckoo Hashing 19

{39, 51, 106, 162} 75 Cuckoo Hashing 20

{39, 51, 106, 162} 75 Cuckoo Hashing 21

{39, 51, 106, 162} 75 Cuckoo Hashing 22

{39, 51, 106, 162} 75 Cuckoo Hashing 23

{51, 106, 162} 75 39 Cuckoo Hashing 24

{51, 106, 162} 75 39 Cuckoo Hashing 25

{51, 106, 162} 75 39 Cuckoo Hashing 26

{51, 106, 162} 75 39 Cuckoo Hashing 27

{51, 106, 162} 75 75 39 Cuckoo Hashing 28

{106, 162} 75 51 75 39 Cuckoo Hashing 29

{106, 162} 75 51 75 39 Cuckoo Hashing 30

{106, 162} 51 75 75 39 Cuckoo Hashing 31

{106, 162} 51 75 75 39 Cuckoo Hashing 32

{106, 162} 39 51 75 75 39 Cuckoo Hashing 33

{106, 162} 39 51 75 75 39 Cuckoo Hashing 34

{106, 162} 51 75 39 75 39 Cuckoo Hashing 35

{106, 162} 51 75 39 75 39 Cuckoo Hashing 36

{106, 162} 51 51 75 39 75 39 Cuckoo Hashing 37

{106, 162} 51 51 75 39 75 39 Cuckoo Hashing 38

{106, 162} 51 51 75 39 75 39 Cuckoo Hashing 39

{106, 162} 51 39 75 Cuckoo Hashing 40

{106, 162} 51 39 75 Cuckoo Hashing 41

{162} 106 51 39 75 Cuckoo Hashing 42

{162} 106 51 39 75 Cuckoo Hashing 43

{162} 106 51 39 75 Cuckoo Hashing 44

{162} 106 51 39 75 Cuckoo Hashing 45

{162} 06 106 106 51 39 75 Cuckoo Hashing 46

{} 06 106 162 106 51 39 75 Cuckoo Hashing

{} 06 106 162 106 51 39 75 Cuckoo Hashing 48

{} 0 162 106 106 51 39 75 Cuckoo Hashing 49

{} 0 162 106 106 51 39 75 Cuckoo Hashing

{} 62 162 162 106 106 51 39 75 Cuckoo Hashing 51

{} 62 162 162 106 106 51 39 75 Cuckoo Hashing 52

{} 06 106 162 106 162 106 51 39 75 Cuckoo Hashing 53

{} 06 106 162 106 162 106 51 39 75 Cuckoo Hashing 54

{} 0 106 162 106 162 106 51 39 75 Cuckoo Hashing 55

{} 0 106 162 106 162 106 51 39 75 Cuckoo Hashing 56

{} 62 162 106 162 106 162 106 51 39 75 Cuckoo Hashing 57

{} 62 162 106 162 106 162 106 51 39 75 Cuckoo Hashing 58

{} 62 162 106 162 106 162 106 51 Rehashing 39 75 Cuckoo Hashing 59

Ανάλυση Cuckoo Hashing Υπάρχουν δύο λεπτομέρειες που περιπλέκουν την ανάλυση Κάθε στοιχείο μπορεί να εντοπιστεί σε δύο διαφορετικές θέσεις Η ακολουθία των αντικαταστάσεων μπορεί να γίνει αρκετά εκτενής Κομψή Λύση το Cuckoo graph Cuckoo Hashing 60

Cuckoo graph Περιγραφή Κάθε θέση του πίνακα γίνεται κόμβος Κάθε στοιχείο του πίνακα γίνεται ακμή ιμερές γράφημα που προκύπτει από το hash table Κάθε νέα εισαγωγή προσθέτει μια ακμή στο γράφημα Cuckoo Hashing 61

{51, 106, 162} 75 39 Cuckoo Hashing 62

{51, 106, 162} 75 39 Cuckoo Hashing 63

{106, 162} 75 51 75 39 Cuckoo Hashing 64

{106, 162} 75 51 75 39 Cuckoo Hashing 65

{106, 162} 51 75 75 39 Cuckoo Hashing 66

{106, 162} 51 75 75 39 Cuckoo Hashing 67

{106, 162} 39 51 75 75 39 Cuckoo Hashing 68

{106, 162} 39 51 75 75 39 Cuckoo Hashing 69

{106, 162} 51 75 75 39 Cuckoo Hashing 70

{106, 162} 51 75 75 39 Cuckoo Hashing 71

{106, 162} 51 51 75 75 39 Cuckoo Hashing 72

{106, 162} 51 51 75 75 39 Cuckoo Hashing 73

{106, 162} 51 75 51 75 39 Cuckoo Hashing 74

Cuckoo graph Αν το x εισαχθεί σε ένα πίνακα, η εισαγωγή αποτυγχάνει αν η συνεκτική συνιστώσα που περιέχει το x, έχει 2 ή περισσότερους κύκλους Για να έχουμε 2 κύκλων σε k κόμβους θέλουμε τουλάχιστον k+1 ακμές (στοιχεία) => παραπάνω στοιχεία από όσα χωράνε => rehashing Αν το x εισαχθεί σε ένα πίνακα, η εισαγωγή επιτυγχάνει αν η συνεκτική συνιστώσα που περιέχει το x, έχει το πολύ ένα κύκλο Αν το x, εισαχθεί σε μία συνεκτική συνιστώσα με k κόμβους, τότε η εισαγωγή θα πραγματοποιήσει το πολύ 2k «εξώσεις» Cuckoo Hashing 75

Space Efficiency Space utilization % Όταν έχουν εισαχθεί n/2 στοιχεία-ακμές είναι πλέον πολύ πιθανόν να υπάρξει κύκλος σε κάποια επόμενη εισαγωγή => rehashing Όμως μπορεί και πολύ καλύτερα 42 128 55 17 6 Cuckoo Hashing 76

d-ary Cuckoo Hashing Χρησιμοποιούμε d αντί για δύο hash tables / functions Κατά την εισαγωγή έχουμε ένα δέντρο υποψήφιων εισαγωγών-εξώσεων Χρησιμοποιούμε BFS για να επιλέξουμε τη θέση εισαγωγής Όχι και τόσο εύκολη υλοποίηση η Όμως, έχει πολύ υψηλή απόδοση Lookup / Delete: O(1) Amortized insert: O(1) Space efficiency: 97% (d=4) 128 42 62 49 55 17 93 24 6 Cuckoo Hashing 77

Συμπεράσματα Cuckoo Hashing + Εξαιρετική δομή για την επίλυση του προβλήματος του λεξικού υποστηρίζοντας εισαγωγή, γή, διαγραφή και αναζήτηση η + Απλή υλοποίηση + Αποδοτικό στη μέση περίπτωση - εν υπάρχει κάποιο «καλό» σύνολο hash functions Περαιτέρω μελέτη Εύρεση «καλού» λ ύ συνόλου hash h functions Ακριβέστερη ανάλυση εισαγωγών Cuckoo Hashing 78

ΕΡΩΤΗΣΕΙΣ;; Cuckoo Hashing 79

Πηγές http://www.corelab.ntua.gr/courses/algorithms/slides/05_union- Find.pdf http://web.stanford.edu/class/cs166/lectures/13/small13.pdf http://www.it-c.dk/people/pagh/papers/cuckoo-undergrad.pdf www.cs.utexas.edu/~whunt/files/cuckoo.pp t/fil / Cuckoo Hashing 80