55
Ανάκτηση Πληροφορίας Φροντιστήριο 1 Πλέγας Γιάννης Οκτώβριος 2009

Ανάκτηση Πληροφορίας

  • Upload
    madison

  • View
    28

  • Download
    1

Embed Size (px)

DESCRIPTION

Ανάκτηση Πληροφορίας. Φροντιστήριο 1. Πλέγας Γιάννης Οκτώβριος 2009. Περιεχόμενα. Ανεστραμμένα Αρχεία Β-Δέντρα Perfect Hashing Structures. Ανεστραμμένα Αρχεία. Ανεστραμμένα Αρχεία. - PowerPoint PPT Presentation

Citation preview

Page 1: Ανάκτηση Πληροφορίας

Ανάκτηση ΠληροφορίαςΦροντιστήριο 1

Πλέγας ΓιάννηςΟκτώβριος 2009

Page 2: Ανάκτηση Πληροφορίας

Περιεχόμενα

•Ανεστραμμένα Αρχεία•Β-Δέντρα•Perfect Hashing Structures

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

2

Page 3: Ανάκτηση Πληροφορίας

Ανεστραμμένα Αρχεία

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

3

Page 4: Ανάκτηση Πληροφορίας

Ανεστραμμένα Αρχεία• Τα ανεστραμμένα αρχεία (inverted files)

αποτελούν μια διαφορετική λύση για δεικτοδότηση πεδίων τύπου συνόλου (σύνολα κειμένων).

• Παίρνουν το όνομά τους από το γεγονός ότι για κάθε αντικείμενο του λεξιλογίου δημιουργείται μια λίστα (ανεστραμμένη λίστα) στην οποία περιέχεται πληροφορία για τις θέσεις όπου εμφανίζεται το αντικείμενο (όρος) αυτό στη βάση (κείμενο ή έγγραφο).

4

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 5: Ανάκτηση Πληροφορίας

Ανεστραμμένα Αρχεία

•Σε μια βάση δεδομένων εμπορικών συναλλαγών, η πληροφορία αυτή μπορεί να είναι τα αναγνωριστικά των συναλλαγών που περιέχουν το αντικείμενο.

•Σε βάσεις που διαχειρίζονται κείμενο, η πληροφορία μπορεί να πάρει τη μορφή του αριθμού γραμμής στους οποίους εμφανίζεται η λέξη.

5

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 6: Ανάκτηση Πληροφορίας

Δημιουργία Ανεστραμμένων Αρχείων• Αρχεία κειμένων σαρώνονται και

εξάγονται διακριτικά (tokens).• Τα tokens καταχωρούνται με ένα

κωδικό κειμένου (Document ID)

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

6

Now is the timefor all good mento come to the aidof their country

It was a dark andstormy night inthe countrymanor. The timewas past midnight

Κείμενο Α Κείμενο Β

Page 7: Ανάκτηση Πληροφορίας

Δημιουργία Ανεστραμμένων Αρχείων•Όταν όλα τα

κείμενα σαρωθούν τότε το ανεστραμμένο αρχείο ταξινομείται.

7

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 8: Ανάκτηση Πληροφορίας

Δημιουργία Ανεστραμμένων Αρχείων•Οι πολλαπλοί

όροι για κάθε κείμενο συνενώνονται και προστίθεται η συχνότητα εμφάνισης

8

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 9: Ανάκτηση Πληροφορίας

Δημιουργία Ανεστραμμένων Αρχείων•Οι πολλαπλοί

όροι για κάθε κείμενο συνενώνονται και προστίθεται η συχνότητα εμφάνισης

9

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Το αρχείο χωρίζεται Λεξικό

Εμφανίσεις

Page 10: Ανάκτηση Πληροφορίας

Ανεστραμμένα Αρχεία

•Η ακρίβεια με την οποία προσδιορίζεται η θέση αναφέρεται σαν υφή (grain) του ευρετηρίου.

•Για ευρετήρια ανεστραμμένου αρχείου, μπορούμε να διακρίνουμε δύο κατηγορίες σχετικές με την υφή τους:▫Ευρετήριο αδρής υφής (coarse grain index)▫Ευρετήριο λεπτής υφής (fine grain index)

