Δομές Δεδομένων. Δημήτρης Μιχαήλ. Συμβολοσειρές. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο



Σχετικά έγγραφα
Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Insert (P) : Προσθέτει ένα νέο πρότυπο P στο λεξικό D. Delete (P) : Διαγράφει το πρότυπο P από το λεξικό D

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n.

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κεφ.11: Ευρετήρια και Κατακερματισμός

Διδάσκων: Κωνσταντίνος Κώστα

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Κεφάλαιο 10 Ψηφιακά Λεξικά

Προγραμματισμός Ι (ΗΥ120)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Ο Αλγόριθμος FP-Growth

Κεφάλαιο 5 ο : Αλγόριθµοι Σύγκρισης Ακολουθιών Βιολογικών εδοµένων

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ανάλυση Συσχέτισης IΙ

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Κατακερματισμός. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

ΤΕΧΝΟΛΟΓΙΕΣ ΠΟΛΥΜΕΣΩΝ

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δομές Δεδομένων Εργαστηριακή Άσκηση Γκόγκος Νίκος Α.Μ.: 4973 Έτος: 3 ο gkogkos@ceid.upatras.gr. Εισαγωγικά:

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αλγόριθμοι και Πολυπλοκότητα

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Διδάσκων: Παναγιώτης Ανδρέου

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δομές Δεδομένων και Αλγόριθμοι

Πληροφορική 2. Δομές δεδομένων και αρχείων

Αποθήκες Δεδομένων και Εξόρυξη Δεδομένων:

Union Find, Λεξικό. Δημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αλγόριθμοι και Πολυπλοκότητα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διδάσκων: Παναγιώτης Ανδρέου

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

Δυναμικός Κατακερματισμός

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Κεφάλαιο 3 ο : Εισαγωγή στο δέντρο επιθεµάτων (Suffix Tree) και στις Εφαρµογές του

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

9. Κόκκινα-Μαύρα Δέντρα

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

ΗΥ360 Αρχεία και Βάσεις εδοµένων

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Τομές Γραφήματος. Γράφημα (μη κατευθυνόμενο) Συνάρτηση βάρους ακμών. Τομή : Διαμέριση του συνόλου των κόμβων σε δύο μη κενά σύνολα

Αλγόριθμοι και Πολυπλοκότητα

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Κεφάλαιο 6 Ουρές Προτεραιότητας

Κατανεμημένα Συστήματα Ι

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

Αλγόριθμοι και Πολυπλοκότητα

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Περιεχόμενα. Περιεχόμενα

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Αποθήκες Δεδομένων και Εξόρυξη Δεδομένων:

Αλγόριθμοι Ταξινόμησης Μέρος 4

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Διάλεξη 14: Δέντρα IV - B-Δένδρα

Transcript:

Δομές Δεδομένων Συμβολοσειρές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Συμβολοσειρές Συμβολοσειρές και προβλήματα που αφορούν συμβολοσειρές εμφανίζονται τόσο συχνά που αξίζουν ξεχωριστή μελέτη όσο αναφορά τις δομές δεδομένων. Χαροκόπειο Πανεπιστήμιο 2/33

Συμβολοσειρές Μία συμβολοσειρά είναι ουσιαστικά ένας πίνακας ακεραίων. Συνήθως όμως επιλέγουμε να διαχωρίζουμε μεταξύ ενός πίνακα ακεραίων και μιας συμβολοσειράς χαρακτήρων από ένα αλφάβητο. Χαροκόπειο Πανεπιστήμιο 3/33

Αλφάβητο Έστω Σ ένα γνησίως διατεταγμένο (συνήθως πεπερασμένο) σύνολο, που ονομάζεται το αλφάβητο. Τα στοιχεία του Σ ονομάζονται χαρακτήρες. Για δύο χαρακτήρες a Σ και b Σ γράφουμε α < β για να συμβολίσουμε πως ο χαρακτήρας α είναι μικρότερος από τον β. Χαροκόπειο Πανεπιστήμιο 4/33

Συμβολοσειρές Μία συμβολοσειρά S από το Σ ορίζεται ως μία ακολουθία χαρακτήρων a Σ. Γράφουμε S για να συμβολίσουμε το μήκος της S (αριθμό χαρακτήρων). Συμβολίζουμε με S i τον i-οστό χαρακτήρα της S. Γράφουμε S ij για την υποσυμβολοσειρά της S από τον χαρακτήρα i έως και τον χαρακτήρα j. Εάν S, T είναι δύο συμβολοσειρές, συμβολίζουμε με ST την παράθεση τους. Χαροκόπειο Πανεπιστήμιο 5/33

