Εισαγωγή στη Βιοπληροφορική Ενότητα 8: Δομές Δεικτοδότησης Μακρής Χρήστος, Τσακαλίδης Αθανάσιος, Περδικούρη Αικατερίνη Πολυτεχνική Σχολή Τμήμα Μηχανικών.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Ανάκτηση Πληροφορίας Φροντιστήριο 3 Οκτώβριος 2013.
Advertisements

Αλφαριθμητικά.
Εισαγωγή στη Βιοπληροφορική 3η διάλεξη Μάθημα Ελεύθερης Επιλογής Τομέα Λογικού των Υπολογιστών Εαρινό Εξάμηνο Ακαδ. Έτους Χ. Mακρης- Α. Περδικούρη.
Δομές Δεδομένων - Δυαδικά Δένδρα (binary trees)
Ο αλγόριθμος του Ukkonen Βεργούλης Θανάσης Το suffix trie Το suffix trie του string D=“book” b o o k o o k k k $ $ $ $
Δεικτοδότηση και Αναζήτηση (Indexing & Searching)
Δομές Δεικτοδότησης Δέντρο Επιθεμάτων- Suffix Tree
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Εισαγωγή στη Βιοπληροφορική
Distance Functions on Hierarchies Eftychia Baikousi.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 Δείκτες σε συναρτήσεις Δείκτης σε συνάρτηση – Περιέχει τη διεύθυνση του κώδικα της συνάρτησης – Ό π ως ένας.
HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C.
6/15/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Static Random Access Memory.
1 Διαχείριση Γνώσης Μ. Γεργατσούλης Χ. Παπαθεοδώρου.
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
Εισαγωγή στη Βιοπληροφορική Ενότητα 7: Αλγόριθμοι κατηγοριοποίησης βιολογικών δεδομένων Μακρής Χρήστος, Τσακαλίδης Αθανάσιος, Περδικούρη Αικατερίνη Πολυτεχνική.
Εισαγωγή στη Βιοπληροφορική Ενότητα 9: Text Mining Μακρής Χρήστος, Τσακαλίδης Αθανάσιος, Ιωάννου Μαρίνα Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής.
Ιστορία και Θεολογία των Εκκλησιαστικών Ύμνων Ενότητα 2: Η πρώτη περίοδος της εκκλησιαστικής υμνογραφίας (Α´ - Δ´αι.) Γεώργιος Φίλιας Θεολογική Σχολή Τμήμα.
ΕΥΦΥΗΣ ΕΛΕΓΧΟΣ Κεφάλαιο 2 Στοιχεία της Ασαφούς Λογικής Επιμέλεια: Πέτρος Π. Γρουμπός, Καθηγητής Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών.
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΕΩΦΥΣΙΚΗ Εργαστήριο 1: Άσκηση 1: Σχέση γεωγραφικού-γεωκεντρικού πλάτους.
1 Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ.
Ενότητα 3 : ΤΟ ΘΕΑΤΡΟ ΤΗΣ ΑΡΧΑΙΟΤΗΤΑΣ Α ’ Αισχύλος (68 Θ 200) Επτά επί Θήβας : Πόλεμος μεταξύ « αδελφών - εχθρών » Αικατερίνη ( Καίτη ) Διαμαντάκου Φιλοσοφική.
1 Πληροφορική Ι Ενότητα 4 : Πράξεις με bits Δρ. Γκόγκος Χρήστος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Εορτολογία Ενότητα 2: Η εορτή του Πάσχα Γεώργιος Φίλιας Θεολογική Σχολή Τμήμα Κοινωνικής Θεολογίας.
1 Προγραμματισμός Ι Ενότητα 7 : Πίνακες I Αλέξανδρος Τζάλλας Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Δομή προσωπικού υπολογιστή
Αντισταθμιστική ανάλυση
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ευρετήρια.
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Κεφάλαιο 4: Γενετικοί Αλγόριθμοι
Ορισμοί Ιεραρχικός Μη γραμμικός τύπος δεδομένων Γονέας – Παιδιά
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
Δενδρικές Μέθοδοι Προσπέλασης
Ενότητα 5 : Οργάνωση Υλικού Υπολογιστών Δρ. Γκόγκος Χρήστος
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Μεθοδολογία των Επιστημών του Ανθρώπου: Στατιστική
Β. Μάγκλαρης 9/11/2015 ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές & Πρωτόκολλα Δρομολόγησης στο Internet (I) Επίπεδο.
Θεωρία Γραφημάτων Ενότητα 9 Μετασχηματισμοί Υπολογιστικών Προβλημάτων

Δρομολόγηση (routing) σε δίκτυα
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Εισαγωγή στη Βιοπληροφορική
Αλγόριθμοι Ταξινόμησης – Μέρος 3
Θεωρία & Αλγόριθμοι Γράφων Αντιστοιχίσεις και Καλύμματα
Ενότητα 1 : Εισαγωγικά Στοιχεία της Pascal Αλέξανδρος Τζάλλας
Προτασιακή λογική.
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(6)
Θεωρία & Αλγόριθμοι Γράφων Δένδρα
Χωρικοί-χρονικοί συμβιβασμοί
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Ψηφιακή Σχεδίαση εργαστήριο
Ανάκτηση Πληροφορίας Διδάσκων: Μακρής Χρήστος
«Ανάπτυξη εφαρμογής για τη διαχείριση μεθόδων αναζήτησης σε οπτικοποιημένο περιβάλλον»  Μπλάγας Χρήστος.
Διδακτική Μαθηματικών ΙΙ
Ενότητα 8 : Πίνακες IΙ Αλέξανδρος Τζάλλας
Βελτιστοποίηση και Επεξεργασία Ερωτημάτων
Κώδικες Huffman Μέθοδος συμπίεσης δεδομένων:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Ι
ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ
Βασικές έννοιες (Μάθημα 2) Τίτλος: Η Συσκευή
Ψηφιακό Δέντρο (Trie) και Δέντρο Επιθεμάτων (Suffix tree)
فصل7: منطق فازی و استدلال تقریبی
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
ΜΥΕ003: Ανάκτηση Πληροφορίας
Variable-wise and Term-wise Recentering
ΑΠΛΗ ΑΡΜΟΝΙΚΗ ΚΙΝΗΣΗ ΑΣΚΗΣΕΙΣ.
Double-Angle and Half-Angle Formulas
ΜΥΕ003: Ανάκτηση Πληροφορίας
Μεταγράφημα παρουσίασης:

Εισαγωγή στη Βιοπληροφορική Ενότητα 8: Δομές Δεικτοδότησης Μακρής Χρήστος, Τσακαλίδης Αθανάσιος, Περδικούρη Αικατερίνη Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής

2 Τίτλος Ενότητας Σκοποί ενότητας Ο σκοπός της ενότητας είναι η παρουσίαση των δομών δεικτοδότησης

3 Τίτλος Ενότητας Περιεχόμενα ενότητας Πλαίσιο μελέτης Μέθοδοι και συγκρίσεις μεθόδων Μοντέλο μνήμης Πολυπλοκότητα Αλγόριθμοι