10

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 11: Ανάκτηση Πληροφορίας

Ανεστραμμένα Αρχεία

•Ευρετήριο αδρής υφής (coarse grain index): Σε ευρετήρια αδρής υφής, κρατείται πληροφορία μικρής λεπτομέρειας, όπως αυτή του παραδείγματος. Κάθε ανεστραμμένη λίστα κρατά μόνο τους αύξοντες αριθμούς των κειμένων στις οποίες εμφανίζεται ο αντίστοιχος όρος.

11

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 12: Ανάκτηση Πληροφορίας

Ανεστραμμένα Αρχεία

•Ευρετήριο λεπτής υφής (fine grain index): Σε τέτοια ευρετήρια, η θέση του κάθε όρου προσδιορίζεται με μεγαλύτερη ακρίβεια. Στο προηγούμενο παράδειγμα, ένα ευρετήριο λεπτής υφής θα μπορούσε να περιλαμβάνει, εκτός από το αναγνωριστικό του κειμένου, ένα δεύτερο αριθμό που να προσδιορίζει σε ποια θέση μέσα στο κείμενο υπάρχει ο όρος.

12

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 13: Ανάκτηση Πληροφορίας

Ανεστραμμένα Αρχεία• Όσο πιο λεπτή είναι η υφή ενός ανεστραμμένου

αρχείου τόσο μεγαλύτερο είναι το μέγεθός του. ▫ Εφόσον απαιτείται μεγαλύτερη ακρίβεια στον

προσδιορισμό της θέσης κάθε όρου, είναι απαραίτητο να κρατείται περισσότερη πληροφορία.

▫ Οι πολλαπλές εμφανίσεις ενός όρου σε ένα κείμενο• Η λεπτή υφή παρέχει τη δυνατότητα άμεσης

απόρριψης λανθασμένων υποψήφιων απαντήσεων (π.χ. όταν ψάχνουμε φράσεις) χωρίς να είναι απαραίτητη η πρόσβαση στο περιεχόμενο των απαντήσεων αυτών (να ανακτήσουμε το κείμενο).

13

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 14: Ανάκτηση Πληροφορίας

14

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Ερώτημα(Query) με ένα όρο

•Επιστρέφεται η ανεστραμμένη λίστα του όρου που ψάχνουμε.

Ερώτημα(Query) με ένα 2 όρους • Επιστρέφεται η τομή ανάμεσα στις δυο

ανεστραμμένες λίστες των όρων που ψάχνουμε.

Page 15: Ανάκτηση Πληροφορίας

15

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Ερώτημα(Query) με δυο όρους

•1ος όρος ▫some<2; 4, 5>

•2ος όρος▫hot <2; 1, 4>

•Τομή

▫some AND hot → <4>

Page 16: Ανάκτηση Πληροφορίας

Β-Δέντρα (B-trees)

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

16

Page 17: Ανάκτηση Πληροφορίας

Κίνητρα για B-Trees• Μέχρι τώρα έχουμε υποθέσει ότι μπορούμε

να αποθηκεύσουμε μια ολόκληρη δομή δεδομένων στην κύρια μνήμη.

• Τι κάνουμε σε περίπτωση που τα δεδομένα δε χωράνε στη μνήμη;

• Χρησιμοποιούμε το δίσκο αλλά σε αυτή την περίπτωση η πολυπλοκότητα αποτυγχάνει.

17

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 18: Ανάκτηση Πληροφορίας

Κίνητρα για B-Trees• Υποθέτουμε ότι όλες οι διαδικασίες παίρνουν

κατά προσέγγιση ίσο χρόνο.• Αυτό δε συμβαίνει όταν παρεμβάλλεται

πρόσβαση στο δίσκο. • Με άλλα λόγια, μια πρόσβαση στο δίσκο παίρνει

σχεδόν ίδιο χρόνο με 200.000 εντολές.• Αξίζει να εκτελούμε πολλές εντολές για να

αποφύγουμε μία πρόσβαση στο δίσκο.

18

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 19: Ανάκτηση Πληροφορίας

Κίνητρα για B-Trees