Σύγκριση Συμβολοσειρών Έστω a, b Σ και S, T δύο συμβολοσειρές πάνω στο Σ. Γράφουμε as < bt ή η συμβολοσειρά as είναι λεξικογραφικά μικρότερη της bt εάν a < b ή a = b και S < T. Η κενή λέξη ϵ θεωρείται μικρότερη από οποιαδήποτε μη-κενή συμβολοσειρά. Επίσης γράφουμε S T για να συμβολίσουμε πως S < T ή S = T. Χαροκόπειο Πανεπιστήμιο 6/33

Πρόθεμα, επίθεμα, υποσυμβολοσειρές πρόθεμα (prefix) Ένα πρόθεμα μιας συμβολοσειράς S προκύπτει αφαιρώντας μηδέν ή περισσότερους χαρακτήρες από το τέλος της S. π.χ η συμβολοσειρά ban είναι πρόθεμα της banana επίθεμα (suffix) Ένα επίθεμα μιας συμβολοσειράς S προκύπτει αφαιρώντας μηδέν ή περισσότερους χαρακτήρες από την αρχή της S. π.χ η συμβολοσειρά nana είναι επίθεμα της banana Χαροκόπειο Πανεπιστήμιο 7/33

Πρόθεμα, επίθεμα, υποσυμβολοσειρές υποσυμβολοσειρά (substring) Μια υποσυμβολοσειρά μιας συμβολοσειράς S προκύπτει αφαιρώντας ένα πρόθεμα και ένα επίθεμα από την S. γνήσιο πρόθεμα, επίθεμα ή υποσυμβολοσειρά Έστω X ένα πρόθεμα, επίθεμα ή υποσυμβολοσειρά μιας συμβολοσειράς S. Ονομάζετε γνήσιο(α) σε περίπτωση που X ϵ και X S. Χαροκόπειο Πανεπιστήμιο 8/33

Υποακολουθία υποακολουθία (subsequence) Οποιαδήποτε συμβολοσειρά προκύπτει σβήνοντας μηδέν ή περισσότερα σύμβολα, όχι υποχρεωτικά συνεχόμενα, από την συμβολοσειρά S. π.χ η συμβολοσειρά baaa είναι υποακολουθία της banana Χαροκόπειο Πανεπιστήμιο 9/33

Ταίριασμα Συμβολοσειράς String-Matching Problem Το πρόβλημα Ταιριάσματος Προτύπου ή Συμβολοσειράς (Pattern-Matching ή String-Matching Problem) αφορά τον εντοπισμό όλων των εμφανίσεων μίας δεδομένης συμβολοσειράς-λέξης-προτύπου σε μία άλλη συμβολοσειρά-κείμενο συνήθως μεγαλύτερου μήκους. Χαροκόπειο Πανεπιστήμιο 10/33

Ταίριασμα Συμβολοσειράς String-Matching Problem Το πρόβλημα Ταιριάσματος Προτύπου ή Συμβολοσειράς (Pattern-Matching ή String-Matching Problem) αφορά τον εντοπισμό όλων των εμφανίσεων μίας δεδομένης συμβολοσειράς-λέξης-προτύπου σε μία άλλη συμβολοσειρά-κείμενο συνήθως μεγαλύτερου μήκους. Χωρίζεται σε δύο βασικές κατηγορίες, το ακριβές και το προσεγγιστικό ταίριασμα. Χαροκόπειο Πανεπιστήμιο 10/33

Ακριβές Ταίριασμα Συμβολοσειράς Δεδομένου μίας συμβολοσειράς κειμένου T μήκους n και μίας συμβολοσειράς προτύπου P μήκους m n, βρείτε όλες τις εμφανίσεις του προτύπου P στο κείμενο T. Χαροκόπειο Πανεπιστήμιο 11/33