Δομές Δεικτοδότησης

Πλαίσιο Μελέτης 1.Τύπος συμβολοσειρών που μπορούν να δεικτοδοτηθούν: - δομές που δεικτοδοτούν συμβολοσειρές/κείμενα φυσικού λόγου (linguistic texts) - δομές πλήρους δεικτοδότησης Στην πρώτη κατηγορία: ανεστραμμένα αρχεία (inverted files), αρχεία υπογραφών (signature files), bitmaps Στην δεύτερη κατηγορία: δέντρα επιθεμάτων (suffix trees), πίνακες επιθεμάτων (suffix arrays), άκυκλοι κατευθυνόμενοι γράφοι λέξεων (DAWG και cDAWG). 2. Μοντέλο υπολογισμού: οι ανωτέρω δομές είναι κατάλληλες για RAM, για τη δευτερεύουσα μνήμη πιο κατάλληλη η δομή: string b-tree.

Linguistic Text Indexing Χρήση: Σε μεγάλες συλλογές κειμένων. Οργάνωση πληροφορίας σε μορφή περιεχομένων (σε ποια κείμενα βρίσκεται κάθε όρος). Απάντηση σε ερωτήματα. Μέθοδοι: Ανεστραμμένα Αρχεία (Inverted Files) Αρχεία Υπογραφών (Signature Files) Bitmaps

Ερωτήματα Boolean Queries : Διαζευκτικά (Disjunctive t 1  t 2  …  t q ) Συζευκτικά (Conjunctive t 1  t 2  …  t q ) Συνδυασμός τους. Ranked Queries : Υπολογίζεται ένα score ομοιότητας. Proximity Queries : Μεσολαβεί κάποια απόσταση μεταξύ των όρων.

Ανεστραμμένα Αρχεία Αποτελούνται από ένα λεξικό και μια ανεστραμμένη λίστα για κάθε όρο με δείκτες προς κείμενα. Ανάγκη για συμπίεση: Χρήση d-gaps και συμπίεσή τους με global ή local μεθόδους. Οι global είναι παραμετροποιημένες ή μη παραμετροποιημένες.

9 Τίτλος Ενότητας Μέθοδοι Συμπίεσης Ανεστραμμένων Αρχείων  Binary :  log N  bits για κάθε δείκτη.  Unary : Για έναν αριθμό x θέλουμε x – 1 ασους και 1 μηδέν στο τέλος. Γενικά ασύμφορη μέθοδος.  γ :Unary του 1 +  log x  ακολουθούμενη από binary του x – 2 ^ (  log x  ). Απαιτούνται περίπου 1 + 2log x bits.  δ : γ κωδικοποίηση του 1 +  log x  ακολουθούμενη από binary του x – 2 ^ (  log x  ). Για μεγάλους αριθμούς υπερέχει της γ. Οι ανωτέρω τεχνικές είναι μη παραμετροποιημένες, στις παραμετροποιημένες ακολουθείται μία μοντελοποίηση με χρήση bernouli trials όπου prob(x)=(1-p) x-1 p, Και μετα ακολουθείται κωδικοποίηση huffmann ή αριθμητική.

10 Τίτλος Ενότητας Μέθοδοι Συμπίεσης Ανεστραμμένων Αρχείων  Global Bernoulli: χρήση αριθμητικής κωδικοποίησης ή μέθοδος Golomb. Για μία παράμετρο b, κάθε αριθμός x>0 κωδικοποιείται σε δύο μέρη: q+1 σε unary και το υπόλοιπο r=x-qb-1 σε δυαδικό (περίπου logb bits). Έχει δειχθεί ότι για: η τεχνική ισοδυναμεί με τον optimal huffman κώδικα για ένα άπειρο σύνολο πιθανοτήτων. Χρήση παραμέτρου b για όλες τις λίστες με b = (0.69*Ν*n) / f.  Local Bernoulli: Διαφορετικό b = 0.69N / f t για κάθε λίστα. Καλύτερη συμπίεση από την global.  Interpolative : Εκμεταλλεύεται το clustering. Συμπιέζει δείκτες και όχι d-gaps. Η πιο αποδοτική μέθοδος αλλά η πιο πολύπλοκη. Ακολουθεί λογική συμπίεσης σε επίπεδα.

11 Τίτλος Ενότητας Μέθοδοι Συμπίεσης Ανεστραμμένων Αρχείων Γενική Σύγκριση: Local καλύτερες από Global. Καλή απόδοση η local Bernoulli με Golomb, και γ, δ απλές με σχετικά καλή απόδοση, χωρίς απαίτηση παραμέτρων, εύκολα υλοποιούνται.

12 Τίτλος Ενότητας Αρχεία Υπογραφών  Bitstring Signature Files: Hash string για κάθε όρο. Σε κάθε κείμενο μια υπογραφή που είναι το ΟR των hash strings των λέξεών του. Για τα queries φτιάχνονται query hash strings. Έλεγχος για false matches. Αποδοτικά για πιο συγκεκριμένα queries.  Bitsliced Signature Files: Αναστροφή πίνακα υπογραφών σε σύνολο bitslices. Ανάγνωση λιγότερων bits. Καλύτερα για αραιά bitslices, τότε λιγότερα false matches.

13 Τίτλος Ενότητας Αρχεία Υπογραφών  Blocked Signature Files: Οργάνωση Εγγραφών σε blocks. Κάθε bit σε κάθε slice αντιστοιχεί σε Β εγγραφές (B = blocking factor). Διαφορετική αντιστοίχηση αριθμών εγγραφών σε αριθμούς blocks σε κάθε slice. Μεγάλο B οδηγεί σε περισσότερους ελέγχους για false matches, προσπελάσεις στο δίσκο.  Bitmaps: Κάθε όρος θέτει 1 bit σε κάθε υπογραφή μήκους ίσου με τον αριθμό των όρων. “1-1” hash function. Εύχρηστα, γρήγορα αλλά καταναλώνουν χώρο. Καλύτερα για common terms. Υβριδικές τεχνικές.

14 Τίτλος Ενότητας Συμπίεση Αρχείων Υπογραφών Η συμπίεση δεν αποδίδει όπως στα ανεστραμμένα αρχεία. Έχει απώλειες και εισάγεται θόρυβος. Περισσότερα false matches. Απαιτείται χρόνος για αποσυμπίεση. Πίνακας διευθύνσεων slices στην κύρια μνήμη. Άλλα θέματα : Εγγραφές με μήκη με μεγάλες διακυμάνσεις (χαμηλή απόδοση). Μεταχείριση συνηθισμένων όρων (πρόβλημα αν υπάρχει διαμοίραση όρων με σπάνιους όρους).