• Σε περιπτώσεις μεγάλου όγκου δεδομένων, καταλήγουμε σε ένα πολύ βαθύ δέντρο με πολλές διαφορετικές προσβάσεις στο δίσκο.

• Γνωρίζουμε πως δεν μπορούμε να βελτιώσουμε το log n για ένα binary tree

• Μια λύση είναι να χρησιμοποιηθούν περισσότεροι κλάδοι και έτσι λιγότερο ύψος!

• Όσο αυξάνονται οι διακλαδώσεις το βάθος μειώνεται

19

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 20: Ανάκτηση Πληροφορίας

Ορισμός B-tree• Ένα B-tree τάξης m είναι ένα m- tree (ένα δέντρο όπου

κάθε κόμβος μπορεί να έχει μέχρι m παιδιά ) όπου:1. Ο αριθμός κλειδιών στα μη φύλλα είναι ένα

λιγότερο από τον αριθμό των παιδιών τους και αυτά τα κλειδιά ορίζουν τη διαμέριση των κλειδιών των παιδιών όπως σε ένα κλασσικό search tree

2. όλα τα φύλλα είναι στο ίδιο επίπεδο. 3. όλα τα μη φύλλα εκτός της ρίζας έχουν

τουλάχιστον m / 2 παιδιά ( m / 2 στοιχεία).4. Η ρίζα είναι φύλλο, ή έχει από 2 έως m παιδιά5. ΄Ενα φύλλο περιέχει μέχρι m – 1 κλειδιά

• m πάντα περιττός

20

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 21: Ανάκτηση Πληροφορίας

Ένα B-Tree

21

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

51 6242

6 12

26

55 60 7064 9045

1 2 4 7 8 13 15 18 25

27 29 46 48 53

Ένα B-tree τάξης 5 με 26 στοιχεία

Όλα τα φύλλα στο ίδιο επίπεδοΌλα τα φύλλα στο ίδιο επίπεδο

Page 22: Ανάκτηση Πληροφορίας

Insert σε ένα B-Tree• Προσπάθεια να προστεθεί το νέο κλειδί σε ένα

φύλλο • Εάν υπερφορτωθεί το φύλλο, σπάμε το φύλλο

στα δύο, και ανεβάζουμε το μεσαίο κλειδί στον πατέρα του.

• Εάν υπερφορτωθεί ο πατέρας επαναλαμβάνουμε την ίδια διαδικασία.

• Αυτή η στρατηγική να πρέπει να επαναληφθεί μέχρι την κορυφή. Εάν κριθεί απαραίτητο, η ρίζα σπάει στα δύο και το μεσαίο κλειδί ανεβαίνει στη νέα ρίζα.

22

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 23: Ανάκτηση Πληροφορίας

Κατασκευάζοντας ένα B-tree• τα κλειδιά φθάνουν στην ακόλουθη σειρά :1 12

8 2 25 6 14 28 17 7 52 16 48 68 3 26 29 53 55 45

• Θέλουμε να κατασκευάσουμε ένα B-tree τάξης 5 • Τα 4 πρώτα στοιχεία πάνε στη ρίζα:

• Εάν βάλουμε το 5ο στοιχείο στη ρίζα παραβιάζουμε τη συνθήκη 5

• Επομένως, όταν το 25 έρχεται, επιλέγουμε το μεσαίο κλειδί και φτιάχνουμε μία νέα ρίζα

23

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1 2 8 12

Page 24: Ανάκτηση Πληροφορίας

Κατασκευάζοντας ένα B-tree

24

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1 2

8

12 25

6, 14, 28 προστίθενται στα φύλλα :

1 2

8

12 146 25 28

Page 25: Ανάκτηση Πληροφορίας

Κατασκευάζοντας ένα B-tree• Προσθέτοντας το 17 στο δεξί φύλλο το

υπερφορτώνουμε, και έτσι παίρνουμε το μεσαίο κλειδί , το ανεβάζουμε στη ρίζα και σπάμε το φύλλο.

25

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

8 17

12 14 25 281 2 6

• 7, 52, 16, 48 προστίθενται στα φύλλα 8 17

12 14 25 281 2 6 16 48 527

