Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεDenise Sarkis Τροποποιήθηκε πριν 10 χρόνια
1
Ο αλγόριθμος του Ukkonen Βεργούλης Θανάσης 2008
2
Το suffix trie Το suffix trie του string D=“book”. 1 3 4 2 b o o k o o k k k $ $ $ $
3
Exact String Matching (ESM) σε Suffix Trie Αναζήτηση του Q=“ok” 1 3 4 2 b o o k o o k k k $ $ $ $ Διάσχιση από τη ρίζα με βάση το query Τα φύλλα του υποδένδρου του κόμβου στον οποίο σταμάτησε η διάσχιση είναι οι απαντήσεις
4
Το suffix tree 1 3 4 2 b o o k o o k k k $$$ $ Το suffix tree του string D=“book”. Ο τρόπος αποτίμησης ESM ερωτημάτων είναι παρόμοιος με του suffix trie
5
Συμβολισμοί D: data string D: data string n = |D| n = |D| Q: query string Q: query string m = |Q| m = |Q| S[i...j]: substring of S S[i...j]: substring of S
6
Απλοϊκός τρόπος κατασκευής suffix tree 1. Εισήγαγε μία ακμή που να αντιστοιχεί σε όλο το D 2. Θέσε i=2 3. Εισήγαγε στο δένδρο το suffix D[i...n] 4. i++ 5. i==n+1? ΝΑΙ τέλος ΝΑΙ τέλος ΟΧΙ βήμα 3 ΟΧΙ βήμα 3 O(n 2 ) στη χειρότερη περίπτωση
7
Γραμμικοί αλγόριθμοι κατασκευής suffix tree 1973, P. Weiner 1973, P. Weiner 1976, E. M. McCreight 1976, E. M. McCreight 1995, E. Ukkonen 1995, E. Ukkonen
8
Προαπαιτούμενα – Το implicit suffix tree 1 2 b a n a a $ $ $ n a n a a n $ 4 $ 6 n a n a $ 3 5 1 2 b a n a a n a a a n n a n a 3 suffix tree του “banana” implicit suffix tree του “banana” n
9
Προαπαιτούμενα – Τα suffix links 1 2 b a n a a $ $ $ n a n a a n $ 4 $ 6 n a n a $ 3 5 suffix tree του “banana” με ενσωματωμένα suffix links Ένα suffix link ξεκινά από έναν κόμβο που αναπαριστά ένα stirng αw (α: χαρακτήρας) και δείχνει στον κόμβο που αναπαριστά το w Suffix links μπορούμε να βάλουμε και σε implicit suffix tree
10
Κεντρική ιδέα του αλγορίθμου του Ukkonen 1. Κατασκεύασε το implicit suffix tree για το D[1] 2. Θέσε i=2 3. Κατασκεύασε το implicit suffix tree για το D[1...i] βασιζόμενος το implicit suffix tree που έχεις υπολογίσει για το D[1...i-1] 4. i++ 5. i==n+1? ΝΑΙ Κατασκεύασε το κανονικό suffix tree και τέλος ΝΑΙ Κατασκεύασε το κανονικό suffix tree και τέλος ΟΧΙ Βήμα 3 ΟΧΙ Βήμα 3 O(n 3 ) στη χειρότερη περίπτωση
11
Κεντρική ιδέα του αλγορίθμου του Ukkonen Ο κεντρικός πυρήνας του αλγορίθμου αποτελείται από μια επαναληπτική διαδικασία. Ο κεντρικός πυρήνας του αλγορίθμου αποτελείται από μια επαναληπτική διαδικασία. Κάθε επανάληψη λέγεται «φάση». Κάθε επανάληψη λέγεται «φάση». Σε κάθε επανάληψη λαμβάνουν χώρα μια σειρά από «επεκτάσεις», έτσι ώστε από το ήδη υπάρχον implicit suffix tree να προκύψει ένα νέο. Σε κάθε επανάληψη λαμβάνουν χώρα μια σειρά από «επεκτάσεις», έτσι ώστε από το ήδη υπάρχον implicit suffix tree να προκύψει ένα νέο.
12
Κεντρική ιδέα του αλγορίθμου του Ukkonen Σε κάθε φάση, έστω i>1, του αλγορίθμου του Ukkonen γίνονται αλυσιδωτές επεκτάσεις του ήδη υπολογισμένου implicit suffix tree για το prefix D[1...i-1], ώστε στο τέλος της φάσης να έχει κατασκευαστεί το implicit suffix tree για το prefix D[1...i]. Συγκεκριμένα λαμβάνει χώρα μία επέκταση (του παλιού implicit suffix tree) για κάθε δυνατό suffix του καινούριου prefix D[1...i]. Σε κάθε φάση, έστω i>1, του αλγορίθμου του Ukkonen γίνονται αλυσιδωτές επεκτάσεις του ήδη υπολογισμένου implicit suffix tree για το prefix D[1...i-1], ώστε στο τέλος της φάσης να έχει κατασκευαστεί το implicit suffix tree για το prefix D[1...i]. Συγκεκριμένα λαμβάνει χώρα μία επέκταση (του παλιού implicit suffix tree) για κάθε δυνατό suffix του καινούριου prefix D[1...i].
13
Κανόνες επέκτασης Κανόνας 1: Αν ο αλγόριθμος φτάσει σε κάποιο φύλλο του δένδρου, τότε απλώς προστίθεται ο επιπλέον χαρακτήρας του suffix στο τέλος της ετικέτας της αντίστοιχης ακμής. Κανόνας 1: Αν ο αλγόριθμος φτάσει σε κάποιο φύλλο του δένδρου, τότε απλώς προστίθεται ο επιπλέον χαρακτήρας του suffix στο τέλος της ετικέτας της αντίστοιχης ακμής. Κανόνας 2: Αν τελειώσουν οι χαρακτήρες του τρέχοντος suffix, την ώρα που ο αλγόριθμος είναι στη μέση κάποιας ακμής ή σε κάποιο κόμβο του δένδρου, τότε ο αλγόριθμος δεν κάνει απολύτως τίποτα. Κανόνας 2: Αν τελειώσουν οι χαρακτήρες του τρέχοντος suffix, την ώρα που ο αλγόριθμος είναι στη μέση κάποιας ακμής ή σε κάποιο κόμβο του δένδρου, τότε ο αλγόριθμος δεν κάνει απολύτως τίποτα. Κανόνας 3: Αν ο αλγόριθμος φτάσει σε κάποιο σημείο του δένδρου, στο οποίο δεν υπάρχει κατάλληλος κλάδος για να ακολουθήσει, τότε στο συγκεκριμένο σημείο δημιουργεί έναν νέο κόμβο (αν δεν υπάρχει κάποιος άλλος εκεί ήδη) και κάτω από αυτόν, δημιουργεί έναν επιπλέον κλάδο που αποτελείται από μια ακμή με ετικέτα τον επιπλέον χαρακτήρα και από ένα φύλλο. Κανόνας 3: Αν ο αλγόριθμος φτάσει σε κάποιο σημείο του δένδρου, στο οποίο δεν υπάρχει κατάλληλος κλάδος για να ακολουθήσει, τότε στο συγκεκριμένο σημείο δημιουργεί έναν νέο κόμβο (αν δεν υπάρχει κάποιος άλλος εκεί ήδη) και κάτω από αυτόν, δημιουργεί έναν επιπλέον κλάδο που αποτελείται από μια ακμή με ετικέτα τον επιπλέον χαρακτήρα και από ένα φύλλο.
14
Βελτιστοποίηση του αλγορίθμου Η μέθοδος του Ukkonen, βελτιώνει την προηγούμενη κεντρική ιδέα ώστε τελικά να έχει πολυπλοκότητα χειρότερης περίπτωσης O(n). Η μέθοδος του Ukkonen, βελτιώνει την προηγούμενη κεντρική ιδέα ώστε τελικά να έχει πολυπλοκότητα χειρότερης περίπτωσης O(n). Για να το κάνει αυτό υιοθετεί μια σειρά από τρικ. Για να το κάνει αυτό υιοθετεί μια σειρά από τρικ.
15
Τρικ 1: Δείκτης προς το φύλλο του πλήρους string H πρώτη επέκταση κάθε φάσης γίνεται για το πλήρες τρέχον prefix του data string. H πρώτη επέκταση κάθε φάσης γίνεται για το πλήρες τρέχον prefix του data string. Η συγκεκριμένη επέκταση πάντα θα ακολουθεί τον κανόνα 1, και πάντα το φύλλο θα είναι συγκεκριμένο (το φύλλο 1). Η συγκεκριμένη επέκταση πάντα θα ακολουθεί τον κανόνα 1, και πάντα το φύλλο θα είναι συγκεκριμένο (το φύλλο 1). Οπότε μπορούμε να αποφύγουμε την διάσχιση του δένδρου αν προσθέσουμε έναν δείκτη που από τη ρίζα μας κατευθύνει απευθείας στο συγκεκριμένο φύλλο. Οπότε μπορούμε να αποφύγουμε την διάσχιση του δένδρου αν προσθέσουμε έναν δείκτη που από τη ρίζα μας κατευθύνει απευθείας στο συγκεκριμένο φύλλο. Αυτό θα μειώσει τον χρόνο κατάβασης (και συνεπώς το χρόνο της συγκεκριμένης επέκτασης), από O(i)=O(n) σε Ο(1). Αυτό θα μειώσει τον χρόνο κατάβασης (και συνεπώς το χρόνο της συγκεκριμένης επέκτασης), από O(i)=O(n) σε Ο(1).
16
Τρικ 2: Χρήση των suffix links Αντί μετά από κάθε επέκταση ο αλγόριθμος να ξανανεβαίνει στη ρίζα για την επόμενη, ανεβαίνει απλώς ως τον πρώτο προγονικό κόμβο που έχει suffix link, και στη συνέχεια να το ακολουθεί. Αντί μετά από κάθε επέκταση ο αλγόριθμος να ξανανεβαίνει στη ρίζα για την επόμενη, ανεβαίνει απλώς ως τον πρώτο προγονικό κόμβο που έχει suffix link, και στη συνέχεια να το ακολουθεί. Αν δεν υπάρχει τέτοιος προγονικός κόμβος, τότε καταλήγει στη ρίζα. Αν δεν υπάρχει τέτοιος προγονικός κόμβος, τότε καταλήγει στη ρίζα.
17
Τρικ 2: Χρήση των suffix links i ssi ssip p s si ssip p 1 8 52 7 4 6 3 9 mississip: mississip, ississip, ssissip, sissip, issip, ssip, sip, ip, p mississip p
18
Τρικ 3: Το τρικ του skip και count x a x ???? v s(v) a b r a a b r a Θα πρέπει να υπάρχει ένα μονοπάτι “abra” στο υποδένδρο του s(v) Μόνο μια ακμή ξεκινά από «a» |a|=1<|abra| παράκαμψε στον κόμβο στο τέλος της ακμής Αναζήτηση για : μ ήκος : abra 4 braa 31 |br|=2<|bra| παράκαμψε στον κόμβο στο τέλος της ακμής |ac|=2≥|a| παράκαμψε στον χαρακτήρα 1 (“a”) και τέλος c
19
Πολυπλοκότητα ως τώρα Κάθε φάση να εκτελείται με O(n) συγκρίσεις Κάθε φάση να εκτελείται με O(n) συγκρίσεις Η εκτέλεση του αλγορίθμου να γίνεται με O(n 2 ) συγκρίσεις. Η εκτέλεση του αλγορίθμου να γίνεται με O(n 2 ) συγκρίσεις.
20
Τρικ 4: Συμπίεση ετικετών και ακμών 1 3 4 2 b o o k o o k k k $$$ $ 1 3 4 2 1,5 2,2 4,5 3,5 το μέγιστο πλήθος ακμών του suffix tree είναι 2n-1 Ο(n) χώρος για αποθήκευση δένδρου δυνατή η υλοποίηση σε Ο(n) χρόνο.
21
Τρικ 5: Εάν εφαρμοστεί ο κανόνας 2 μία φορά, σταματά η φάση 1 2 m i s s s i s i s s i s s s i s s 4 s i s s 3 mississ, ississ, ssiss, siss, iss, ss, s mississippi φάση 7, επέκταση 5 Εφαρμογή κανόνα 2
22
Τρικ 5: Εάν εφαρμοστεί ο κανόνας 2 μία φορά, σταματά η φάση Εφαρμογή του κανόνα 2 συνεπάγεται απραξία Εφαρμογή του κανόνα 2 συνεπάγεται απραξία ΑΡΑ αν σε κάποια φάση εμφανιστεί επέκταση στην οποία εφαρμοστεί ο κανόνας 2, τότε ο αλγόριθμος μπορεί να σταματήσει τη συγκεκριμένη φάση και να ξεκινήσει την επόμενη. ΑΡΑ αν σε κάποια φάση εμφανιστεί επέκταση στην οποία εφαρμοστεί ο κανόνας 2, τότε ο αλγόριθμος μπορεί να σταματήσει τη συγκεκριμένη φάση και να ξεκινήσει την επόμενη.
23
Τρικ 6: Ο καθολικός δείκτης Αν σε κάποια φάση του αλγορίθμου κατασκευαστεί κάποιο φύλλο, έστω j, το οποίο αντιστοιχεί σε κάποιο suffix D[j...i] του αντίστοιχου prefix D[1...i] του data sequence, τότε σε όλες τις επόμενες φάσεις του αλγορίθμου στην αντίστοιχη επέκταση j θα εφαρμόζεται πάντα ο κανόνας 1, γιατί αυτός είναι ο κανόνας που επεκτείνει τα φύλλα. Αν σε κάποια φάση του αλγορίθμου κατασκευαστεί κάποιο φύλλο, έστω j, το οποίο αντιστοιχεί σε κάποιο suffix D[j...i] του αντίστοιχου prefix D[1...i] του data sequence, τότε σε όλες τις επόμενες φάσεις του αλγορίθμου στην αντίστοιχη επέκταση j θα εφαρμόζεται πάντα ο κανόνας 1, γιατί αυτός είναι ο κανόνας που επεκτείνει τα φύλλα.
24
Τρικ 6: Ο καθολικός δείκτης Κάθε φάση ξεκινά με μια σειρά από επεκτάσεις στις οποίες εφαρμόζονται οι κανόνες 1 και 3. Κάθε φάση ξεκινά με μια σειρά από επεκτάσεις στις οποίες εφαρμόζονται οι κανόνες 1 και 3. Αν στη φάση i, η τελευταία επέκταση κατά την οποία εφαρμόζεται κάποιος από τους κανόνες 1 ή 3 συμβολιστεί με j i, τότε: Αν στη φάση i, η τελευταία επέκταση κατά την οποία εφαρμόζεται κάποιος από τους κανόνες 1 ή 3 συμβολιστεί με j i, τότε: Στην επόμενη φάση (i+1), όλες οι επεκτάσεις από το 1 ως το j i θα ακολουθήσουν τον κανόνα 1 Στην επόμενη φάση (i+1), όλες οι επεκτάσεις από το 1 ως το j i θα ακολουθήσουν τον κανόνα 1 Στην επόμενη φάση, (i+1), το πλήθος των επεκτάσεων που θα ακολουθήσουν τον κανόνα 1 ή τον κανόνα 3 θα είναι περισσότερες ή ίσες απ’ ότι στην προηγούμενη, δηλαδή j i <=j i +1. Στην επόμενη φάση, (i+1), το πλήθος των επεκτάσεων που θα ακολουθήσουν τον κανόνα 1 ή τον κανόνα 3 θα είναι περισσότερες ή ίσες απ’ ότι στην προηγούμενη, δηλαδή j i <=j i +1.
25
Τρικ 6: Ο καθολικός δείκτης ΑΡΑ σε κάθε φάση i ο αλγόριθμος γνωρίζει ότι για τις πρώτες επεκτάσεις (από 1 ως ji-1) θα εφαρμοστεί ο κανόνας 1. ΑΡΑ σε κάθε φάση i ο αλγόριθμος γνωρίζει ότι για τις πρώτες επεκτάσεις (από 1 ως ji-1) θα εφαρμοστεί ο κανόνας 1. Επίσης ο αλγόριθμος γνωρίζει ότι ο index τέλους της αντίστοιχης ακμής φύλλου θα είναι πάντα ίσος με i. Επίσης ο αλγόριθμος γνωρίζει ότι ο index τέλους της αντίστοιχης ακμής φύλλου θα είναι πάντα ίσος με i. Οπότε αντί ο αλγόριθμος να τρέχει τις συγκεκριμένες επεκτάσεις και για καθεμία να αυξάνει κατά 1 τον αντίστοιχο δείκτη τέλους, μπορεί να τον αντικαταστήσει με έναν δείκτη που δείχνει σε κάποια καθολική θέση. Οπότε αντί ο αλγόριθμος να τρέχει τις συγκεκριμένες επεκτάσεις και για καθεμία να αυξάνει κατά 1 τον αντίστοιχο δείκτη τέλους, μπορεί να τον αντικαταστήσει με έναν δείκτη που δείχνει σε κάποια καθολική θέση.
26
Παραγωγή του suffix tree από το implicit suffix tree Αυτό γίνεται απλώς με την αντικατάσταση των καθολικών δεικτών e με την τιμή n από όλες τις ακμές που καταλήγουν σε φύλλα. Αυτό γίνεται απλώς με την αντικατάσταση των καθολικών δεικτών e με την τιμή n από όλες τις ακμές που καταλήγουν σε φύλλα.
27
Τελική πολυπλοκότητα Τελικά μετά την εφαρμογή όλων των τρικ ο αλγόριθμος καταλήγει να έχει πολυπλοκότητα O(n). Τελικά μετά την εφαρμογή όλων των τρικ ο αλγόριθμος καταλήγει να έχει πολυπλοκότητα O(n).
28
Τέλος
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.