15 Τίτλος Ενότητας Σύγκριση Μεθόδων Indexing  Μια ανεστραμμένη λίστα δεν είναι ποτέ πιο πυκνή από ένα αντίστοιχο bitslice. Άρα τα ανεστραμμένα αρχεία δεν κάνουν ποτέ περισσότερες προσβάσεις στο δίσκο. Εξαίρεση όταν το λεξιλόγιο δε χωράει στην κύρια μνήμη. Τα bitslices μπορεί να υπερέχουν όταν οι όροι του query είναι πολλοί σε ειδικές περιπτώσεις.  Χώρος στο Δίσκο: τα IF απαιτούν 6-10% και τα bitsliced SF το % της συλλογής.  Απαιτήσεις Μνήμης: Τα SF δεν απαιτούν χώρο για το λεξιλόγιο, αλλά για όλα τα υπόλοιπα κόστη βρίσκονται σε συγκρίσιμα μεγέθη με αυτά των IF.  Κατασκευή Index: πιο χρονοβόρα τα SF (hash functions κλπ).  Δυνατότητες Παραλληλίας: κάθε ερώτημα το χειρίζεται διαφορετικός επεξεργαστής.

16 Τίτλος Ενότητας Σύγκριση Μεθόδων Indexing  Ενημέρωση: αναγκαία σε δυναμικές ΒΔ. Πιο εύκολη για τα bitstring SF. Το κόστος μειώνεται με batching, και τότε τα IF είναι καλύτερα.  Scalability: Ο υπολογισμός query για SF είναι γραμμικός ως προς το μέγεθος της ΒΔ, ενώ στα ΙF υπογραμμικός.  Ranking: Τα ΙF χειρίζονται καλύτερα ranking queries.  Επεκτασιμότητα: Τα IF τροποποιούνται εύκολα για την απάντηση proximity, NOT, ranked queries.

17 Τίτλος Ενότητας Συμπεράσματα Για τυπικές εφαρμογές δεικτοδότησης τα IF υπερέχουν. Τα SF απαιτούν μεγάλο χώρο και πολύ χρόνο να κατασκευαστούν. Τα ΙF είναι πιο αποδοτικά σε ranked queries και proximity queries.

Full Text Indexing -Χωρίς δομή δεικτοδότησης (απλοϊκός αλγόριθμος, αλγόριθμος βασικής προεπεξεργασίας, Knuth Morris Pratt, Boyer Moore, Aho Corasick Automaton) -Με δομή δεικτοδότησης (suffix tree, suffix array, dwag, string b-tree)

Βασικοί Ορισμοί Συμβολοσειρά-string: x=x[1]x[2]…..x[n], x[i]  Σ & |x|=n x= acgttaaaca, |x|=10 & Σ={a,c,g,t} Κενή συμβολοσειρά: ε Υπο-συμβολοσειρά-substring w: x=uwv Πρόθεμα –Prefix w: x=wu Επίθεμα-Suffix w: x=uw Κάθε συμβολοσειρά S, μήκους |S|=m, έχει m δυνατά μη κενά επιθέματα που είναι τα ακόλουθα: S[1…m], S[2…m], …. S[m-1…m] και S[m]. Παράδειγμα "sequence" : sequence, equence, quence, uence, ence, nce, ce, e.

Βασική Προεπεξεργασία (1) (D. Gusfield) Ζ i (S)= το μήκος της μεγαλύτερης υποσυμβολοσειράς του S, που αρχίζει στο i και ταιριάζει πρόθεμα του S. Z-box at i= το σύνολο χαρακτήρων που αρχίζουν από i και τελειώνουν στη θέση i+Z i (S)-1. Για κάθε i, r i συμβολίζει το δεξιότερο άκρο των Z-boxes που ξεκινά από ή πριν τη θέση i. Διαφορετικά, r i είναι η μεγαλύτερη τιμή του j+Ζ j -1 για κάθε 2<j<=i. Το αριστερό άκρο (j) το συμβολίζουμε ως l i.

Βασική Προεπεξεργασία (2) Δοθέντων Z i για i<=k-1 και r, l για Z k-1 : 1.If k>r, find Z k explicitly. If Z k >0, r=k+Z k -1, l=k. 2.If k =min(Z k’,r-k+1) (k’=k- l+1) 2.a. If Z k’ < |S[k..r]| then Z k =Z k’, r,l remain unchanged 2.b. Compare the characters starting at r+1 of S with the characters starting at |S[k..r]| until a mismatch. Say the mismatch occurs at q>=r+1. Then Z k is q-k, r is set to q- 1 and l is set to k.

Βασική Προεπεξεργασία (3) Εφάρμοσε τον αλγόριθμο στην ακολουθία P$T Κάθε τιμή Z i =n, i>m σηματοδοτεί match στη θέση i-m-1. H μέθοδος μπορεί να υλοποιηθεί έτσι ώστε να απαιτεί επιπλέον (του χώρου αποθήκευσης P, T), O(m) χώρο. Είναι μέθοδος που οι πολυπλοκότητές της είναι ανεξάρτητες από το μέγεθος του αλφαβήτου (ίδια ιδιότητα έχει ο αλγόριθμος Boyer Moore, Knuth Morris Pratt, όχι όμως ο Shift Or και ο αλγόριθμος Aho- Corasick)

Το Δέντρο Επιθεμάτων Suffix Tree Ορισμός: «αποθηκεύει όλα τα δυνατά επιθέματα μιας συμβολοσειράς S (υπόθεση: το τελευταίο γράμμα του αλφαριθμητικού δεν εμφανίζεται στο εσωτερικό του)» Διαφοροποίηση από Pat Tree που αποθηκεύει μόνο λέξεις και εφαρμόζει διαφορετική λογική συμπίεσης (κρατά πρώτο γράμμα σε κάθε ακμή). x= xabxac

Trie Ορισμός: Έστω σύμπαν U=Σ l για αλφάβητο Σ και l>0. Trie καλείται το κ-δικό δένδρο (κ=|Σ|) το οποίο περιέχει όλα τα προθέματα των στοιχείων του S. Κάθε επίπεδο του δένδρου αντιστοιχίζεται και σε ένα d i (d 1  ρίζα). Κάθε στοιχείο x=x 1 x 2 …x l τοποθετείται στο υποδένδρο x 1  x 2  …. σ1σ1 σ2 …σ2 … σκσκ x1x1 x2x2 x1x1

Trie - παράδειγμα Χρόνος ins/del/search : Ο(l) Χώρος: Ο(nlk) S={102, 120, 121, 210, 211, 212}, Σ={0,1,2}

Compressed Trie Χώρος:Ο(nlk)  Ο(nk)=O(n)

Compressed Trie - example

Suffix Tree Ορισμός: Το suffix tree μιας συμβολοσειράς S[1…n] είναι ένα συμπαγές trie που περιέχει ως κλειδιά όλα τα επιθέματα S[i…n], 1≤i≤n. $ c $ a b c $ b c $ a b c $ a b c $ bcabc$ Trie $ c $ abc$ bc $ abc$ Compressed trie (3,6)

Naïve Κατασκευή S=bcabc$ 1 bcabc$ 2 cabc$ 1: bcabc$ 2: cabc$ 1 bcabc$ 2 cabc$ 3: abc$ 1 bcabc$ 3 abc$ 2 cabc$ 4: bc$ 1 bc abc$ 3 abc$ 4 $ 2 c abc$ 5: c$ 1 bc abc$ 3 abc$ 4 $ 5 $ $ c $ bc $ abc$ : $ Χρόνος: Ο(n 2 ) S=aaaaa...$