Page 26: Ανάκτηση Πληροφορίας

Κατασκευάζοντας ένα B-tree• Προσθέτοντας το 68 σπάμε το δεξιότερο φύλλο,

ανεβάζουμε το 48 στη ρίζα, και προσθέτοντας το 3 σπάμε το αριστερότερο φύλλο, ανεβάζοντας το 3 στη ρίζα; 26, 29, 53, 55 πάνε στα φύλλα.

26

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

3 8 17 48

52 53 55 6825 26 28 291 2 6 7 12 14 16

Η πρόσθεση του 45 σπάει το

25 26 28 29

Και ανεβάζοντας το 28 στη ρίζα , σπάμε τη ρίζα

Page 27: Ανάκτηση Πληροφορίας

Κατασκευάζοντας ένα B-tree

27

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

17

3 8 28 48

1 2 6 7 12 14 16 52 53 55 6825 26 29 45

Page 28: Ανάκτηση Πληροφορίας

Διαγραφή σε ένα B-tree• Κατά τη διάρκεια της εισαγωγής, το κλειδί

πηγαίνει πάντα σε ένα φύλλο . Για τη διαγραφή επιθυμούμε να αφαιρέσουμε από ένα φύλλο . Οι πιθανοί τρόποι που μπορούμε να κάνουμε αυτό είναι: 1. Εάν το κλειδί είναι σε φύλλο, και η αφαίρεσή του δεν

οδηγεί σε πολύ λίγα παιδιά, τότε απλά το διαγράφουμε.

2. Εάν το κλειδί δεν είναι σε φύλλο και ο πρόγονος ή απόγονός του είναι σε φύλλο. Τότε διαγράφουμε το κλειδί και μεταφέρουμε το κλειδί του απόγονου/πρόγονου στη θέση του διαγραμμένου κλειδιού.

28

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 29: Ανάκτηση Πληροφορίας

Διαγραφή σε ένα B-tree• Εάν οι 1 και 2 οδηγήσουν σε έναν κόμβο φύλλων που

περιέχει λιγότερο από τον ελάχιστο αριθμό κλειδιών, έπειτα πρέπει να εξετάσουμε τα γειτονικά αδέρφια του εν λόγω φύλλου :

3. εάν ένας από αυτούς έχει περισσότερα από τον ελάχιστο αριθμό κλειδιών τότε ανεβάζουμε ένα κλειδί στον πατέρα και παίρνουμε το κλειδί του πατέρα στο φύλλο που το χρειάζεται.

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

29

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 30: Ανάκτηση Πληροφορίας

#1: Απλή διαγραφή φύλλου

30

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1212 2929 5252

22 77 99 1515 2222 5656 6969 72723131 4343

Delete 2:Δεδομένου ότι υπάρχουν αρκετά κλειδιά στον κόμβο, το διαγράφουμε

Page 31: Ανάκτηση Πληροφορίας

#2: Απλή διαγραφή μη-φύλλου

31

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1212 2929 5252

77 99 1515 2222 5656 6969 72723131 4343

Delete 525656

Page 32: Ανάκτηση Πληροφορίας

#4:Πολύ λίγα κλειδιά στον κόμβο και τα αδέρφια του

32

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1212 2929 5656

77 99 1515 2222 6969 72723131 4343

Delete 72

Πολύ λίγα κλειδιά!

Τα συνενώνουμε

Page 33: Ανάκτηση Πληροφορίας

#4:Πολύ λίγα κλειδιά στον κόμβο και τα αδέρφια του

33

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1212 2929

77 99 1515 2222 696956563131 4343

Page 34: Ανάκτηση Πληροφορίας

#3: Αρκετά αδέρφια

34

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1212 2929

77 99 1515 2222 696956563131 4343

Page 35: Ανάκτηση Πληροφορίας

#3: Αρκετά αδέρφια

35

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

1212

292977 99 1515

3131

696956564343

Page 36: Ανάκτηση Πληροφορίας

Ανάλυση B-Tree• Ο μέγιστος αριθμός στοιχείων σε ένα B-tree τάξης m και

ύψους h:root m – 1level 1 m(m – 1)level 2 m2(m – 1). . .level h mh(m – 1)

