1 / 50

Κατακερματισμός

Κατακερματισμός. Το Πρόβλημα του Λεξικού – Λύσεις. Διατήρηση με αποδοτικό τρόπο ενός συνόλου κλειδιών ώστε οι εξής 3 πράξεις να υποστηρίζονται αποδοτικά: Εύρεση ενός στοιχείου στο σύνολο Ένθεση ενός νέου στοιχείου στο σύνολο Διαγραφή ενός υπάρχοντος στοιχείου από το σύνολο.

tyanne
Download Presentation

Κατακερματισμός

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Κατακερματισμός

  2. Το Πρόβλημα του Λεξικού – Λύσεις Διατήρηση με αποδοτικό τρόπο ενός συνόλου κλειδιών ώστε οι εξής 3 πράξεις να υποστηρίζονται αποδοτικά: • Εύρεση ενός στοιχείου στο σύνολο • Ένθεση ενός νέου στοιχείου στο σύνολο • Διαγραφή ενός υπάρχοντος στοιχείου από το σύνολο Λύνουν και το πρόβλημα του προηγούμενου στοιχείου (predecessor) Κατακερματισμός Δέντρα

  3. Άμεση Διευθυνσιοδότηση • Υποθέσεις: • Τα στοιχεία είναι ανά δύο διαφορετικά • Κάθε στοιχείο προκύπτει από ένα σύμπαν U = {0, 1, . . . , u- 1} • Ιδέα: • Αποθήκευση των στοιχείων σε πίνακα με βάση το κλειδί • Αναπαράσταση: • Ένας πίνακας T[0 . . . u- 1] • Κάθε κάδος (θέση) του T αντιστοιχεί σε ένα κλειδί του U • Για ένα στοιχείο x, ένας δείκτης στο (ή το ίδιο το x) αποθηκεύεται στην θέση T[x] • Αν δεν υπάρχουν στοιχεία x στο σύνολο S, το T[x] είναι άδειο, (NIL)

  4. Άμεση Διευθυνσιοδότηση Πρόβλημα; 0 U (σύμπαν στοιχείων) k1 k4 k1 k2 k4 k2 S (σύνολο κλειδιών) k3 k3 u - 1

  5. Πίνακες Κατακερματισμού • Όταν το Sείναι μικρότερο του U, έναςπίνακας κατακερματισμού απαιτεί λιγότερο χώρο από την άμεση διευθυνσιοδότηση. • Μείωση του χώρου σε |S| • Ακόμα έχουμε O(1)χρόνος εύρεσης, αλλά στη μέση περίπτωση (και στη χειρότερη σε κάποιες περιπτώσεις όπως θα δούμε)

  6. Πίνακες Κατακερματισμού Ιδέα: • Χρήση της hγια υπολογισμό του κάδου • Αποθήκευση του στοιχείου στο κάδο h(k) • Μία συνάρτηση κατακερματισμού hμετατρέπει ένα στοιχείο σε διεύθυνση στον πίνακαT[0…m-1]: h : U → {0, 1, . . . , m – 1}

  7. Παράδειγμα: Πίνακες Κατακερματισμού Πρόβλημα; 0 U (σύμπαν κλειδιών) h(k1) h(k4) k1 S (σύνολο κλειδιών) h(k2) = h(k5) k4 k2 k3 k5 h(k3) m - 1

  8. Αποφυγή Συγκρούσεων • Εν τάχει: • Αλυσίδες (chaining) • Ανοικτή διευθυνσιοδότηση (Open addressing) • Linear probing • Cuckoo Hashing • Universal Hashing • Perfect Hashing

  9. Συγκρούσεις με Αλυσίδες

  10. T 0 αλυσίδα m - 1 Κατακερματισμός με Αλυσίδες: Ανάλυση • Πόσο χρειάζεται για την εύρεση ενός στοιχείου; • Χειρότερη περίπτωση: • Τα nστοιχεία πέφτουν στον ίδιο κάδο • Χρόνος χειρότερης περίπτωσης (n), συν το χρόνο για υπολογισμό της συνάρτησης κατακερματισμού.

  11. T n0 = 0 n2 n3 nj nk nm – 1 = 0 Κατακερματισμός με Αλυσίδες: Ανάλυση • Μέση Περίπτωση: • Εξαρτάται από πόσο καλά κατανείμει η συνάρτηση τα nστοιχεία στους mκάδους • Υπόθεση: απλός ομοιόμορφος κατακερματισμός • Κάθε στοιχείo έχει ίδια πιθανότητα να πέσει σε οποιονδήποτε από τους mκάδους (η πιθανότητα σύγκρουσης Pr(h(x)=h(y)), είναι 1/m) • Μήκος λίστας: T[j] = nj, j = 0, 1, . . . , m – 1 • Πλήθος κλειδιών στον πίνακα: n = n0 + n1 +· · · + nm-1 • Μέσο μήκος nj: E[nj] = α = n/m

  12. Περίπτωση 1:Ανεπιτυχής Αναζήτηση Θεώρημα Μία ανεπιτυχής αναζήτηση απαιτεί Θ(1+α) αναμενόμενο χρόνο με βάση την υπόθεση του απλού ομοιόμορφου κατακερματισμού. Απόδειξη: Ανεπιτυχής αναζήτηση για το στοιχείο k • Απαιτείται αναζήτηση μέχρι το τέλος της λίστας T[h(k)] • Μέσο μήκος αλυσίδας: • E[nh(k)] = α = n/m • Μέσο πλήθος στοιχείων είναι ίσο με α • Συνολικός χρόνος: • O(1) (υπολογισμός συνάρτησης ) + α  Θ(1+α)

  13. Συναρτήσεις • Πότε μία συνάρτηση είναι καλή; (1) Εύκολα υπολογίσιμη (2) Προσεγγίζει μία τυχαία συνάρτηση: για κάθε είσοδο κάθε έξοδο έχει ίδια πιθανότητα(απλός ομοιόμορφος κατακερματισμός) • Στην πράξη είναι δύσκολο να ικανοποιηθεί αυτή η υπόθεση. • Δεν ξέρουμε συνήθως την κατανομή των δεδομένων των στοιχείων

  14. Χαρακτηριστικά Καλών Συναρτήσεων • Ελαχιστοποίηση πιθανότητας να πέσουν δύο κοντινά στοιχεία στον ίδιο κάδο • Οι λέξεις ptκαι ptsθα πρέπει να απεικονίζονται σε άλλους κάδους • Θέλουμε μία hash τιμή ανεξάρτητη των μοτίβων που μπορεί να υπάρχουν στα στοιχεία του S.

  15. Κοινές Συναρτήσεις Κατακερματισμού Στην πράξη: • D.E. Knuth: The Art of Computer Programming • Μέθοδος διαίρεσης • Για αλφαριθμητικά της μορφής s= s0s1 . . . sk-1: π.χ. B= 131 και w= μήκος λέξης (bits) (w = 32 ή w= 64).

  16. Η Μέθοδος της Διαίρεσης • Ιδέα: • Απεικόνισε το στοιχείο kσε έναν από τους mκάδους: h(k) = k mod m • Πλεονέκτημα: • Γρήγορο, μόνο μία πράξη • Μειονέκτημα: • Μερικές τιμές του mείναι κακές • Δυνάμεις του 2 • Σύνθετοι αριθμοί

  17. Παράδειγμα m97 m 100 • Αν m = 2p, τότε το h(k)είναι τα pλιγότερο σημαντικά bits του k • p = 1  m = 2  h(k) = {0,1}, 1οLSB τουk • p = 2 m = 4  h(k) = {0,1,2,3}, 2 λιγότερα σημαντικά ψηφία του k • Επιλογή mως πρώτου αριθμού, όχι κοντά σε δύναμη του 2 • Στήλη2: k mod 97 • Στήλη3:k mod 100

  18. Η Μέθοδος Πολλαπλασιασμού Ιδέα: • Πολλαπλασιασμός kμε μία σταθερά A, όπου 0 < A < 1(ο Knuth προτείνει το χρυσό λόγο φ) • Εξάγουμε το κλασματικό μέρος του kA • Πολλαπλασιάζουμε με m h(k) = m (k A mod 1) • Μειονέκτημα: Πιο αργό από την μέθοδο διαίρεσης (;;;) • Πλεονέκτημα:Η τιμή τουmδεν είναι κρίσιμη (τυπικά m=2p)

  19. Ανοικτή Διευθυνσιοδότηση • Αν (m > n)  αποθήκευση κλειδιών στον πίνακα μόνο • Όχι λίστες • Ιδέα: • Ένθεση:αν ένας κάδος είναι γεμάτος, δοκίμασε κάποιον άλλον μέχρι να βρεθεί ένας άδειος • Αναζήτηση:ίδια ακολουθία ελέγχων • Διαγραφή:πιο δύσκολη • Ο χρόνος αναζήτησης εξαρτάται από την ακολουθία ελέγχων! Ένθεση 14

  20. Γενίκευση Συνάρτησης Κατακερματισμού: • Μία συνάρτηση με 2 παραμέτρους: (i) Στοιχείο, και (ii) Ακολουθία ελέγχου h(k,p), p=0,1,...,m-1 • Ακολουθία ελέγχων <h(k,0), h(k,1), ..., h(k,m-1)> • Πρέπει να είναι αναδιάταξη <0,1,...,m-1> • Υπάρχουν m!διαφορετικές αναδιατάξεις • Οι καλές συναρτήσεις θα έπρεπε να παράγουν όλες τις m!αναδιατάξεις Ένθεση14 <1, 5, 9>

  21. Κοινές Μέθοδοι Ανοικτής Διευθυνσιοδότησης • Γραμμικός Έλεγχος • Τετραγωνικός Έλεγχος • Διπλός Κατακερματισμός • κ.α.

  22. Γραμμικός Έλεγχος: Ένθεση • Ιδέα:όταν υπάρχει σύγκρουση, έλεγξε την επόμενη διαθέσιμη θέση στον πίνακα (έλεγχος) h(k,i) = (h1(k) + i) mod m i=0,1,2,... • Πρώτος κάδος: h1(k) • Δεύτερος κάδος: h1(k) + 1 • Τρίτος κάδος: h1(k)+2, κοκ. Ακολουθία ελέγχων: < h1(k), h1(k)+1 , h1(k)+2 , ....> Επιστρέφει στην αρχή

  23. Γραμμικός Έλεγχος: Αναζήτηση • Τρεις περιπτώσεις: (1) Η θέση στον πίνακα περιέχει το στοιχείο που αναζητάμε (2) Η θέση είναι άδεια (3) Η θέση περιέχει ένα διαφορετικό στοιχείο • Περίπτωση (2):έλεγξε τα επόμενα κελιά μέχρι να φτάσουμε σε (1) ή σε (3) 0 h(k1) h(k4) h(k2) = h(k5) h(k3) m - 1

  24. Γραμμικός Έλεγχος: Διαγραφή • Πρόβλημα: • Δεν μπορούμε να κάνουμε το κελί άδειο • Αδύνατο να βρούμε τα κλειδιά που εντέθηκαν αφού ο κάδος αυτός γέμισε. • Λύση: • Μάρκαρε τον κάδο ως διαγραμμένο. • Ο διαγραμμένος κάδος μπορεί να χρησιμοποιηθεί για ένθεση • Η αναζήτηση εκτελείται κανονικά 0 m - 1

  25. Γραμμικός Έλεγχος: Κόστος • Ανεπιτυχής αναζήτηση: • Επιτυχής αναζήτηση:

  26. Ας Προχωρήσουμε πιο Βαθιά Καθολικός Κατακερματισμός Τέλειος Κατακερματισμός Bloom Φίλτρα

  27. Καθολικός Κατακερματισμός (Universal Hashing) • Στην πράξη, τα στοιχεία δεν είναι ομοιόμορφα κατανεμημένα • Κάθε καθορισμένη συνάρτηση μπορεί να δώσει Θ(n) χρόνο • Στόχος:Συναρτήσεις που παράγουν τυχαίες διευθύνσεις στον πίνακα ανεξάρτητα από τα κλειδιά • Ιδέα: • Επέλεξε μία συνάρτηση τυχαία, από μία προκαθορισμένη οικογένεια συναρτήσεων

  28. Καθολικός Κατακερματισμός Πίνακας Κατακερματισμού Σύνολο συναρτήσεων κατακερματισμού Τυχαία επιλογή συνάρτησης h1( ) h2( ) … hk( ) hi( ) (στην αρχή της εκτέλεσης)

  29. Καθολικές Συναρτήσεις Κατακερματισμού H={h(k): U{0,1,..,m-1} } Η H είναικαθολική αν για κάθε x  y: H

  30. Γιατί αυτή η ιδιότητα είναι χρήσιμη; Ποια είναι η πιθανότητα σύγκρουσης σε αυτή την περίπτωση; Είναι ίση με την πιθανότητα επιλογής μία συνάρτησης h H έτσι ώστε x  y  h(x) = h(y) που είναι ίση με:

  31. Καθολικός Κατακερματισμός Με τον καθολικό κατακερματισμό η πιθανότητα σύγκρουσηςμεταξύ διαφορετικών στοιχείων kκαι lδεν είναι παραπάνω από 1/mαν οι θέσεις h(k)και h(l)επιλέχθηκαν τυχαία και ανεξάρτητα από το σύνολο {0, 1, …, m – 1}

  32. Σχεδιάζοντας μία Οικογένεια Καθολικών Συναρτήσεων • Επέλεξε έναν πρώτο αριθμό pαρκετά μεγάλο ώστε κάθε στοιχείο kνα είναι στο διάστημα [0 ... p – 1] Zp = {0, 1, …, p - 1}και Zp* = {1, …, p - 1} • Ορίζουμε τη συνάρτηση ha,b(k) = ((ak + b) mod p) mod m,  a  Zp*καιb Zp • Η οικογένεια όλων αυτών των συναρτήσεων είναι Hp,m = {ha,b: a  Zp*καιb  Zp} • a , b: επιλέγονται τυχαία στην αρχή της εκτέλεσης

  33. Παράδειγμα p = 17, m = 6 ha,b(k) = ((ak + b) mod p) mod m h3,4(8) = ((38 + 4) mod 17) mod 6 = (28 mod 17) mod 6 = 11 mod 6 = 5

  34. Άλλη Καθολική Οικογένεια Συναρτήσεων Έστω mπρώτος. Αναπαριστούμε το στοιχείο kμε r + 1ψηφία σε βάση m. Έστω k = 〈k0, k1, …, kr〉, όπου 0 ≤ ki< m. Επιλέγουμε a = 〈a0, a1, …, ar〉, όπου κάθε aiεπιλέχθηκε τυχαία από το σύνολο {0, 1, …, m–1}.

  35. Πλεονεκτήματα Καθολικού Κατακερματισμού • Δίνει καλά αποτελέσματα στη μέση περίπτωση ανεξαρτήτως των στοιχείων που αποθηκεύονται • Εγγυάται ότι καμία είσοδος δεν θα προκαλεί συμπεριφορά χειρότερης περίπτωσης • Κακή απόδοση έχουμε μόνο όταν η τυχαία επιλογή επιστρέφει μία κακή συνάρτηση κατακερματισμού (μικρή πιθανότητα)

  36. Τέλειος Κατακερματισμός • Οι λύσεις που είδαμε μέχρι τώρα λύνουν το πρόβλημα σε O(n) χώρο αλλά με O(1) αναμενόμενο χρόνο για αναζήτηση. Μπορούμε καλύτερα; Μία τέλεια συνάρτηση κατακερματισμού για ένα σύνολο S είναι μία συνάρτηση χωρίς συγκρούσεις. Με μία τέλεια συνάρτηση για το S έχουμε O(1) χρόνο χειρότερης περίπτωσης για την αναζήτηση για το στατικό πρόβλημα του λεξικού στο S. (Γιατί;)

  37. Στατικό Λεξικό Συνδυασμός δύο λύσεων για στατικό κατακερματισμό με χρήση καθολικού κατακερματισμού: • Μία λύση που χρησιμοποιεί πολύ χώρο χωρίς συγκρούσεις. • Μία λύση με λίγο χώρο αλλά πολλές συγκρούσεις. Λύση δύο επιπέδων: • Χρήση λίγου χώρου στο επίπεδο 1 • Επίλυση συγκρούσεων στο επίπεδο 1 με χρήση λύσης χωρίς συγκρούσεις στο επίπεδο 2 • lookup(x): αναζήτηση στο επίπεδο 1 για την εύρεση του σωστού επιπέδου 2. Αναζήτηση μετά στο επίπεδο 2.

  38. Όταν Χρησιμοποιούμε Πολύ Χώρο • Χρήση μίας καθολικής συνάρτησης για απεικόνιση σε πίνακα μεγέθους N2. Ποιο είναι το αναμενόμενο πλήθος συγκρούσεων; Αποδεικνύεται ότι είναι ½. Με πιθανότητα ½ παίρνουμε μία τέλεια συνάρτηση κατακερματισμού που υποστηρίζει αναζητήσεις σε O(1) χρόνο χειρότερης περίπτωσης αν ο χώρος είναι O(N2).

  39. Όταν Χρησιμοποιούμε Λίγο Χώρο • Χρήση μίας καθολικής συνάρτησης για απεικόνιση σε πίνακα μεγέθους N. Ποιο είναι το αναμενόμενο πλήθος συγκρούσεων; Είναι ίσο με ½Ν.

  40. Λύση 2 Επιπέδων Λύση 2 επιπέδων: • Στο επίπεδο 1 κάνουμε χρήση της λύσης με O(N) συγκρούσεις. • Επιλύουμε τις συγκρούσεις στο επίπεδο 2 με την λύση τετραγωνικού χώρου χωρίς συγκρούσεις.

  41. Παράδειγμα S = {1,16,41,54,66,96} Επίπεδο 1: S1 = {1, 41}, S4 = {54}, S6 = {16, 66, 96} Επίπεδο 2: πληροφορία για συνάρτηση αποθηκεύεται με τον κάδο O(1) χρόνος χειρότερης περίπτωσης. Χώρος;

  42. Bloom Φίλτρα

  43. Το Κύριο Σημείο • Όταν έχετε ένα σύνολο ή μία λίστα, και ο χώρος είναι θέμα (και δεν σας πειράζει να έχετε false positives) τότε το Bloom φίλτρο είναι μία καλή εναλλακτική.

  44. Πρόβλημα • Δοθέντος ενός συνόλου S= {x1,x2,…,xn}, σχεδιάστε μία δομή για να απαντά ερωτήματα της μορφής “Είναι τοyστο S?” • Η δομή θα πρέπει να είναι: • Γρήγορη (πιο γρήγορη από την αναζήτηση στο S). • Μικρή (μικρότερη από μία ρητή αναπαράσταση). • Για να πετύχουμε τα παραπάνω επιτρέπουμε μία πιθανότητα λάθους: • Falsepositives: y  Sαλλά αναφέρουμε ότι y  S • Falsenegatives: y  Sαλλά αναφέρουμε ότι y  S

  45. B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 B 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 B 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 Bloom Φίλτρα Ξεκινάμε με έναν πίνακα με m bit, γεμάτος 0. Απεικονίζουμε κάθε στοιχείο xjστο S kφορές. Αν Hi(xj) = a, τότε B[a] = 1. Για να ελέγξουμε αν το yείναι στο S, ελέγχουμε το Bστα Hi(y). Όλες οι kτιμές θα πρέπει να είναι 1. Πιθανό να έχουμε false positive; όλες οι kτιμές είναι 1, αλλά το yδεν ανήκει στο S. nστοιχείαm = cnbits kσυναρτήσεις κατακερματισμού

  46. Παράδειγμα m/n = 8 Βέλτιστοk = 8 ln 2 = 5.45... nστοιχείαm = cnbits kσυναρτήσεις

  47. Cuckoo Κατακερματισμός

  48. . . . . . . T1 T2 Cuckoo Κατακερματισμός • Paghκαι Rodler (2001) • Εξαιρετικά απλό: • 2πίνακες: T1καιT2 • Μεγέθους r = (1+ε)n • 2συναρτήσεις:h1καιh2 • Αναζήτηση: • Ελέγχουμε στο T1και T2 d t h2(x) y c x x h1(x) b a Που είναι το x? z

  49. h2(y) = h2(a) h1(e) = h1(a) ... ... h1(y) T2 T1 Cuckoo Κατακερματισμός:Ένθεση Για την ένθεση του x, καλούμε Insert(x, 1) Insert(x, i): 1. Τοποθετούμε το xστη θέση hi(x)του Ti 2. Αν το Ti[hi(x)]ήταν άδειο, επέστρεψε 3. Αν το Ti[hi(x)]περιείχε το y, Insert(y, 3–i) Παράδειγμα: d t y c x b a e z

  50. Cuckoo Κατακερματισμός: Ιδιότητες • Πολλές καλές ιδιότητες: • Η αναζήτηση και διαγραφήμε 2 προσπελάσεις στη χειρότερη περίπτωση • Μπορεί να γίνει παράλληλα • Η ένθεση απαιτεί Ο(1) επιμερισμένο αναμενόμενο χρόνο • Καλή χρήση μνήμης • Όχι δυναμική δέσμευση μνήμης • Πολλές επεκτάσεις με καλύτερη χρήση μνήμης Fotakis, Pagh, Sanders, Spirakis Panigrahy Dietzfelbinger, Weidling Lehman-Panigrahy Mitzenmacher’s survey ESA 2009

More Related