Suffix Links – Speed Up i-1i ux x u z z u x u 1 u 2 z u1xu1x u2u2 u1u1 u2u2 i z - Στο δέντρο Τ ι μόνο το head i δεν θα έχει valid suffix link - Στο i-οστό βήμα ο αλγόριθμος επισκέπτεται το contracted locus του head i στο T i-1

Suffix Links – Speed Up S=bbbbbababbbaabbbbb$ i-1:Inserted S[13..19]=abbbbb$ x=a, u=bbb, z=bb$ u 1 =b, u 2 =bb i: Insert S[14..19]=BBBBB$ a b Node c b b Node d b a..$ b..$ a..$ b bb a..$ bb$ head 1 3 a..$ $ b head 1 4

Exact Pattern Matching $ c $ abc$ bc $ abc$ text=bcabc$ pattern=b p1p1 p2p2 p3p3 pmpm i i1i1 i2i2 i3i3 i1i1 i2i2 i3i3 Χρόνος: Ο(n+m+a) c

Repeated Sub-Sequences - Regularities u max i1i1 i2i2 i3i3 uuu Longest Repeated Substring u max

Longest Common Substring of two (more) Strings text1 text2 i j Generalized Suffix Tree i3i3 i1i1 i2i2 j1j1 j2j2 j3j3 u max

Maximal Pairs xx gap r u x i j a b Suffix Tree ij... σ1σ1 σ2σ2 σ |Σ| i... σ1σ1 σ2σ2 σ |Σ| j Gusfield : O(n+a) Brodal : O(nlogn+a), t 1 ≤gap≤t 2 O(n+a), t 1 ≤gap

Maximal Pairs in Multiple Strings xx gap