• Έτσι, ο συνολικός αριθμός στοιχείων είναι (1 + m + m2 + m3 + … + mh)(m – 1) =[(mh+1 – 1)/ (m – 1)] (m – 1) = mmhh+1+1 – 1 – 1

36

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 37: Ανάκτηση Πληροφορίας

Πολυπλοκότητα πράξεων

• Search/Insert/Delete παίρνουν όσο ο αριθμός των

στοιχείων στο μονοπάτι από τον κόμβο στη ρίζα.

• Ο συνολικός αριθμός πράξεων είναι λιγότερος

από το ύψος του δέντρου.

• Το ύψος ενός δέντρου είναι λιγότερο από log(n)

όπου n είναι ο αριθμός στοιχείων σε ένα B-

δέντρο.

37

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 38: Ανάκτηση Πληροφορίας

Perfect Hashing Structures

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

38

Page 39: Ανάκτηση Πληροφορίας

Εισαγωγή• Μία από τις βασικότερες δομές

ευρετηριοποίησης σε συλλογές εγγράφων είναι τα ανεστραμμένα αρχεία (inverted files).

• Υπάρχουν πολλοί τρόποι για να αποθηκεύσει κανείς το λεξικό, ένας από αυτούς είναι το Perfect hashing:▫Οι όροι αποθηκεύονται με χρησιμοποίηση

μίας συνάρτησης τέλειου κατακερματισμού (perfect hashing), αυτή η επιλογή προτιμάται για λεξικά σταθερού μεγέθους που δεν ανανεώνονται

39

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 40: Ανάκτηση Πληροφορίας

Perfect hashing• Χρησιμοποιούνται στην πράξη σε μικρούς

πίνακες της κύριας μνήμης για ειδικές εφαρμογές όπως για παράδειγμα, σε μεταφραστές για αποθήκευση δεσμευμένων λέξεων, σε επεξεργασία φυσικής γλώσσας για φιλτράρισμα λέξεων υψηλής συχνότητας κτλ.▫ Αυτού του είδους ο κατακερματισμός είναι εφικτός

μόνο όταν ξέρουμε εκ των προτέρων τα κλειδιά πού θα μετασχηματίσουμε.

• Αν μια τέλεια συνάρτηση δεσμεύει τον ελάχιστο δυνατό χώρο, τότε λέγεται ελάχιστη(minimal).

40

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 41: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

• Μηχανισμός ταιριάσματος ενός συνόλου L με n

στοιχεία Xj με ένα σύνολο από ακεραίους

αριθμούς h(xj) που ικανοποιούν τη σχέση

0≤h(xj)≤m-1, με διπλά ταιριάσματα να

επιτρέπονται.

• Καθιερωμένος τρόπος για την υλοποίηση ενός

πίνακα αναζήτησης με καλά αποτελέσματα.

41

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 42: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

Παράδειγμα:•Έχουμε n κλειδιά•Μια κοινή hash function είναι η εξής:

▫H(x) = x*modm, m > n/a, a ένα βάρος (αναλογία εγγραφών σε διαθέσιμες διευθύνσεις) και m ένας αρχικά καθορισμένος αριθμός διαθέσιμων θέσεων

42

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 43: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

Παράδειγμα:•Έχουμε 1000 κλειδιά•Προτείνεται η συνάρτηση

▫h(x) = x*mod1.399 (τοποθεσίες)•Δίνει βάρος a=0.7

43

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 44: Ανάκτηση Πληροφορίας

Σχεδιασμός αλγορίθμου

44

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

•Πρέπει να κάνουμε map n στοιχεία σε m slots

•Η πιθανότητα να εισάγουμε τα n στοιχεία χωρίς επικαλύψεις είναι:

▫Όταν m=365 και n=22, Π=0.524▫Όταν m=365 και n=23, Π=0.493

n

n

i mnm

m

m