Ακριβές Ταίριασμα Συμβολοσειράς Δεδομένου μίας συμβολοσειράς κειμένου T μήκους n και μίας συμβολοσειράς προτύπου P μήκους m n, βρείτε όλες τις εμφανίσεις του προτύπου P στο κείμενο T. Η προφανής λύση αναζήτησης πέρνει O(mn) συγκρίσεις αφού αναζητά όλο το πρότυπο για κάθε θέση του κειμένου. Πιο προχωρημένες τεχνικές λύνουν το πρόβλημα σε O(m + n) συγκρίσεις στην χειρότερη περίπτωση που είναι το βέλτιστο. Χαροκόπειο Πανεπιστήμιο 11/33

Στατικό Κείμενο - Πολλά Ερωτήματα Πολλές φορές το κείμενο είναι στατικό και το γνωρίζουμε εξαρχής και πρέπει να απαντήσουμε σε πολλά ερωτήματα που εμφανίζονται ένα ένα. Ευρετήριο Σε αυτή την περίπτωση έχει νόημα να ξοδέψουμε χρόνο ώστε να χτίσουμε κάποιο ευρετήριο του κειμένου T ώστε να απαντάμε τα ερωτήματα αποδοτικά. Χαροκόπειο Πανεπιστήμιο 12/33

Βασικές Δομές Δεδομένων για Συμβολοσειρές Trie (prefix tree) Patricia Trie (radix tree) Suffix Tree Suffix Array Χαροκόπειο Πανεπιστήμιο 13/33

Trie Retrieval Ένα δέντρο αναζήτησης σχεδιασμένο αποκλειστικά για κλειδιά συμβολοσειρές. E. Fredkin. Trie Memory. Comm. ACM 3(9) pp490-499 Sept. 1960. Χαροκόπειο Πανεπιστήμιο 14/33

Trie Retrieval a p k b p p r e a i w a n Παράδειγμα με κλειδιά apple l e i c h c r i s a n apricot peach pear o a kiwi t kiwis banana Χαροκόπειο Πανεπιστήμιο 15/33

Trie Retrieval a p k b l e p p r i c o t h c e i a w r i s a n a n a Ιδιότητες Κάθε κόμβος έχει το πολύ Σ παιδιά. Κάθε ακμή έχει ως ετικέτα έναν χαρακτήρα Σ. Κάθε κόμβος αντιστοιχεί με ένα κλειδί, την παράθεση των χαρακτήρων στο μονοπάτι από την ρίζα στον κόμβο. Χαροκόπειο Πανεπιστήμιο 15/33

Trie Retrieval a p k b l e p p r i c o t h c e i a w r i s a n a n a Ιδιότητες Η ρίζα αντιστοιχεί στην κενή συμβολοσειρά. Όλοι οι απόγονοι ενός κόμβου v έχουν κοινό πρόθεμα το κλειδί του κόμβου v. Οι τιμές που αντιστοιχούν στα κλειδιά αποθηκεύονται επάνω στους κόμβους. Χαροκόπειο Πανεπιστήμιο 15/33

Trie Αναζήτηση 1 tree Trie Search ( tree root, string P [ k.. m ] ) 2 { 3 if ( root is leaf ) 4 return root ; 5 6 tree child = root. child ( P [ k ] ) ; 7 if ( child == null ) 8 return null ; 9 10 return Trie Search ( child, P [ k + 1.. m ] ) 11 } Ο αλγόριθμος αναζήτησης απλά ακολουθεί το μονοπάτι στο δέντρο ξεκινώντας με Trie-Search(root, P[0..m]). Χαροκόπειο Πανεπιστήμιο 16/33

Trie Εισαγωγή και διαγραφή Εισαγωγή Ακολουθούμε το μονοπάτι μέχρι είτε να βρούμε το κλειδί ή να βρούμε null. Εαν βρούμε null δημιουργούμε ένα καινούριο παρακλάδι με το υπόλοιπο της συμβολοσειράς. Διαγραφή Αναζητάμε την συμβολοσειρά και ακολουθούμε την ανάποδη διαδικασία. Διαγράφουμε κόμβους από το τέλος προς την ρίζα όσο δεν υπάρχει κάποιο άλλο παρακλάδι. Χαροκόπειο Πανεπιστήμιο 17/33

Trie Τύπος Κόμβου και Έυρεση Παιδιού Ο κόμβος σε ένα Trie μπορεί να περιέχει μέχρι και Σ παιδιά. Ποια αναπαράσταση να χρησιμοποιήσουμε και πόσο χρόνο χρειάζεται η λειτουργία t.child(i); Πίνακας με Σ δείκτες: χάσιμο χώρου, αλλά O(1) για child(c). Πίνακας κατακερματισμού: μικρότερο χάσιμο χώρου, child(c) σε αναμενόμενο O(1) Λίστα από δείκτες: λίγος χώρος, αλλά O( Σ ) για child(c) Ισοζυγισμένο δυαδικό δέντρο αναζήτησης: λίγος χώρος και O(log Σ ) για child(c) Χαροκόπειο Πανεπιστήμιο 18/33