Nearest Common Ancestor & Suffix Tree r u w a b nca(x,y)=u σε χρόνο Ο(1) x y nca(001, 101)=leftmost 1 (XOR(001, 101)) = 100 =1xx nca(001, 111)= leftmost 1 (XOR(001, 111)) = 110 =1xx nca(011, 010)=leftmost 1 (XOR(011, 010) = 001

Exact Matching with wild cards – using longest common extention -- Εφαρμογή web mining. r u w a b text pattern ** * * acgtttaacctttgagtttgggcv a**t

39 Τίτλος Ενότητας Suffix Arrays Έστω: - αλφάβητο Σ - κείμενο Α  α 0 α 1 … α Ν-1 μεγέθους Ν, α i  Σ, 0  i <Ν. Συμβολοσειρά W  w 0 w 1 … w P-1 Ζητείται να βρεθούν όλες οι εμφανίσεις του W στο A.

40 Τίτλος Ενότητας 1η προσέγγιση - Suffix trees  Suffix tree για το Α: – Aκριβώς Ν φύλλα, αριθμημένα 0 έως Ν-1 – Kάθε εσωτερικός κόμβος εκτός της ρίζας έχει τουλάχιστον δύο παιδιά – Σε κάθε ακμή  ετικέτα  μη κενό substring του Α Σε κάθε κόμβο, οι ετικέτες των εξερχόμενων ακμών ξεκινάνε από διαφορετικό χαρακτήρα – Συνένωση των ετικετών των ακμών σε μονοπάτι από τη ρίζα προς φύλλο k  suffix του Α στη θέση k.  Κατασκευή :χρόνος Ο(Ν log|Σ|), χώρος Ο(Ν) Υπάρχει γραμμική λύση (αλγόριθμος Farach)  Απάντηση ερωτημάτων: χρόνος Ο(P log|Σ|)

41 Τίτλος Ενότητας 2η προσέγγιση - Suffix Arrays Διατεταγμένη λίστα όλων των επιθεμάτων του Α. – Κατασκευή :χρόνος Ο(Ν log N) (στη μέση περίπτωση όμως ο χρόνος είναι Ο(Ν)) – Χώρος 2Ν ακέραιοι – Απάντηση ερωτημάτων: χρόνος P+  log2(N-1)  συγκρίσεις συμβόλων

Suffix Trees vs. Suffix Arrays Query: “Is W a substring of A?” Suffix Tree: –O(Plog|Σ|) with O(N) space, or: –O(P) with O(N|Σ|) space (impractical) Suffix Array: –Competitive/better O(P+logN) search –Main advantage: Space: 2N integers (In practice, problem is space overhead of query data structure) –Another advantage: Independent of |Σ|

43 Τίτλος Ενότητας Ορισμοί – A i  suffix του Α που ξεκινά στη θέση i, δηλ. Α i = α i α i+1 …α Ν-1 – Αν u string, τότε u p  πρόθεμα των πρώτων p συμβόλων του u. – u, υ strings, τότε ορίζουμε τη σχέση <p ως εξής: – u < p υ  u p < υ p – Oμοίως και οι σχέσεις = p, > p,  p,  p,  p

44 Τίτλος Ενότητας Αναζήτηση Pos : πίνακας Ν θέσεων, λεξικογραφικά διατεταγμένα τα επιθέματα του Α. Α Pos[0] < Α Pos[1] <…< Α Pos[N-1] Έστω : L W = min {k : W  P A Pos[k] ή k=N} R W = max {k : W  P A Pos[k] ή k=-1} Αν L W < R w, τότε για κάθε k  [L W, R w ], και i = Pos[k], θα είναι W  α i α i+1 … α i+P-1, και αντίστροφα. Δηλ, αν L W < R w, τότε υπάρχουν R W - L W + 1 εμφανίσεις του W στο Α. Pos διατεταγμένος  binary search για L W, R w  χρόνος O(P logN).

45 Τίτλος Ενότητας Let A = mississippi i ippi issippi ississippi mississippi pi ppi sippi sisippi ssippi ssissippi L R Let W = issa M

46 Τίτλος Ενότητας Πώς θα μειωθεί ο χρόνος; lcp(υ,w)  μέγεθος του longest common prefix υ, w l=lcp(A Pos[L],W), r=lcp(W, A Pos[R] ). Αρχικά, l =lcp(A Pos[0],W), r=lcp(W, A Pos[N-1] ) Kάθε σύγκριση του W με το A Pos[M] ενημερώνει το l ή το r. Α Pos[L] = l W, W = r A Pos[R],  A Pos[k] = h W,  k  [L,R], h = min(l, r)  το πλήθος των συγκρίσεων συμβόλων που απαιτούνται μειώνεται κατά h.

47 Τίτλος Ενότητας  προϋπολογισμένη πληροφορία σχετικά με το lcp του Α Pos[Μ] με τα Α Pos[L], Α Pos[R].  Ν-2 τριάδες (L, M, R) με μεσαίο σημείο M  [1, N-2], 0  L < M < R  N-1.  (L M, M, R M ) η μοναδική τριάδα με το Μ μεσαίο σημείο.  L lcp, R lcp πίνακες μεγέθους Ν-2: – L lcp [M]=lcp(A Pos[LM], A Pos[M] ) – R lcp [M] = lcp(A Pos[M], A Pos[RM] ). Πώς θα μειωθεί επιπλέον ο χρόνος;

48 Τίτλος Ενότητας Μείωση συγκρίσεων Ι  Έστω μία επανάληψη του βρόγχου αναζήτησης, τριάδα (L, M, R), H= max(l, r), ΔH η διαφορά μεταξύ της τιμής του H στην αρχή και το τέλος της επανάληψης.  Έστω r  l = H. ( l=lcp(A Pos[L],W) )  Περίπτωση 1: Llcp[M] > l, άρα lcp(A pos[LM], A Pos[M] ) > l. – Τότε, A Pos[M] = l+1 A Pos[L]  l+1 W. W είναι στο δεξί μισό, L = M, l μένει όπως είναι.  Περίπτωση 2: Llcp[M] < l, άρα lcp(A pos[LM], A Pos[M]) < l. – Τότε, W = l A Pos[L] < l A Pos[M], W είναι στο αριστερό μέρος, νέα τιμή του r είναι Llcp[M].

49 Τίτλος Ενότητας Μείωση συγκρίσεων ΙΙ  Περίπτωση 3: Llcp[M] = l, άρα lcp(A Pos[LM], A Pos [M] ) = l. – Τότε, A Pos[M] = l W. Συγκρίνουμε το l+1 σύμβολο, το l+2 κτλ, μέχρι l+j, το πρώτο για το οποίο είναι W  l+j A Pos[M]. To l+j καθορίζει αν το W είναι στην αριστερή ή δεξιά πλευρά, νέα τιμή του r ή του l είναι l+j-1. Στην αρχή της επανάληψης είναι l =h, άρα ΔH+1 συγκρίσεις συμβόλων.  ΔH + 1 συγκρίσεις για κάθε επανάληψη, ΣΔH  P  Συνολικό πλήθος συγκρίσεων συμβόλων – το πολύ P +  log2(N-1)  – O(P+ log N) χρόνος στη χειρότερη περίπτωση.

50 Τίτλος Ενότητας Δευτερεύουσα Μνήμη Μεγάλες συλλογές ηλεκτρονικών κειμένων τα οποία είναι ετερογενή μεταξύ τους και προέρχονται από διάφορες πηγές Μεγέθη ηλεκτρονικών ΒΔ της τάξης των Gigabyte / Terabyte Χρήση συσκευών δευτερεύουσας μνήμης (σκληρός δίσκος, μαγνητική ταινία, DVD) Οι δομές δεικτοδότησης των δεδομένων και οι μηχανές αναζήτησης είναι βασικά εργαλεία για την αποθήκευση, ενημέρωση και εξαγωγή χρήσιμης πληροφορίας

51 Τίτλος Ενότητας Δομές Δεδομένων Supra-suffix array (υπερ-πίνακας επιθεμάτων – υβριδική δομή) Compact pat-trees (συμπαγή pat-δέντρα – δυαδική αναπαράσταση, μεταφορά της δομής σε δευτερεύουσα μνήμη) Β-δέντρο προθεμάτων (prefix B-tree) String B-tree

52 Τίτλος Ενότητας String B-Tree Συνδυασμός των B-Trees και Patricia Tries για δείκτες εσωτερικών κόμβων Έχουν προστεθεί επιπλέον δείκτες για να αυξηθεί η ταχύτητα αναζήτησης και οι λειτουργίες ενημέρωσης Τα String B-Trees έχουν την ίδια απόδοση χειρότερης περίπτωσης με τα κανονικά B-Trees αλλά επιτυγχάνουν αποθήκευση απεριόριστου μήκους αλφαριθμητικών και εκτελούν τις λειτουργίες αναζήτησης αντίστοιχα με τα suffix trees.

53 Τίτλος Ενότητας String B-Tree : Συμβολισμοί Συμβολίζουμε ένα αλφαριθμητικό s χαρακτήρων με Χ[1, s] και με |Χ| θα ορίζουμε το μήκος του (s) Θα συμβολίζουμε με Χ[1,i] ένα πρόθεμα, με Χ[j,s] ένα επίθεμα και με Χ[i, j] ένα υπό-αλφαριθμητικό του Χ, όπου 1  i  j  s Ένα αλφαριθμητικό μοτίβο Ρ υπάρχει μέσα στο Χ όταν μπορούμε να βρούμε υπό-αλφαριθμητικό του Χ[i, i + |P| - 1] που να ισούται με το Ρ

54 Τίτλος Ενότητας Πρόβλημα 1: Αναζήτηση Προθεμάτων και Ερώτημα Εύρους Ορίζουμε Δ ={δ 1,…..,δ κ } ένα σύνολο αλφαριθμητικών ενός κειμένου που το συνολικό τους μήκος είναι Ν Αποθηκεύουμε το Δ και το κρατάμε ταξινομημένο στην εξωτερική μνήμη 1)Prefix Search (P) :Ανακτά όλα τα αλφαριθμητικά του Δ που το πρόθεμά τους είναι το μοτίβο Ρ 2)Range Query (K’, K’’) που ανακτά όλα τα αλφαριθμητικά του Δ ανάμεσα στο Κ’ και το Κ’’ σε λεξικογραφική σειρά

55 Τίτλος Ενότητας Πρόβλημα 2: Αναζήτηση Υπό-αλφαριθμητικού Το ερώτημα Substring Search (P) βρίσκει όλα τα Ρ που υπάρχουν στα αλφαριθμητικά του Δ Το occ δηλώνει το πλήθος των υπάρξεων Αποτελεί επέκταση του προβλήματος 1, με το σύνολο να απαρτίζεται από όλα τα επιθέματα αλφαριθμητικών του Δ.

56 Τίτλος Ενότητας Μοντέλο Μνήμης Θα αναλύσουμε τα προβλήματα 1 και 2 με βάση το κλασσικό μοντέλο μνήμης 2 επιπέδων [Cormen et al. 1990] Θεωρούμε ότι υπάρχει μια γρήγορη και μικρή κύρια μνήμη (RAM) και μια πιο αργή αλλά πολύ μεγάλη εξωτερική μνήμη (σκληρός δίσκος, DVDs). Η εξωτερική μνήμη είναι χωρισμένη σε blocks μεταφοράς, που καλούνται σελίδες δίσκου (disk pages)

57 Τίτλος Ενότητας Μοντέλο Μνήμης Κάθε σελίδα δίσκου περιέχει Β ατομικά αντικείμενα που μπορεί να είναι ακέραιοι, χαρακτήρες ή δείκτες Το Β ονομάζεται μέγεθος σελίδας δίσκου (disk page size) και η εγγραφή ή η ανάγνωση προσπέλαση στον δίσκο (disk access)

