εικτοδότηση και Αναζήτηση (Indexing & Searching) 1 Εισαγωγή Με ποιους τρόπους µπορούµενααναζητήσουµε πληροφορία από µία συλλογή κειµένων; Ο πιο απλός και εύκολα υλοποιήσιµος τρόπος είναι να ψάξουµε σειριακάόλατακείµενα της συλλογής. Ένας άλλος τρόπος είναι να χτίσουµε ειδικές δοµές δεδοµένων (index structures) ώστε να επιταχύνουµε τη διαδικασία αναζήτησης. 2 Εισαγωγή Η χρήση δεικτών είναι ευρεία στα συστήµατα βάσεων δεδοµένων (π.χ. Oracle, MySQL, SQLserver). Οι δείκτες έχουν την ικανότητα να απορρίπτουν ένα µεγάλο τµήµατωνδεδοµένων το οποίο δεν συµµετέχει στην απάντηση. Παραδείγµατα δεικτών: Β-δένδρα, Κατακερµατισµός (hashing). 3 1
Εισαγωγή 4 υαδικά ένδρα Αναζήτησης 10 4 19 1 7 13 22 5 Β-δένδρα 5 3 11 1 2 4 8 9 14 16 6 2
Κατακερµατισµός 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 20 20 30 30 12 12 22 22 42 42 9 19 19 79 79 40 40 50 50 60 60 Συνάρτηση Κατακερµατισµού h(key) = key mod 10 7 είκτες για Κείµενα Στην περίπτωση των κειµένων οι µηχανισµοί δεικτοδότησης διαφέρουν από τους αντίστοιχους για αριθµούς. είκτες για κείµενα: Αντεστραµµένα Αρχεία (Inverted Files) Suffix Trees, Suffix Arrays Αρχεία Υπογραφών (Signature Files) 8 Αντεστραµµένα Αρχεία n: µέγεθος κειµένου m: µήκος του pattern v: µέγεθος λεξιλογίου M: το µέγεθος της διαθέσιµης µνήµης 9 3
Αντεστραµµένα Αρχεία Είναι ένας µηχανισµός δεικτοδότησης στηριζόµενες σε λέξεις (word-based) ο οποίος χρησιµοποιείται για αποδοτικότερη αναζήτηση. οµή αντεστραµµένου αρχείου: Λεξιλόγιο (vocabulary) Λίστες εµφάνισης 10 Κείµενο Παράδειγµα 1 6 12 16 18 25 29 36 40 45 54 58 66 70 That house has a garden. The garden has many flowers. The flowers are beautiful Αντεστραµµένο Αρχείο Vocabulary Occurrences beautiful 70 flowers 45, 58 garden 18, 29 house 6 11 Αντεστραµµένα Αρχεία Οι απαιτήσεις χώρου για την αποθήκευση του λεξιλογίου (vocabulary) είναι αρκετά µικρές. Σύµφωνα µε τονόµο τουheap το µέγεθος του λεξιλογίου αυξάνεται ανάλογα του O(n^β) όπου β είναι µία σταθερά µεταξύ 0 και 1. Στην πράξη το β παίρνει τιµές µεταξύ 0.4 και 0.6 Για παράδειγµαγιακείµενα συνολικού µεγέθους 1GBytes από τη συλλογή TREC-2 το λεξιλόγιο καταλαµβάνει µόλις 5MBytes. 12 4
Αντεστραµµένα Αρχεία Το τµήµατωνεµφανίσεων καταλαµβάνει πολύ περισσότερο χώρο. Εφόσον κάθε λέξη εµφανίζεται τουλάχιστον µία φορά στο κείµενο, ο επιπλέον απαιτούµενος χώροςείναιτηςτάξηςτουo(n). Ακόµηκαιµετά την αποµάκρυνση των stopwords, το επιπλέον κόστος σε χώρο κυµαίνεται µεταξύ 30% και 40% του µεγέθους του κειµένου. 13 Αντεστραµµένα Αρχεία Για τη µείωση του απαιτούµενου χώρου χρησιµοποιείται η τεχνική της διευθυνσιοδότησης block (block addressing). Το κείµενο χωρίζεται σε τµήµατα (blocks) και οι εµφανίσεις δείχνουν στα αντίστοιχα block και όχι σε χαρακτήρες. Οι κλασικές µέθοδοι που χρησιµοποιούν δείκτες σε θέσεις χαρακτήρων καλούνται full inverted indices. 14 Αντεστραµµένα Αρχεία Χρησιµοποιώντας block addressing απαιτούνται pointers µικρότερου µεγέθους διότι τα blocks είναι πολύ λιγότερα από τους χαρακτήρες του κειµένου. Επίσης εµφανίσεις που αναφέρονται σε λέξεις του ίδιου block εµφανίζονται µε την ίδια αναφορά. Συνήθωςτοεπιπλέονκόστοςσεχώροπου απαιτείται µε τηντεχνικήαυτήείναιπερίπου5% του µεγέθους του κειµένου. 15 5
Παράδειγµα Κείµενο Block 1 Block 2 Block 3 Block 4 That house has a garden. The garden has many flowers. The flowers are beautiful Αντεστραµµένο Αρχείο Vocabulary Occurrences beautiful 4 flowers 3 garden 2 house 1 16 Σύγκριση Index Small collection Medium collection Large collection (1Mb) (200Mb) (2Gb) Addressing words 45% 73% 36% 64% 35% 63% Addressing documents 19% 26% 18% 32% 26% 47% Addressing 256 blocks 18% 25% 1.7% 2.4% 0.5% 0.7% 17 Αναζήτηση σε Αντ. Αρχείο Μία τυπική µέθοδος αναζήτησης σε αντεστραµµένο αρχείο ακολουθεί τα παρακάτω βήµατα: 1. Αναζήτηση Λεξιλογίου: οι λέξεις που προσδιορίζονται στο ερώτηµα αποµονώνονται και αναζητούνται στο λεξιλόγιο. 2. Εµφανίσεων: προσδιορίζονται οι εµφανίσεις της κάθε λέξης. 3. Επεξεργασία Εµφανίσεων: οι εµφανίσεις επεξεργάζονται για την επίλυση φράσεων, οµοιότητας ή λογικών τελεστών (boolean operators). Εάν χρησιµοποιείται block addressing µπορεί να απαιτηθεί απευθείας αναζήτηση στο κείµενο. 18 6
Αναζήτηση σε Αντ. Αρχείο Εφόσον η αναζήτηση ξεκινά µε τολεξιλόγιο, µία καλή πρακτική είναι να αποθηκεύεται σε ξεχωριστό αρχείο. Είναι πιθανόν, ακόµηκαιγιαµεγάλες συλλογές κειµένων, το λεξιλόγιο να χωράει στην κύρια µνήµη. Σε διαφορετική περίπτωση µέρος του λεξιλογίου βρίσκεται στην κύρια µνήµη και το υπόλοιπο στη βοηθητική µνήµη (δίσκο, CD-ROM). 19 Αναζήτηση σε Αντ. Αρχείο Ερωτήµατα µίας λέξης (single-word queries) µπορούν να απαντηθούν χρησιµοποιώντας κάποια βολική δοµήδεδοµένων για τη γρήγορη επεξεργασία του ερωτήµατος. Κατακερµατισµός, TRIES, Β-δένδρα. Χρόνος αναζήτησης O(m) για τις δύο πρώτες µεθόδους, Ο(m*log(n)) για τα B-δένδρα. 20 Αναζήτηση σε Αντ. Αρχείο Για να απαντήσουµε ερωτήσεις διαστήµατος η δοµή του κατακερµατισµού δεν είναι κατάλληλη. Για την περίπτωση αυτή µπορούµε να χρησιµοποιήσουµε δυαδικά δένδρα αναζήτησης, TRIES ήβ-δένδρα. 21 7
Παράδειγµα Να βρεθούν κείµενα που περιέχουν λέξεις οι οποίες λεξικογραφικά βρίσκονται µεταξύ της λέξης cluster και της λέξης damage. 22 Παράδειγµα Age basket cat cube cluster creature creative damage 23 Αναζήτηση σε Αντ. Αρχείο Σε περίπτωση που το ερώτηµααποτελείταιαπό µεµονωµένες λέξεις η αναζήτηση σταµατά όταν έχουµε προσδιορίσει τις εµφανίσεις των συγκεκριµένων λέξεων στα κείµενα. Σε περίπτωση που πάνω από µία λέξεις του ερωτήµατος έχουν βρεθεί ακολουθεί η διαδικασία της ένωσης (union) των εµφανίσεων. 24 8
Αναζήτηση σε Αντ. Αρχείο Στις περιπτώσεις όπου έχουµε αναζήτηση ολόκληρων φράσεων (όχι µεµονωµένων λέξεων) ήερωτήµατα γειτνίασης (proximity), η επεξεργασία είναι δυσκολότερη. Για κάθε λέξη δηµιουργείται µία λίστα εµφανίσεων. Στη συνέχεια πραγµατοποιείται επεξεργασία των λιστών ώστε να προσδιοριστεί η τελική απάντηση του ερωτήµατος. 25 Παράδειγµα Έστω ότι αναζητείται η φράση: modern information retrieval Έστω ότι µετά την αναζήτηση του λεξιλογίου έχουν προκύψει οι ακόλουθες λίστες: modern 10, 50, 80 information 17, 57, 120 retrieval 29, 90, 400 Ποια θα είναι η απάντηση στο ερώτηµα; Υπάρχει ή φράση στο κείµενο ή όχι; 26 Κατασκευή Αντ. Αρχείου Η κατασκευή και η ενηµέρωση ενός αντεστραµµένου αρχείου είναι σχετικά εύκολη διαδικασία. Ένα αντεστραµµένο αρχείο για ένα κείµενο n χαρακτήρων µπορεί να κατασκευαστεί σε χρόνο O(n). 27 9
Κατασκευή Αντ. Αρχείου Το λεξιλόγιο οργανώνεται µετηβοήθειαµίας βολικής δοµής δεδοµένων (π.χ. TRIE). Κάθε λέξη του κειµένου διαβάζεται και αναζητείται στο λεξιλόγιο. Εάν η νέα λέξη δε βρεθεί στο λεξιλόγιο, τότε εισάγεται σε αυτό και ενηµερώνεται η λίστα εµφανίσεων για τη συγκεκριµένη λέξη. Εάν η λέξη υπάρχει στο λεξιλόγιο, τότε απαιτείται µόνο ενηµέρωση της λίστας εµφανίσεων. 28 Κατασκευή Αντ. Αρχείου 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters l m t w letters: 60 60 a text: text: 11, 11, 19 19 d n words: 33, 33, 40 40 made: 50 50 many: 28 28 29 Κατασκευή Αντ. Αρχείου Εφόσον για την επεξεργασία κάθε χαρακτήρα του κειµένου απαιτείται χρόνος Ο(1), και για την ενηµέρωση µίας λίστας εµφανίσεων απαιτείται χρόνος Ο(1), ησυνολικήπολυπλοκότητατης προηγούµενης µεθόδου είναι Ο(n). Σεπερίπτωσηπουηδοµήδενµπορεί να χωρέσει στην κύρια µνήµη, η µέθοδος παρουσιάζει προβλήµατα, διότι απαιτούνται πολλές προσπελάσεις στο δίσκο, µε αποτέλεσµανα αυξάνεται δραµατικά ο χρόνος κατασκευής. 30 10
Κατασκευή Αντ. Αρχείου Εναλλακτική Μέθοδος Ηπροηγούµενη διαδικασία συνεχίζεται µέχρι να γεµίσει η κύρια µνήµη. Σχηµατίζεται ένα τµήµα τηςδοµής δεδοµένων Ii το οποίο αποθηκεύεται στο δίσκο. Ακολουθώντας την ίδια διαδικασία σχηµατίζεται ένα σύνολο τµηµάτων Ii τα οποία είναι αποθηκευµένα στο δίσκο. Ακολουθούν διαδοχικές συγχωνεύσεις ώστε να προκύψει ησυνολικήδοµή. 31 Κατασκευή Αντ. Αρχείου I 1...8 final index 7 level 3 I 1...4 I 5...8 3 6 level 2 I 1...2 I 3...4 I 5...6 I 7...8 I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 1 2 4 5 level 1 initial dumps 32 Κατασκευή Αντ. Αρχείου Πολυπλοκότητα Εναλλακτικής Μεθόδου Χρόνος κατασκευής των τµηµάτων Ii είναι O(n). Αριθµός τµηµάτων O(n/M). Κάθε φάση συγχώνευσης απαιτεί χρόνο O(n). Για τη συγχώνευση των O(n/M) τµηµάτων απαιτούνται log(n/m) φάσεις συγχώνευσης. Εποµένως συνολικά Ο(n * log(n/m)) 33 11
Μειονεκτήµατα Αντ. Αρχείων Η µέθοδος των αντεστραµµένων αρχείων υποθέτει ότι το κείµενο µπορεί να θεωρηθεί σαν µία ακολουθία λέξεων. Αυτό το χαρακτηριστικό περιορίζει αρκετά τον τύπο των ερωτηµάτων που µπορούν να επεξεργαστούν από το σύστηµα. Ερωτήµατα όπως αναζήτηση φράσεων είναι ακριβά στην επεξεργασία τους. Τέλος, σε πολλές εφαρµογές η έννοια της δεν υπάρχει (π.χ. genetic databases). 34 Suffix Trees & Arrays Αποτελούν αποδοτική υλοποίηση των suffix trees. Επιτρέπουν την επεξεργασία πιο πολύπλοκων ερωτήσεων. Η µέθοδος αυτή «βλέπει» το κείµενο σαν µία µεγάλη σειρά χαρακτήρων. Κάθε θέση στο κείµενο θεωρείται ως suffix. Οι θέσεις που δεικτοδοτούνται ονοµάζονται index points. εναπαιτείταιηδεικτοδότησηόλωντων θέσεων του κειµένου. 35 Suffix Trees & Arrays Ένα suffix tree είναι στην ουσία µία δοµή TRIE η οποία χτίζεται µε βάση τις καταλήξεις (suffixes) του κειµένου. Οι pointers προς τις καταλήξεις αποθηκεύονται στα φύλλα της δοµής. Γιατηβελτίωσητουπαράγονταχρησιµοποίησης χώρου (space utilization), τα µονοπάτια της δοµής συµπιέζονται (Patricia trees). Αυτό µας επιτρέπει να αποθηκεύσουµε τηδοµήσε χώρο O(n). 36 12
Suffix Trees & Arrays 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters l m 60 60 a d 50 50 Suffix Trie w t n 28 28 e x t 19 19. 11 11 o r d s 40 40. 33 33 37 Suffix Trees & Arrays 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters l m 60 60 d 50 50 Suffix Tree w t n 28 28 19 19 40 40. 11 11. 33 33 38 Suffix Trees & Arrays Το πρόβληµα είναι ότι για την αποθήκευση της δοµής απαιτείται αρκετός χώρος. Υπολογίζεται ότι ακόµη και στην περίπτωση που δεικτοδοτούνται µόνο οι πρώτοι χαρακτήρες κάθε λέξης, ο επιπλέον χώρος που απαιτείται είναι 120% µε 240% του συνολικού µεγέθους του κειµένου. Κάθε κόµβος της δοµής απαιτεί 12 ή 24 bytes για την αποθήκευσή του. 39 13
Suffix Trees & Arrays Ηδοµήτωνsuffix arrays προσφέρει την ίδια λειτουργικότητα, µετηδιαφοράότιαπαιτείται πολύ λιγότερος χώρος για την αποθήκευση της δοµής. Εάν διασχίσουµε τα φύλλα του suffix tree από αριστερά προς τα δεξιά, όλες οι καταλήξεις (suffixes) του κειµένου παράγονται κατά λεξικογραφική διάταξη. Ένα suffix array περιέχει τους pointers στις καταλήξεις µε λεξικογραφική διάταξη. 40 Suffix Trees & Arrays 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters 60 50 28 19 11 40 33 Suffix Array Ο επιπλέον απαιτούµενος χώρος είναι περίπου 40% του κειµένου. 41 Αναζήτηση µε S.T. & S.A. Αναζητήσεις για λέξεις, φράσεις και προθέµατα (prefixes) µπορούν να πραγµατοποιηθούν σε χρόνο O(logn). Για το pattern που αναζητούµεβρίσκουµεδύοsubpatterns P1 και P2 και αναζητούµεταsuffixes S ώστε λεξικογραφικά να ισχύει: P1<=S<P2. Παράδειγµα: αν αναζητούµετηλέξηtext έχουµε P1=text και P2=texu. Η δοµήεπιστρέφειτιςεµφανίσεις 19 και 11. Τα P1 και P2 αναζητούνται µε δυαδική αναζήτηση. Εφόσον κάθε δυαδική αναζήτηση κοστίζει logn βήµατα στη χειρότερη περίπτωση, έχουµε O(logn). 42 14
Αρχεία Υπογραφών Signature Files ιαχειρίζονται λέξεις (word-based) και στηρίζονται στον κατακερµατισµό. Έχουν σχετικά µικρό επιπλέον χώρο (περίπου 10% µε 20% του µεγέθους του κειµένου). Σύµφωνα µε πειραµατικές µετρήσεις, τα αντεστραµµένα αρχεία έχουν καλύτερη απόδοση από τα αρχεία υπογραφών. 43 Αρχεία Υπογραφών Ένα αρχείο υπογραφών χρησιµοποιεί µία συνάρτηση κατακερµατισµού η οποία αναπαριστά κάθε λέξη µε µία µάσκα από Β bits. Το κείµενο χωρίζεται σε blocks µε b λέξεις το καθένα. Σε κάθε block µεγέθους b αντιστοιχούµε µία µάσκα από B bits. Η µάσκα παράγεται εφαρµόζοντας τον τελεστή OR στις δυαδικές αναπαραστάσεις των λέξεων του block. 44 Αρχεία Υπογραφών Εάν µία λέξη είναι παρούσα σε ένα block κειµένου, τότε όλα τα bits που είναι 1 στην υπογραφή της λέξης, είναι επίσης 1 στη µάσκα του block. Ωστόσο είναι πιθανόν, τα bits να είναι 1 ακόµη και όταν η λέξη δε βρίσκεται στο block. Αυτό ονοµάζεται false drop. Το πιο ενδιαφέρον µέρος στα αρχεία υπογραφών είναι µα µειωθεί στο ελάχιστο η πιθανότητα να έχουµε false drop. 45 15
Παράδειγµα This is a text. A text has many words. Words are made from letters 000101 110101 100100 101101 H(text) = 000101 H(many) = 110000 H(words) = 100100 H(made) = 001100 H(letters) = 100001 Η συνάρτηση κατακερµατισµού επιλέγεται έτσι έτσιώστε να ναυπάρχουν τουλάχιστον Κ bits bits ενεργά στην στηνυπογραφή κάθε κάθελέξης. 46 Σειριακή Αναζήτηση Υπάρχουν περιπτώσεις που δεν υπάρχουν βοηθητικές δοµές δεδοµένων για την αναζήτηση. Αν δίνεται ένα pattern P µε m χαρακτήρες και ένα κείµενο Κ µε n χαρακτήρες, πρέπει να βρεθούν οι εµφανίσεις του P στο Κ. Έχουν προταθεί πολλές µέθοδοι για την επίλυση του προβλήµατος. Στη συνέχεια θα εξετάσουµε µερικές από αυτές. 47 Σειριακή Αναζήτηση Προφανής µέθοδος (brute-force) Μέθοδος των Knuth, Morris και Pratt (KMP) Μέθοδος Boyer-Moore Μέθοδος Shift-or Μέθοδος Suffix Automaton 48 16
Brute-Force Είναι η πιο απλή µέθοδος αναζήτησης. οκιµάζονται σειριακά όλες οι θέσεις του κειµένου και ελέγχεται εάν το pattern ταιριάζει µε τους χαρακτήρες του κειµένου. Η διαδικασία ακολουθείται έως ότου φτάσουµε στο τέλος του κειµένου Κ. 49 Brute-Force a b r a c a b r a c a d a b r a a b r a c a d a a a b a a b r a c a d a b r a 50 Brute-Force Υπάρχουν O(n) θέσεις στο κείµενο και Ο(m) θέσεις στο pattern. Εφόσον εξετάζονται όλες οι δυνατές θέσεις για το pattern, η πολυπλοκότητα χειρότερης περίπτωσης για τη µέθοδο είναι O(n*m). Ωστόσο η πολυπλοκότητα µέσης περίπτωσης είναι O(n), διότι σε τυχαίο κείµενο θα έχουµε αποτυχία µετά από O(1) συγκρίσεις χαρακτήρων. 51 17
Knuth-Morris Morris-Pratt Είναι ο πρώτος αλγόριθµος µε γραµµική πολυπλοκότητα χειρότερης περίπτωσης που προτάθηκε (Ο(n)). Ωστόσο στη µέση περίπτωση έχει παρόµοια απόδοση µε τονbrute-force. Ηβασικήτεχνικήπουχρησιµοποιείται είναι ότι αποφεύγεται η εξέταση θέσεων στις οποίες είναι σίγουρο ότι δε θα βρεθεί το pattern. Έτσι, δεν εξετάζονται όλες οι δυνατές θέσεις. 52 Knuth-Morris Morris-Pratt Απαιτείται προεπεξεργασία του pattern. Κατασκευάζεται ένας πίνακας next, οοποίος δηλώνει πόσες θέσεις µπορούµενα προχωρήσουµε. Κάθε θέση j του πίνακα δείχνει πιο είναι το µεγαλύτερο κανονικό πρόθεµατουp1..j-1 το οποίο είναι επίσης και επίθεµακαιοιχαρακτήρες που ακολουθούν είναι διαφορετικοί. Εποµένως, µπορούµε µεασφάλειανα παρακάµψουµε j - next[j] - 1 χαρακτήρες. 53 Knuth-Morris Morris-Pratt a b r a c a b r a c a d a b r a a b r a c a d a b r a c a d a b r a 54 18
Knuth-Morris Morris-Pratt Η µέθοδος χρησιµοποιεί ένα «παράθυρο» το οποίο σε κάθε βήµα βρίσκεται σε µία θέση του κειµένου. Υπάρχει ένας δείκτης (pointer) µέσα στο παράθυρο. Κάθε φορά που ένας χαρακτήρας του pattern ταιριάζει, ο δείκτης µετακινείται µία θέση παρακάτω. Κάθε φορά που δεν υπάρχει ταίριασµα, το παράθυρο µετακινείται ενώ ο δείκτης παραµένει σταθερός. Εφόσον κάθε φορά είτε το παράθυρο είτε ο δείκτης µετακινούνται κατά µία θέση, η µέθοδος πραγµατοποιεί το πολύ 2*n συγκρίσεις. 55 Boyer-Moore Το pattern συγκρίνεται µεχαρακτήρεςτου κειµένου από το τέλος του pattern προς την αρχή. Όπως και η µέθοδος KMP χρησιµοποιεί το match heuristic. Εκτός από το match heuristic, χρησιµοποιείται και το occurrence heuristic: ο χαρακτήραςτου κειµένου που προκάλεσε το πρόβληµαπρέπεινα «ευθυγραµµιστεί»µετοpattern µετά τη µετακίνηση του παραθύρου. 56 Boyer-Moore a b r a c a b a b r a c a d a b r a a b r a c a d a b r a match heuristic µετακίνηση 7 θέσεις a b r a c a d a b r a occurence heuristic µετακίνηση 5 θέσεις a b r a c a d a b r a ΕΠΙΛΕΓΕΤΑΙ Η ΜΕΓΑΛΥΤΕΡΗ ΜΕΤΑΚΙΝΗΣΗ 57 19
Boyer-Moore Κόστος προεπεξεργασίας pattern Ο(m+σ). Κόστος αναζήτησης µέσης περίπτωσης: Ο(n*logm/m) Κόστος αναζήτησης χειρότερης περίπτωσης Ο(m*n). Παραλλαγές: ΒΜ-απλοποιηµένος, BM- Horspool, BM-Sunday, Commentz-Walter (επέκταση για αναζήτηση πολλών patterns). 58 Shift-OR Στηρίζεται στην τεχνική bit-parallelism. Λειτουργίες που αφορούν στα bits µίας λέξης του επεξεργαστή που αποτελείται από w bits. Οι σηµερινοί επεξεργαστές στηρίζονται σε αρχιτεκτονικές 32 ή 64 bits. Η βελτίωση που προσφέρει η µέθοδος στο χρόνο αναζήτησης του pattern είναι αρκετά καλή. 59 Shift-OR Η µέθοδος εξοµοιώνει τη λειτουργία ενός µη-ντετερµινιστικού αυτοµάτου το οποίο αναζητά το pattern στο κείµενο. Το αυτόµατο εξοµοιώνεται σε χρόνο O(n*m). Η πολυπλοκότητα χρόνου χειρότερης περίπτωσης είναι O(n*m/w) (optimal speedup). 60 20
Shift-OR a b r a c a d a b r a B[a] B[b] B[c] B[d] B[r] B[*] 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 61 Shift-OR Η κατάσταση της αναζήτησης καταχωρείται σε µία λέξη µηχανής D=dm d1, όπου το bit di =0 όταν η κατάσταση i του αυτοµάτου είναι ενεργή. Εποµένως έχουµε ταύτιση όταν dm == 0. bor = bitwise OR band = bitwise AND 62 Shift-OR Αρχικά όλα τα bits της λέξης D είναι 1. Για κάθε νέο χαρακτήρα κειµένου Tj που εξετάζεται, η λέξηd ενηµερώνεται ως εξής: D = ( D << 1) bor B[Tj]. Το σύµβολο << σηµαίνει ότι τα bits µετακινούνται µία θέση αριστερά (shiftleft) και το πιο δεξί bit γίνεται 1. 63 21
64 65 Πολύπλοκα Patterns Σε πολλές περιπτώσεις αναζητούµε πιο πολύπλοκα patterns από απλές λέξεις. Εξετάζουµε ταεξής: Αναζήτηση µε λάθη(approximate matching) Αναζήτηση extended patterns 66 22
Approximate Matching ίνεται ένα pattern P µεγέθους m, κείµενο Τ µεγέθους n, και ένας ακέραιος αριθµός k οοποίος δηλώνει το µέγιστο αριθµό λαθώνπου επιτρέπονται στο ταίριασµα. Το πρόβληµαείναιπιοπρόσφατοσεσχέσηµε την ακριβή (exact) αναζήτηση. Υπάρχουν αρκετές λύσεις. Εδώ θα συζητήσουµε δύο: υναµικός προγραµµατισµός Αυτόµατα 67 υναµικός Προγραµµατισµός Οι περισσότεροι από τους αλγορίθµους που σχετίζονται µε επεξεργασίαοµιλίας και γλωσσών ανήκουν στην οικογένεια του υναµικού Προγραµµατισµού. Μεταξύ αυτών βρίσκεται και ο αλγόριθµος που βασίζεται στην ελάχιστη απόσταση (minimum edit distance). Ο υναµικός Προγραµµατισµός βασίζεται στην αρχή ότιτοαρχικόπρόβληµα µπορεί να επιλυθεί, µε κατάλληλο συνδυασµό των λύσεων µικρότερων υποπροβληµάτων. 68 υναµικός Προγραµµατισµός Έστω πίνακας C[0 m, 0 n]. Το στοιχείο C[i,j] δηλώνει τον ελάχιστο αριθµό λαθώνπου υπάρχουν κατά το ταίριασµα τουp1 i µεκάποιοsuffix του T1 j. Ο υπολογισµός γίνεται ως εξής: Έχουµε ταίριασµα όταν για κάποια θέση j ισχύει C[m,j] <= k 69 23
υναµικός Προγραµµατισµός Πολυπλοκότητα χρόνου O(m*n). Πολυπλοκότητα χώρου O(m). Πολυπλοκότητα χρόνου προεπεξεργασίας O(m). Πρόσφατα έχουν προταθεί αλγόριθµοι οι οποίοι πετυχαίνουν χρονική πολυπλοκότητα O(k*n). 70 υναµικός Προγραµµατισµός 71 Αυτόµατα 72 24