Trie Ανάλυση Μέγεθος: O(N) στην χειρότερη περίπτωση όπου N ο συνολικός αριθμός χαρακτήρων των n συμβολοσειρών που είναι στο trie. Αναζήτηση, εισαγωγή και διαγραφή συμβολοσειράς μεγέθους m: O(m Σ ), O(m log Σ ) ή O(m) ανάλογα με είδος κόμβου. Ένα ισοζυγισμένο δυαδικό δέντρο αναζήτησης με κλειδιά συμβολοσειρές θα ήθελε O(m log n). Παρατήρηση: Οι αλυσίδες κόμβων με ένα παιδί δεν είναι αποδοτικές. Χαροκόπειο Πανεπιστήμιο 19/33

Patricia Trie Το όνομα Patricia προέρχεται από το ακρώνυμο PATRICIA: Practical Algorithm To Retrieve Information Coded In Alphanumeric Χαροκόπειο Πανεπιστήμιο 20/33

Patricia Trie Το όνομα Patricia προέρχεται από το ακρώνυμο PATRICIA: Practical Algorithm To Retrieve Information Coded In Alphanumeric Επιλύει το πρόβλημα των tries λόγω των κόμβων με ένα μοναδικό παιδί. Αντικαθιστούμε μία αλυσίδα από κόμβους με ένα παιδί, με μία ακμή που έχει συμβολοσειρά ως ετικέτα. Χαροκόπειο Πανεπιστήμιο 20/33

Patricia Trie Οι ακμές μπορούν πλέον να περιέχουν συμβολοσειρές αντί μόνο έναν χαρακτήρα. a p k b p e i a p r a w n l i c r i a ap pea kiwi banana e c o h s n a ple ricot ch r s t Κάθε μη-φύλλο εκτός από την ρίζα έχει τουλάχιστον δύο παιδιά. Χαροκόπειο Πανεπιστήμιο 21/33

Ταίριασμα Συμβολοσειράς Πρόβλημα Δεδομένου μίας συμβολοσειράς κειμένου T μήκους n και μίας συμβολοσειράς προτύπου P μήκους m n, βρείτε όλες τις εμφανίσεις του προτύπου P στο κείμενο T. T = "bananas" P = "na" Επαναδιατύπωση Θέλουμε να βρούμε όλα τα επιθέματα (suffixes) του T που περιέχουν το πρότυπο P ως πρόθεμα (prefix). bananas ananas nanas anas nas as s Χαροκόπειο Πανεπιστήμιο 22/33

Επιθεματικά Δέντρα Suffix Tree Ένα επιθεματικό (Suffix) δέντρο για μία συμβολοσειρά T είναι ένα Patricia Trie που περιέχει όλα τα επιθέματα της T. Χαροκόπειο Πανεπιστήμιο 23/33

Επιθεματικά Δέντρα Suffix Tree nas na s a s bananas na nas s s bananas ananas nanas anas nas as s Χαροκόπειο Πανεπιστήμιο 24/33

Επιθεματικά Δέντρα Suffix Tree Ένα επιθεματικό δέντρο μίας συμβολοσειράς-κειμένου T μεγέθους n χαρακτήρων μπορεί να κατασκευαστεί σε χρόνο O(n) εάν το μέγεθος του αλφάβητου είναι πολυωνυμικό [Farach 1997]. Χαροκόπειο Πανεπιστήμιο 25/33

Επιθεματικά Δέντρα Suffix Tree Πόσο χρόνο πέρνει η αναζήτηση μίας συμβολοσειράς (προτύπο) P μεγέθους m χαρακτήρων εάν έχουμε ήδη κατασκευάσει ένα επιθεματικό δέντρο για την συμβολοσειρά (κείμενο) T μεγέθους n; Χαροκόπειο Πανεπιστήμιο 26/33