58 Τίτλος Ενότητας Πολυπλοκότητα : Πρόβλημα 1 Η Prefix Search (P) απαιτεί O(( p + occ) / B + log B k) προσπελάσεις στον δίσκο στην χειρότερη περίπτωση, p = |P| Η Range Query (K’,K”) απαιτεί Ο(( k’ + k” + occ) / B + log B k) προσπελάσεις στην χειρότερη περίπτωση, k’ = |Κ’| και k’’= |Κ’’| Η εισαγωγή ή διαγραφή ενός αλφαριθμητικού μήκους m του συνόλου Δ απαιτεί O(m/B + log B k) προσπελάσεις στην χειρότερη περίπτωση Η χρήση του χώρου είναι Θ(k/B) σελίδες δίσκου, όπου ο χώρος που καταλαμβάνεται από το σύνολο Δ είναι Θ(Ν/Β) σελίδες

59 Τίτλος Ενότητας Πολυπλοκότητα : Πρόβλημα 2 Η Substring Search (P) απαιτεί O(( p + occ) / B + log B N) προσπελάσεις στον δίσκο στην χειρότερη περίπτωση, όπου p = |P| Η εισαγωγή ή διαγραφή ενός αλφαριθμητικού μήκους m του συνόλου Δ απαιτεί O(m log B (N+m)) προσπελάσεις στην χειρότερη περίπτωση Ο χώρος που χρησιμοποιείται από το String B-Tree και από το σύνολο Δ είναι Θ(Ν / Β) σελίδες δίσκου

60 Τίτλος Ενότητας Αποθήκευση Αλφαριθμητικών Με αυτή τη δομή μπορούμε να εντοπίσουμε τη σελίδα δίσκου που περιέχει τον i-οστό χαρακτήρα ενός αλφαριθμητικού εκτελώντας έναν σταθερό αριθμό απλών αριθμητικών πράξεων στον δείκτη του Μπορούμε να ομαδοποιήσουμε Θ(Β) λογικούς δείκτες σε μια μόνο σελίδα δίσκου, αλλά αν διαβάσουμε μόνο αυτή τη σελίδα δεν θα είμαστε σε θέση να ανακτήσουμε όλους τους χαρακτήρες των αλφαριθμητικών

61 Τίτλος Ενότητας Αποθήκευση Αλφαριθμητικών Μπορούμε να συγκρίνουμε οποιαδήποτε δύο αλφαριθμητικά χαρακτήρα προς χαρακτήρα, αλλά αυτή η πράξη είναι πολύ αναποτελεσματική αν επαναλαμβάνεται διότι το κόστος χειρότερης περίπτωσης είναι ανάλογο του μήκους των δύο αλφαριθμητικών Καλούμε το πρόβλημα αυτό επανασάρωση (rescanning) διότι οι ίδιοι χαρακτήρες επανεξετάζονται πολλές φορές

62 Τίτλος Ενότητας B-tree Like Δομή Αναπαριστούμε τα αλφαριθμητικά μέσω λογικών δεικτών Σαν είσοδο έχουμε το σύνολο αλφαριθμητικών Δ με συνολικό αριθμό χαρακτήρων Ν Ορίζουμε Κ = {Κ 1,…, Κ κ } τα στοιχεία του συνόλου Δ σε αύξουσα λεξικογραφική σειρά (  L ) Τα αλφαριθμητικά του Κ διανέμονται στα φύλλα του B-Tree, και μόνο ορισμένα αλφαριθμητικά βρίσκονται στους εσωτερικούς κόμβους

63 Τίτλος Ενότητας B-tree Like Δομή Ορίζουμε το διατεταγμένο σύνολο αλφαριθμητικών που συνδέονται με τον κόμβο π ως Φ π  Κ, και συμβολίζουμε το αριστερότερο και δεξιότερο αλφαριθμητικά του Φ π με L(π) και R(π) αντίστοιχα Κάθε κόμβο π τον αποθηκεύουμε σε μια σελίδα δίσκου και θέτουμε περιορισμό στο πλήθος των αλφαριθμητικών του : b  |Φ π |  2b, όπου b=Θ(Β) είναι ένας ζυγός ακέραιος επιλεγμένος έτσι ώστε να μπορεί ένας κόμβος να χωρέσει σε μια σελίδα δίσκου Μόνο η ρίζα επιτρέπεται να έχει λιγότερα από b αλφαριθμητικά

64 Τίτλος Ενότητας B-tree Like Δομή Χωρίζουμε το σύνολο Κ σε ομάδες των b συνεχόμενων αλφαριθμητικών Χαρτογραφούμε κάθε ομάδα σε ένα φύλλο, έστω π, και αναπτύσσουμε το Φ π Κάθε εσωτερικός κόμβος π έχει n(π) παιδιά σ 1,…,σ n(π) και το διατεταγμένο σύνολό του που είναι το Φ π = {L(σ 1 ), R(σ 1 ), …, L(σ n(π) ), R(σ n(π) )} Αφού n(π)= |Φ π | / 2, κάθε κόμβος έχει από b/2 μέχρι b παιδιά εκτός από τη ρίζα και τα φύλλα. Άρα το τελικό ύψος του B- Tree που σχηματίστηκε είναι H=O(log b/2 k) = O(log B k)

65 Τίτλος Ενότητας Prefix Search (P) Για την ανάλυση της πράξης Prefix Search(P) θα βασιστούμε σε δυο παρατηρήσεις των Manber και Mayers : Tα αλφαριθμητικά που έχουν πρόθεμα P καταλαμβάνουν γειτονικές θέσεις του Κ Tο αριστερότερο αλφαριθμητικό που έχει πρόθεμα P είναι γειτονικό του P στο σύνολο Κ με βάση την αύξουσα λεξικογραφική σειρά

66 Τίτλος Ενότητας Prefix Search(P) Αναπαριστούμε τη θέση του P στο σύνολο K με το ζεύγος (τ, j) έτσι ώστε το τ να είναι το φύλλο που έχει αυτή τη θέση και j-1 να είναι το πλήθος των αλφαριθμητικών του Φ τ που είναι λεξικογραφικά μικρότερα από το P, όπου 1  j  | Φ τ | + 1 Λέμε ότι το j είναι η θέση του P στο Φ τ Δηλώνουμε την διαδικασία που καθορίζει την θέση του P στο σύνολο Φ π με την πράξη PT-Search(P, Φ π )

67 Τίτλος Ενότητας Prefix Search(Ρ): Αλγόριθμος Ελέγχουμε τις δύο περιπτώσεις στις οποίες το P είναι μικρότερο / μεγαλύτερο από όλα τα αλφαριθμητικά του K Αν και οι δύο έλεγχοι είναι αρνητικοί, ξεκινάμε με π=root και εκτελούμε σάρωση προς τα κάτω του B-tree Όταν επισκεπτόμαστε έναν κόμβο π, φορτώνουμε την αντίστοιχη σελίδα δίσκου και εφαρμόζουμε την διαδικασία PT- Search ώστε να βρούμε τη θέση j του P στο σύνολο Φ π Τα δύο γειτονικά αλφαριθμητικά καθορίζονται από τη σχέση K’ j-1 < L P  L K’ j