im

)!(

!11

Page 45: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

•Όσο πιο μικρό είναι το a τόσο απίθανο είναι 2 κλειδιά να δείχνουν στην ίδια hash τιμή.

•Η αποφυγή επικαλύψεων είναι σχεδόν αδύνατη στην πραγματικότητα.

45

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 46: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

Παράδειγμα:•Έχουμε για κλειδιά τις 365 ημέρες•Πόσοι άνθρωποι μπορούν να συλλεχθούν

μαζί πριν να συμβεί 2 από αυτούς να έχουν την ίδια μέρα γενέθλια με πιθανότητα 0.5;

•Η απάντηση είναι 23 άνθρωποι

46

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 47: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing• Όταν η hash function έχει την επιπλέον ιδιότητα

για xi και xj στο L, h(xi)=h(xj) αν και μόνο αν i=j τότε η συνάρτηση λέγεται perfect hash function▫ Εδώ δεν υπάρχουν συγκρούσεις

• Όταν η hash function είναι και perfect και ταιριάζει το m με το n (m=n) καθένα από τα n κλειδιά ταιριάζει σε ένα μοναδικό ακέραιο μεταξύ 1 και n και a=1. Τότε η συνάρτηση λέγεται minimal perfect function (MPHF) ▫ Επιτυγχάνει μια πρόσβαση▫ Δεν υπάρχουν κενά slots

• Όταν η hash function έχει ιδιότητα όταν xi<xj τότε h(xi)<h(xj) τότε λέγεται πως είναι order preserving

47

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 48: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

48

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 49: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

49

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

•Έχουμε 2 hash functions h1(t), h2(t)•Κάνουν map σε ακέραιους στο διάστημα

0....m-1 για κάποιες τιμές m≥n με επικαλύψεις επιτρεπτές

Page 50: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

50

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

•1ος τρόπος: να λάβουμε κάθε χαρακτήρα σαν συμβολοσειρά radix-36 και να υπολογίσουμε τα βάρη wj,

▫t[i] είναι το radix-36 του i χαρακτήρα του όρου t

▫ |t| είναι το μήκος σε χαρακτήρες του όρου t

miwittht

ijj mod][][)(

||

1

Page 51: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

51

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

•Έχοντας δυο διαφορετικά σύνολα από βάρη w1[i] και w2[i] για 1≤i ≤|t| έχουμε και δυο διαφορετικές hash functions h1(t), h2(t)

•Χρειαζόμαστε ένα πίνακα g που να κάνει map τους αριθμούς 0...m-1 στα κλειδιά 0…..n-1 (πίνακας b) ▫h(t) = g(h1(t))+ ng(h2(t)) για ένα string t (το

h(t) δείχνει την τελική θέση στη λίστα)

Page 52: Ανάκτηση Πληροφορίας

Minimal Perfect Hashing

52

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

•Έχοντας ένα σύνολο από όρουςΔεν χρειάζεται να αποθηκεύουμε το αλφαριθμητικό

(όρο t)Χρειαζόμαστε να αποθηκεύουμε στην h(t) θέση του

πίνακα▫Το ft▫Την διεύθυνση του όρου στο ανεστραμμένο αρχείο

• Χώρος▫1.44n bits (~ or 4-20 bits per key) για MPHF▫nlogn bits για OPMPHF

Page 53: Ανάκτηση Πληροφορίας

Σχεδιασμός αλγορίθμου

53

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

•Το μυστικό του σχεδιασμού είναι ο ορθός σχεδιασμός του πίνακα g.

•Δημιουργούμε τις h1(t) και h2(t) βάζοντας τυχαίες τιμές στους πίνακες w1 και w2.

•Δημιουργούμε γράφημα με m κόμβους και ακμές με ετικέτες την hash function (h(t)) για κάθε όρο t.

•Κάθε όρος t του λεξικού ανταποκρίνεται σε μια ακμή του γραφήματος και οι δυο hash functions ορίζουν σε ποιους κόμβους συνδέεται η κάθε ακμή.

Page 54: Ανάκτηση Πληροφορίας

Σχεδιασμός αλγορίθμου

54

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

Page 55: Ανάκτηση Πληροφορίας

Τέλος 1ου Φροντιστηρίου

55

Ανάκτηση Πληροφορίας - Φροντιστήριο 1 - Οκτώβριος 2009

•Αναφορές▫Managing Gigabytes, Compressing and

Indexing Documents and Images, Witten, Moffat, Bell