Επιθεματικά Δέντρα Suffix Tree Πόσο χρόνο πέρνει η αναζήτηση μίας συμβολοσειράς (προτύπο) P μεγέθους m χαρακτήρων εάν έχουμε ήδη κατασκευάσει ένα επιθεματικό δέντρο για την συμβολοσειρά (κείμενο) T μεγέθους n; Η αναζήτηση είναι όπως στα Patricia Trees και πέρνει χρόνο O(m) ανεξάρτητο από το μέγεθος του κειμένου T. Χαροκόπειο Πανεπιστήμιο 26/33

Επιθεματικά Δέντρα Suffix Tree Πολλές επιπλέον λειτουργίες μπορούν να γίνουν αποδοτικά με την χρήση επιθεματικών δέντρων. Για περισσότερες πληροφορίες Gusfield, Dan: Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. USA: Cambridge University Press, 1997. ISBN 0-521-58519-8. Χαροκόπειο Πανεπιστήμιο 27/33

Επιθεματικός Πίνακας Suffix Array Ένας επιθεματικός πίνακας (suffix array) είναι ένας πίνακας ακεραίων με τις αρχικές θέσεις των επιθεμάτων μίας συμβολοσειράς T ταξινομημένες κατά λεξικογραφική σειρά. Χαροκόπειο Πανεπιστήμιο 28/33

Επιθεματικός Πίνακας Suffix Array Η λέξη bananas έχει 8 επιθέματα μαζί με την κενή συμβολοσειρά 1 2 3 4 5 6 7 8 b a n a n a s Χαροκόπειο Πανεπιστήμιο 29/33

Επιθεματικός Πίνακας Suffix Array Η λέξη bananas έχει 8 επιθέματα μαζί με την κενή συμβολοσειρά 1 2 3 4 5 6 7 8 b a n a n a s Κατασκευάζουμε έναν πίνακα που στην θέση i περιέχει την θέση που ξεκινάει το επίθεμα που είναι i-οστό λεξικογραφικά. anas ananas as bananas nanas nas s 8 4 2 6 1 3 5 7 Χαροκόπειο Πανεπιστήμιο 29/33

Επιθεματικός Πίνακας Suffix Array Ένας επιθεματικός πίνακας μπορεί να κατασκευαστεί σε χρόνο O(n) όπου n είναι ο αριθμός χαρακτήρων της συμβολοσειράς εισόδου. Σε περίπτωση που υπάρχει ήδη ένα επιθεματικό δέντρο, μπορούμε να κατασκευάσουμε έναν επιθεματικό πίνακα με μία λεξιγραφική διάσχιση κατά βάθος, δηλαδή μία διάσχιση κατά βάθος όπου επισκεπτόμαστε τα παιδιά ενός κόμβου με λεξικογραφική σειρά. Χαροκόπειο Πανεπιστήμιο 30/33

Ταίριασμα Συμβολοσειράς Suffix Array Πρόβλημα Θέλουμε να βρούμε όλα τα επιθέματα (suffixes) του T που περιέχουν το πρότυπο P ως πρόθεμα (prefix). Τα επιθέματα είναι ταξινομημένα λεξικογραφικά και άρα όλα τα επιθέματα που ψάχνουμε εμφανίζονται σειριακά. Κάνουμε δύο δυαδικές αναζητήσεις για να βρούμε την μικρότερη θέση i του πίνακα όπου το P είναι πρόθεμα του i-oστού επιθέματος και την μεγαλύτερη θέση j όπου το P είναι πρόθεμα του j-οστού επιθέματος. Χαροκόπειο Πανεπιστήμιο 31/33

Ταίριασμα Συμβολοσειράς Suffix Array Πρόβλημα Θέλουμε να βρούμε όλα τα επιθέματα (suffixes) του T που περιέχουν το πρότυπο P ως πρόθεμα (prefix). Κάθε δυαδική αναζήτηση χρειάζεται χρόνο O(m log n) αφού κάθε σύγκριση μπορεί να πάρει χρόνο O(m) και έχουμε n προθέματα. Χρησιμοποιώντας λίγο παραπάνω χώρο, ο χρόνο αυτός μπορεί να βελτιωθεί σε O(m + log n). Χαροκόπειο Πανεπιστήμιο 32/33

Βιβλιογραφία Gusfield, Dan: Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. USA: Cambridge University Press, 1997. Richard Durbin, Sean R. Eddy, Anders Krogh, Graeme Mitchison: Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. Cambridge University Press, 1998. Χαροκόπειο Πανεπιστήμιο 33/33