68 Τίτλος Ενότητας Prefix Search(Ρ): Αλγόριθμος Αν ο κόμβος π είναι φύλλο σταματάμε τη σάρωση, αλλιώς έχουμε τις ακόλουθες δύο περιπτώσεις 1.Αν τα αλφαριθμητικά K’ j-1 και K’ j ανήκουν σε δύο ξεχωριστά παιδιά του π τότε τα δύο αλφαριθμητικά είναι γειτονικά στο Κ. Έστω σ το παιδί του π που περιέχει το K’ j Διαλέγουμε το τ ως το αριστερότερο φύλλο του δέντρου που κατάγεται από το σ και ξέρουμε ότι το Ρ βρίσκεται στην πρώτη θέση του Φ τ διότι L(τ) = L(σ) = K’ j 2.Αν τα K’ j-1 και K’ j ανήκουν στο ίδιο παιδί του π, συνεχίζουμε τη σάρωση περιοδικά στο επόμενο επίπεδο

69 Τίτλος Ενότητας Prefix Search(Ρ): Αλγόριθμος Σε κάθε περίπτωση, στο τέλος της σάρωσης θα βρούμε ένα ζεύγος (τ L, j L ) που θα αντιπροσωπεύει τη θέση του αριστερότερου αλφαριθμητικού του Κ που έχει πρόθεμα Ρ Αντίστοιχα μπορούμε να βρούμε το ζεύγος (τ R, j R ) Για να απαντήσουμε στο ερώτημα Prefix Search (P) θα πρέπει να σαρώσουμε τη σειρά των φύλλων που ορίζονται από τα τ L και τ R και να φτιάξουμε λίστα από το j L -οστό αλφαριθμητικό του Φ τL έως το (j R – 1)-οστό του Φ τR

70 Τίτλος Ενότητας Απλοποιημένο String B-Tree Είναι ο συνδυασμός της B-Tree-like δομής που έχουμε με το Patricia Trie Σκοπός μας είναι να οργανώσουμε σωστά τα αλφαριθμητικά και να κάνουμε αναζητήσεις που να απαιτούν σύγκριση μόνο ενός αλφαριθμητικού του Φ π στην χειρότερη περίπτωση, σε σχέση με τις log 2 |Φ π | που χρειάζεται η απλή δυαδική αναζήτηση

Απλοποιημένο String B-Tree

72 Τίτλος Ενότητας Απλοποιημένο String B-Tree Μπορούμε να ορίσουμε το ΡΤ σε δύο βήματα : (1) Κατασκευάζουμε ένα συμπαγές Trie με τα αλφαριθμητικά του Φ π (2) Βάζουμε ετικέτα σε κάθε κόμβο του Trie με βάση το μήκος του υπό-αλφαριθμητικού που αποθηκεύεται σε αυτόν και αντικαθιστούμε κάθε αλφαριθμητικό πάνω στα κλαδιά με τον πρώτο του χαρακτήρα

73 Τίτλος Ενότητας Απλοποιημένο String B-Tree Το Patricia Trie χάνει κάποια πληροφορία σε σχέση με το συμπαγές Trie λόγω της διαγραφής των χαρακτήρων, εκτός του πρώτου, στα κλαδιά του δέντρου Βάζει Θ(Β) αλφαριθμητικά σε έναν κόμβο του B-Tree, ανεξαρτήτως του μεγέθους τους Επιτρέπει λεξικογραφικές αναζητήσεις σε έναν κόμβο, χωρίς επιπλέον προσπελάσεις του δίσκου

Παράδειγμα PT-Search

75 Τίτλος Ενότητας Παράδειγμα PT-Search Θα δούμε ένα παράδειγμα PT-Search(P, Φ π ), όπου P = “bcbabcba” Αριστερά φαίνεται η πρώτη φάση στην οποία το l αναπαριστά το δεξιότερο φύλλο Ξεκινάμε προσδιορίζοντας το κοινό πρόθεμα του αλφαριθμητικού του l και του Ρ (π.χ. ‘bcb’) και στη συνέχεια βρίσκουμε τον χαμηλότερο πρόγονο του l που έχει ετικέτα μεγαλύτερη από |’bcb’|=3 Στην συνέχεια χρησιμοποιούμε τον αταίριαστο χαρακτήρα Ρ[4] = ‘a’ για να βρούμε την ακριβή θέση του Ρ (j = 4) διασχίζοντας τα μαρκαρισμένα τόξα

76 Τίτλος Ενότητας Παράδειγμα PT-Search Συνδυάζοντας τα Patricia Tries με το B-Tree αποφεύγουμε τη δυαδική αναζήτηση στους κόμβους που περνάμε και έτσι μειώνουμε τη συνολική πολυπλοκότητα Το όριο αυτό δεν είναι ακόμα ικανοποιητικό. Ο λόγος είναι ότι σε κάθε κόμβο που έχουμε επισκεφτεί ξανασαρώνουμε (rescanning) το Ρ από την αρχή

77 Τίτλος Ενότητας Παράδειγμα PT-Search Πρέπει να σχεδιάσουμε έτσι τη διαδικασία PT-Search ώστε να εκμεταλλεύεται καλύτερα τις ιδιότητες του String B-Tree και του Patricia Trie Θα χρησιμοποιήσουμε τρεις παραμέτρους εισόδου (Ρ, Φ π, l) όπου η παράμετρος l ικανοποιεί την ιδιότητα ότι υπάρχει ένα αλφαριθμητικό στο Φ π που οι l πρώτοι χαρακτήρες του είναι ίσοι με του P Η διαδικασία PT-Search (Ρ, Φ π, l) επιστρέφει ζεύγος (j, lcp) όπου το j είναι η θέση του Ρ στο Φ π και η παράμετρος lcp είναι το μήκος του κοινού προθέματος

78 Τίτλος Ενότητας Πολυπλοκότητα Prefix Search Ανακτάμε τα αλφαριθμητικά του Κ που έχουν πρόθεμα Ρ εξετάζοντας τα φύλλα του String B-Tree που ορίζονται από τα τ L και τ R σε Ο(occ/B) προσπελάσεις στον δίσκο Το συνολικό κόστος του Prefix Search (P) είναι Ο((p + occ) / B + log B k) προσπελάσεις στον δίσκο

79 Τίτλος Ενότητας Πρόβλημα 2 : Substring Search Το πρόβλημα 2 αφορά σε μια πιο αποδοτική πράξη Substring Search(P) που αναζητά εμφανίσεις του Ρ στα αλφαριθμητικά του Δ Η αναζήτηση βασίζεται στην εύρεση υπό-αλφαριθμητικών μήκους ρ που ισούνται με το Ρ Ορίζουμε το σύνολο των επιθεμάτων ως SUF(Δ) = {δ[i, |δ|] : 1  i  |δ|, όπου δ  Δ}, το οποίο περιέχει Ν λεξικογραφικά διατεταγμένα επιθέματα

80 Τίτλος Ενότητας Πρόβλημα 2 : Substring Search Το πρόβλημά μας είναι να ανακτήσουμε όλα τα SUF(Δ) αλφαριθμητικά που έχουν πρόθεμα Ρ η πράξη Substring Search(P) στο σύνολο Δ μετασχηματίζεται σε Prefix Search(P) στο σύνολο SUF(Δ)

Παράδειγμα Substring Search

82 Τίτλος Ενότητας Παράδειγμα Substring Search P=‘at’, Δ= {‘aid’, ‘atlas’,‘atom’, ‘attenuate’, ‘car’, ‘patent’, ‘zoo’}, b = 4 και Κ={‘aid’, ‘ar’, ‘as’,..., ‘uate’, ‘zoo’} Στο συγκεκριμένο παράδειγμα έχουμε occ=4 εμφανίσεις ‘atlas’,‘atom’, ‘attenuate’ και ‘patent’ Τα επιθέματα με πρόθεμα Ρ που ανταποκρίνονται σε αυτές τις υπάρξεις έχουν τους λογικούς τους δείκτες αποθηκευμένους σε γειτονικά φύλλα του δέντρου Μπορούμε να ορίσουμε το σύνολο Κ=SUF(Δ) και το μέγεθός του k=N και να εκτελέσουμε την πράξη Prefix Search(P)

83 Τίτλος Ενότητας String B-Tree H εισαγωγή ενός μόνο αλφαριθμητικού Υ στο σύνολο Δ, όπου m = |Y|, απαιτεί την εισαγωγή όλων των m επιθεμάτων στο σύνολο SUF(Δ) σε λεξικογραφική σειρά Το πρόβλημα είναι ότι χειριζόμαστε τα m εισαγόμενα επιθέματα σαν τελείως ξεχωριστά αλφαριθμητικά και παρουσιάζεται το φαινόμενο του rescanning Επεκτείνουμε το απλοποιημένο String B-Tree εισάγοντας δύο τύπους βοηθητικών δεικτών με τους οποίους θα αποφύγουμε το rescanning κατά τη διαδικασία της ενημέρωσης

84 Τίτλος Ενότητας String B-Tree Ο ένας τύπος δείκτη είναι ο γνωστός δείκτης γονέα που ορίζεται για κάθε κόμβο Ο άλλος είναι ο succ δείκτης που ορίζεται για κάθε αλφαριθμητικό στο SUF(Δ) ως εξής : Ο succ δείκτης για το δ[i, |δ|]  SUF(Δ) οδηγεί στο φύλλο του String B-Tree που περιέχει το δ[i+1, |δ|]. Αν ισχύει i = |δ| τότε ο succ δείχνει στο ίδιο του το φύλλο (self-loop pointer)

85 Τίτλος Ενότητας Αλγόριθμος Εισαγωγής Μετά την εισαγωγή του Υ[i, m] πρέπει να ικανοποιούνται οι παρακάτω δύο συνθήκες Τα επιθέματα Υ[j, m] είναι αποθηκευμένα στο String B-Tree, για 1  j  i και το Υ[i, m] μοιράζεται τους hi πρώτους χαρακτήρες του με ένα από τα γειτονικά του αλφαριθμητικά Όλοι οι succ δείκτες είναι σωστά τοποθετημένοι για όλα τα αλφαριθμητικά στο String B-Tree εκτός από το Υ[i, m]. Αυτό σημαίνει ότι ο succ(Υ[i, m]) είναι ο μόνος εξαρτώμενος δείκτης εκτός και αν i = m οπότε και δείχνει στο ίδιο του το φύλλο

86 Τίτλος Ενότητας Αλγόριθμος Εισαγωγής Εισάγουμε τα επιθέματα του Υ στο String B-Tree αποθηκεύοντας το SUF(Δ) στην αρχή από το μεγαλύτερο στο μικρότερο Συνεχίζουμε την εισαγωγή για i = 1, 2, …, m Για i=1, βρίσκουμε τη θέση του Υ[1, m] σαρώνοντας το δέντρο όπως και στην περίπτωση του Prefix Search(Υ[i, m]) Για τα υπόλοιπα επιθέματα του Υ (i>1) χρησιμοποιούμε διαφορετική προσέγγιση για να αποφύγουμε το rescanning

87 Τίτλος Ενότητας Αλγόριθμος Εισαγωγής Όταν βρούμε τη θέση του Υ[i, m], αντί να ξεκινήσουμε από τη ρίζα, σαρώνουμε το δέντρο από το τελευταίο φύλλο που επισκεφτήκαμε Ξέρουμε ότι το Υ[i-1, m] μοιράζεται τους h i-1 πρώτους χαρακτήρες του με κάποιο από τα γειτονικά του αλφαριθμητικά Μπορούμε να πάρουμε τον δείκτη succ του γειτονικού αλφαριθμητικού, και να καταλήξουμε σε ένα φύλλο με την παρακάτω ιδιότητα : να περιέχει ένα αλφαριθμητικό που να μοιράζεται τους πρώτους max{0, h i-1 -1) χαρακτήρες με το Υ[i,m]

88 Τίτλος Ενότητας Αλγόριθμος Εισαγωγής Συνεχίζουμε την εισαγωγή εκτελώντας μια προς τα πάνω και προς τα κάτω σάρωση του String B-Tree μέχρι να φτάσουμε στο φύλλο π i που θα περιέχει τη θέση του Υ[i, m] Από τη στιγμή που μπορούμε να αποδείξουμε ότι h ι  max{0, h i-1 -1) ο αλγόριθμός μας αποφεύγει το rescanning εξετάζοντας μόνο τους χαρακτήρες του Υ στις θέσεις i + max{0, h i-1 -1), …, i + h i

89 Τίτλος Ενότητας Αλγόριθμος Εισαγωγής Ένας απ’ ευθείας χειρισμός των δεικτών parent και succ θα χρειαστεί Ο(B log B (N+m)) προσπελάσεις στον δίσκο ανά εισαγόμενο επίθεμα στην χειρότερη περίπτωση Συνολικά Σ m i=1 di = O(m log B (N + m)) προσπελάσεις στον δίσκο απαιτούνται για την εισαγωγή του Υ στο Δ Επιτυγχάνουμε ίδια απόδοση χειρότερης περίπτωσης με την εισαγωγή m ακέραιων σε ένα κανονικό Β-δέντρο

Τέλος Ενότητας

91 Τίτλος Ενότητας Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σημειώματα

93 Τίτλος Ενότητας Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0.

94 Τίτλος Ενότητας Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Μακρής Χρήστος, Περδικούρη Αικατερίνη. «Εισαγωγή στη Βιοπληροφορική. Δομές Δεικτοδότησης». Έκδοση: 1.0. Πάτρα Όλες οι εικόνες έχουν δημιουργηθεί από την κυρία Περδικούρη Αικατερίνη, εκτός αν αναφέρεται διαφορετικά. Διαθέσιμο από τη δικτυακή διεύθυνση:

95 Τίτλος Ενότητας Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

96 Τίτλος Ενότητας Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει:  το Σημείωμα Αναφοράς  το Σημείωμα Αδειοδότησης  τη δήλωση Διατήρησης Σημειωμάτων  το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.