Μεταπτυχιακή Διπλωματική Εργασία. «Τεχνικές Δεικτοδότησης Συστημάτων Ανάκτησης Πληροφορίας με τη χρήση Wavelet Trees» Κατσίπη Δήμητρα ΑΜ: 741

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Μεταπτυχιακή Διπλωματική Εργασία. «Τεχνικές Δεικτοδότησης Συστημάτων Ανάκτησης Πληροφορίας με τη χρήση Wavelet Trees» Κατσίπη Δήμητρα ΑΜ: 741"

Transcript

1 Μεταπτυχιακό Πρόγραμμα: «Επιστήμη και Τεχνολογία Υπολογιστών» Μεταπτυχιακή Διπλωματική Εργασία «Τεχνικές Δεικτοδότησης Συστημάτων Ανάκτησης Πληροφορίας με τη χρήση Wavelet Trees» Κατσίπη Δήμητρα ΑΜ: 741 Επιβλέπων: Μακρής Χρήστος, Αναπληρωτής Καθηγητής Τριμελής Επιτροπή: Μακρής Χρήστος, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Η/Υ και Πληροφορικής Βούλγαρης Σπυρίδωνας, Επίκουρος Καθηγητής, Τμήμα Μηχανικών Η/Υ και Πληροφορικής Χατζηλυγερούδης Ιωάννης, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πάτρα, Σεπτέμβριος 2017

2 Copyright All rights reserved 2017 Κατσίπη Δήμητρα, Με την επιφύλαξη παντός δικαιώματος. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Το περιεχόμενο αυτής της εργασίας δεν απηχεί απαραίτητα τις απόψεις του Τμήματος, του Επιβλέποντα, ή της επιτροπής που την ενέκρινε. Υπεύθυνη Δήλωση Βεβαιώνω ότι είμαι συγγραφέας αυτής της μεταπτυχιακής διπλωματικής εργασίας, και ότι κάθε βοήθεια την οποία είχα για την προετοιμασία της είναι πλήρως αναγνωρισμένη και αναφέρεται στην διπλωματική εργασία. Επίσης έχω αναφέρει τις όποιες πηγές από τις οποίες έκανα χρήση δεδομένων, ιδεών, ή λέξεων, είτε αυτές αναφέρονται ακριβώς είτε παραφρασμένες. Επίσης, βεβαιώνω ότι αυτή η διπλωματική εργασία προετοιμάστηκε από εμένα προσωπικά ειδικά για τις απαιτήσεις του μεταπτυχιακού προγράμματος σπουδών «Επιστήμη και τεχνολογία υπολογιστών» του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών. 1

3 Στη μητέρα μου Σούλα για την στήριξη και την αγάπη της 2

4 Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά τον αναπληρωτή καθηγητή κ. Χρήστο Μακρή, για την πολύτιμη βοήθεια, καθοδήγηση και υποστήριξη που μου προσέφερε, όλα αυτά τα χρόνια. Επίσης ευχαριστώ τον αναπληρωτή καθηγητή κ. Χατζηλυγερούδη και τον επίκουρο καθηγητή κ. Βούλγαρη που δέχθηκαν να είναι στην τριμελή επιτροπή εξέτασης μου. Ευχαριστώ θερμά και τον κ. Χρήστο Ευθυμιόπουλο Ερευνητή στην Ακαδημία Αθηνών που πάντα πίστευε σε μένα και με παρότρυνε να ξεκινήσω το μεταπτυχιακό που ολοκλήρωσα. Τέλος, θα ήθελα να εκφράσω ένα μεγάλο ευχαριστώ στη μητέρα μου και στο Διονύση, για την υπομονή και κατανόηση που έδειξαν και τη συμπαράσταση που μου προσέφεραν όλο αυτό το διάστημα. 3

5 Πίνακας Περιεχομένων ΠΡΟΛΟΓΟΣ... 7 EXECUTIVE SUMMARY... 8 ΚΕΦΑΛΑΙΟ 1 - ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ ΑΝΑΚΤΗΣΗ ΠΛΗΡΟΦΟΡΙΑΣ ΜΟΝΤΕΛΑ ΑΝΑΚΤΗΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Γραμμική Σάρωση (Linear Scan) Δεικτοδότηση των εγγράφων Μοντέλο Ανάκτησης με Δυαδική Λογική (Boolean Retrieval Model) Ανεστραμμένο Αρχείο (Inverted File) Απάντηση Δυαδικών Ερωτημάτων (Boolean Queries) Merging Algorithm Αυτοδεικτοδοτούμενο Κείμενο (Self Indexed Text) ΚΕΦΑΛΑΙΟ 2 - WAVELET TREES ΓΕΝΙΚΗ ΠΕΡΙΓΡΑΦΗ ΕΙΔΗ WAVELET TREES Normal Shaped Huffman Shaped Alphabetic Weight Balanced ( Hu Tucker Shaped) ΚΕΦΑΛΑΙΟ 3 - ΑΝΑΠΑΡΑΣΤΑΣΕΙΣ ΣΥΛΛΟΓΗΣ ΚΕΙΜΕΝΩΝ ΚΑΙ WAVELET TREES ΣΥΛΛΟΓΗ ΚΕΙΜΕΝΩΝ INVERTED INDEX Χτίσιμο Wavelet Trees SELF INDEXED TEXT Χτίσιμο Wavelet Trees ΚΕΦΑΛΑΙΟ 4 - ΥΠΑΡΧΟΥΣΕΣ ΤΕΧΝΙΚΕΣ ΔΕΙΚΤΟΔΟΤΗΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΑΝΑΚΤΗΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΜΕ ΤΗ ΧΡΗΣΗ WAVELET TREES ΕΙΣΑΓΩΓΗ ΤΕΧΝΙΚΕΣ ΓΙΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΥΛΛΟΓΗΣ ΚΕΙΜΕΝΟΥ ΜΕ INVERTED INDEX Γενικές έννοιες και σημειογραφία Χτίσιμο του Wavelet Tree Βοηθητικές Λειτουργίες Υπολογισμός Aρχικής Θέσης όρου Υπολογισμός λίστας στην οποία ανήκει η θέση Λειτουργίες Εύρεση οποιασδήποτε τιμής Εξαγωγή οποιουδήποτε τμήματος Εύρεση ενός μετά από επίσκεψη ενός, για Απάντηση Ερωτημάτων Ένωσης Τομή τμημάτων δύο λιστών, δύο όρων Τομή τμημάτων λιστών, όρων ΤΕΧΝΙΚΕΣ ΓΙΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΥΛΛΟΓΗΣ ΚΕΙΜΕΝΟΥ ΜΕ SELF INDEXED TEXT Γενικές έννοιες και σημειογραφία Χτίσιμο του Wavelet Tree Βοηθητικές Λειτουργίες Υπολογισμός κειμένου στο οποίο ανήκει η θέση - Λειτουργία Υπολογισμός Aρχικής Θέσης κειμένου - Λειτουργία

6 Document Reporting Λειτουργίες Απάντηση Ερωτημάτων Ένωσης A Simple Worst-Case Algorithm for Conjunctive Queries An Adaptive Algorithm for Conjunctive Queries ΚΕΦΑΛΑΙΟ 5 - ΕΠΕΚΤΑΣΗ ΤΕΧΝΙΚΩΝ ΔΕΙΚΤΟΔΟΤΗΣΗΣ ΚΑΙ ΣΥΝΔΥΑΣΜΟΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΥΛΛΟΓΗΣ ΚΕΙΜΕΝΟΥ ΜΕ INVERTED INDEX Εφαρμογή τεχνικών αυτοδεικτοδοτούμενου κειμένου σε Wavelet Tree ανεστραμμένου αρχείου Χρήση Αλγορίθμου «A Simple Worst-Case Algorithm for Conjunctive Queries» Χρήση Αλγορίθμου «An Adaptive Algorithm for Conjunctive Queries» Χρήση Λειτουργιών Wavelet Tree ανεστραμμένου αρχείου σε συνδυασμό με τον κλασσικό αλγόριθμο merging algorithm Εύρεση ενός μετά από επίσκεψη ενός, για και ΤΕΧΝΙΚΕΣ ΓΙΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΥΛΛΟΓΗΣ ΚΕΙΜΕΝΟΥ ΜΕ SELF INDEXED TEXT Εφαρμογή τεχνικών ανεστραμμένου αρχείου σε Wavelet Tree αυτοδεικτοδοτούμενου κειμένου Χρήση Αλγορίθμου «Εξαγωγή οποιουδήποτε τμήματος» Χρήση Αλγορίθμου «Τομή τμημάτων» Χρήση Λειτουργιών Wavelet Tree αυτοδεικτοδοτούμενου κειμένου σε συνδυασμό με τον κλασσικό αλγόριθμο merging algorithm ΣΥΓΚΡΙΣΗ ΤΕΧΝΙΚΩΝ ΕΥΡΕΣΗΣ STARTING POSITION Δομή Self indexed Μέθοδος υπολογισμού starting position με $ Δομή Inverted index Μέθοδος υπολογισμού starting position με extra bit vector Διαφορές των δύο μεθόδων Αξιολόγηση των δύο μεθόδων και συνδυασμός ΚΕΦΑΛΑΙΟ 6 - ΚΑΤΑΝΕΜΗΜΕΝΗ ΕΠΕΚΤΑΣΗ - ΠΟΛΙΤΙΚΕΣ CACHING ΕΙΣΑΓΩΓΗ A SIMPLE GREEDY ALGORITHM ΥΛΟΠΟΙΗΣΗ SIMPLE GREEDY ALGORITHM ΜΕ ΧΡΗΣΗ WAVELET TREES MAIN WAVELET TREE Συλλογή κειμένων ως Self Indexed Text Χτίσιμο του Main Wavelet Tree Αλγόριθμος για την παραγωγή Projection Lists Παραλλαγή του αλγορίθμου A Simple Worst-Case Algorithm for Conjunctive Queries Παραλλαγή του αλγορίθμου An Adaptive Algorithm for Conjunctive Queries Συλλογή κειμένων ως Inverted Index Χτίσιμο του Main Wavelet Tree Αλγόριθμος για την παραγωγή Projection Lists QUERIES WAVELET TREE Αντιμετώπιση συλλογής query ως self indexed συλλογή κειμένων Χτίσιμο του δένδρου Υπολογισμός αριθμού queries στα οποία υπάρχει ένα ζεύγος Παραλλαγή του αλγορίθμου A Simple Worst-Case Algorithm for Conjunctive Queries Παραλλαγή του αλγορίθμου An Adaptive Algorithm for Conjunctive Queries Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος terms, για ζεύγη ταυτόχρονα Αντιμετώπιση συλλογής query ως Inverted Index

7 Χτίσιμο του δένδρου Υπολογισμός αριθμού queries στα οποία υπάρχουν ζεύγη όρων Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος όρων Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος, για ζεύγη ταυτόχρονα Αποθήκευση και διαχείριση ζευγών terms Δομή Α ΚΕΦΑΛΑΙΟ 7 - ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΓΕΝΙΚΑ ΔΕΔΟΜΕΝΑ ΑΠΟΤΕΛΕΣΜΑΤΑ Τύποι Wavelet Tree Σύγκριση μεθόδων υπολογισμού Αρχικής Θέσης (Starting Position) Απόδοση και σύγκριση αλγορίθμων Αλγόριθμοι αυτοδεικτοδοτούμενου κειμένου Μέθοδος υπολογισμού αρχικής θέσης με Χαρακτήρα $ Μέθοδος υπολογισμού αρχικής θέσης με Extra Bit Vector Αλγόριθμοι Ανεστραμμένου Αρχείου Μέθοδος υπολογισμού αρχικής θέσης Extra Bit Vector Μέθοδος υπολογισμού αρχικής θέσης Χαρακτήρας $ ΚΕΦΑΛΑΙΟ 8 ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΙΔΕΕΣ ΓΙΑ ΜΕΛΛΟΝΤΙΚΗ ΈΡΕΥΝΑ ΣΥΜΠΕΡΑΣΜΑΤΑ ΙΔΕΕΣ ΓΙΑ ΜΕΛΛΟΝΤΙΚΗ ΈΡΕΥΝΑ ΠΑΡΑΡΤΗΜΑ Α ΥΛΟΠΟΙΗΣΗ ΠΑΡΑΡΤΗΜΑ Β ΤΥΠΟΙ WAVELET TREE ΚΑΙ ΙΔΙΑΙΤΕΡΟΤΗΤΕΣ Β.1 Normal Shaped Wavelet Tree Β.1.1 Normal Shaped με δεδομένα ενός Inverted Index για Full Text Retrieval Β.1.2 Normal Shaped με δεδομένα ενός Inverted Index για Ranked Retrieval Β.2 Weight Balanced Wavelet Tree (WBWT) Β.2.1 WBWT με δεδομένα ενός Inverted Index για Full Text Retrieval Β.2.2 WBWT με δεδομένα ενός Inverted Index για Ranked Retrieval Β.3 Huffman Shaped Wavelet Tree Β.3.1 Huffman Shaped με δεδομένα ενός Inverted Index για Full Text Retrieval Β.3.2 Huffman Shaped με δεδομένα ενός Inverted Index για Ranked Retrieval ΑΝΑΦΟΡΕΣ

8 Πρόλογος Τα Wavelet Trees είναι δενδρικές δομές δεδομένων που αρχικά χρησιμοποιήθηκαν για συμπίεση κειμένου. Στη συνέχεια χρησιμοποιήθηκαν για τη δεικτοδότηση κειμένου και την ανάκτηση πληροφορίας. Στην προκείμενη διπλωματική εργασία παρουσιάζονται αρχικά δύο βασικές τεχνικές ανάκτησης πληροφορίας με τη χρήση Wavelet Trees. Η πρώτη τεχνική αφορά τη χρήση ανεστραμμένων αρχείων (inverted files). Η δεύτερη, αφορά τη χρήση αυτοδεικτοδοτούμενων κειμένων (self indexed texts). Οι δύο αυτές τεχνικές διαχειρίζονται την απάντηση ερωτημάτων καθώς και την υλοποίηση λειτουργιών χρήσιμων στην ανάκτηση πληροφορίας κειμένων. Σκοπός της εργασίας είναι η υλοποίηση των αλγορίθμων των παραπάνω τεχνικών, η βελτιστοποίηση και η επέκταση τους. Με τον τρόπο αυτό, επιτυγχάνεται η εφαρμογή τους σε τρία είδη Wavelet Tree (Normal Shaped, Weight Balanced και Huffman Shaped). Επιπλέον, προτείνονται τρόποι με τους οποίους μπορούν να χρησιμοποιηθούν και να συνδυαστούν οι παραπάνω αλγόριθμοι στις δύο διαφορετικές τεχνικές και πραγματοποιείται πειραματική αξιολόγηση όλων των παραπάνω τεχνικών και σχημάτων, καθώς και μια κατανεμημένη επέκταση τους για πολιτικές caching. 7

9 Executive Summary Wavelet Trees are binary tree data structures originally used for text compression. They were then used for text indexing and information retrieval. In the present master thesis, two basic information retrieval techniques are presented using Wavelet Trees. The first technique involves the use of inverted files. The second involves the use of self-indexed texts. These two techniques handle query answering as well as the implementation of functions useful in information retrieval. The aim of the thesis is to implement the algorithms of the above techniques, to optimize them and to extend them. The techniques and algorithms are applied on three types of Wavelet Trees (Normal Shaped, Weight Balanced and Huffman Shaped). In addition, we propose ways in which these algorithms can be used and combined with each other using the two different text indexing techniques. An experimental evaluation of all the above techniques and schemas is presented, as well as a distributed extension for caching policies. 8

10 ΚΕΦΑΛΑΙΟ 1 - Εισαγωγικές έννοιες 1.1 Ανάκτηση πληροφορίας Η επιστήμη της Ανάκτησης Πληροφορίας (Information Retrieval), [1] ασχολείται με την αναπαράσταση, την αποθήκευση, την οργάνωση και την πρόσβαση σε πληροφοριακά αντικείμενα (συνήθως έγγραφα) μη δομημένης μορφής (συνήθως κείμενο), μέσα σε μεγάλες συλλογές (συνήθως αποθηκευμένες σε ηλεκτρονικούς υπολογιστές). Η αναπαράσταση και η οργάνωση των πληροφοριακών αντικειμένων πρέπει να γίνονται με τέτοιο τρόπο ώστε να παρέχουν στον εκάστοτε χρήστη εύκολη πρόσβαση στην πληροφορία που τον ενδιαφέρει. O καθορισμός της πληροφοριακής ανάγκης του χρήστη, είναι ένα δύσκολο πρόβλημα. Το παραπάνω πρόβλημα αντικατοπτρίζεται για παράδειγμα, στην έκφραση της ακόλουθης πληροφοριακής ανάγκης στο χώρο του Διαδικτύου. Ανάκτησε όλες τις σελίδες που περιέχουν πληροφορίες για κινηματογραφικές ταινίες στις οποίες: (1) Πρωταγωνιστεί ο Κέρκ Ντάγκλας, (2) είναι γουέστερν, (3) υπάρχουν σε DVD. Σελίδες σχετικές με το παραπάνω ερώτημα θα πρέπει να περιέχουν πληροφορίες, για τους συντελεστές της ταινίας, κριτικές καθώς και περίληψη του σεναρίου. Είναι εμφανής η δυσκολία έκφρασης της παραπάνω πληροφοριακής ανάγκης με πληρότητα, χρησιμοποιώντας το περιβάλλον διεπαφής μιας Διαδικτυακής Μηχανής Αναζήτησης. Συνεπώς ο χρήστης πρέπει να είναι σε θέση να επαναδιατυπώσει την πληροφοριακή ανάγκη, σε μορφή ερωτήματος (query), το οποίο να μπορεί να γίνεται αντικείμενο επεξεργασίας από την μηχανή αναζήτησης (ή το σύστημα Ανάκτησης Πληροφορίας). Η μετατροπή αυτή συνήθως γίνεται με τη χρήση, ενός συνόλου λέξεων κλειδιών (keywords) ή αλλιώς όρων δεικτοδότησης (index terms), που συνοψίζουν την περιγραφή της πληροφοριακής ανάγκης του χρήστη. Δοθέντος του ερωτήματος του χρήστη, το ζητούμενο από ένα σύστημα Ανάκτησης Πληροφορίας είναι να ανακτήσει πληροφορία, η οποία μπορεί να είναι χρήσιμη ή σχετική προς την πληροφοριακή ανάγκη. Υπάρχουν δύο βασικές κατηγορίες ανάκτησης πληροφορίας: Ranked Retrieval (Ανάκτηση με Κατάταξη) η οποία εστιάζει στην ανάκτηση εγγράφων τα οποία είναι πιο «σχετικά» σε ένα ερώτημα με βάση κάποιο κριτήριο δηλαδή κάποιο βάρος (weight). Για παράδειγμα, ένας δημοφιλής τύπος για τον υπολογισμό βάρους είναι ο, όπου ο αριθμός των φορών που ένα ερώτημα εμφανίζεται σε ένα κείμενο, και, όπου το πλήθος των κειμένων της συλλογής ενώ 9

11 (doc. freq) ο αριθμός των διακριτών κειμένων στα οποία υφίσταται το ερώτημα. Full Text Retrieval (Απλή Ανάκτηση Κειμένων) κατά την οποία η εκτέλεση ερωτημάτων δεν πραγματοποιείται με βάση κάποιο συγκεκριμένο κριτήριο. Τα έγγραφα που ανακτούνται είναι απλά τα έγγραφα στα οποία εμφανίζονται όλοι οι όροι του ερωτήματος χωρίς να έχει σημασία ο αριθμός των εμφανίσεων τους ή οποιοδήποτε άλλο κριτήριο. 1.2 Μοντέλα ανάκτησης Πληροφορίας Γραμμική Σάρωση (Linear Scan) Στην ενότητα αυτή γίνεται η υπόθεση ότι εξετάζεται μια συλλογή Αγγλικών κειμένων που περιέχει όλα τα έργα του Shakespeare. Γίνεται η υπόθεση ότι πρέπει να απαντηθεί το ερώτημα «Ποια έργα του Shakespeare περιέχουν τις λέξεις Brutus ΚΑΙ Caesar KAI OXI Calprunia;». Ένας τρόπος για να γίνει αυτό θα ήταν να διαβαστούν όλα τα κείμενα και να δημιουργηθεί μια λίστα η οποία να περιέχει τα κείμενα που περιέχουν τις λέξεις Brutus και Caesar αλλά όχι αυτά που περιέχουν τη λέξη Calprunia. Η απλούστερη μορφή ανάκτησης κειμένων που μπορεί να πραγματοποιήσει ένας υπολογιστής είναι γραμμική σάρωση (linear scan) των κειμένων[1]. Αυτή είναι μια αρκετά αποδοτική διαδικασία δεδομένης της ταχύτητας των σημερινών Η/Υ αλλά για σχετικά μικρό όγκο πληροφορίας. Στην περίπτωση μιας μικρής συλλογής (π.χ. με ένα εκατομμύριο λέξεις) η γραμμική σάρωση θα αρκούσε για την απάντηση ερωτημάτων. Υπάρχουν όμως περιπτώσεις που: Απαιτείται σάρωση πολύ μεγάλων συλλογών κειμένου με μεγάλη ταχύτητα. Υπάρχει ανάγκη για πιο πολύπλοκα ερωτήματα. Πχ το ερώτημα «Romans NEAR countrymen» όπου NEAR (ΚΟΝΤΑ) σημαίνει αναζήτηση των κειμένων που περιέχουν τις λέξεις «Romans» και «countrymen» σε κοντινή απόσταση μέσα στο κείμενο, ορισμένη από το χρήστη (π.χ. να υπάρχουν και οι δύο όροι σε απόσταση 5 λέξεων). Ανάγκη για Ranked Retrieval (Ανάκτηση με Κατάταξη) κατά την οποία αναζητείται η απάντηση που καλύπτει περισσότερο τις ανάγκες του χρήστη με βάση κάποια κριτήρια (πχ η συχνότητα της εμφάνισης μιας λέξης στο κείμενο). Στις περιπτώσεις αυτές απαιτείται μια πιο αποδοτική διαδικασία αναζήτησης Δεικτοδότηση των εγγράφων Για την ικανοποίηση των απαιτήσεων που αναφέρθηκαν στην προηγούμενη ενότητα, χρησιμοποιείται μια μέθοδος η οποία ονομάζεται «δεικτοδότηση των εγγράφων» 10

12 και εφαρμόζεται πριν από την ανάκτηση. Η δεικτοδότηση εγγράφων μπορεί να έχει πολλές μορφές και η υλοποίηση της να βασίζεται σε πολλά μοντέλα Μοντέλο Ανάκτησης με Δυαδική Λογική (Boolean Retrieval Model) Το Μοντέλο Ανάκτησης με Δυαδική Λογική [1] είναι ένα μοντέλο ανάκτησης πληροφορίας με το οποίο μπορεί να απαντηθεί οποιοδήποτε ερώτημα του οποίου οι όροι έχουν εκφραστεί δυαδικά, δηλαδή οι όροι εκφράζονται ως τελεσταίοι των τελεστών AND, OR και NOT. Το μοντέλο αυτό αντιμετωπίζει κάθε έγγραφο απλά ως ένα σύνολο λέξεων. Χρησιμοποιώντας το παράδειγμα της συλλογής των έργων του Shakespeare θα μελετηθεί το Μοντέλο Ανάκτησης με Δυαδική Λογική (Boolean Retrieval Model). Γίνεται η υπόθεση ότι καταγράφεται για κάθε έγγραφο (εδώ για κάθε έργο του Shakespeare) εάν περιέχει κάθε λέξη από το σύνολο των διακριτών λέξεων που έχουν χρησιμοποιηθεί σε όλα τα έγγραφα (π.χ. στην συλλογή που εξετάζεται έχουν χρησιμοποιηθεί περίπου λέξεις). Το αποτέλεσμα είναι ένας δυαδικός πίνακας εμφανίσεων (incidence matrix) που εκφράζει την ύπαρξη ή όχι των λέξεων στα έγγραφα όπως φαίνεται στην Εικόνα 1.1. Οι όροι (terms) είναι οι δεικτοδοτημένες μονάδες (indexed units) οι οποίες είναι συνήθως λέξεις, όπως στο παράδειγμα που περιγράφεται. Ο πίνακας της Εικόνας 1.1 αποτελείται από διανύσματα που εκφράζουν σε ποια έγγραφα βρίσκεται κάθε λέξη ή ποιες λέξεις εμφανίζονται σε κάθε έγγραφο. Για την απάντηση του ερωτήματος «Brutus AND Caesar AND NOT Calpurnia» χρησιμοποιούνται τα διανύσματα των λέξεων Brutus (110100), Caesar (110111) και Calpurnia (010000). Αρχικά υπολογίζεται το συμπλήρωμα του τελευταίου και μετά γίνεται η πράξη του λογικού AND μεταξύ τους. Δηλαδή: AND AND = Άρα η απάντηση του ερωτήματος που τέθηκε, είναι το έγγραφο που βρίσκεται στην πρώτη και την τέταρτη στήλη. Δηλαδή τα έγγραφα που περιέχουν τις λέξεις «Brutus», «Caesar» αλλά όχι και τη λέξη «Calprurnia» είναι τα «Antony and Cleopatra» και το «Hamlet». 11

13 Εικόνα Ανεστραμμένο Αρχείο (Inverted File) Tο Ανεστραμμένο Αρχείο ή Ανεστραμμένο Λεξικό (Inverted File ή Inverted Index) [1], είναι ίσως η πιο δημοφιλής μέθοδος δεικτοδότησης κειμένων, η οποία θα χρησιμοποιηθεί και στην τρέχουσα διπλωματική εργασία. Ονομάζεται έτσι λόγω του ότι για κάθε όρο του λεξιλογίου του συνόλου των εγγράφων, δημιουργείται μια λίστα με τα έγγραφα στα οποία εμφανίζεται ο όρος αυτός (ανεστραμμένη λίστα). Τα πλεονεκτήματα του είναι ότι εξοικονομεί πολύ χώρο στη μνήμη και δεν περιέχει περιττή πληροφορία. Αν συγκριθεί με τη δομή του δυαδικού πίνακα εμφανίσεων που περιγράφηκε στην προηγούμενη ενότητα είναι ξεκάθαρο ότι υπερτερεί. Αν υποθέσουμε ότι εξετάζεται μια συλλογή που περιέχει έγγραφα της οποίας το λεξιλόγιο έχει μέγεθος (αριθμός διακριτών όρων), ο δυαδικός πίνακας εμφανίσεων έχει περίπου μισό τρισεκατομμύριο καταχωρίσεις (0 και 1). Αν θεωρηθεί ότι κάθε έγγραφο έχει μέγεθος λέξεις τότε οι άσσοι μέσα στον πίνακα είναι το πολύ 1 δισεκατομμύριο. Άρα το 99,8% των κελιών θα είναι μηδενικά. Έτσι είναι προτιμότερο να γίνει χρήση κάποιας μεθόδου που καταγράφει μόνο την πληροφορία για τις εμφανίσεις των όρων στα έγγραφα και όχι την πλεονάζουσα πληροφορία. Αυτός είναι ο βασικός σκοπός της χρήσης ανεστραμμένων αρχείων. Η κύρια ιδέα ενός ανεστραμμένου αρχείου εμφανίζεται στην Εικόνα

14 Εικόνα 1.2: Τα δύο μέρη ενός ανεστραμμένου αρχείου. Το Λεξικό (Dictionary) και οι Εμφανίσεις (Postings) που αποτελούνται από Λίστες Εμφανίσεων (Posting Lists). Ένα ανεστραμμένο αρχείο αποτελείται από ένα Λεξικό Όρων (Dictionary ή Lexicon) ή Λεξιλόγιο (Vocabulary). Έπειτα, για κάθε όρο έχει δημιουργηθεί μια Λίστα Εμφανίσεων (Posting List) ή Ανεστραμμένη Λίστα (Inverted List) στην οποία έχει γίνει καταγραφή των κειμένων στα οποία υπάρχει εμφάνιση του κάθε όρου. Κάθε στοιχείο της λίστας αυτής ονομάζεται Εμφάνιση (Posting) και εκφράζει ένα κείμενο στο οποίο εμφανίζεται ο αντίστοιχος όρος. Το κείμενο αναπαριστάται συνήθως με κάποιο Αναγνωριστικό Εγγράφου Document ID (docid) το οποίο εκφράζεται με κάποιο αριθμό. Σε κάποιες μορφές ανεστραμμένων αρχείων η λίστα αυτή περιέχει και επιπλέον πληροφορίες όπως τις θέσεις του εγγράφου στις οποίες εμφανίζεται ο όρος, τη συχνότητα εμφάνισης του στο έγγραφο, κλπ. Επίσης, το ανεστραμμένο αρχείο μπορεί να περιέχει και κάποια στατιστικά όπως το πλήθος των εγγράφων στα οποία εμφανίζεται ένας όρος, τις συνολικές εμφανίσεις ενός όρου κλπ. Όλες οι λίστες εμφανίσεων μαζί, ονομάζονται Εμφανίσεις (Postings). Στην Εικόνα 1.2 εμφανίζεται η βασική δομή ενός ανεστραμμένου αρχείου. Το λεξικό είναι ταξινομημένο αλφαβητικά και κάθε λίστα εμφανίσεων έχει ταξινομηθεί με βάση τα Document IDs. Αφού παρουσιάστηκε η βασική δομή του ανεστραμμένου αρχείου, παρακάτω δίνεται ένα παράδειγμα δημιουργίας του. Στην Εικόνα 1.3 παρουσιάζεται η συλλογή κειμένων από την οποία θα δημιουργηθεί το Ανεστραμμένο Αρχείο. Αυτά είναι το Κείμενο 1 (Doc1) με docid=1 και το Κείμενο 2 (Doc2) με docid=2. Εικόνα

15 Στην Εικόνα 1.4 εμφανίζεται η διαδικασία δημιουργίας ενός ανεστραμμένου αρχείου. Η εν λόγω εικόνα αποτελείται από τρία μέρη (από αριστερά προς τα δεξιά). Το πρώτο μέρος εκφράζει το αρχικό στάδιο δημιουργίας όπου αρχικά έχει γίνει διάσπαση των εγγράφων σε λέξεις. Στο στάδιο αυτό υπάρχουν δύο στήλες. Η πρώτη (με τίτλο «term») περιέχει τις λέξεις με τη σειρά που βρίσκονται στο κείμενο των εγγράφων και η δεύτερη (με τίτλο «docid») το αναγνωριστικό του κειμένου στο οποίο εμφανίζονται. Στο δεύτερο μέρος έχει γίνει ταξινόμηση των λιστών με βάση την αλφαβητική σειρά των όρων. Πρέπει να παρατηρηθεί ότι στο πρώτο και το δεύτερο στάδιο οι λίστες περιέχουν πολλές εμφανίσεις των όρων (πχ ο όρος was εμφανίζεται 2 φορές). Το τρίτο μέρος εκφράζει το τελευταίο στάδιο δημιουργίας του ανεστραμμένου αρχείου. Στην πρώτη στήλη (με τίτλο «term doc.freq.») εμφανίζονται οι όροι (term) και το πλήθος των εγγράφων στα οποία εμφανίζονται (doc. Freq.) και στη δεύτερη στήλη (με τίτλο «posting lists») υπάρχουν οι αντίστοιχες λίστες εμφανίσεων. Εικόνα 1.4 Σχετικά με το είδος της Ανάκτησης Πληροφορίας, στα ανεστραμμένα αρχεία με χρήση ranked retrieval, εκτός από τις ανεστραμμένες λίστες αποθηκεύεται και το πλήθος των εγγράφων στα οποία εμφανίζεται ο κάθε όρος. Τα περιεχόμενα των ανεστραμμένων 14

16 λιστών συνήθως ταξινομούνται κατά φθίνουσα σειρά με βάση το πλήθος αυτό. (Παράρτημα Α) Στην περίπτωση χρήσης Full Text Retrieval τα περιεχόμενα των ανεστραμμένων λιστών ταξινομούνται συνήθως με βάση το Document ID Απάντηση Δυαδικών Ερωτημάτων (Boolean Queries) Merging Algorithm Στην ενότητα αυτή περιγράφεται ο τρόπος με τον οποίο μπορεί να γίνει εκμετάλλευση της δομής του ανεστραμμένου αρχείου για την απάντηση δυαδικών ερωτημάτων [1]. Έστω ότι πρέπει να απαντηθεί το ερώτημα «Brutus AND Calpurnia» χρησιμοποιώντας το ανεστραμμένο αρχείο της Εικόνας 1.4. Τα βήματα που πρέπει να ακολουθηθούν είναι: 1.Εντοπισμός του όρου Brutus στο Λεξικό. 2.Ανάκτηση της λίστας εμφανίσεων του. 3.Εντοπισμός του όρου Calpurnia στο Λεξικό. 4. Ανάκτηση της λίστας εμφανίσεων του. 5.Τομή (Intersection) των δύο λιστών. Η λειτουργία της Τομής (Intersection) ή Συγχώνευσης (Merging) είναι πολύ σημαντική. Η τομή δύο λιστών αφορά την εύρεση των κοινών στοιχείων τους με γρήγορο και αποδοτικό τρόπο. Ένας απλός αλλά αποδοτικός τρόπος για την τομή λιστών είναι με τη χρήση του Αλγορίθμου Συγχώνευσης (Merging Algorithm) όπως φαίνεται στην Εικόνα 1.5. Η συγχώνευση πραγματοποιείται με τη λειτουργία του λογικού KAI (AND). Εικόνα 1.5: Αλγόριθμος για την τομή δύο λιστών εμφανίσεων και. 15

17 Για την υλοποίηση του αλγορίθμου αυτού απαιτείται η διατήρηση ενός δείκτη σε κάθε μια από τις λίστες και η ταυτόχρονη διαπέραση των λιστών. Ο χρόνος διαπέρασης είναι γραμμικός σε σχέση με τον συνολικό αριθμό των στοιχείων των λιστών. Για την τομή μιας λίστας, σε κάθε βήμα του αλγορίθμου γίνεται σύγκριση των 2 docid στα οποία δείχνουν οι δύο δείκτες. Αν είναι τα ίδια τότε το docid αυτό μπαίνει στη λίστα του αποτελέσματος και οι δύο δείκτες αυξάνονται κατά ένα. Αν δεν είναι ίδια τότε αυξάνεται κατά ένα μόνο ο δείκτης ο οποίος δείχνει στο μικρότερο docid. Πολυπλοκότητα: Έστω ότι οι το μήκος των λιστών εμφανίσεων είναι και. Η τομή πραγματοποιείται σε λειτουργίες. Γενικά, η πολυπλοκότητα της απάντησης ερωτημάτων είναι όπου είναι ο αριθμός των εγγράφων της συλλογής. Για τη χρήση αυτού του αλγορίθμου είναι σημαντικό να πραγματοποιηθεί ταξινόμηση των λιστών με ένα συγκεκριμένο κριτήριο. Μια αριθμητική ταξινόμηση με βάση τα docid είναι μια καλή λύση. Ο αλγόριθμος αυτός μπορεί να επεκταθεί για την τομή πολλών λιστών. Το μόνο που χρειάζεται να γίνει είναι να ταξινομηθούν οι λίστες εμφανίσεων με βάση το μέγεθος τους. Αρχικά γίνεται τομή των δύο μικρότερων λιστών και μετά τομή της λίστας του αποτελέσματος με την μικρότερη από τις υπόλοιπες λίστες. Με αυτό τον τρόπο οι ενδιάμεσες λίστες αποτελεσμάτων θα έχουν το πολύ, μέγεθος όσο η πρώτη (μικρότερη) λίστα που εξετάστηκε. Έτσι απαιτείται η ελάχιστη δυνατή εργασία με το ελάχιστο δυνατό κόστος. Για παράδειγμα αν έπρεπε να απαντηθεί το ερώτημα «Brutus AND Caesar AND Calpurnia» (πάλι με βάση το ανεστραμμένο αρχείο της Εικόνας 1.4) θα έπρεπε να απαντηθεί ως «(Calpurnia AND Brutus) AND Caesar» γιατί η σειρά των λιστών των όρων με βάση το μέγεθος τους (από τη μικρότερη προς τη μεγαλύτερη) είναι Calpurnia, Brutus και Caesar. Στο σημείο αυτό φαίνεται ξεκάθαρα γιατί υπάρχει ανάγκη για διατήρηση στατιστικών όπως το πλήθος των εγγράφων στα οποία εμφανίζεται ένας όρος Αυτοδεικτοδοτούμενο Κείμενο (Self Indexed Text) Η δεύτερη μέθοδος δεικτοδότησης κειμένων, η οποία θα χρησιμοποιηθεί στην τρέχουσα διπλωματική εργασία είναι το Aυτοδεικτοδοτούμενο Κείμενο (Self Indexed Text) [4]. Ονομάζεται έτσι λόγω του ότι αρχικά δημιουργείται το λεξιλόγιο ενός συνόλου κειμένων και κάθε λέξη αποκτά ένα ξεχωριστό αναγνωριστικό αριθμό (termid). Στη συνέχεια κάθε κείμενο της συλλογής αναπαριστάται από termids αντί για τις ίδιες τις λέξεις. Η Εικόνα 1.6 απεικονίζει τη δημιουργία ενός Aυτοδεικτοδοτούμενου Κειμένου. Στο πρώτο μέρος εμφανίζονται τα κείμενα που χρησιμοποιούνται για την παραγωγή του, στο δεύτερο εμφανίζεται η δημιουργία των αντιστοιχίσεων κάθε λέξης ανά μοναδικό termid και στο τρίτο μέρος εμφανίζεται το Aυτοδεικτοδοτούμενο Κείμενο που δημιουργήθηκε: 16

18 Εικόνα 1.6 Η χρησιμότητα καθώς και ο τρόπος που μπορεί να χρησιμοποιηθεί το Self Indexed Text θα αναλυθεί σε επόμενες ενότητες. 17

19 ΚΕΦΑΛΑΙΟ 2 - Wavelet Trees 2.1 Γενική Περιγραφή Ένα wavelet tree [5,2] μιας ακολουθίας ενός διατεταγμένου αλφαβήτου είναι ένα διατεταγμένο αυστηρά δυαδικό δένδρο του οποίου τα φύλλα έχουν επισημανθεί με τα διακριτά σύμβολα του σε σειρά από αριστερά προς τα δεξιά και του οποίου οι εσωτερικοί κόμβοι αποθηκεύουν δυαδικά αλφαριθμητικά (bit vectors). Τo bit vector της ρίζας περιέχει bits και καθένα από αυτά περιέχει την τιμή ή. Αυτή η τιμή εξαρτάται από το αν ο αντίστοιχος χαρακτήρας του συνόλου ανήκει σε φύλλο του που βρίσκεται στο αριστερό ή στο δεξί υποδένδρο. Για κάθε εσωτερικό κόμβο του, το υποδένδρο που έχει τη ρίζα του στο είναι και το ίδιο ένα wavelet tree της υπό ακολουθίας του η οποία περιέχει τις εμφανίσεις των χαρακτήρων των φύλλων του στο. Για παράδειγμα, αν και στα φύλλα στο αριστερό υποδένδρο του αντιστοιχούν οι χαρακτήρες και, τότε το bit vector της ρίζας περιέχει, το αριστερό υποδένδρο είναι ένα wavelet tree για το αλφαριθμητικό και το δεξί υποδένδρο είναι ένα wavelet tree για το αλφαριθμητικό ενώ τα φύλλα του αντιστοιχούν στους χαρακτήρες και. Αυτό εμφανίζεται στην Εικόνα 2.1: Εικόνα 2.1 Τα Wavelet Trees υποστηρίζουν την προσπέλαση οποιουδήποτε από τα αποθηκευμένα στοιχεία του και την αποδοτική απάντηση ερωτημάτων rank και select queries. Πιο αναλυτικά υποστηρίζουν τις λειτουργίες: Το -οστό στοιχείο της ακολουθίας, δηλαδή το. Ο αριθμός των εμφανίσεων του συμβόλου στο. Η θέση της -οστής εμφάνισης του συμβόλου στο. Πολυπλοκότητα: Το κόστος σε χρόνο για κάθε μια από τις λειτουργίες αυτές είναι όπου το μέγεθος του αλφαβήτου. Οι Αλγόριθμοι κάθε Λειτουργίας παρατίθενται ως κάτωθι: 18

20 Αλγόριθμος : Στο wavelet tree μιας ακολουθίας, η λειτουργία επιστρέφει το -οστό στοιχείο της ακολουθίας, δηλαδή το. Λαμβάνοντας υπόψη ότι είναι ο κόμβος της ρίζας του wavelet tree, είναι το αριστερό παιδί του κόμβου και είναι το δεξί παιδί του κόμβου ο αλγόριθμος περιγράφεται ως: Αλγόριθμος : Στο wavelet tree μιας ακολουθίας, η λετουργία επιστρέφει, δηλαδή τον αριθμό των εμφανίσεων του συμβόλου στο. Λαμβάνοντας υπόψη ότι είναι ο κόμβος της ρίζας του wavelet tree, είναι το αριστερό παιδί του κόμβου και είναι το δεξί παιδί του κόμβου ο αλγόριθμος περιγράφεται ως: Αλγόριθμος : Στο wavelet tree μιας ακολουθίας, η λετουργία επιστρέφει, δηλαδή τη θέση της -οστής εμφάνισης του συμβόλου στο. Λαμβάνοντας υπόψη ότι είναι ο κόμβος της ρίζας του wavelet tree, είναι το αριστερό παιδί του κόμβου και είναι το δεξί παιδί του κόμβου ο αλγόριθμος περιγράφεται ως: 19

21 Αναλυτικά παραδείγματα των τριών Λειτουργιών εμφανίζονται στην Εικόνα 2.2 Εικόνα

22 Σε κάθε κόμβο του Wavelet Tree, ο bit vector αποθηκεύεται επίσης σε μια δομή κατάλληλη για την προσπέλαση οποιουδήποτε από τα στοιχεία του και την αποδοτική απάντηση ερωτημάτων rank και select τα οποία ορίζονται ομοίως ως: Το -οστό bit του bitvector Ο αριθμός των εμφανίσεων του bit στο Η θέση της -οστής εμφάνισης του bit στο. Πολυπλοκότητα: [2] Χώρος bits όπου n το μέγεθος της ακολουθίας. Χρόνος υλοποίησης όπου u, τα διακριτά σύμβολα της ακολουθίας. Το κόστος σε χρόνο για κάθε μια από τις λειτουργίες αυτές είναι. 2.2 Είδη Wavelet Trees Τα Wavelet Trees που θα χρησιμοποιηθούν στην παρούσα διπλωματική εργασία χωρίζονται σε τρεις κατηγορίες ανάλογα με τον τρόπο που χτίζονται. Αυτές οι κατηγορίες είναι τα Normal Shaped Wavelet Trees, τα Alphabetic Weight Balanced Wavelet Trees καθώς και τα Huffman Shaped Wavelet Trees. Στο υπόλοιπο της ενότητας αυτής θα παρουσιαστεί ο τρόπος που χτίζονται τα εν λόγω δένδρα χωρίς να εστιάζουμε στις λειτουργίες τους ως Wavelet Trees Normal Shaped Ένα Normal Shaped δένδρο [5,2,8] μιας ακολουθίας ενός διατεταγμένου αλφαβήτου είναι ένα πλήρες διατεταγμένο αυστηρά δυαδικό δένδρο του οποίου τα φύλλα έχουν επισημανθεί με τα διακριτά σύμβολα του. Επισημαίνεται ότι τα φύλλα του είναι διατεταγμένα σε αλφαβητική σειρά από το μικρότερο στο μεγαλύτερο. Πολυπλοκότητα: απαιτεί το πολύ bits χώρου και κατασκευάζεται σε χρόνο όπου u τα διακριτά σύμβολα της ακολουθίας. αλφαβήτου Για να χτιστεί ένα Normal Shaped Tree μιας ακολουθίας ακολουθούνται οι κάτωθι κανόνες: ενός διατεταγμένου Αλγόριθμος: 1. Η ρίζα του δένδρου περιέχει όλους τους όρους του αλφαβήτου (διατεταγμένους αλφαβητικά). 2. Για τη δημιουργία των παιδιών κάθε κόμβου, το σύνολο των όρων του αλφαβήτου του διαιρείται σε δύο ίσα κομμάτια (όπου είναι εφικτό, ενώ σε περιπτώσεις που δεν είναι, το πλήθος των όρων του κάθε κομματιού διαφέρει κατά 1), ενώ διατηρείται η αλφαβητική σειρά τους. 21

23 3. Το δεύτερο βήμα εφαρμόζεται σε όλους τους κόμβους του δένδρου μέχρι να δημιουργηθούν όλα τα φύλλα τα οποία αντιστοιχούν σε όλους τους όρους του αλφαβήτου. Το σχήμα ενός δένδρου που προκύπτει από την εν λόγω διαδικασία εμφανίζεται στο κάτωθι παράδειγμα (χρησιμοποιείται το παράδειγμα της Ενότητας 2.1). Έστω ότι θέλουμε να προσδιορίσουμε το σχήμα ενός δένδρου του οποίου τα φύλλα είναι ενώ Το δένδρο που δημιουργείται σύμφωνα με τον αλγόριθμο εμφανίζεται στην Εικόνα 2.3. Εικόνα Huffman Shaped Ένα Huffman Shaped δένδρο [6] μιας ακολουθίας ενός διατεταγμένου αλφαβήτου είναι ένα αυστηρά δυαδικό δένδρο του οποίου τα φύλλα έχουν επισημανθεί με τα διακριτά σύμβολα του. Επισημαίνεται ότι τα φύλλα του δεν είναι απαραίτητα διατεταγμένα σε αλφαβητική σειρά από το μικρότερο στο μεγαλύτερο, καθότι η αλφαβητική σειρά τους δεν λαμβάνεται υπόψη. Για να χτιστεί ένα Huffman Shaped Tree μιας ακολουθίας ενός διατεταγμένου αλφαβήτου θα πρέπει να ληφθεί υπόψη η σχετική συχνότητα των διακριτών συμβόλων του ως βάρος, δηλαδή το πόσες φορές εμφανίζεται κάθε ένα από αυτά στην ακολουθία. Σκοπός είναι η κατασκευή του δένδρου έτσι ώστε τα σύμβολα με την ελάχιστη σχετική συχνότητα να βρίσκονται σε όσο το δυνατόν μεγαλύτερο βάθος από τη ρίζα του δένδρου. 22

24 Αλγόριθμος: 1. Ξεκινώντας, δημιουργούνται όλα τα φύλλα του δένδρου τα οποία αντιστοιχούν στα διακριτά σύμβολα του ενώ ήδη έχει υπολογιστεί και το βάρος τους. 2. Στη συνέχεια τα 2 φύλλα που αντιστοιχούν στα 2 σύμβολα με τη μικρότερη σχετική συχνότητα στο χρησιμοποιούνται για να δημιουργηθεί ο κόμβος ο οποίος έχει το ένα από τα δύο φύλλα ως αριστερό του παιδί και το άλλο ως δεξί. Το βάρος του κόμβου αυτού είναι ίσο με το άθροισμα των βαρών των 2 παιδιών του. 3. Η διαδικασία του βήματος 2 επαναλαμβάνεται. Σε κάθε βήμα ενώνονται οι δύο κόμβοι ή φύλλα (ή συνδυασμός τους) με τα μικρότερα βάρη και δημιουργείται ένας κόμβος πατέρας για αυτά ο οποίος έχει ως βάρος το άθροισμα των βαρών των παιδιών του. Αυτή η διαδικασία επαναλαμβάνεται μέχρι να υφίσταται μόνο ένας κόμβος ο οποίος θα είναι και η ρίζα του δένδρου. Η εν λόγω διαδικασία περιγράφεται στο παρακάτω παράδειγμα. Έστω ότι θέλουμε να προσδιορίσουμε το σχήμα ενός δένδρου του οποίου τα φύλλα είναι έχουν τα βάρη ως κάτωθι: Σύμβολο Τιμή Συμβόλου Βάρος Τιμή Βάρους Tα βάρη στην ακολουθία. διατεταγμένα από το μικρότερο στο μεγαλύτερο ορίζονται Σύμφωνα με τον Αλγόριθμο του Huffman γίνονται οι εξής υπολογισμοί ανά βήμα: Αρχικά υπολογίζεται το άθροισμα των δύο μικρότερων βαρών (2 και 3) και σχηματίζεται ο κόμβος 5 με το άθροισμα τους το οποίο είναι και το βάρος του κόμβου αυτού. Στη συνέχεια γίνεται το αντίστοιχο για όλους τους κόμβους / φύλλα μέχρι να φτάσουμε στη ρίζα. Οι υπολογισμοί είναι οι κάτωθι και σε κάθε βήμα επισημαίνεται (σε τετράγωνο) ο συνδυασμός με τον οποίο δημιουργείται κάθε νέος κόμβος: 23

25 Το δένδρο που δημιουργείται σύμφωνα με την αναφερόμενη διαδικασία εμφανίζεται στην Εικόνα 2.4. Εικόνα Alphabetic Weight Balanced ( Hu Tucker Shaped) Ένα Hu - Tucker Shaped δένδρο [7] μιας ακολουθίας ενός διατεταγμένου αλφαβήτου είναι ένα διατεταγμένο, αυστηρά δυαδικό δένδρο του οποίου τα φύλλα έχουν επισημανθεί με τα διακριτά σύμβολα του. Επισημαίνεται ότι τα φύλλα του είναι απαραίτητα διατεταγμένα σε αλφαβητική σειρά από το μικρότερο στο μεγαλύτερο. 24

26 Πολυπλοκότητα: Η μέθοδος αυτή απαιτεί μονάδες χρόνου όπου n το μέγεθος της ακολουθίας. μονάδες χώρου και Για να χτιστεί ένα Hu - Tucker Shaped Tree μιας ακολουθίας ενός διατεταγμένου αλφαβήτου θα πρέπει να ληφθεί υπόψη η σχετική συχνότητα των διακριτών συμβόλων του ως βάρος, δηλαδή το πόσες φορές εμφανίζεται κάθε ένα από αυτά στην ακολουθία. Η διαφορά του με τον αλγόριθμο του Huffman είναι ότι στην περίπτωση του Hu Tucker λαμβάνεται υπόψη και η αλφαβητική σειρά των φύλλων. Σκοπός είναι η κατασκευή του δένδρου έτσι ώστε τα σύμβολα με την ελάχιστη σχετική συχνότητα να βρίσκονται σε όσο το δυνατόν μεγαλύτερο βάθος από τη ρίζα του δένδρου ενώ τα φύλλα θα παραμείνουν σε αλφαβητική σειρά από αριστερά προς τα δεξιά. Αλγόριθμος: Φάση 1. Συνδυασμός: 1. Ξεκινώντας, δημιουργούνται όλα τα φύλλα του δένδρου τα οποία αντιστοιχούν στα διακριτά σύμβολα του ενώ ήδη έχει υπολογιστεί και το βάρος τους. Αυτά, εκφράζονται ως οι εξωτερικοί κόμβοι του δένδρου και είναι διατεταγμένα αλφαβητικά από αριστερά προς τα δεξιά: 2. Στη συνέχεια συνδυάζονται δύο βάρη και για και δημιουργείται ένα νέο βάρος διαγράφοντας πλέον τον κόμβο που περιέχει το από την ακολουθία με την οποία εργαζόμαστε. Επίσης ο κόμβος που περιέχει το αντικαθιστάται από ένα νέο κόμβο που περιέχει το. 3. Το βήμα 2 επαναλαμβάνεται συνεχώς για ένα μοναδικό ζεύγος βαρών και πάντα ισχύουν οι κάτωθι περιορισμοί κατά την εκτέλεση του: i. Δεν πρέπει να υφίστανται εξωτερικοί κόμβοι μεταξύ των (Αυτή είναι και η σημαντικότερη διαφορά με τον αλγόριθμο του Huffman). ii. Το άθροισμα είναι το ελάχιστο μεταξύ όλων των ικανοποιώντας τον κανόνα (i). iii. Ο δείκτης είναι ο ελάχιστος μεταξύ όλων των ικανοποιώντας τους κανόνες (i) και (ii). iv. Ο δείκτης είναι ο ελάχιστος μεταξύ όλων των ικανοποιώντας τους κανόνες (i), (ii) και (iii). Φάση 2. Ανάθεση επιπέδου (κόμβου στο δένδρο): 1. Αφού έχει τελειώσει η Φάση 1, έχει παραμείνει ένας και μόνος κόμβος στην ακολουθία με την οποία εργαστήκαμε. Αυτός ανατίθεται με τον αριθμό επιπέδου Στη συνέχεια, ξεκινώντας από τον κόμβο αυτό τα παιδιά κάθε κόμβου αποκτούν τον αριθμό επιπέδου του πατέρα τους ενώ αυτός έχει αυξηθεί κατά 1. Αν δηλαδή ο 25

27 κόμβος που περιέχει το βάρος έχει αριθμό επιπέδου, τα παιδιά του αποκτούν τον αριθμό επιπέδου. 3. Το βήμα 2 επαναλαμβάνεται έως ότου όλοι οι κόμβοι ανατεθούν με αριθμό επιπέδου. Φάση 3. Συνδυασμός εκ νέου: Αφού έχει τελειώσει η Φάση 2 αγνοούμε όλους τους εσωτερικούς κόμβους και δουλεύουμε πλέον μόνο με τους εξωτερικούς με τους οποίους ξεκινήσαμε και με τα επίπεδα τους: Οι εσωτερικοί κόμβοι που δημιουργήθηκαν και χρησιμοποιήθηκαν στις Φάσεις 1 και 2 διαγράφονται και θα δημιουργηθούν νέοι συνδυάζοντας βάρη ακριβώς όπως στη Φάση 1 αλλά αυτή τη φορά με βάση τους κάτωθι νέους κανόνες: i'. Οι κόμβοι που περιέχουν τα και πρέπει να είναι γειτονικοί στην ακολουθία στην οποία εργαζόμαστε. ii'. Τα επίπεδα και πρέπει και τα δύο να είναι τα μέγιστα μεταξύ όλων των iii'. υφιστάμενων επιπέδων της ακολουθίας της οποίας εργαζόμαστε. Ο δείκτης πρέπει να είναι ο ελάχιστος μεταξύ όλων των ικανοποιώντας τους κανόνες (i ) και (ii ). Η εν λόγω διαδικασία περιγράφεται στο παρακάτω παράδειγμα. Έστω ότι θέλουμε να προσδιορίσουμε το σχήμα ενός δένδρου του οποίου τα φύλλα είναι έχουν τα βάρη όπως εμφανίζονται στην Εικόνα 2.5: Εικόνα

28 Στη Φάση 1 έχουμε το αποτέλεσμα που εμφανίζεται στην Εικόνα 2.6: Εικόνα 2.6 Ενώ στη Φάση 2 υπολογίζονται τα επίπεδά όπως εμφανίζονται στην Εικόνα 2.7: Εικόνα 2.7 Τέλος, το δένδρο που δημιουργείται σύμφωνα με την αναφερόμενη διαδικασία εμφανίζεται στην Εικόνα 2.8 : 27

29 Εικόνα

30 ΚΕΦΑΛΑΙΟ 3 - Αναπαραστάσεις συλλογής κειμένων και Wavelet Trees 3.1 Συλλογή Κειμένων Στην ενότητα αυτή θα εξεταστεί μια συλλογή κειμένων από την οποία θα δημιουργηθεί ένα Inverted Index αλλά και ένα Self Indexed Text για την αναπαράσταση τους. Στη συνέχεια με βάση αυτές τις αναπαραστάσεις αυτές, θα δημιουργηθούν Wavelet Trees των ειδών που θα χρησιμοποιηθούν στην τρέχουσα διπλωματική εργασία, όπως αυτά έχουν περιγραφεί στην ενότητα 2.2. Έστω ότι πρέπει να γίνει επεξεργασία της συλλογής κειμένων που εμφανίζεται στην Εικόνα 3.1 και αποτελείται από 6 κείμενα: Εικόνα Inverted Index Το ανεστραμμένο αρχείο που προκύπτει από τη συλλογή αυτή εμφανίζεται στην Εικόνα 3.2, σύμφωνα με τη διαδικασία που έχει περιγραφεί στην ενότητα

31 Εικόνα Χτίσιμο Wavelet Trees Έστω ότι το πλήθος των documents μέσα στα οποία εμφανίζεται ο term και η λίστα των documents μέσα στα οποία υπάρχει ο term. Όλες οι λίστες ενοποιούνται σε μία λίστα όπου ο συνολικός αριθμός των διακριτών terms στα documents. Έτσι χτίζεται η ακολουθία: Χρησιμοποιούμε ως παράδειγμα το Inverted Index της ενότητας 3.2. Από το εν λόγω Inverted Index προκύπτουν κάτωθι λίστες ανά term. 30

32 Η λίστα που ενοποιεί όλες τις παραπάνω σε μια ακολουθία είναι η, δηλαδή. Η λίστα, αναπαριστάται σαν Wavelet Trees ως κάτωθι, σύμφωνα με τα είδη που θα χρησιμοποιηθούν στην τρέχουσα διπλωματική εργασία και περιγράφονται στην Ενότητα 2.2. Normal Shaped Wavelet Tree: Huffman Shaped Wavelet Tree: 31

33 Alphabetic Weight Balanced Wavelet Tree 3.3 Self Indexed Text Με βάση τη συλλογή κειμένων της ενότητας 3.1 δημιουργούνται οι αντιστοιχίσεις λέξης ανά termed που εμφανίζονται στην Εικόνα 3.3: 32

34 Εικόνα 3.3 Το Self Indexed Text που προκύπτει από τη συλλογή αυτή εμφανίζεται στην Εικόνα 3.4, σύμφωνα με τη διαδικασία που έχει περιγραφεί στην ενότητα : Εικόνα Χτίσιμο Wavelet Trees Έστω ότι μια συλλογή κειμένων μεγέθους, όπου κάθε κείμενο αναπαριστάται ως μια ακολουθία, όρων ενός λεξιλογίου, μεγέθους. Θέτοντας τον χαρακτήρα ως ένα ειδικό χαρακτήρα διαχωρισμού, χτίζεται η ακολουθία: μήκους. 33

35 Χρησιμοποιούμε ως παράδειγμα το Self Indexed Text της ενότητας 3.3. Από το οποίο χτίζεται η ακολουθία : Δηλαδή: η οποία αναπαριστάται σαν Wavelet Trees ως κάτωθι, σύμφωνα με τα είδη που θα χρησιμοποιηθούν στην τρέχουσα διπλωματική εργασία και περιγράφονται στην Ενότητα 2.2. Normal Shaped Wavelet Tree: Huffman Shaped Wavelet Tree 34

36 Alphabetic Weight Balanced Wavelet Tree 35

37 ΚΕΦΑΛΑΙΟ 4 - Υπάρχουσες Τεχνικές Δεικτοδότησης Συστημάτων Ανάκτησης Πληροφορίας με τη χρήση Wavelet Trees. Εισαγωγή Στην ενότητα αυτή παρουσιάζονται δύο βασικές τεχνικές ανάκτησης πληροφορίας με τη χρήση Wavelet Trees. Η πρώτη τεχνική αφορά τη χρήση ανεστραμμένων αρχείων (inverted files) Η ιδέα αυτή παρουσιάζεται στην δημοσίευση των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists» και στη δημοσίευση των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2]. Η δεύτερη, αφορά τη χρήση αυτό - δεικτοδοτούμενων κειμένων (self indexed texts) και παρουσιάζεται στην δημοσίευση των D. Arroyuelo, S. Gonzalez and M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4]. Οι δύο αυτές τεχνικές διαχειρίζονται την απάντηση ερωτημάτων καθώς και την υλοποίηση λειτουργιών χρήσιμων στην ανάκτηση πληροφορίας κειμένων. 4.1 Τεχνικές για αναπαράσταση συλλογής κειμένου με Inverted Index Στην ενότητα αυτή παρουσιάζεται η τεχνική που αφορά τη χρήση ανεστραμμένων αρχείων (inverted files). Η ιδέα αυτή παρουσιάζεται στην δημοσίευση G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists» και στη δημοσίευση των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2] Γενικές έννοιες και σημειογραφία Έστω ότι το πλήθος των κειμένων μιας συλλογής και ο αριθμός των διακριτών λέξεων που περιέχονται στη συλλογή. Έστω ότι η λίστα των documents μέσα στα οποία υπάρχει ο term σε αύξουσα σειρά όπου η συχνότητα του σε ένα κείμενο. Έστω ότι, ο συνολικός αριθμός των διακριτών όρων στα κείμενα και το μέγεθος της συλλογής σε λέξεις. Τέλος, ο αριθμός των λέξεων μέσα σε ένα ερώτημα Χτίσιμο του Wavelet Tree Έστω ότι όλες οι λίστες ενοποιούνται σε μία μοναδική λίστα όπου ο συνολικός αριθμός των διακριτών terms στα documents. Έτσι χτίζεται η ακολουθία η οποία αποθηκεύεται στο Wavelet Tree. Επίσης αποθηκεύεται για 36

38 κάθε όρο η αρχική θέση της λίστας μέσα στην ακολουθία. Ο τρόπος με τον οποίο γίνεται αυτό θα αναλυθεί στην ενότητα Το Wavelet Tree που παρουσιάζεται στην Εικόνα 4.1 περιέχει τις posting lists τριών όρων ενός inverted index που είναι χτισμένο για Full Text Retrieval. Αυτό σημαίνει ότι οι λίστες είναι διατεταγμένες με βάση το document id. Εικόνα 4.1 Το διάστημα της posting list κάθε όρου σε κάθε κόμβο φαίνεται στην Εικόνα 4.2 για την Normal Shaped περίπτωση δένδρου και στην Εικόνα 4.3 για την Huffman Shaped περίπτωση δένδρου: Εικόνα

39 Εικόνα Βοηθητικές Λειτουργίες Όπως αναφέρθηκε στην προηγούμενη ενότητα, για κάθε όρο αποθηκεύεται η αρχική θέση της λίστας μέσα στην ακολουθία. Η ακολουθία αναπαριστάται σε μια ξεχωριστή δομή bitvector η οποία και η ίδια απαντάει ερωτήματα και. Όπου υπάρχει αρχική θέση ενός όρου, τοτέ η αντίστοιχη θέση του bit vector παίρνει την τιμή 1, ενώ οι υπόλοιπες θέσεις παίρνουν την τιμή Υπολογισμός Aρχικής Θέσης όρου H αρχική θέση του όρου υπολογίζεται ως. Αν λάβουμε ως παράδειγμα την ακολουθία που παρουσιάστηκε στην Ενότητα και εμφανίζεται στην Εικόνα 4.4, η δομή που προκείπτει είναι αυτή που εμφανίζεται στην Εικόνα 4.5. Εικόνα 4.4 Εικόνα

40 Άρα για έχουμε, για έχουμε κ.ο.κ Υπολογισμός λίστας στην οποία ανήκει η θέση H εύρεση της λίστας στην οποία ανήκει η θέση υπολογίζεται με. Αν λάβουμε πάλι ως παράδειγμα την ακολουθία της Εικόνας 4.4, και τη δομή της Εικόνας 4.5, για έχουμε, για έχουμε κ.ο.κ Λειτουργίες Εύρεση οποιασδήποτε τιμής Μια λειτουργία που απαντάται με την παραπάνω δομή είναι η «Εύρεση οποιασδήποτε τιμής». Σημειώνεται ότι ο παρακάτω αλγόριθμος μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για Full Text Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση το document id) και για Normal Shaped και Weight Balanced shaped Wavelet Trees τα οποία είναι πλήρως διατεταγμένα. Δεν μπορεί να εκτελεστεί σε δένδρα τα οποία έχουν χτιστεί για Ranked Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση τη συχνότητα με την οποία εμφανίζεται μέσα τους η αντίστοιχη λέξη Παράρτημα Α), καθώς και για Huffman Shaped Wavelet Trees τα οποία δεν είναι πλήρως διατεταγμένα (τα φύλλα τους δεν βρίσκονται σε αλφαβητική ή αριθμητική σειρά από αριστερά προς τα δεξιά). Πολυπλοκότητα: Χρόνος Αλγόριθμος ενός γενικού εύρους Έστω ότι Με : είναι η ρίζα του δένδρου και η ακολουθία των bits. υπολογίζεται ο αριθμός των 1 στο διάστημα Με Αν ο αριθμός των 0 στο διάστημα. ο αλγόριθμος αποφασίζει ότι θα κατευθυνθεί στο αριστερό παιδί του κόμβου που εξετάζεται και υπολογίζονται οι νέες τιμές για το αριστερό παιδί, ως εξής: 39

41 Αν ο αλγόριθμος αποφασίζει ότι θα κατευθύνθεί στο δεξί παιδί του κόμβου που εξετάζεται και υπολογίζονται οι νέες τιμές για το αριστερό παιδί, καθώς και η νέα τιμή ως εξής: Επανάληψη μέχρι να συναντηθεί κάποιο φύλο Στην Εικόνα 4.6 δίνεται ένα παράδειγμα για και, έυρεση του =57 Εικόνα 4.6 Στο σημείο αυτό περιγράφεται γιατί ο παραπάνω αλγόριθμος μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για Full Text Retrieval και για Normal Shaped και Weight Balanced shaped Wavelet Trees ενώ δεν μπορεί να εκτελεστεί σε δένδρα τα οποία έχουν χτιστεί για Ranked Retrieval καθώς και για Huffman Shaped Wavelet Trees. Παρατηρούμε ότι στο παραπάνω παράδειγμα το bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Δεν βλέπουμε σε καμία περίπτωση ανάμεικτα μηδενικά και άσσους. Αυτό συμβαίνει για δύο λόγους. Γιατί το δένδρο είναι ένα κλασικό Wavelet Tree (θα μπορούσε να είναι και Weight Balanced) του οποίου τα φύλλα είναι διατεταγμένα αλφαβητικά και γιατί η posting list κάθε όρου είναι διατεταγμένη με βάση τα document ids, έχουμε δηλαδή Full Text Retrieval. Για αυτό το λόγο ο αλγόριθμος αποφασίζει αν θα προχωρήσει αριστερά ή δεξιά με τη σύγκριση του με τον αριθμό των μηδενικών που βρίσκονται μέσα σε όλο το διάστημα. 40

42 Δηλαδή αν θα κατευθυνθεί αριστερά και αν θα κατευθυνθεί δεξιά. Αυτό σημαίνει ότι αν η θέση βρίσκεται μέσα στα μηδενικά του τμήματος του bit vector που αντιστοιχεί στο διάστημα του term θα πάει αριστερά και αν είναι μεγαλύτερη θα πάει δεξιά. Έστω ότι γίνεται αναζήτηση του (με ) όπως εμφανίζεται στην Εικόνα Α. Εικόνα Α Για τον ίδιο λόγο, αν ο αλγόριθμος κατευθυνθεί αριστερά δεν χρειάζεται να υπολογιστεί ξανά η τιμή του γιατί το βρίσκεται μέσα στην ακολουθία των μηδενικών του bit vector. Έτσι η θέση θα παραμείνει η ίδια αφού πριν από αυτή δεν υπάρχουν άσσοι στον bit vector που αντιστοιχεί στο διάστημα. Αν ο αλγόριθμος κατευθυνθεί δεξιά πρέπει να υπολογιστεί ξανά η τιμή του γιατί το βρίσκεται μέσα στην ακολουθία των άσσων του bit vector. Αυτό σημαίνει ότι πριν από το υπάρχουν θέσεις με μηδενικά που αντιστοιχούν σε σύμβολα που δεν ανήκουν στο δεξί παιδί. Έτσι όταν ο αλγόριθμος κατευθύνεται δεξιά πρέπει να τα λάβει υπόψη. Δηλαδή, έστω ότι γίνεται αναζήτηση του (με ) όπως εμφανίζεται στην Εικόνα Β: Εικόνα Β 41

43 Με τον τρόπο που λειτουργεί ο αλγόριθμος, είναι προφανές ότι δεν μπορεί να χρησιμοποιηθεί για Huffman Wavelet Trees ή για δεδομένα ενός inverted index που έχει δημιουργηθεί για ranked retrieval. Στην Εικόνα Γ παρουσιάζεται το ίδιο δένδρο αλλά χτισμένο με την κωδικοποίηση Huffman. Εικόνα Γ Φαίνεται ξεκάθαρα ότι το bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου δεν αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Πλέον τα μηδενικά και οι άσσοι αναμειγνύονται. Αυτό συμβαίνει και όταν τα δεδομένα που εισάγονται στο δένδρο είναι ενός inverted index χτισμένο για Ranked Retrieval όπου οι posting list κάθε όρου είναι διατεταγμένη με βάση τη συχνότητα εμφάνισης κάθε document και όχι με βάση το document id. Ο αλγόριθμος σε αυτή την περίπτωση δεν μπορεί να λειτουργήσει, ανεξάρτητα από το σχήμα του δένδρου (είτε είναι Normal Shaped, είτε Weight Balanced είτε Huffman Shaped). Αυτό δημιουργεί πρόβλημα σε δύο σημεία του αλγορίθμου. Στο σημείο όπου αποφασίζει εάν θα κατευθυνθεί στο αριστερό ή στο δεξί παιδί και στο σημείο του υπολογισμού της νέας θέσης. Δηλαδή δεν αρκεί να γνωρίζει τον συνολικό αριθμό μηδενικών στο διάστημα για να αποφασίσει αν θα πάει αριστερά ή δεξιά, αφού πλέον μηδενικά και άσσοι στο διάστημα είναι ανάμεικτα. Μια λύση που προτείνεται και στην εργασία των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists» και στη δημοσίευση των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2] είναι να βρεθεί εάν το bit που αντιστοιχεί στη θέση στον bit vector του κόμβου είναι 0 ή 1. Αν είναι 0 ο αλγόριθμος θα προχωρήσει αριστερά και αν είναι 1 θα προχωρήσει δεξιά. 42

44 Αυτό μπορεί να υπολογιστεί ως εξής: Γνωρίζουμε ανά πάσα στιγμή τη θέση του στοιχείου που ψάχνουμε στο τρέχον διάστημα. Επίσης γνωρίζουμε τα που ορίζουν το διάστημα μέσα στο bit vector του τρέχοντος κόμβου. Με τα δεδομένα αυτά μπορούμε να βρούμε την θέση (real_pos) του στοιχείου που ψάχνουμε στο bit vector του τρέχοντος κόμβου με την εξής πράξη: Στη συνέχεια χρησιμοποιώντας τη real_pos μπορούμε να βρούμε εάν το bit που αντιστοιχεί στη θέση στον bit vector του κόμβου είναι 0 ή 1 με την εξής πράξη: Τέλος, για τον υπολογισμό της νέας θέσης στον bit vector του επόμενου κόμβου (αφού έχει υπολογιστεί αν ο αλγόριθμος θα κατευθυνθεί αριστερά ή δεξιά) πλέον δεν αρκεί να την τροποποιήσουμε μόνο στην περίπτωση που κατευθύνεται αριστερά αλλά και στην περίπτωση που κατευθύνεται δεξιά και φυσικά πρέπει να αλλάξει και ο τρόπος υπολογισμού της. Η λύση που προτείνεται είναι αντί τα και να εκφράζουν τον συνολικό αριθμό 0 και 1 στο κομμάτι του bit vector που αντιστοιχεί στο διάστημα, να εκφράζουν τον αριθμό 0 και 1 στο κομμάτι του bit vector που αντιστοιχεί στο διάστημα, αλλά μόνο μέχρι τη θέση. Αυτό το θέλουμε για να γίνει shift στη θέση μόνο τόσες θέσεις όσοι είναι οι άσσοι μέχρι τη θέση αυτή (αν ο αλγόριθμος πρόκειται να κατευθυνθεί αριστερά) ή όσα είναι τα μηδενικά μέχρι τη θέση αυτή (αν ο αλγόριθμος πρόκειται να κατευθυνθεί δεξιά) και όχι όσα/όσοι είναι σε όλο το bit vector του κόμβου. Δηλαδή θα υπολογίσουμε: Έτσι αν ο αλγόριθμος πρόκειται να κατευθυνθεί αριστερά η νέα θέση θα υπολογίζεται από την πράξη: Και αν πρόκειται να κατευθυνθεί δεξιά από την πράξη: Παρακάτω παρουσιάζεται ο αναφερόμενος αλγόριθμος: Με υπολογίζεται ποια είναι η θέση του στο στο bit vector του τρέχοντος κόμβου. Με υπολογίζεται ο αριθμός των 1 στο διάστημα μόνο μέχρι τη θέση. Με ο αριθμός των 0 στο διάστημα μόνο μέχρι τη θέση. Αν, ο αλγόριθμος αποφασίζει ότι θα κατευθυνθεί στο αριστερό παιδί του κόμβου που εξετάζεται και υπολογίζονται οι νέες τιμές για το αριστερό παιδί και η νέα τιμή, ως εξής: 43

45 Αν ο αλγόριθμος αποφασίζει ότι θα κατευθυνθεί στο δεξί παιδί του κόμβου που εξετάζεται και υπολογίζονται οι νέες τιμές για το δεξί παιδί, καθώς και η νέα τιμή ως εξής: Επανάληψη μέχρι να συναντηθεί κάποιο φύλο Εξαγωγή οποιουδήποτε τμήματος Μια άλλη λειτουργία που απαντάται με την παραπάνω δομή είναι η «Εξαγωγή οποιουδήποτε τμήματος». Σημειώνεται ότι και στην περίπτωση αυτή ο αλγόριθμος μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για Full Text Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση το document id) και για Normal Shaped και Weight Balanced shaped Wavelet Trees τα οποία είναι πλήρως διατεταγμένα. Δεν μπορεί να εκτελεστεί σε δένδρα τα οποία έχουν χτιστεί για Ranked Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση τη συχνότητα με την οποία εμφανίζεται μέσα τους η αντίστοιχη λέξη Παράρτημα Α), καθώς και για Huffman Shaped Wavelet Trees τα οποία δεν είναι πλήρως διατεταγμένα (τα φύλλα τους δεν βρίσκονται σε αλφαβητική ή αριθμητική σειρά από αριστερά προς τα δεξιά). Αλγόριθμος: Έστω ότι είναι η ρίζα του δένδρου και η ακολουθία των bits. Με υπολογίζεται ο αριθμός των 1 στο διάστημα Με υπολογίζεται ο αριθμός των 0 στο διάστημα. Αν και ο αλγόριθμος θα κατευθυνθεί μόνο αριστερά αφού υπολογιστούν οι νέες τιμές για το αριστερό παιδί, ως εξής: Ενώ οι τιμές και θα παραμείνουν οι ίδιες. Αν και, ο αλγόριθμος θα κατευθυνθεί μόνο δεξιά αφού υπολογιστούν οι νέες τιμές για το δεξί παιδί, ως εξής: Και τα νέα και ως: 44

46 Αν και ο αλγόριθμος θα κατευθυνθεί και αριστερά και δεξιά αφού υπολογιστούν οι τιμές: Για αριστερά: Για δεξιά: Στην Εικόνα 4.7 δίνεται ένα παράδειγμα για, και έυρεση του =4,5,6,16,57,132 Εικόνα 4.7 Πολυπλοκότητα: Ο παραπάνω αλγόριθμος για την εξαγωγή οποιουδήποτε τμήματος σε αύξουσα σειρά, κοστίζει σε χρόνο. Στη χειρώτερη περίπτωση φτάνουμε σε φύλλα του δένδρου, αλλά κάποια από τα μονοπάτια των φύλλων είναι κοινά. Στη χειρώτερη περίπτωση τα μονοπάτια τους γίνονται όλα μοναδικά, σε βάθος. Μέχρι το σημείο αυτό δουλεύουμε σε όλους τους διαφορετικούς κόμβους και στη συνέχεια δουλεύουμε διαφορετικά μονοπάτια μήκους για κάθε τιμή. Στο σημείο αυτό περιγράφεται γιατί ο παραπάνω αλγόριθμος μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για Full Text Retrieval και για Normal Shaped και 45

47 Weight Balanced shaped Wavelet Trees ενώ δεν μπορεί να εκτελεστεί σε δένδρα τα οποία έχουν χτιστεί για Ranked Retrieval καθώς και για Huffman Shaped Wavelet Trees. Έστω ότι με βάση το δένδρο της Εικόνας 4.7 πρέπει να υπολογίσουμε το όπως φαίνεται και στην Εικόνα Δ. Εικόνα Δ Ενώ στην Εικόνα Ε απεικονίζεται η περίπτωση του Huffman Shaped δένδρου: Εικόνα Ε Φαίνεται ξεκάθαρα ότι ο αλγόριθμος δεν λειτουργεί αφού λόγω του ότι μηδενικά και άσσοι είναι ανάμεικτα δεν μπορεί να πάρει σωστές αποφάσεις. Μια λύση που προτείνεται και στην εργασία των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists» και στη δημοσίευση των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2] είναι αυτή που περιγράφεται εδώ. Προτείνεται ένας διαφορετικός αλγόριθμος για την πραγματοποίηση 46

48 της ίδιας λειτουργίας, πραγματοποιώντας λιγότερες πράξεις, ο οποίος μπορεί να χρησιμοποιηθεί για Huffman Shaped Wavelet trees και για δένδρα χτισμένα για Ranked Retrieval. Για την υλοποίηση του αλγορίθμου της προηγούμενης ενότητας λαμβάνεται σαν input ο term και ένα διάστημα μέσα στη λίστα του term, του οποίου τα στοιχεία θέλουμε να εξάγουμε. Στη συνέχεια, μέσω του αριθμού του term, υπολογίζουμε τις τιμές οι οποίες είναι ουσιαστικά η θέση του πρώτου και του τελευταίου στοιχείου της λίστας στη ρίζα του δένδρου. Επίσης παίρνουμε σαν input τις τιμές που αντιστοιχούν σε ένα εσωτερικό διάστημα μέσα στην λίστα του term, του οποίου διαστήματος τα στοιχεία θέλουμε να εξάγουμε. Σε κάθε βήμα του αλγορίθμου, δηλαδή σε κάθε κόμβο, μόλις αποφασιστεί που θα κατευθυνθεί ο αλγόριθμος, πρέπει να υπολογιστούν δύο νέες τιμές για το εξωτερικό διάστημα και δύο νέες τιμές για το εξωτερικό διάστημα. Με το νέο αλγόριθμο που προτείνεται λαμβάνεται το ίδιο input, και στη συνέχεια μέσω του αριθμού του term και των να υπολογίζονται τα εξής : Δηλαδή οι τιμές αυτές ουσιαστικά αντιπροσωπεύουν τη θέση των σε όλο το bit vector της ρίζας. Στη συνέχεια ο αλγόριθμος σε κάθε κόμβο του δένδρου θα αποφασίζει αν θα κατευθυνθεί δεξιά και αριστερά με βάση το αν υπάρχουν μηδενικά ( ) και άσσοι ( ) στο διάστημα. Στη συνέχεια θα υπολογίζει τα νέα όπως και πριν. Ουσιαστικά με το νέο αλγόριθμο δεν χρειάζεται να υπολογίζουμε ξανά και ξανά τα αλλά μόνο τα, έτσι πραγματοποιούνται λιγότερες πράξεις. Παρακάτω παρουσιάζεται ο αναφερόμενος αλγόριθμος: Έστω ότι είναι η ρίζα του δένδρου και η ακολουθία των bits. Με υπολογίζεται ο αριθμός των 1 στο διάστημα Με ο αριθμός των 0 στο διάστημα. Αν ο αλγόριθμος θα κατευθυνθεί αριστερά αφού υπολογιστούν οι νέες τιμές για το αριστερό παιδί, ως εξής: Αν, ο αλγόριθμος θα κατευθυνθεί δεξιά αφού υπολογιστούν οι νέες τιμές για το δεξί παιδί, ως εξής: Κάθε φορά που συναντάται κάποιο φύλο η τιμή που περιέχει αποθηκεύεται στο αποτέλεσμα. 47

49 Αυτό μας δίνει ένα επιπλέον πλεονέκτημα. Αφού πλέον η απόφαση για το αν ο αλγόριθμος θα κατευθυνθεί δεξιά ή αριστερά λαμβάνεται αποκλειστικά με βάση τις τιμές των χωρίς να χρειάζεται σύγκριση τους με τις θέσεις. Έστω πάλι ότι για παράδειγμα, έχουμε να υπολογίσουμε το. Το αποτέλεσμα φαίνεται στην Εικόνα Ζ για την περίπτωση Normal Shaped ενώ στην Εικόνα Η για την περίπτωση Huffman Shaped δένδρου. Εικόνα Ζ Εικόνα Η Τέλος αναφέρεται ότι, όταν ο αλγόριθμος εφαρμόζεται σε Huffman Shaped Wavelet Tree, (ανεξάρτητα από το αν είναι χτισμένο για Full Text ή Ranked Retrieval) το αποτέλεσμα είναι διατεταγμένο με τη σειρά των φύλλων. Έτσι χρειάζεται να γίνει μια διάταξη του αποτελέσματος με βάση το doc id (για Full Text Retrieval) ή με βάση τα frequencies των documents (για Ranked Retrieval). 48

50 Εύρεση ενός μετά από επίσκεψη ενός, για Η επόμενη λειτουργία που απαντάται με την παραπάνω δομή είναι η «Εύρεση ενός μετά από επίσκεψη ενός, για». Σημειώνεται ότι ο παρακάτω αλγόριθμος μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για Full Text Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση το document id) και για Normal Shaped και Weight Balanced shaped Wavelet Trees τα οποία είναι πλήρως διατεταγμένα. Δεν μπορεί να εκτελεστεί σε δένδρα τα οποία έχουν χτιστεί για Ranked Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση τη συχνότητα με την οποία εμφανίζεται μέσα τους η αντίστοιχη λέξη Παράρτημα Α), καθώς και για Huffman Shaped Wavelet Trees τα οποία δεν είναι πλήρως διατεταγμένα (τα φύλλα τους δεν βρίσκονται σε αλφαβητική ή αριθμητική σειρά από αριστερά προς τα δεξιά). Αλγόριθμος: Έστω ότι είναι ο τρέχον κόμβος του δένδρου και η ακολουθία των bits. Πρώτο Μέρος Αλγορίθμου: Εύρεση του Για, το βάθος του τρέχοντος κόμβου όπου (το βάθος της ρίζας), οι τιμές που παρακάμπτονται στα αριστερά, με αρχική τιμή και η μέγιστη τιμή τέτοια ώστε, τα προς τα κάτω μονοπάτια για τον υπολογισμό των και συμπίπτουν στο βάθος, με αρχική τιμή. Ξεκινώντας από τη ρίζα του δένδρου: o Αύξησε το βάθος, κατά 1 o Με υπολογίζεται ο αριθμός των 1 στο διάστημα o Με υπολογίζεται ο αριθμός των 0 στο διάστημα. o Αν ο αλγόριθμος αποφασίζει ότι θα κατευθυνθεί στο αριστερό παιδί του κόμβου που εξετάζεται και υπολογίζονται οι νέες τιμές για το αριστερό παιδί, ως εξής: Επίσης υπολογίζονται οι τιμές: o Αν ο αλγόριθμος αποφασίζει ότι θα κατευθυνθεί στο δεξί παιδί του κόμβου που εξετάζεται και υπολογίζονται οι νέες τιμές για το αριστερό παιδί, καθώς και η νέα τιμή ως εξής: 49

51 Επίσης υπολογίζονται οι τιμές: o Επανάληψη μέχρι να συναντηθεί κάποιο φύλο Δεύτερο Μέρος Αλγορίθμου: Εύρεση του Ο αλγόριθμος ξεκινάει από το φύλλο που κατέληξε στο πρώτο μέρος. Ανεβαίνοντας προς τη ρίζα ένα κόμβο κάθε φορά: o Έλεγχος των τιμών που έχουν διατηρηθεί σε κάθε κόμβο. o Μείωσε το βάθος του δένδρου, κατά 1 Αν, συνέχισε στον πατέρα του τρέχοντος κόμβου. Αν, από τον κόμβο που βρίσκεσαι συνέχισε με τον αλγόριθμό του πρώτου μέρους σετάροντας ξανά τις τιμές,, όπως πριν και την τιμή ως. Στην Εικόνα 4.8 δίνεται ένα παράδειγμα για, και έυρεση του και στη συνέχεια Εικόνα 4.8 Πολυπλοκότητα: Ο παραπάνω αλγόριθμος για την Εύρεση ενός μετά από επίσκεψη ενός, για μπορεί να εκτελεστεί σε αποσβέσιμο (amortized) χρόνο αναλογικό στο. Γενικά, αν εκτελέσουμε την λειτουργία αυτή φορές στο διάστημα, το κόστος είναι αφού μπορούν να υπάρξουν μόνο 50

52 διαφορετικά μονοπάτια μεγαλύτερα από φτάνοντας σε συνεχόμενα φύλλα και λαμβάνοντας υπόψη το κόστος της λειτουργίας Απάντηση Ερωτημάτων Ένωσης Η απάντηση ερωτημάτων ένωσης είναι ίσως η πιο σημαντική Λειτουργία που προσφέρει η παραπάνω δομή καθότι χρησιμοποιείται για την άμεση απάντηση ερωτημάτων. Η απάντηση ερωτημάτων ένωσης πραγματοποιείται για την τομή τμημάτων δύο λιστών όρων, δηλαδή την απάντηση ερωτημάτων που περιέχουν δύο όρους και επεκτείνεται πολύ εύκολα για την τομή τμημάτων περισσότερων λιστών όρων, δηλαδή την απάντηση ερωτημάτων που περιέχουν όρους Τομή τμημάτων δύο λιστών, δύο όρων Παρακάτω παρουσιάζεται η Λειτουργία «Τομή τμημάτων δύο λιστών, δύο όρων» για την εύρεση των κοινών documents δύο λιστών και. Σημειώνεται ότι ο παρακάτω αλγόριθμος μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για είτε για Full Text Retrieval είτε για Ranked Retrieval (Παράρτημα Α) καθώς και για Normal, Weight Balanced και Huffman shaped Wavelet Trees. Απλά στην περίπτωση της Ranked Retrieval και του Huffman Shaped Wavelet Tree το αποτέλεσμα είναι διατεταγμένο με τη σειρά των φύλλων οπότε θα πρέπει να πραγματοποιηθεί η διάταξη του με βάση την αλφαβητική ή αριθμητική τους σειρά. Αλγόριθμος: Έστω ότι είναι η ρίζα του δένδρου και η ακολουθία των bits. Αν το διάστημα ή το διάστημα είναι κενό, η αναζήτηση σε αυτό το κλαδί εγκαταλείπεται. Ο αλγόριθμος θα κατευθυνθεί αριστερά αφού υπολογιστούν οι νέες τιμές για το αριστερό παιδί, ως εξής: και Ο αλγόριθμος θα κατευθυνθεί δεξιά αφού υπολογιστούν οι νέες τιμές δεξί παιδί, ως εξής: για το και 51

53 Κάθε φορά που συναντάται κάποιο φύλο η τιμή που περιέχει αποθηκεύεται στο αποτέλεσμα. Στην Εικόνα 4.9 δίνεται ένα παράδειγμα για και δηλαδή και. Το αποτέλεσμα είναι: 1,2,4 Εικόνα 4.9 Πολυπλοκότητα: Χρόνος όπου ο αριθμός των διακριτών τιμών στην ακολουθία, η αλλοίωση της πολυπλοκότητας (alternation complexity) του προβλήματος και ο αριθμός των διαστημάτων των λιστών Τομή τμημάτων λιστών, όρων Παρακάτω παρουσιάζεται η Λειτουργία «Τομή τμημάτων λιστών, όρων» για την εύρεση των κοινών documents λιστών,,,. Σημειώνεται ότι ο παρακάτω αλγόριθμος μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για είτε για Full Text Retrieval είτε για Ranked Retrieval (Παράρτημα Α) καθώς και για Normal, Weight Balanced και Huffman shaped Wavelet Trees. Απλά στην περίπτωση της Ranked Retrieval και του Huffman Shaped Wavelet Tree το αποτέλεσμα είναι διατεταγμένο με τη σειρά των φύλλων οπότε θα πρέπει να πραγματοποιηθεί η διάταξη του με βάση την αλφαβητική ή αριθμητική τους σειρά. 52

54 Αλγόριθμος : Έστω ότι είναι η ρίζα του δένδρου και η ακολουθία των bits. Αν κάποιο από τα διαστήματα,,, είναι κενό, η αναζήτηση σε αυτό το κλαδί εγκαταλείπεται. Ο αλγόριθμος θα κατευθυνθεί αριστερά αφού υπολογιστούν οι νέες τιμές και για το αριστερό παιδί, ως εξής: Ο αλγόριθμος θα κατευθυνθεί δεξιά αφού υπολογιστούν οι νέες τιμές και για το δεξί παιδί, ως εξής: Κάθε φορά που συναντάται κάποιο φύλο, η τιμή που περιέχει αποθηκεύεται στο αποτέλεσμα. Στην Εικόνα 4.10 δίνεται ένα παράδειγμα για, και δηλαδή και και. Το αποτέλεσμα είναι: 2. Εικόνα 4.10 Πολυπλοκότητα Χρόνος όπου ο αριθμός των διακριτών τιμών στην ακολουθία, η αλλοίωση της πολυπλοκότητας (alternation complexity) και ο αριθμός των διαστημάτων των λιστών. 53

55 4.2 Τεχνικές για αναπαράσταση συλλογής κειμένου με Self Indexed Text Στην ενότητα αυτή παρουσιάζεται η τεχνική που αφορά τη χρήση αυτοδεικτοδοτούμενου κειμένου (Self Indexed text) Η ιδέα αυτή παρουσιάζεται στην δημοσίευση των D. Arroyuelo, S. Gonzalez and M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4]. Σημειώνεται ότι οι αλγόριθμοι που περιγράφονται στην ενότητα αυτή μπορούν να εκτελεστούν σε Wavelet Trees τα οποία έχουν χτιστεί είτε για Full Text Retrieval είτε για Ranked Retrieval καθώς και για Normal, Weight Balanced και Huffman shaped Wavelet Trees Γενικές έννοιες και σημειογραφία Έστω ότι μια συλλογή από κείμενα, όπου κάθε κείμενο αναπαριστάται ως μια ακολουθία από όρους / λέξεις (terms/words) από ένα λεξιλόγιο, μεγέθους. Γίνεται η υπόθεση ότι κάθε διακριτός όρος του λεξιλογίου έχει αντιστοιχιθεί σε ένα μοναδικό αναγνωριστικό (term id). Στις παρακάτω μεθόδους απαντώνται ερωτήματα ένωσης (conjunctive queries). Ένα ερώτημα ένωσης είναι ερώτηση για το ποια κείμενα περιέχουν όλους τους όρους και είναι η πιο συνήθης ερώτηση σε συστήματα ανάκτησης πληροφορίας Χτίσιμο του Wavelet Tree Έστω ότι μια συλλογή κειμένων μεγέθους, όπου κάθε κείμενο αναπαριστάται ως μια ακολουθία, όρων ενός λεξιλογίου, μεγέθους. Θέτοντας τον χαρακτήρα ως ένα ειδικό χαρακτήρα διαχωρισμού, χτίζεται η ακολουθία μήκους και μεγέθους bits. Σε κάθε κείμενο αποδίδεται ένα μοναδικό αναγνωριστικό κειμένου (doc id). Έστω ότι χειριζόμαστε τη συλλογή κειμένων που εμφανίζεται στην Εικόνα 4.11, από την οποία χτίζεται η ακολουθία. Πιο αναλυτικά χτίζεται η ακολουθία της Εικόνας 4.12 η οποία αναπαριστάται με το Wavelet Tree που απεικονίζεται στην Εικόνα

56 Εικόνα 4.11 Εικόνα 4.12 Εικόνα Βοηθητικές Λειτουργίες Δύο πολύ βοηθητικές Λειτουργίες οι οποίες θα χρησιμοποιηθούν για την υλοποίηση των αλγορίθμων απάντησης ερωτημάτων ένωσης παρακάτω είναι η λειτουργία που χρησιμοποιείται για τον υπολογισμό του κειμένου στο οποίο ανήκει μια θέση, και η λειτουργία που χρησιμοποιείται για τον υπολογισμό της αρχικής Θέσης ενός κειμένου στο. Σημειώνεται ότι αυτές οι λειτουργίες εκτελούνται απευθείας στο Wavelet Tree και δεν απαιτούν κάποια επιπλέον δομή Υπολογισμός κειμένου στο οποίο ανήκει η θέση - Λειτουργία Κάθε κείμενο έχει έναν μοναδικό δείκτη. Αν η ακολουθία αναπαρασταθεί με ένα Wavelet Tree (ή οποιαδήποτε άλλη rank/select δομή δεδομένων), τότε για 55

57 οποιαδήποτε θέση, η λειτουργία εκφράζει τον δείκτη του κειμένου στο οποίο ανήκει η θέση. Αν λάβουμε ως παράδειγμα το δένδρο της Εικόνας 4.13, για έχουμε, όπως εμφανίζεται και στην Εικόνα 4.14 Εικόνα Υπολογισμός Aρχικής Θέσης κειμένου - Λειτουργία Για οποιοδήποτε δείκτη κειμένου, η λειτουργία εκφράζει την πρώτη θέση του κειμένου, μέσα στο. Αν λάβουμε ως παράδειγμα το δένδρο της Εικόνας 4.13, για έχουμε όπως εμφανίζεται και στην Εικόνα Εικόνα Document Reporting Με βάση τη λειτουργία αυτή, με δεδομένο έναν όρο, βρίσκονται τα document ids όλων των κειμένων της συλλογής τα οποία περιέχουν τον όρο και αναφέρονται σαν αποτέλεσμα μέσα σε μια λίστα εμφανίσεων όπου ο αριθμός των documents μέσα στα οποία υπάρχει ο όρος. Με βάση το δένδρο της Εικόνας 4.13, στην Εικόνας 4.16 παρουσιάζονται οι λίστες εμφανίσεων κάθε όρου που περιέχεται στο αναφερόμενο wavelet tree. 56

58 Εικόνα 4.16 Μια λύση για την παραγωγή της λίστας εμφανίσεων ενός όρου είναι ένας αλγόριθμος ο οποίος βρίσκει κάθε εμφάνιση του στο, και για κάθε μια από τις εμφανίσεις θα αναφέρει το document id του κειμένου που το περιέχει. Σε κάθε βήμα θα διατηρούνται σαν αποτέλεσμα όλες οι διακριτές τιμές των document ids. Αυτό όμως θα έχει μεγάλο κόστος σε περιπτώσεις που ενώ υπάρχουν πολλές εμφανίσεις του στο, στην πραγματικότητα είναι συγκεντρωμένες σε λίγα κείμενα. Η λύση που προτείνεται σε αυτό το πρόβλημα είναι ένας αλγόριθμος ο οποίος θα κοστίζει χρόνο ανάλογο με τον αριθμό των κειμένων που περιέχουν τον όρο του ερωτήματος. Αλγόριθμος: Εντοπισμός της θέσης της πρώτης εμφάνισης του όρου μέσα στο με. Υπολογισμός του document id του κειμένου στο οποίο αντιστοιχεί η θέση, με και αναφορά του ως αποτέλεσμα. Πραγματοποίηση άλματος στο τέλος του τρέχοντος κειμένου με. Υπολογισμός του αριθμού των εμφανίσεων του μέχρι τη θέση με. (Δηλαδή από την αρχή του μέχρι το τέλος του τρέχοντος κειμένου.) Υπολογισμός της θέσης της επόμενης εμφάνισης του μέσα στην ακολουθία με. Επανάληψη της διαδικασίας μέχρι να φτάσουμε στην τελευταία εμφάνιση του μέσα στο. Στην Εικόνα 4.16 δίνεται ένα παράδειγμα για. Το αποτέλεσμα είναι 57

59 Εικόνα 4.16 Πολυπλοκότητα Ο χρόνος εκτέλεσης του αλγορίθμου αυτού είναι χρησιμοποιείται bits χώρου [9] ενώ τα περιέχουν ένα όρο του ερωτήματος μπορούν να υπολογιστούν σε Όπου n το μέγεθος της ακολουθίας. και κείμενα που χρόνο Λειτουργίες Απάντηση Ερωτημάτων Ένωσης Παραδοσιακά, τα ερωτήματα ένωσης απαντώνται με την Τομή των λιστών εμφανίσεων των όρων που έχουν δοθεί στο ερώτημα. Δηλαδή, για την απάντηση ενός ερωτήματος ένωσης,θα έπρεπε να δημιουργηθούν οι λίστες εμφανίσεων και των όρων και αντίστοιχα. Στη συνέχεια, θα έπρεπε να γίνει τομή των λιστών αυτών παράγοντας μια τρίτη λίστα που να περιέχει τα κοινά στοιχεία των λιστών και, χρησιμοποιώντας οποιονδήποτε αλγόριθμο τομής. Αν πραγματοποιηθεί όμως παραγωγή των λιστών εμφανίσεων των όρων του ερωτήματος πριν από τη φάση της τομής το κόστος είναι μεγάλο. Παρακάτω παρουσιάζονται δύο βασικοί αλγόριθμοι οι οποίοι εξοικονομούν το κόστος αυτό A Simple Worst-Case Algorithm for Conjunctive Queries Στην ενότητα αυτή προτείνεται ένας αλγόριθμος για ερωτήματα ένωσης όπου δεν απαιτείται να παραχθούν όλες οι λίστες εμφανίσεων των όρων που περιέχονται στο αντίστοιχο ερώτημα. Αλγόριθμος για ένα ερώτημα : Έστω Δημιουργία της λίστας εμφανίσεων ο όρος με τη μικρότερη λίστα εμφανίσεων. του όρου, όπως περιγράφεται στην Ενότητα Πραγματοποιείται έλεγχος εάν ο όρος περιέχεται στη λίστα υπάρχει μέσα σε κάθε document που, κάτι το οποίο ισχύει αν και μόνο αν: (*) Αν ισχύει η παραπάνω συνθήκη, το τρέχον document αποθηκεύεται μέσα στην λίστα των αποτελεσμάτων. 58

60 Για την υλοποίηση του παραπάνω αλγορίθμου θα πρέπει να υπάρχει αποθηκευμένη η πληροφορία για το μέγεθος της λίστας εμφανίσεων κάθε όρου της συλλογής κάτι το οποίο κοστίζει χώρο αλλά το μέγεθος του είναι σχεδόν ασήμαντο στην πράξη. Στην Εικόνα 4.17 δίνεται ένα παράδειγμα για το ερώτημα. Ο όρος είναι ο όρος με την μικρότερη λίστα εμφανίσεων με βάση την Εικόνα 4.16 (του όρου έχει μέγεθος 3 ενώ του όρου έχει μέγεθος 5) και η λίστα εμφανίσεων του είναι. Άρα για υπολογίζεται: Το παραπάνω για υπολογίζεται 2>0, για υπολογίζεται 2>0 και για υπολογίζεται 1>0 άρα το αποτέλεσμα του ερωτήματος ένωσης είναι:1,2,5 Εικόνα 4.17 Πολυπλοκότητα: Το κόστος σε χρόνο είναι, έτσι εξοικονομείται ο χρόνος για την παραγωγή της λίστας εμφανίσεων του. Για την ελαχιστοποίηση του κόστους σε χρόνο παράγεται αρχικά η μικρότερη λίστα εμφανίσεων. Φυσικά για να γίνει αυτό θα πρέπει να υπάρχει αποθηκευμένη η πληροφορία για το μέγεθος της λίστας εμφανίσεων κάθε όρου της συλλογής κάτι το οποίο κοστίζει επιπλέον χώρο, αλλά το μέγεθος αυτό είναι σχεδόν ασήμαντο στην πράξη. Αλγόριθμος για ερώτημα της μορφής : Πραγματοποιείται ταξινόμηση των όρων του ερωτήματος κατά αύξουσα σειρά, με βάση το μέγεθος της λίστας εμφανίσεων κάθε όρου. Στη συνέχεια, παράγεται η λίστα εμφανίσεων του όρου με τις λιγότερες εμφανίσεις και γίνεται έλεγχος για το αν ο επόμενος ταξινομημένος όρος εμφανίζεται σε κάθε document της λίστας αυτής. Όσα documents δεν περιέχουν τον δεύτερο όρο βγαίνουν από τη λίστα. Η διαδικασία επαναλαμβάνεται και με τους υπόλοιπους ταξινομημένους όρους μέχρι να καταλήξουμε σε μια λίστα εμφανίσεων η οποία περιέχει την τομή των λιστών εμφανίσεων όλων των όρων. 59

61 Πολυπλοκότητα: Έτσι, ο συνολικός χρόνος είναι όπου το μέγεθος της μικρότερης λίστας εμφανίσεων ανάμεσα σε αυτές που αντιστοιχούν στους όρους του term An Adaptive Algorithm for Conjunctive Queries Ο αλγόριθμος που παρουσιάζεται στην ενότητα αυτή αντίθετα με τον αλγόριθμο που παρουσιάστηκε στην προηγούμενη ενότητα, δεν πραγματοποιεί ελέγχους ανά ζεύγος όρων, αλλά πραγματοποιεί την τομή μαζικά, χωρίς και πάλι να παράγει τη λίστα εμφανίσεων κάθε όρου. Αλγόριθμος για ένα ερώτημα : Πραγματοποιείται αναζήτηση της πρώτης εμφάνισης του κάθε όρου του ερωτήματος ως και όπου η θέση της πρώτης εμφάνισης του όρου στο, και η θέση της πρώτης εμφάνισης του όρου στο. Γίνεται η υπόθεση ότι τα οποία αντιστοιχούν στα document ids αντίστοιχα, για. Μπορεί να παρατηρηθεί ότι δεν είναι αναγκαίο να αναζητηθούν οι εμφανίσεις του στα documents, αφού δεν υπάρχουν εμφανίσεις του μέσα τους. Έτσι ο δείκτης μπορεί να μετακινηθεί στην πρώτη θέση του document και να γίνει από εκεί και πέρα η αναζήτηση της επόμενης εμφάνισης του. o Αν αυτή η εμφάνιση βρίσκεται μέσα στο document, τότε το εισάγεται στη λίστα του αποτελέσματος. o Αν η εμφάνιση αυτή ανήκει σε document με id μεγαλύτερο του, τότε ο δείκτης μετακινείται στην αρχή του document που περιέχει το Η διαδικασία επαναλαμβάνεται μέχρι είτε το, είτε το να φτάσουν την τιμή. Αν λάβουμε ως παράδειγμα το δένδρο της Εικόνας 4.13, για το ερώτημα έχουμε αποτέλεσμα 5, όπως εμφανίζεται και στην Εικόνα

62 Εικόνα 4.18 Πολυπλοκότητα: Έστω ότι και ο αριθμός των κειμένων που περιέχουν τα και αντίστοιχα και. Δεν είναι δύσκολο να δούμε ότι η μικρότερη λίστα εμφανίσεων θα εξαντληθεί αφού έχουν εκτελεστεί το πολύ βήματα. Αυτό δείχνει ότι ο αλγόριθμος κοστίζει χρόνο στη χειρότερη περίπτωση. Ο αλγόριθμος αυτός μπορεί να γενικευτεί για οποιοδήποτε όπου ο αριθμός των όρων που υφίστανται στο ερώτημα. Αλγόριθμος για ερώτημα της μορφής : Κάθε όρος του ερωτήματος έχει έναν δείκτη ο οποίος εκφράζει την πιο πρόσφατη θέση εμφάνισης του. Εύρεση της πρώτης εμφάνισης του με και καθορισμός του document το οποίο την περιέχει με. Αναζήτηση της επόμενης εμφάνισης του από το κείμενο και μετά, δηλαδή από τη θέση και μετά. Δηλαδή η επόμενη εμφάνιση του ορίζεται με και το κείμενο στο οποίο ανήκει με. Αντίστοιχά γίνεται αναζήτηση της επόμενης εμφάνισης του από το κείμενο και μετά. Η διαδικασία επαναλαμβάνεται για όλους τους όρους κυκλικά και τερματίζει όταν κάποιο φτάνει την τιμή n+1. Σε όποιο σημείο του αλγορίθμου ισχύει ότι το κείμενο εισάγεται στη λίστα του αποτελέσματος. Αν λάβουμε ως παράδειγμα το δένδρο της Εικόνας 4.13, για το ερώτημα έχουμε αποτέλεσμα null, ενώ για το ερώτημα έχουμε αποτέλεσμα 5, όπως εμφανίζεται και στην Εικόνα

63 Εικόνα 4.19 Πολυπλοκότητα: Η γενικευμένη αυτή περίπτωση κοστίζει χρόνο, όπου η «δυσκολία» που εκφράζει τον αριθμό κειμένων μέσα στα οποία εμφανίζονται τα terms. 62

64 ΚΕΦΑΛΑΙΟ 5 - Επέκταση Τεχνικών Δεικτοδότησης και Συνδυασμός Στο Κεφάλαιο αυτό παρουσιάζονται περιληπτικά κάποιες ιδέες για διαφορετικές χρήσεις των αλγορίθμων που παρουσιάστηκαν στις προηγούμενες ενότητες της τρέχουσας διπλωματικής εργασίας. Επίσης παρουσιάζεται σε κάποιες περιπτώσεις και η επέκταση τους. Σημειώνεται ότι στην τρέχουσα εργασία έχουν υλοποιηθεί πλήρως και συμμετέχουν στην πειραματική αξιολόγηση οι ιδέες που θα αναφερθούν στην Ενότητα καθώς και στην Ενότητα 5.3). 5.1 Τεχνικές για αναπαράσταση συλλογής κειμένου με Inverted Index Στην ενότητα αυτή επικεντρωνόμαστε σε δένδρα Wavelet Tree που περιέχουν μια συλλογή κειμένων σε μορφή ανεστραμμένου αρχείου Εφαρμογή τεχνικών αυτοδεικτοδοτούμενου κειμένου σε Wavelet Tree ανεστραμμένου αρχείου Στην ενότητα αυτή παρουσιάζεται περιληπτικά πως μπορούν να συνδυαστούν οι τεχνικές που έχουν αναλυθεί για την αναπαράσταση συλλογής κειμένου με αυτοδεικτοδοτούμενο κείμενο (από την Ενότητα 4.2) στο δένδρο που έχει χτιστεί με βάση ένα ανεστραμμένο αρχείο μιας συλλογής κειμένων Χρήση Αλγορίθμου «A Simple Worst-Case Algorithm for Conjunctive Queries» Ο τρόπος με τον οποίο μπορεί ο αλγόριθμος «A Simple Worst-Case Algorithm for Conjunctive Queries» να χρησιμοποιηθεί σε ένα Wavelet Tree που περιέχει ένα ανεστραμμένο αρχείο είναι ο κάτωθι. Αλγόριθμος για ένα ερώτημα : Έστω ο όρος με τη μικρότερη λίστα εμφανίσεων. Δημιουργία της λίστας εμφανίσεων του όρου (μπορεί να χρησιμοποιηθεί η λειτουργία «Εξαγωγή οποιουδήποτε τμήματος» όπως περιγράφεται στην Ενότητα ) και ταξινόμηση τους με βάση τον αριθμό λέξεων που περιέχουν σε φθίνουσα σειρά. Πραγματοποιείται έλεγχος εάν κάθε κείμενο της λίστας εμφανίσεων υφίσταται μέσα στη λίστα εμφανίσεων του,δηλαδή μέσα στην, κάτι το οποίο ισχύει αν και μόνο αν: 63

65 Αν ισχύει η παραπάνω συνθήκη, το τρέχον document αποθηκεύεται μέσα στην λίστα των αποτελεσμάτων. Για την υλοποίηση του παραπάνω αλγορίθμου θα πρέπει να υπάρχει αποθηκευμένη η πληροφορία για το μέγεθος της λίστας εμφανίσεων κάθε όρου της συλλογής κάτι το οποίο κοστίζει χώρο αλλά το μέγεθος του είναι σχεδόν ασήμαντο στην πράξη. Αντίστοιχα παρουσιάζεται ο Αλγόριθμος για ερώτημα της μορφής : Πραγματοποιείται ταξινόμηση των όρων του ερωτήματος κατά αύξουσα σειρά, με βάση το μέγεθος της λίστας εμφανίσεων κάθε όρου. Στη συνέχεια, παράγεται η λίστα εμφανίσεων του όρου με τις λιγότερες εμφανίσεις και ταξινόμηση τους με βάση τον αριθμό λέξεων που περιέχουν σε φθίνουσα σειρά. Έπειτα γίνεται έλεγχος για το κάθε κείμενο της λίστας αν εμφανίζεται μέσα στη λίστα του επόμενου ταξινομημένου όρου. Όσα documents δεν υφίστανται στη λίστα του επόμενου όρου αφαιρούνται από το αποτέλεσμα. Η διαδικασία επαναλαμβάνεται και με τους υπόλοιπους ταξινομημένους όρους μέχρι να καταλήξουμε σε μια λίστα εμφανίσεων η οποία περιέχει την τομή των λιστών εμφανίσεων όλων των όρων. Στην Εικόνα 5.1 δίνεται ένα παράδειγμα για το ερώτημα. Ο όρος είναι ο όρος με την μικρότερη λίστα εμφανίσεων (του όρου έχει μέγεθος 9, του όρου έχει μέγεθος 8 ενώ του όρου έχει μέγεθος 4) και η λίστα εμφανίσεων του είναι ενώ αν ταξινομηθούν με βάση τον αριθμό λέξεων που περιέχουν σε φθίνουσα σειρά υποθέτουμε ότι η λίστα είναι. Άρα το αποτέλεσμα του ερωτήματος είναι «2» όπως φαίνεται και στην εικόνα. Εικόνα Χρήση Αλγορίθμου «An Adaptive Algorithm for Conjunctive Queries». 64

66 Ο αλγόριθμος «An Adaptive Algorithm for Conjunctive Queries» όπως περιγράφεται στην Ενότητα μπορεί να χρησιμοποιηθεί για την εύρεση των κοινών διακριτών λέξεων σε ένα σύνολο κειμένων. Ένα παράδειγμα εμφανίζεται στην Εικόνα 5.2. Εικόνα 5.2 Ο εν λόγω αλγόριθμος με μια μικρή μετατροπή ως προς τα ορίσματα του, μπορεί να χρησιμοποιηθεί και για την εύρεση όλων των διακριτών όρων ενός κειμένου Χρήση Λειτουργιών Wavelet Tree ανεστραμμένου αρχείου σε συνδυασμό με τον κλασσικό αλγόριθμο merging algorithm Στην Ενότητα παρουσιάστηκε ο αλγόριθμος «Merging Algorithm» για την απάντηση δυαδικών ερωτημάτων. Ως όρισμα ο αλγόριθμος αυτός απαιτεί δύο λίστες εμφανίσεων δύο όρων. Οι λίστες αυτές μπορούν να παραχθούν με τους κάτωθι αλγόριθμους και θα μπορούσαν να συνδυαστούν με τον «Merging Algorithm» για να αξιολογηθεί η απόδοση τους αν χρησιμοποιηθούν συνδυαστικά: Εξαγωγή οποιουδήποτε τμήματος (Ενότητα ). Εύρεση ενός μετά από επίσκεψη ενός, για. (Ενότητα ) Εύρεση ενός μετά από επίσκεψη ενός, για και Ο αλγόριθμος «Εύρεση ενός μετά από επίσκεψη ενός, για» στην τρέχουσα εργασία υλοποιήθηκε και για την περίπτωση «Εύρεση ενός μετά από επίσκεψη ενός, για», όπου. Ουσιαστικά πρόκειται για τον ίδιο αλγόριθμο τροποποιημένο να διατηρεί πληροφορίες για περισσότερες θέσεις και να τις βρίσκει διαδοχικά. Ο αλγόριθμος αυτός μπορεί να εκτελεστεί σε Wavelet Trees τα οποία έχουν χτιστεί για Full Text Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση το document id) και για Normal Shaped και Weight Balanced shaped Wavelet Trees τα οποία είναι πλήρως διατεταγμένα. Δεν μπορεί να εκτελεστεί σε δένδρα τα οποία έχουν χτιστεί για Ranked Retrieval (στην περίπτωση αυτή τα κείμενα ανά λέξη στην ακολουθία είναι διατεταγμένα από το μικρότερο στο μεγαλύτερο με βάση τη συχνότητα με την οποία εμφανίζεται μέσα τους η αντίστοιχη λέξη Παράρτημα Α), καθώς και για Huffman Shaped Wavelet Trees τα 65

67 οποία δεν είναι πλήρως διατεταγμένα (τα φύλλα τους δεν βρίσκονται σε αλφαβητική ή αριθμητική σειρά από αριστερά προς τα δεξιά). 5.2 Τεχνικές για αναπαράσταση συλλογής κειμένου με Self Indexed Text Στην ενότητα αυτή επικεντρωνόμαστε σε δένδρα Wavelet Tree που περιέχουν μια συλλογή κειμένων σε μορφή αυτοδεικτοδοτούμενο κειμένου Εφαρμογή τεχνικών ανεστραμμένου αρχείου σε Wavelet Tree αυτοδεικτοδοτούμενου κειμένου Χρήση Αλγορίθμου «Εξαγωγή οποιουδήποτε τμήματος». Ο αλγόριθμος «Εξαγωγή οποιουδήποτε τμήματος» που παρουσιάστηκε στην Ενότητα μπορεί να χρησιμοποιηθεί για την εξαγωγή του λεξιλογίου οποιουδήποτε τμήματος κειμένου, σε αλφαβητική σειρά για τις περιπτώσεις Normal Shaped και Weight Balanced Wavelet Trees ενώ για τις περιπτώσεις Huffman Shaped Wavelet trees θα πρέπει να χρησιμοποιηθεί και ένας αλγόριθμος ταξινόμησης Χρήση Αλγορίθμου «Τομή τμημάτων». Οι αλγόριθμοι «Τομή τμημάτων δύο λιστών, δύο όρων» (που παρουσιάστηκε στην λιστών, όρων» (που παρουσιάστηκε στην Ενότητα ) και «Τομή τμημάτων Ενότητα ) μπορούν να χρησιμοποιηθούν για την εύρεση των κοινών διακριτών όρων ενός συνόλου κειμένων της συλλογής Χρήση Λειτουργιών Wavelet Tree αυτοδεικτοδοτούμενου κειμένου σε συνδυασμό με τον κλασσικό αλγόριθμο merging algorithm Στην Ενότητα παρουσιάστηκε ο αλγόριθμος «Merging Algorithm» για την απάντηση δυαδικών ερωτημάτων. Ως όρισμα ο αλγόριθμος αυτός απαιτεί δύο λίστες εμφανίσεων δύο όρων. Οι λίστες αυτές μπορούν να παραχθούν με τον αλγόριθμο «Document Reporting» (από την Ενότητα ). 5.3 Σύγκριση τεχνικών εύρεσης Starting Position Στην ενότητα αυτή πραγματοποιείται σύγκριση των δύο τεχνικών εύρεσης starting position που παρουσιάζονται στις δημοσιεύσεις των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists», των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2] και των D. Arroyuelo, S. Gonzalez και 66

68 M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4]. Η πρώτη έχει αναλυθεί στην ενότητα , και αφορά τη χρήση μιας ξεχωριστής δομής bit vector για τον υπολογισμό της αρχικής θέσης κάθε λίστας. Στο Κεφάλαιο αυτό, θα αναφερόμαστε σε αυτή την τεχνική ως «Μέθοδος υπολογισμού starting position με extra bit vector». Η δεύτερη έχει αναλυθεί στην Ενότητα , και αφορά τη χρήση του ίδιου του δένδρου για τον υπολογισμό της αρχικής θέσης κάθε λίστας θέτοντας τον χαρακτήρα ως ένα ειδικό χαρακτήρα διαχωρισμού. Στο Κεφάλαιο αυτό, θα αναφερόμαστε σε αυτή την τεχνική ως «Μέθοδος υπολογισμού starting position με $» Δομή Self indexed Μέθοδος υπολογισμού starting position με $ Κάθε λίστα στην περίπτωση αυτή (λόγω του ότι στο αντίστοιχο Wavelet Tree έχει εισαχθεί κείμενο σε μορφή αυτοδεικτοδοτούμενου κειμένου), αφορά ένα κείμενο και περιέχει τις λέξεις του κειμένου που έχουν αντικατασταθεί με μοναδικά αναγνωριστικά λέξεων. Θυμίζουμε ότι για οποιοδήποτε δείκτη κειμένου, η λειτουργία Αν λάβουμε ώς παράδειγμα το δένδρο της Εικόνας 4.13, για εκφράζει την πρώτη θέση του κειμένου, μέσα στο. έχουμε όπως εμφανίζεται και στην Εικόνα 5.1. Εικόνα 5.1 Στο Κεφάλαιο αυτό, θα αναφερόμαστε σε αυτή την τεχνική ως «Μέθοδος υπολογισμού starting position με $» Δομή Inverted index Μέθοδος υπολογισμού starting position με extra bit vector Κάθε λίστα στην περίπτωση αυτή (λόγω του ότι στο αντίστοιχο Wavelet Tree έχει εισαχθεί κείμενο σε μορφή ανεστραμμένου αρχείου), αφορά έναν όρο και περιέχει αναγνωριστικά κειμένων μέσα στα οποία βρίσκεται στη συλλογή κειμένων). Θυμίζουμε ότι η αρχική θέση του όρου υπολογίζεται ως. Αν λάβουμε ως παράδειγμα την ακολουθία που παρουσιάστηκε στην ενότητα και εμφανίζεται στην Εικόνα 5.2, η δομή που προκείπτει είναι αυτή που εμφανίζεται στην Εικόνα

69 Εικόνα 5.2 Εικόνα 5.3 Άρα για έχουμε, για έχουμε κ.ο.κ. Στο Κεφάλαιο αυτό, θα αναφερόμαστε σε αυτή την τεχνική ως «Μέθοδος υπολογισμού starting position με extra bit vector» Διαφορές των δύο μεθόδων Καθότι η εύρεση των starting positions είναι μια απαραίτητη λειτουργία και στις δύο δομές, είναι ενδιαφέρον να γίνει η σύγκριση τους και να βρεθεί ποια είναι πιο αποδοτική. Παρατηρούμε ότι στην «Μέθοδο υπολογισμού starting position με $», για να βρεθεί η starting position είναι απαραίτητη η εισαγωγή του διαχωριστικού χαρακτήρα $ στην ακολουθία που περιέχεται στο Wavelet Tree. Έτσι αυξάνεται το μέγεθος του δένδρου, κάτι το οποίο μπορεί να έχει επίπτωση στους χρόνους εκτέλεσης των υπόλοιπων πράξεων στο δένδρου. Επίσης απαιτείται μια πράξη select στο επίπεδο του Wavelet Tree για τον υπολογισμό της αρχικής θέσης. Όπως φαίνεται και στον ψευδοκώδικα της λειτουργίας select [2] σε επίπεδο δένδρου στην Εικόνα 5.4, μια πράξη select στο επίπεδο του Wavelet Tree απαιτεί αρκετές πράξεις select σε επίπεδο bitvector. Εικόνα

70 Αντίθετα, στη «Μέθοδο υπολογισμού starting position με extra bit vector» δεν υπάρχει το κόστος του χώρου που καταλαμβάνει ο διαχωριστικός χαρακτήρας $ αφού αυτός δεν εισάγεται καθόλου στην δομή του Wavelet Tree. Επιπλέον, όταν γίνεται η εύρεση της starting position απαιτείται μια πράξη select στο επίπεδο του extra bit vector η οποία φυσικά εκτελείται γρηγορότερα από μια πράξη select στο επίπεδο του Wavelet Tree. Το μόνο αρνητικό στοιχείο της μεθόδου αυτής είναι ο έξτρα χώρος που καταλαμβάνει ο extra bit vector, αλλά είναι αμελητέος λόγο του κέρδους του χώρου που προκύπτει από τη μη εισαγωγή του $ στη δομή του Wavelet Tree, καθώς και από το χρόνο που εξοικονομείται για τις πράξεις της εύρεσης του starting position Αξιολόγηση των δύο μεθόδων και συνδυασμός Στην τρέχουσα εργασία θα γίνει πειραματική αξιολόγηση των δύο μεθόδων. Πρώτον θα πραγματοποιηθεί εφαρμογή της «Μεθόδου υπολογισμού starting position με extra bit vector» στο Wavelet Tree που έχει χτιστεί με Self Indexed Text. Δεύτερον θα πραγματοποιηθεί εφαρμογή της «Μεθόδου υπολογισμού starting position με $» στο Wavelet Tree που έχει χτιστεί με Inverted Index και θα εκτελεστούν οι αντίστοιχοι αλγόριθμοι απάντησης ερωτημάτων. Στην Εικόνα 5.5 απεικονίζεται η περίπτωση στην οποία το Wavelet Tree χτίζεται με βάση ένα Self Index Text και χρησιμοποιεί τη «Μέθοδο υπολογισμού starting position με $». Στην πειραματική αξιολόγηση το αντίστοιχο Wavelet Tree θα χτιστεί χρησιμοποιώντας τη «Μέθοδο υπολογισμού starting position με extra bit vector όπως φαίνεται στην Εικόνα 5.6. Η δομή που θα προκείψει εμφανίζεται στην Εικόνα 5.7. Εικόνα

71 Εικόνα 5.6 Εικόνα 5.7 Αντίστοιχα, στην Εικόνα 5.8 απεικονίζεται η περίπτωση στην οποία το Wavelet Tree χτίζεται με βάση ένα Inverted Index και χρησιμοποιεί τη «Μέθοδο υπολογισμού starting position με extra bit vector». Στην πειραματική αξιολόγηση το αντίστοιχο Wavelet Tree θα χτιστεί χρησιμοποιώντας τη «Μεθόδου υπολογισμού starting position με $» όπως φαίνεται στην Εικόνα 5.9. Εικόνα

72 Εικόνα 5.9 Αφού γίνει υλοποίηση των παραπάνω περιπτώσεων θα εκτελεστούν πειράματα για να αποδειχθεί ποια μέθοδος υπολογισμού είναι πιο αποδοτική. Το αναμενόμενο αποτέλεσμα είναι ότι η πιο γρήγορη μέθοδος είναι εκείνη του extra bit vector. Αυτό μπορεί να δείξει την βελτίωση της εκτέλεσης των αλγορίθμων σε χρόνο. 71

73 ΚΕΦΑΛΑΙΟ 6 - Κατανεμημένη επέκταση - Πολιτικές caching 6.1.Εισαγωγή Στην ενότητα αυτή συνδυάζονται κάποιες ιδέες που αναλύονται στην δημοσίευση των X. Long και T. Suel «Three Level Caching for Efficient Query Processing in Large Web Search Engines» [10] με τη χρήση Wavelet Trees για την υλοποίηση τους. Η ιδέα που παρουσιάζεται στη δημοσίευση των X. Long και T. Suel «Three Level Caching for Efficient Query Processing in Large Web Search Engines» αφορά τα εξής. Οι μεγάλες διαδικτυακές μηχανές αναζήτησης πρέπει να απαντήσουν χιλιάδες ερωτήματα ανά δευτερόλεπτο με διαδραστικούς χρόνους απόκρισης. Δεδομένου του μεγέθους των δεδομένων που εμπλέκονται στη διαδικασία αυτή συχνά στο μέγεθος πολλών terabytes, ένα και μόνο ερώτημα απαιτεί την επεξεργασία εκατοντάδων χιλιάδων megabytes (μπορεί και περισσότερων) δεικτοδοτημένων δεδομένων. Για την διαχείριση τόσο μεγάλου φόρτου, οι μηχανές αναζήτησης επιστρατεύουν clusters από εκατοντάδες ή χιλιάδες μηχανές και ένα σύνολο τεχνικών caching, συμπίεσης, δεικτοδότησης και διαχείρισης ερωτημάτων για να πετύχουν τη μέγιστη εξοικονόμηση χώρου και χρόνου. Πιο συγκεκριμένα χρησιμοποιούνται two-level caching (διπλού επιπέδου caching) τεχνικές, οι οποίες αποθηκεύουν αποτελέσματα ερωτημάτων που χρησιμοποιούνται συχνότερα όπως και δεικτοδοτημένα δεδομένα που αφορούν όρους που χρησιμοποιούνται συχνότερα σε ερωτήματα. Στην δημοσίευση αυτή προτείνεται το three-level caching (τριπλού επιπέδου caching) το οποίο διαθέτει ένα επιπλέον ενδιάμεσο επίπεδο για επιπλέον εξοικονόμηση απόδοσης. Αυτό το επίπεδο προσπαθεί να εκμεταλλευτεί συχνά εμφανιζόμενα ζεύγη όρων, αποθηκεύοντας τις διατομές (interserctions) ή προβολές (projections) των αντίστοιχων λιστών τους (λίστες όπως ορίζονται σε ένα ανεστραμμένο αρχείο). Ένας αλγόριθμος που προτείνεται στην εργασία των X. Long και T. Suel ονομάζεται «A Simple Greedy Algorithm» και είναι ένας offline αλγόριθμος ο οποίος αναπαριστά το three level caching και αναλύεται στην επόμενη ενότητα. Στην τρέχουσα διπλωματική εργασία παρουσιάζεται ένα υπόδειγμα δείγμα υλοποίησης του με τη χρήση Wavelet Trees, το οποίο αναπαριστά τα δεδομένα είτε ως Inverted Index είτε ως Self Indexed Text και χρησιμοποιεί τους αλγορίθμους που παρουσιάζονται στις δημοσιεύσεις των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists», των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2] και των D. Arroyuelo, S. Gonzalez and M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4], αφού τροποποιηθούν για τις ανάγκες υλοποίησης του Simple Greedy Algorithm. 6.2 A Simple Greedy Algorithm Στην ενότητα αυτή, αναλύεται ο Αλγόριθμος «Simple Greedy Algorithm» που παρουσιάζεται στη δημοσίευση των X. Long και T. Suel «Three Level Caching for Efficient 72

74 Query Processing in Large Web Search Engines» [10] ο οποίος πρόκειται για μια πολιτική για Intersection Caching. Ενώ στην πραγματικότητα δεν υπάρχει προηγούμενη γνώση για την σύσταση της ακολουθίας των ερωτημάτων, το offline πρόβλημα έχει εντούτοις πρακτικό ενδιαφέρον αφού μπορεί να χρησιμοποιηθεί για την αποθήκευση δεδομένων, βασισμένη στην ανάλυση των πιο πρόσφατα εκτελεσμένων ερωτημάτων. Για το λόγω αυτό δημιουργήθηκε ο αλγόριθμος Simple Greedy για το offline πρόβλημα ο οποίος σε κάθε βήμα του προσθέτει ένα projection στη μνήμη cache κάτι το οποίο μεγιστοποιεί την αναλογία εξοικονόμησης στην επεξεργασία / εκτέλεση queries και το μέγεθος του projection. Ουσιαστικά ο αλγόριθμος αυτός υπολογίζει με βάση μια συλλογή queries, από ποια ζεύγη terms των queries της συλλογής θα πρέπει να παραχθούν projections έτσι ώστε τα projections των ζευγών που χρησιμοποιούνται συχνότερα να αποθηκευτούν σε μια cache για να χρησιμοποιηθούν μελλοντικά, μαζί με τις λίστες των υπολοίπων όρων κατά την εκτέλεση queries. Έστω ότι όπου. Για κάθε ερώτημα που εκτελείται, μπορεί να δημιουργηθεί και να αποθηκευθεί οποιαδήποτε projection λίστα με, δεδομένης μιας μέγιστης μνήμης (cache) μεγέθους. Το μέγεθος της είναι. Το ερώτημα μπορεί να εκτελεστεί με διαπέραση για κάθε είτε της είτε της με που υφίσταται ανά πάσα στιγμή στην cache. Αλγόριθμος: 1. Για κάθε query, μέσα στην ακολουθία και κάθε projection με : Δημιουργείται μια καταχώρηση όπου το μέγεθος του projection και το πλεονέκτημα (benefit) όταν χρησιμοποιούμε αυτό αντί την πλήρη λίστα (του όρου ). 2. Συνδυασμός όλων των καταχωρήσεων με όμοιο σε μια καταχώρηση, με ένα επιπλέον πεδίο στο τέλος το οποίο ονομάζεται συνολικό πλεονέκτημα (total benefit) και περιέχει το άθροισμα των πλεονεκτημάτων στις συνδυαζόμενες καταχωρήσεις καθώς και με την ακολουθία όλων των αριθμών των queries. 3. Φόρτωμα των καταχωρήσεων σε μια δομή (heap) η οποία επιτρέπει εξαγωγή των στοιχείων με μέγιστη αναλογία του συνολικού πλεονεκτήματος στο μέγεθος του projection. 4. Επαναληπτική εξαγωγή κάθε στοιχείου και προσθήκη του στην cache. Αν δεν χωράει, τότε το στοιχείο απορρίπτεται και επιλέγεται κάποιο άλλο μέχρι η δομή (heap) να αδειάσει. Μετά από κάθε εξαγωγή μιας καταχώρησης μειώνεται το συνολικό πλεονέκτημα όλων των projections στα οποία τα εμφανίζονται σε ένα κοινό query. 73

75 Πολυπλοκότητα: O παραπάνω αλγόριθμος τρέχει σε χρόνο στην χειρότερη περίπτωση, όπου μεγεθών των queries., δηλαδή το άθροισμα των τετραγώνων των 6.3 Υλοποίηση Simple Greedy Algorithm με χρήση Wavelet Trees δομές: Για την υλοποίηση του Simple Greedy Algorithm θα χρησιμοποιηθούν 3 βασικές Μια δομή wavelet tree (Main Wavelet Tree) η οποία ονομάστηκε έτσι γιατί χρησιμοποιείται για την αποθήκευση της συλλογής κειμένων πάνω στα οποία έχει εκτελεστεί η συλλογή των queries. To wavelet tree αυτό χρησιμοποιείται για την γρήγορη και προσαρμοσμένη ανάλογα με τις τρέχουσες ανάγκες του αλγορίθμου, παραγωγή των projections. Αυτό μπορεί να γίνει με δύο τρόπους: o Με βάση τον τρόπο που παρουσιάζεται στη δημοσίευση των D. Arroyuelo, S. Gonzalez και M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4], αντιμετωπίζοντας τη συλλογή κειμένων ως μια self indexed συλλογή κειμένων. Η παραγωγή των projections προκύπτει από την κατασκευή δύο αλγορίθμων οι οποίοι είναι παραλλαγές των αλγορίθμων A Simple Worst- Case Algorithm for Conjunctive Queries και An Adaptive Algorithm for Conjunctive Queries που παρουσιάζονται στην ίδια δημοσίευση. o Με βάση τον τρόπο που παρουσιάζεται στις δημοσιεύσεις των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists», των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2] αντιμετωπίζοντας τη συλλογή κειμένων ως ένα inverted index. Η παραγωγή των projections προκύπτει από την κατασκευή ενός αλγορίθμου ο οποίος είναι μια παραλλαγή του αλγορίθμου για την παραγωγή intersections που προτείνεται στο paper των Gagie, Navarro και Puglisi, New Algorithms on Wavelet Trees and Applications to Information Retrieval Μια δομή wavelet tree (Query Wavelet Tree) η οποία ονομάστηκε έτσι γιατί χρησιμοποιείται για την αποθήκευση της συλλογής των queries. Το wavelet tree αυτό (ανεξάρτητα από τον τρόπο με τον οποίο θα χτιστεί) χρησιμοποιείται για τον γρήγορο υπολογισμό του συνολικού βάρους κάθε projection που θα παραχθεί με βάση τη συλλογή των queries. To wavelet tree αυτό μπορεί να χτιστεί με δύο τρόπους: o Με βάση τον τρόπο που παρουσιάζεται δημοσίευση των D. Arroyuelo, S. Gonzalez και M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4], αντιμετωπίζοντας τη συλλογή των queries ως μια self indexed συλλογή κειμένων. 74

76 o Στην περίπτωση αυτή το συνολικό βάρος κάθε projection υπολογίζεται από την κατασκευή δύο αλγορίθμων οι οποίοι είναι παραλλαγές των αλγορίθμων A Simple Worst-Case Algorithm for Conjunctive Queries και An Adaptive Algorithm for Conjunctive Queries που παρουσιάζονται στην ίδια δημοσίευση. Με βάση τον τρόπο που παρουσιάζεται στις δημοσιεύσεις των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists», των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.» [3,2] αντιμετωπίζοντας τη συλλογή των queries ως ένα inverted index. Στην περίπτωση αυτή το συνολικό βάρος κάθε projection παράγεται από έναν αλγόριθμο ο οποίος είναι παραλλαγή του αλγορίθμου για την παραγωγή intersections που προτείνεται στις εν λόγω δημοσιεύσεις. Μια δομή A (είτε δυναμικός πίνακας είτε συνδεδεμένη λίστα, η οποία ονομάστηκε έτσι τυχαία) η οποία χρησιμοποιείται για την αποθήκευση διακριτών ζευγών όρων η οποία καταλαμβάνει λίγο χώρο στην μνήμη και προσφέρει εκτέλεση γρήγορων λειτουργιών αναζήτησης και εισαγωγής των ζευγών με τη χρήση μιας hash function HS. Σημειώνεται αυτή η δομή μπορεί να υλοποιηθεί και με άλλους τρόπους. Στην τρέχουσα διπλωματική εργασία απλά προτείνεται αυτός. Αλγόριθμος: Για κάθε query της ακολουθίας : 1. Υπολογισμός όλων των πιθανών ζευγαριών μεταξύ των terms που περιέχει το τρέχον και μελέτη για το αν κάθε ζευγάρι έχει συναντηθεί ήδη με την βοήθεια μιας δομής Α (δυναμικός πίνακας ή συνδεδεμένη λίστα). 2. Για όλα τα ζευγάρια που δεν έχουν συναντηθεί: o Εισαγωγή τους στην δομή Α Παραγωγή των projection τους στο Main Wavelet Tree, και ταυτόχρονος υπολογισμός του μεγέθους της λίστας τους(αφού υπάρχει η λίστα του κάθε projection γνωρίζουμε και το μέγεθος της). Υπολογισμός αριθμού query στα οποία υπάρχει ένα ζεύγος terms με βάση το Query Wavelet Tree. Υπολογισμός του συνολικού πλεονεκτήματος (total benefit) του κάθε Projection list με βάση τον πολλαπλασιασμό του πλεονεκτήματος (benefit) ενός projection επί τον αριθμό των queries στα οποία υπάρχει το αντίστοιχο ζεύγος του projection 3. Υπολογισμός μέχρι είτε να τελειώσουν τα queries, είτε να τελειώσουν οι πιθανοί συνδυασμοί. Στις επόμενες ενότητες αναλύεται κάθε κομμάτι από τα παραπάνω ξεχωριστά Main Wavelet Tree 75

77 Στην ενότητα αυτή παρουσιάζεται η δομή wavelet tree (Main Wavelet Tree), η οποία χρησιμοποιείται για την αποθήκευση της συλλογής κειμένων πάνω στα οποία έχει εκτελεστεί η συλλογή των queries. To wavelet tree αυτό χρησιμοποιείται για την γρήγορη και προσαρμοσμένη ανάλογα με τις τρέχουσες ανάγκες του αλγορίθμου, παραγωγή των projections. Το δένδρο αυτό μπορεί να χτιστεί και να χρησιμοποιηθεί με δύο τρόπους. Με βάση τον τρόπο που παρουσιάζεται στη δημοσίευση των D. Arroyuelo, S. Gonzalez και M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4], αντιμετωπίζοντας τη συλλογή κειμένων ως μια self indexed συλλογή κειμένων όπως παρουσιάζεται στην Ενότητα 4.2, ή με βάση τον τρόπο που παρουσιάζεται στις δημοσιεύσεις των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists», των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.»[3,2] αντιμετωπίζοντας τη συλλογή κειμένων ως ένα inverted index όπως παρουσιάζεται στην Ενότητα Συλλογή κειμένων ως Self Indexed Text Στην ενότητα αυτή παρουσιάζεται η δομή wavelet tree (Main Wavelet Tree) η οποία χρησιμοποιείται για την αποθήκευση της συλλογής κειμένων σε μορφή Self Indexed Text, πάνω στα οποία έχει εκτελεστεί η συλλογή των queries. To wavelet tree αυτό χρησιμοποιείται για την γρήγορη και προσαρμοσμένη ανάλογα με τις τρέχουσες ανάγκες του αλγορίθμου, παραγωγή των projections Χτίσιμο του Main Wavelet Tree Έστω ότι μια συλλογή κειμένων μεγέθους αναπαριστάται ως μια ακολουθία Θέτοντας τον χαρακτήρα ακολουθία bits. Σε κάθε κείμενο, όρων, όπου κάθε κείμενο ενός λεξιλογίου, μεγέθους. ως ένα ειδικό χαρακτήρα διαχωρισμού, χτίζεται η μήκους και μεγέθους αποδίδεται ένα μονάδικό αναγνωριστικό κειμένου (doc id). Έστω ότι χειριζόμαστε τη συλλογή κειμένων που εμφανίζεται στην Εικόνα 6.1, από την οποία χτίζεται η ακολουθία. Πιο αναλυτικά χτίζεται η ακολουθία της Εικόνας 6.2 η οποία αναπαριστάται με το Wavelet Tree που απεικονίζεται στην Εικόνα

78 Εικόνα 6. 1 Εικόνα 6.2 Εικόνα 6. 3 Σημειώνεται ότι οι Βοηθητικές Λειτουργίες «Υπολογισμός κειμένου στο οποίο ανήκει η θέση - Λειτουργία» και «Υπολογισμός Aρχικής Θέσης κειμένου - Λειτουργία» που περιγράφονται στην Ενότητα 4.2.3, ισχύουν όπως περιγράφονται εκεί και στην τρέχουσα μελέτη μας Αλγόριθμος για την παραγωγή Projection Lists Η παραγωγή των Projection Lists με βάση το δένδρο που παρουσιάστηκε στην προηγούμενη ενότητα προκύπτει από την κατασκευή δύο αλγορίθμων οι οποίοι είναι παραλλαγές των αλγορίθμων A Simple Worst-Case Algorithm for Conjunctive Queries και An Adaptive Algorithm for Conjunctive Queries που παρουσιάστηκαν στην Ενότητα

79 Παραλλαγή του αλγορίθμου A Simple Worst-Case Algorithm for Conjunctive Queries Ο αλγόριθμος που παρουσιάζεται παρακάτω χρησιμοποιείται για την παραγωγή ενός projection list δύο όρων. Αλγόριθμος: Έστω ότι ο όρος με την μικρότερη λίστα εμφανίσεων. Δημιουργία της λίστας εμφανίσεων του όρου, όπως περιγράφεται στην Ενότητα Πραγματοποιείται έλεγχος εάν ο όρος υπάρχει μέσα σε κάθε document που περιέχεται στη λίστα, κάτι το οποίο ισχύει αν και μόνο αν: Αν ισχύει η παραπάνω συνθήκη, το τρέχον document αποθηκεύεται μέσα στις projection lists. Φυσικά για να γίνει αυτό θα πρέπει να υπάρχει αποθηκευμένη η πληροφορία για το μέγεθος της λίστας εμφανίσεων κάθε όρου της συλλογής κάτι το οποίο κοστίζει χώρο αλλά το μέγεθος του είναι σχεδόν ασήμαντο στην πράξη. Όπως μπορεί να παρατηρηθεί ο αλγόριθμος αυτός δεν διαφέρει σε σχέση με τον αλγόριθμο που αναλύεται στην Ενότητα (Αλγόριθμος για ένα ερώτημα ). Στην περίπτωση όμως που ένα ερώτημα περιέχει περισσότερους από δύο όρους, και απαιτείται η παραγωγή των projection lists όλων ή κάποιων από τους συνδυασμούς μεταξύ των όρων, ο αλγόριθμος που παρουσιάζεται στην Ενότητα (Αλγόριθμος για ερώτημα της μορφής,ο οποίος τονίζεται ότι αποφασίζει για το ποια λίστα θα παραχθεί με βάση το ελάχιστο μέγεθος) έχει τροποποιηθεί και παρουσιάζεται ως κάτωθι. Αλγόριθμος εξοικονόμησης πράξεων για την παραγωγή πολλών projection list μεταξύ ενός συνόλου όρων : Ο αλγόριθμος που παρουσιάζεται στο σημείο αυτό είναι αφορά την παραγωγή πολλών projection list μεταξύ ενός συνόλου όρων. Τα projection lists αυτά μπορεί να αντιστοιχούν σε όλους τους συνδυασμούς μεταξύ των όρων ή μεταξύ ενός υποσυνόλου τους. Σκοπός του αλγορίθμου αυτού είναι η παραγωγή όλων των ζητούμενων projection lists με την μέγιστη εξοικονόμηση πράξεων και. Έστω ότι το σύνολο των όρων που συμμετέχουν στην διαδικασία, τα μεγέθη των λιστών εμφάνισης τους, τα πλήθη των projections στα οποία πρέπει να συμμετάσχει ο κάθε όρος, ενώ οι λίστες με τα terms με τα οποία θα πρέπει να συνδυαστούν οι όροι για να δημιουργηθούν τα ζητούμενα projection lists είναι: 78

80 Πιο αναλυτικά, ο term θα πρέπει να συνδυαστεί με τα terms που ανήκουν στη λίστα, o term θα πρέπει να συνδυαστεί με τα terms που ανήκουν στη λίστα κ.ο.κ. Σκοπός μας είναι ο υπολογισμός ενός βάρους που αντιστοιχεί στη λίστα εμφανίσεων κάθε term έτσι ώστε να αποφασίζεται εάν η λίστα αξίζει να παραχθεί πριν από τις υπόλοιπες. Τονίζεται ότι με τον αλγόριθμο αυτό, ανάλογα με τους συνδυασμούς των projections που θα πρέπει παραχθούν, κάποιες λίστες (αυτές με μεγαλύτερο κόστος) μπορεί να μη χρειαστεί να παραχθούν. Γνωρίζουμε ότι η παραγωγή ενός doc μιας λίστας εμφανίσεων κοστίζει 2 λειτουργίες rank και 2 λειτουργίες select. Επίσης γνωρίζουμε ότι η πράξη έλεγχου για το αν ένας term υπάρχει σε κάποιο doc της λίστας εμφανίσεων ενός άλλου term κοστίζει και αυτή 2 rank και 2 select. Ως ορίζονται τα βάρη των λιστών όλων των term και υπολογίζονται ως εξής: Ουσιαστικά τα βάρη εκφράζουν το κόστος που θα έχει κατά μέσο όρο ο υπολογισμός ενός projection list αν παραχθεί η αντίστοιχη λίστα των terms την τρέχουσα στιγμή. Κάθε μονάδα βάρους αντιστοιχεί σε 2 πράξεις rank και 2 πράξεις select.με βάση τα παραπάνω δεδομένα ο αλγόριθμος διαμορφώνεται ως κάτωθι. Αλγόριθμος: 1. Υπολογισμός βαρών των λιστών των terms που δεν έχουν παραχθεί. 2. Έστω ότι ο όρος με το μικρότερο βάρος. o Δημιουργία της λίστας εμφανίσεων του όρου και παραγωγή όλων των projection lists που πρέπει να συνδυαστούν με τον. o Έλεγχος για το εάν οι όροι που υπάρχουν μέσα στη λίστα υπάρχουν μέσα σε κάθε document που περιέχεται στη λίστα, κάτι το οποίο ισχύει αν και μόνο αν: 79

81 Αν ισχύει η παραπάνω συνθήκη, το τρέχον document αποθηκεύεται μέσα στην αντίστοιχη projection list που αντιστοιχεί σε έναν από τους συνδυασμούς μεταξύ και. 3. Ενημέρωση των τιμών και των λιστών. (ουσιαστικά γίνεται αφαίρεση του όρου από τις λίστες) 4. Επανάληψη των βημάτων 1,2,3 μέχρι να τελειώσει η παραγωγή όλων των projection lists. Σημειώνεται ότι ο αλγόριθμος αυτός αποφασίζει για το ποια λίστα θα παραχθεί λαμβάνοντας υπόψη του και το μέγεθος της λίστας αλλά και τον αριθμό των projections για την παραγωγή των οποίων θα χρησιμοποιηθεί η λίστα αυτή. Για αυτό το λόγο μας δίνει τόσο καλό αποτέλεσμα, όπως φαίνεται και στα παραδείγματα που ακολουθούν. Παρακάτω δίνονται δύο παραδείγματα υλοποίησης του αλγορίθμου: Παράδειγμα 1 Έστω ότι έχουμε το query 1,2,3,4,5,6 και θέλουμε να υπολογίσουμε τα projection lists των συνδυασμών: Τη λίστα με το intersection των όρων 1 και 2 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 3 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 4 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 5 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 6 (projection lists και ). Έστω επίσης ότι τα μεγέθη των λιστών εμφανίσεων των terms, 7, 7, 7, 7, 7. Άρα έχουμε το αποτέλεσμα του Πίνακα 6.1. είναι Term Μέγεθος Λίστας Εμφανίσεων Λίστα Μέγεθος Λίστας Βάρος Λίστας 8 2,3,4,5,6 5 =9, = = = = =14 80

82 Πίνακας 6.1 Παρατηρούμε ότι αν είχαμε παράγει την μικρότερη λίστα εμφανίσεων κάθε φορά μέχρι να υπολογισθούν όλα τα projection lists θα είχαμε παράγει τις λίστες των terms 2,3,4,5,6 και το κόστος θα ήταν: (7+7)*5=70. Αν παράγουμε όμως μόνο τη λίστα του term 1 με 9.6 με βάση τον αλγόριθμο που προτείνεται, θα έχουμε παράγει όλα τα Projection Lists και θα έχουμε κόστος 8+ (8*5)=48 Παράδειγμα 2 Έστω ότι έχουμε πάλι το query 1,2,3,4,5,6 και θέλουμε ξανά να υπολογίσουμε τα projection lists των συνδυασμών: Τη λίστα με το intersection των όρων 1 και 2 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 3 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 4 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 5 (projection lists και ). Τη λίστα με το intersection των όρων 1 και 6 (projection lists και ). του Πίνακα 6.2. Σε σχέση με το Παράδειγμα 1 όμως τα μεγέθη των λιστών εμφανίσεων των terms είναι, 7, 7, 7, 7, 2. Άρα έχουμε το αποτέλεσμα Term Μέγεθος Λίστας Εμφανίσεων Λίστα Μέγεθος Λίστας Βάρος Λίστας 8 2,3,4,5,6 5 =9, = = = = =2 Πίνακας 6.2 Παρατηρούμε ότι αν είχαμε παράγει την μικρότερη λίστα εμφανίσεων κάθε φορά μέχρι να υπολογισθούν όλα τα projection lists θα παράγαμε τις λίστες των terms 2,3,4,5,6 και το κόστος θα ήταν: 2+2+[(7+7)*4]=60. Επίσης, αν παράγουμε μόνο τη λίστα του term 1 θα έχουμε παράγει όλα τα Projection Lists και θα είχαμε κόστος 8+ (8*5)=48. 81

83 Με τον αλγόριθμο που προτείνεται θα έχουμε το εξής αποτέλεσμα: Αρχικά θα παραχθεί η λίστα του term 6 με 2 και θα το projection του συνδυασμού terms (1,6) με κόστος 2+2=4. Στη συνέχεια αφού θα έχει παραχθεί το projection του συνδυασμού (1,6) ο πίνακας θα μεταβληθεί όπως φαίνεται στον Πίνακα 6.3. Term Μέγεθος Λίστας Εμφανίσεων Λίστα Μέγεθος Λίστας Βάρος Λίστας 8 2,3,4,5 4 = = = = =14 Πίνακας 6.3 Οπότε στη συνέχεια θα παραχθεί η λίστα του term 1 με 10 και θα παράγουμε το projection των συνδυασμών terms (1,2), (1,3), (1,4), (1,5) με κόστος 8+(8*4)=40. Άρα το συνολικό κόστος για την παραγωγή όλων των projections θα είναι 44, δηλαδή ακόμα μικρότερο από αυτό που θα είχαμε αν είχαμε παράγει μόνο τη λίστα του term Παραλλαγή του αλγορίθμου An Adaptive Algorithm for Conjunctive Queries Ο αλγόριθμος που παρουσιάζεται παρακάτω χρησιμοποιείται για την παραγωγή ενός projection δύο όρων. Αλγόριθμος: Πραγματοποιείται αναζήτηση της πρώτης εμφάνισης του κάθε όρου του ερωτήματος ως και όπου η θέση της πρώτης εμφάνισης του όρου στο, και η θέση της πρώτης εμφάνισης του όρου στο. Γίνεται η υπόθεση ότι τα οποία αντιστοιχούν στα document ids αντίστοιχα, για. Μπορεί να παρατηρηθεί ότι δεν είναι αναγκαίο να 82

84 αναζητηθούν οι εμφανίσεις του στα documents, αφού δεν υπάρχουν εμφανίσεις του μέσα τους. Έτσι ο δείκτης μπορεί να μετακινηθεί στην πρώτη θέση του document και να γίνει από εκεί και πέρα η αναζήτηση της επόμενης εμφάνισης του. o Αν αυτή η εμφάνιση βρίσκεται μέσα στο document, τότε το εισάγεται στα αντίστοιχα projection lists. o Αν η εμφάνιση αυτή ανήκει σε document με id μεγαλύτερο του, τότε ο δείκτης μετακινείται στην αρχή του document που περιέχει το H διαδικασία επαναλαμβάνεται μέχρι είτε το, είτε το να φτάσουν την τιμή. Όπως μπορεί να παρατηρηθεί ο αλγόριθμος αυτός δεν διαφέρει σε σχέση με τον αλγόριθμο που αναλύεται στην Ενότητα (Αλγόριθμος για ένα ερώτημα ). Στην περίπτωση όμως που ένα ερώτημα περιέχει περισσότερους από δύο όρους, και απαιτείται η παραγωγή των projection lists όλων ή κάποιων από τους συνδυασμούς μεταξύ των όρων, ο αλγόριθμος που παρουσιάζεται στην Ενότητα (Αλγόριθμος για ερώτημα της μορφής, έχει τροποποιηθεί και παρουσιάζεται ως κάτωθι. Αλγόριθμος για την παραγωγή όλων ή ενός υποσυνόλου των δυνατών projection lists μεταξύ όρων : 1. Kάθε όρος του ερωτήματος έχει έναν δείκτη ο οποίος εκφράζει την πιο πρόσφατη θέση εμφάνισης του. Γίνεται εύρεση της θέσης της πρώτης εμφάνισης των με και καθορίζονται τα documents τα οποία τις περιέχουν με Καθώς παράγονται τα, αποθηκεύεται στην μεταβλητή το μικρότερο document id από τα μέσα στο οποίο περιέχεται κάποια εμφάνιση 2. Στη συνέχεια πραγματοποιείται αναζήτηση των επόμενων εμφανίσεων των terms των οποίων οι δείκτες βρίσκονται στο κείμενο με τον εξής τρόπο: Αν το περιέχει περισσότερες από μια τιμές (που αντιστοιχούν σε πολλά terms): 83

85 o Επιλέγεται τυχαία (ή με βάση τον ελάχιστο δείκτη των ) ένα από όλα τα terms που υπάρχουν στο. Έστω ότι το term αυτό είναι το. o Γίνεται αναζήτηση της επόμενης εμφάνισης του με τον εξής τρόπο: Αν στο υπάρχουν δείκτες των οποίον τα projection lists πρέπει να παραχθούν σε συνδυασμό με το τότε το document αποθηκεύεται στο αντίστοιχο projection list και στη συνέχεια γίνεται εύρεση της επόμενης εμφάνισης του από το κείμενο +1 και μετά, δηλαδή από τη θέση και μετά. Έτσι η επόμενη εμφάνιση του ορίζεται με ενώ υπολογίζεται και το αντίστοιχο Αν στο δεν υπάρχουν δείκτες των οποίων τα projection lists πρέπει να παραχθούν σε συνδυασμό με το τότε γίνεται εύρεση της επόμενης εμφάνισης του από το document στο οποίο βρίσκεται το ελάχιστο των terms των οποίων πρέπει να παραχθούν projection lists σε συνδυασμό με το. Η παραπάνω διαδικασία επαναλαμβάνεται μέχρι να υπάρξει μόνο μία τιμή στο. Αν το περιέχει μονάχα μια τιμή που αντιστοιχεί στο τότε γίνεται εύρεση της επόμενης εμφάνισης του από το document στο οποίο βρίσκεται το ελάχιστο των terms των οποίων πρέπει να παραχθούν projection lists σε συνδυασμό με το. Στη συνέχεια υπολογίζεται το νέο από τα τρέχοντα. 3. Το βήμα 2 επαναλαμβάνεται μέχρι k- 1 των δεικτών να φτάσουν στο τέλος της ακολουθίας. Παρακάτω δίνονται δύο παραδείγματα υλοποίησης του αλγορίθμου: Παράδειγμα 1: Έστω ότι έχουμε το query 1,5,8 και θέλουμε να υπολογίσουμε όλα τα projection lists των συνδυασμών, δηλαδή: Τη λίστα με το intersection των όρων 1 και 5 η οποία αντιστοιχεί στα projection lists και. Τη λίστα με το intersection των όρων 1 και 8 η οποία αντιστοιχεί στα projection lists και. 84

86 Τη λίστα με το intersection των όρων 5 και 8 η οποία αντιστοιχεί στα projection lists και. Με βάση τον παραπάνω αλγόριθμο θα έχουμε το αποτέλεσμα, και, όπως εμφανίζεται στην Εικόνα 6.4. Εικόνα 6.4 Παράδειγμα 2: Έστω ότι έχουμε ξανά το query 1,5,8 αλλά αυτή τη φορά δεν θέλουμε να υπολογίσουμε τα projection lists όλων των συνδυασμών αλλά μόνο: Τη λίστα με το intersection των όρων 1 και 8 η οποία αντιστοιχεί στα projection lists και. Τη λίστα με το intersection των όρων 5 και 8 η οποία αντιστοιχεί στα projection lists και. Με βάση τον παραπάνω αλγόριθμο θα έχουμε το αποτέλεσμα,, όπως εμφανίζεται στην Εικόνα 6.5. Εικόνα Συλλογή κειμένων ως Inverted Index Στην ενότητα αυτή παρουσιάζεται η δομή wavelet tree (Main Wavelet Tree) η οποία χρησιμοποιείται για την αποθήκευση της συλλογής κειμένων σε μορφή Inverted Index, πάνω στα οποία έχει εκτελεστεί η συλλογή των queries. To wavelet tree αυτό χρησιμοποιείται για την γρήγορη και προσαρμοσμένη ανάλογα με τις τρέχουσες ανάγκες του αλγορίθμου, παραγωγή των projections. 85

87 Χτίσιμο του Main Wavelet Tree Έστω ότι το πλήθος των documents μέσα στα οποία εμφανίζεται ο term και η λίστα των documents μέσα στα οποία υπάρχει ο term. Όλες οι λίστες ενοποιούνται σε μία λίστα όπου ο συνολικός αριθμός των διακριτών terms στα documents. Έτσι χτίζεται η ακολουθία: Χρησιμοποιούμε ως παράδειγμα το Inverted Index της Εικόνας 6.6. Από το εν λόγω Inverted Index προκύπτουν κάτωθι λίστες ανά term: Εικόνα 6.6 Η λίστα που ενοποιεί όλες τις παραπάνω σε μια ακολουθία είναι η, δηλαδή: Από τη λίστα προκείπτει το Wavelet Tree που εμφανίζεται στην Εικόνα

88 Εικόνα Αλγόριθμος για την παραγωγή Projection Lists Η παραγωγή των Projection Lists με βάση το δένδρο που παρουσιάστηκε στην προηγούμενη ενότητα προκύπτει από την κατασκευή ενός αλγορίθμου ο οποίος είναι παραλλαγή του αλγορίθμων για την παραγωγή Intersections που παρουσιάστηκε στην Ενότητα Ο αλγόριθμος αυτός κάνει μαζικό intersection για την ταυτόχρονη εύρεση των projection lists ζευγαριών terms συνδυασμών. Αλγόριθμος: Έστω ότι είναι η ρίζα του δένδρου και η ακολουθία των bits. Αν όλα τα διαστήματα είναι κενά ή υπάρχει μόνο ένα ενεργό διάστημα ή αν τα διαστήματα των terms που είναι ενεργά δεν αντιστοιχούν σε κάποιο θεμιτό συνδυασμό, η αναζήτηση σε αυτό το κλαδί εγκαταλείπεται. Ο αλγόριθμος θα κατευθυνθεί αριστερά αφού υπολογιστούν οι νέες τιμές για το αριστερό παιδί, ως εξής: Ο αλγόριθμος θα κατευθυνθεί δεξιά αφού υπολογιστούν οι νέες τιμές για το δεξί παιδί, ως εξής: 87

89 Κάθε φορά που συναντάται κάποιο φύλο, αν υπάρχουν δύο ενεργά διαστήματα τα οποία αντιστοιχούν σε κάποιο θεμιτό συνδυασμό, η τιμή που περιέχει αποθηκεύεται στο αποτέλεσμα του αντίστοιχου projection. Παρακάτω δίνονται τρία παραδείγματα υλοποίησης του αλγορίθμου με βάση το Wavelet Tree που δημιουργήθηκε στην προηγούμενη ενότητα: Παράδειγμα 1: Έστω ότι έχουμε το query 1,2,3 και θέλουμε να υπολογίσουμε όλα τα projection lists των συνδυασμών, δηλαδή: Τη λίστα με το intersection των όρων 1 και 2 η οποία αντιστοιχεί στα projection lists και. Τη λίστα με το intersection των όρων 1 και 3 η οποία αντιστοιχεί στα projection lists και. Τη λίστα με το intersection των όρων 2 και 3 η οποία αντιστοιχεί στα projection lists και. Με βάση τον παραπάνω αλγόριθμο θα έχουμε το αποτέλεσμα, και, όπως εμφανίζεται στην Εικόνα 6.8. Εικόνα 6.8 Παράδειγμα 2: Έστω ότι έχουμε ξανά το query 1,2,3 αλλά αυτή τη φορά δεν θέλουμε να υπολογίσουμε τα projection lists όλων των συνδυασμών αλλά μόνο: Τη λίστα με το intersection των όρων 1 και 3 η οποία αντιστοιχεί στα projection lists και. Τη λίστα με το intersection των όρων 2 και 3 η οποία αντιστοιχεί στα projection lists και. 88

90 Με βάση τον παραπάνω αλγόριθμο θα έχουμε το αποτέλεσμα και, όπως εμφανίζεται στην Εικόνα 6.9. Εικόνα 6.9 Παράδειγμα 3: Έστω ότι έχουμε ξανά το query 1,2,3 αλλά αυτή τη φορά δεν θέλουμε να υπολογίσουμε τα projection lists όλων των συνδυασμών αλλά μόνο: Τη λίστα με το intersection των όρων 2 και 3 η οποία αντιστοιχεί στα projection lists και. Αυτή τη φορά κατά την εκτέλεση του αλγορίθμου δεν θα συμμετάσχει το διάστημα του term 1 γιατί κανένας συνδυασμός δεν περιέχει το term 1. Έτσι θα έχουμε το αποτέλεσμα, όπως εμφανίζεται στην Εικόνα Εικόνα

91 6.3.2 Queries Wavelet Tree Στην ενότητα αυτή παρουσιάζεται η δομή wavelet tree (Query Wavelet Tree), η οποία χρησιμοποιείται για την αποθήκευση της αποθήκευση της ακολουθίας της συλλογής των queries. Το wavelet tree αυτό χρησιμοποιείται για τον γρήγορο υπολογισμό του συνολικού βάρους κάθε projection που θα παραχθεί με βάση τη συλλογή των queries. Το δένδρο αυτό μπορεί να χτιστεί και να χρησιμοποιηθεί με δύο τρόπους. Με βάση τον τρόπο που παρουσιάζεται στη δημοσίευση των D. Arroyuelo, S. Gonzalez και M. Oyarzun «Compressed Self-Indices Supporting Conjunctive Queries on Document Collections» [4], αντιμετωπίζοντας τη συλλογή των queries ως μια self indexed συλλογή κειμένων όπως παρουσιάζεται στην Ενότητα 4.2, ή με βάση τον τρόπο που παρουσιάζεται στις δημοσιεύσεις των G. Navarro and S. J. Puglisi., «Dual Sorted Inverted Lists», των T. Gagie, G. Navarro και S. J. Puglisi. «New algorithms on Wavelet Trees and Application to Information Retrieval.»[3,2] αντιμετωπίζοντας τη συλλογή των queries ως ένα inverted index όπως παρουσιάζεται στην Ενότητα Αντιμετώπιση συλλογής query ως self indexed συλλογή κειμένων. Στην ενότητα αυτή παρουσιάζεται η δομή wavelet tree (Query Wavelet Tree) η οποία χρησιμοποιείται για την αποθήκευση της συλλογής των queries σε μορφή Self Indexed Text. To wavelet tree αυτό χρησιμοποιείται για τον γρήγορο υπολογισμό του συνολικού βάρους ενός projection Χτίσιμο του δένδρου Έστω ότι μια συλλογή ερωτημάτων (queries) μεγέθους κάθε ερώτημα αναπαριστάται ως μια ακολουθία μεγέθους. Θέτοντας τον χαρακτήρα χτίζεται η ακολουθία μεγέθους bits. Σε κάθε query, όρων, όπου ενός λεξιλογίου, ως ένα ειδικό χαρακτήρα διαχωρισμού, μήκους και αποδίδεται ένα μονάδικό αναγνωριστικό query (query id). Έστω ότι χειριζόμαστε τη συλλογή queries που εμφανίζεται στην Εικόνα 6.11, από την οποία χτίζεται η ακολουθία. Πιο αναλυτικά χτίζεται η ακολουθία της Εικόνας 6.12 η οποία αναπαριστάται με το Wavelet Tree που απεικονίζεται στην Εικόνα Τέλος, στην Εικόνα 6.11 παρουσιάζονται λίστες εμφανίσεων κάθε term μέσα στα queries (υπολογίζονται με βάση τον αλγόριθμο που παρουσιάστηκε στην Ενότητα

92 Εικόνα 6.11 Εικόνα 6.12 Εικόνα Εικόνα Σημειώνεται ότι οι Βοηθητικές Λειτουργίες «Υπολογισμός κειμένου στο οποίο ανήκει η θέση - Λειτουργία» και «Υπολογισμός Aρχικής Θέσης κειμένου - Λειτουργία» που περιγράφονται στην Ενότητα 4.2.3, ισχύουν όπως περιγράφονται εκεί και στην τρέχουσα μελέτη μας. 91

93 Υπολογισμός αριθμού queries στα οποία υπάρχει ένα ζεύγος Στην ενότητα αυτή παρουσιάζονται δύο αλγόριθμοι για την απάντηση του ερωτήματος: «σε πόσα queries της συλλογής των queries υπάρχει ένα συγκεκριμένο ζεύγος terms;». Αυτό θα γίνει με βάση το δένδρο που παρουσιάστηκε στην προηγούμενη ενότητα και από την κατασκευή δύο αλγορίθμων οι οποίοι είναι παραλλαγές των αλγορίθμων A Simple Worst-Case Algorithm for Conjunctive Queries και An Adaptive Algorithm for Conjunctive Queries που παρουσιάστηκαν στην Ενότητα Παραλλαγή του αλγορίθμου A Simple Worst-Case Algorithm for Conjunctive Queries Ο αλγόριθμος που παρουσιάζεται παρακάτω χρησιμοποιείται για τον υπολογισμό του αριθμού queries στα οποία υπάρχει ένα ζεύγος όρων. Αλγόριθμος: Έστω ότι, ο όρος με την μικρότερη λίστα εμφανίσεων στο Query Wavelet Tree και, η μεταβλητή που εκφράζει τον αριθμό των queries στα οποία υπάρχει το ζεύγος. Δημιουργία της λίστας εμφανίσεων του όρου, όπως περιγράφεται στην Ενότητα Πραγματοποιείται έλεγχος εάν ο όρος υπάρχει μέσα σε κάθε query που περιέχεται στη λίστα, κάτι το οποίο ισχύει αν και μόνο αν: Αν ισχύει η παραπάνω συνθήκη τότε η μεταβλητή αυξάνεται κατά 1. Φυσικά για να γίνει αυτό θα πρέπει να υπάρχει αποθηκευμένη η πληροφορία για το μέγεθος της λίστας εμφανίσεων κάθε όρου της συλλογής queries κάτι το οποίο κοστίζει χώρο αλλά το μέγεθος του είναι σχεδόν ασήμαντο στην πράξη. Με βάση το Query Wavelet Tree που παρουσιάστηκε στην Ενότητα , στην Εικόνα 6.15 παρουσιάζεται ένα παράδειγμα για το ερώτημα. Ο όρος είναι ο όρος με την μικρότερη λίστα εμφανίσεων με βάση την Εικόνα 6.14 (του όρου έχει μέγεθος 7 ενώ του όρου έχει μέγεθος 8) και η λίστα εμφανίσεων του είναι. Άρα για υπολογίζεται: Το παραπάνω Για υπολογίζεται 1, για υπολογίζεται 1, για υπολογίζεται 1, για υπολογίζεται 1, για υπολογίζεται 1, για υπολογίζεται 1 και για υπολογίζεται 1. Άρα οι περιπτώσεις στις οποίες ίσχυε η παραπάνω συνθήκη είναι 6, συνεπώς. 92

94 Εικόνα Παραλλαγή του αλγορίθμου An Adaptive Algorithm for Conjunctive Queries Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος Ο αλγόριθμος που παρουσιάζεται παρακάτω χρησιμοποιείται για τον υπολογισμό του αριθμού των queries στα οποία υπάρχει ένα ζεύγος όρων. Αλγόριθμος: Έστω ότι, η μεταβλητή που εκφράζει τον αριθμό των queries στα οποία υπάρχει το ζεύγος. Πραγματοποιείται αναζήτηση της πρώτης εμφάνισης του κάθε όρου του ερωτήματος ως και όπου η θέση της πρώτης εμφάνισης του όρου στο, και η θέση της πρώτης εμφάνισης του όρου στο. Γίνεται η υπόθεση ότι τα οποία αντιστοιχούν στα document ids αντίστοιχα, για. Μπορεί να παρατηρηθεί ότι δεν είναι αναγκαίο να αναζητηθούν οι εμφανίσεις του στα documents, αφού δεν υπάρχουν εμφανίσεις του μέσα τους. Έτσι ο δείκτης μπορεί να μετακινηθεί στην πρώτη θέση του document και να γίνει από εκεί και πέρα η αναζήτηση της επόμενης εμφάνισης του. o Αν αυτή η εμφάνιση βρίσκεται μέσα στο document, τότε ο αυξάνεται κατά 1. o Αν η εμφάνιση αυτή ανήκει σε document με id μεγαλύτερο του, τότε ο δείκτης μετακινείται στην αρχή του document που περιέχει το. Η διαδικασία επαναλαμβάνεται μέχρι είτε το, είτε το να φτάσουν την τιμή. 93

95 Αν λάβουμε ως παράδειγμα το δένδρο της Εικόνας 6.13, για τον υπολογισμό του αριθμού των queries στα οποία υπάρχει το ζεύγος όρων έχουμε το, όπως εμφανίζεται και στην Εικόνα Οι περιπτώσεις στις οποίες αυξήθηκε ο είναι 6, οπότε. Εικόνα Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος terms, για ζεύγη ταυτόχρονα Ο αλγόριθμος που παρουσιάστηκε στην προηγούμενη μπορεί να γενικευτεί για οποιοδήποτε όπου ο αριθμός των όρων που υφίστανται στο ερώτημα. Ο αλγόριθμος που παρουσιάζεται παρακάτω χρησιμοποιείται για τον υπολογισμό του αριθμού των queries στα οποία υπάρχουν ζεύγη από ένα σύνολο όρων. Αλγόριθμος: 1. Κάθε όρος του ερωτήματος έχει έναν δείκτη ο οποίος εκφράζει την πιο πρόσφατη θέση εμφάνισης του και κάθε ζεύγος έχει έναν όπου ο πρώτος term του ζεύγους και ο δεύτερος term του ζεύγους. Γίνεται εύρεση της πρώτης εμφάνισης των με και καθορίζονται τα queries τα οποία τα περιέχουν με query id από τα Καθώς παράγονται τα αποθηκεύεται στην μεταβλητή το μικρότερο μέσα στο οποίο περιέχεται κάποια εμφάνιση 94

96 2. Στη συνέχεια γίνεται αναζήτηση των επόμενων εμφανίσεων των terms των οποίων οι δείκτες βρίσκονται στο κείμενο με τον εξής τρόπο: Αν το περιέχει περισσότερες από μια τιμές (που αντιστοιχούν σε πολλά terms): o Επιλέγεται τυχαία (ή με βάση τον ελάχιστο δείκτη των ) ένα από όλα τα terms που υπάρχουν στο. Έστω ότι το term αυτό είναι το. o Γίνεται αναζήτηση της επόμενης εμφάνισης του με τον εξής τρόπο: Αν στο υπάρχουν δείκτες που αντιστοιχούν σε terms που ανήκουν σε κάποιο ζεύγος μαζί με το αυξάνεται ο αντίστοιχος counter του αντίστοιχου ζεύγους και στη συνέχεια γίνεται εύρεση της επόμενης εμφάνισης του από το κείμενο +1 και μετά, δηλαδή από τη θέση και μετά. Έτσι η επόμενη εμφάνιση του ορίζεται με, ενώ υπολογίζεται και το αντίστοιχο. Αν στο δεν υπάρχουν δείκτες που αντιστοιχούν σε terms που ανήκουν σε κάποιο ζεύγος μαζί με το τότε γίνεται εύρεση της επόμενης εμφάνισης του από το document στο οποίο βρίσκεται το ελάχιστο των terms των οποίων πρέπει να υπολογιστούν οι κοινές εμφανίσεις τους σε queries σε συνδυασμό με το. Η παραπάνω διαδικασία επαναλαμβάνεται μέχρι να υπάρξει μόνο μία τιμή στο. Αν το περιέχει μονάχα μια τιμή που αντιστοιχεί στο τότε γίνεται εύρεση της επόμενης εμφάνισης του από το document στο οποίο βρίσκεται το ελάχιστο των terms των οποίων ανήκουν σε κάποιο ζεύγος μαζί με το. Στη συνέχεια υπολογίζεται το νέο από τα τρέχοντα. 3. Το βήμα 2 επαναλαμβάνεται μέχρι k- 1 των δεικτών να φτάσουν στο τέλος της ακολουθίας. Παρακάτω δίνονται δύο παραδείγματα υλοποίησης του αλγορίθμου: Παράδειγμα 1: Έστω ότι έχουμε το query 1,2,3 και θέλουμε να υπολογίσουμε σε πόσα queries υπάρχουν όλοι οι πιθανοί συνδυασμοί του, δηλαδή σε πόσα queries υπάρχουν τα ζεύγη: 95

97 1-2 με 1-3 με 2-3 με Με βάση τον παραπάνω αλγόριθμο όπως φαίνεται και στην Εικόνα 6.17 θα έχουμε το αποτέλεσμα: Εικόνα 6.17 Παράδειγμα 2: Έστω ότι έχουμε ξανά το query 1,2,3 αλλά αυτή τη φορά θέλουμε να υπολογίσουμε μόνο σε πόσα queries υπάρχουν τα ζεύγη: 1-2 με 1-3 με Με βάση τον παραπάνω αλγόριθμο όπως φαίνεται και στην Εικόνα 6.18 θα έχουμε το αποτέλεσμα: 6 3 Εικόνα Αντιμετώπιση συλλογής query ως Inverted Index 96

98 Στην ενότητα αυτή παρουσιάζεται η δομή wavelet tree (Query Wavelet Tree) η οποία χρησιμοποιείται για την αποθήκευση της συλλογής των queries σε μορφή Inverted Index, πάνω στα οποία έχει εκτελεστεί η συλλογή των queries. To wavelet tree αυτό χρησιμοποιείται για τον γρήγορο υπολογισμό του συνολικού βάρους ενός projection Χτίσιμο του δένδρου Έστω ότι το πλήθος των queries μέσα στα οποία εμφανίζεται ο term και η λίστα των queries μέσα στα οποία υπάρχει ο term. Όλες οι λίστες ενοποιούνται σε μία λίστα όπου ο συνολικός αριθμός των διακριτών terms στα queries. Έτσι χτίζεται η ακολουθία: Χρησιμοποιούμε ως παράδειγμα το Inverted Index της Εικόνας Από το εν λόγω Inverted Index προκύπτουν κάτωθι λίστες ανά term: Εικόνας 6.19 H λίστα που ενοποιεί όλες τις παραπάνω σε μια ακολουθία είναι η, δηλαδή: Από τη λίστα προκείπτει το Query Wavelet Tree που εμφανίζεται στην Εικόνα 97

99 Εικόνα Υπολογισμός αριθμού queries στα οποία υπάρχουν ζεύγη όρων Ο υπολογισμός αριθμού queries στα οποία υπάρχει ένα ζεύγος όρων με βάση το δένδρο που παρουσιάστηκε στην προηγούμενη ενότητα προκύπτει από την κατασκευή ενός αλγορίθμου ο οποίος είναι παραλλαγή του αλγορίθμων για την παραγωγή Intersections που παρουσιάστηκε στην Ενότητα Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος όρων Στον αλγόριθμο που παρουσιάζεται παρακάτω, παρουσιάζεται ένας τρόπος για την απάντηση του ερωτήματος: «σε πόσα queries της συλλογής των queries υπάρχει ένα συγκεκριμένο ζεύγος terms;» Αλγόριθμος: Έστω ότι είναι η ρίζα του δένδρου και η ακολουθία των bits ενώ η μεταβλητή είναι η μεταβλητή που θα μετράει σε πόσα queries της συλλογής υπάρχει ένα συγκεκριμένο ζεύγος terms. Αν το διάστημα ή το διάστημα είναι κενό, η αναζήτηση σε αυτό το κλαδί εγκαταλείπεται. Ο αλγόριθμος θα κατευθυνθεί αριστερά αφού υπολογιστούν οι νέες τιμές για το αριστερό παιδί, ως εξής: και Ο αλγόριθμος θα κατευθυνθεί δεξιά αφού υπολογιστούν οι νέες τιμές δεξί παιδί, ως εξής: για το και 98

100 Κάθε φορά που συναντάται κάποιο φύλο o Η τιμή του απαντά το ερώτημα. αυξάνεται κατά 1. Παρακάτω δίνεται ένα παράδειγμα υλοποίησης του αλγορίθμου με βάση το Query Wavelet Tree που δημιουργήθηκε στην προηγούμενη ενότητα: Παράδειγμα: Για την απάντηση του ερωτήματος: «σε πόσα queries της συλλογής των queries υπάρχει το ζεύγος ;» η απάντηση είναι 6, όπως φαίνεται και στην Εικόνα Εικόνα Αλγόριθμος Υπολογισμού αριθμού queries στα οποία υπάρχει ένα ζεύγος, για ζεύγη ταυτόχρονα Ο αλγόριθμος που παρουσιάστηκε στην προηγούμενη ενότητα μπορεί να γενικευτεί για ζεύγη. Έστω ότι είναι η ρίζα του δένδρου και η ακολουθία των bits. Έστω επίσης, ότι κάθε ζεύγος έχει έναν counter όπου ο πρώτος term του ζεύγους και ο δεύτερος term του ζεύγους. Αν όλα τα διαστήματα,,, είναι κενά ή υπάρχει μόνο ένα ενεργό διάστημα ή αν τα διαστήματα των terms που είναι ενεργά δεν αντιστοιχούν σε κάποιο θεμιτό συνδυασμό, η αναζήτηση σε αυτό το κλαδί εγκαταλείπεται. Ο αλγόριθμος θα κατευθυνθεί αριστερά αφού υπολογιστούν οι νέες τιμές για το αριστερό παιδί, ως εξής: 99

101 Ο αλγόριθμος θα κατευθυνθεί δεξιά αφού υπολογιστούν οι νέες τιμές για το δεξί παιδί, ως εξής: Κάθε φορά που συναντάται κάποιο φύλο, αν υπάρχουν δύο ενεργά διαστήματα τα οποία αντιστοιχούν σε κάποιο θεμιτό συνδυασμό, ο αντίστοιχος αυξάνεται κατά 1. Παρακάτω δίνονται δύο παραδείγματα υλοποίησης του αλγορίθμου με βάση το Query Wavelet Tree που δημιουργήθηκε στην προηγούμενη Ενότητα Παράδειγμα 1: Έστω ότι έχουμε το query 1,2,3 και θέλουμε να υπολογίσουμε σε πόσα queries υπάρχουν όλοι οι πιθανοί συνδυασμοί του, δηλαδή σε πόσα queries υπάρχουν τα ζεύγη: 1-2 με 1-3 με 2-3 με Με βάση τον παραπάνω αλγόριθμο όπως φαίνεται και στην Εικόνα 6.22 θα έχουμε το αποτέλεσμα:

102 Εικόνα 6.22 Παράδειγμα 2: Έστω ότι έχουμε ξανά το query 1,2,3 αλλά αυτή τη φορά θέλουμε να υπολογίσουμε μόνο σε πόσα queries υπάρχουν τα ζεύγη: 1-3 με 2-3 με Με βάση τον παραπάνω αλγόριθμο όπως φαίνεται και στην Εικόνα 6.23 θα έχουμε το αποτέλεσμα: 3 4 Εικόνα Αποθήκευση και διαχείριση ζευγών terms Δομή Α Ένα σημαντικό μέρος του αλγόριθμου που αναφέρεται στην Ενότητα 6.3 είναι η καταχώρηση των συνδυασμών των terms στους οποίους έχει γίνει ήδη επεξεργασία σε μια 101

103 δομή Α η οποία με βάση κάποιο αλγόριθμο αναζήτησης θα εντοπίζει γρήγορα εάν κάποιος συνδυασμός έχει ήδη συναντηθεί ή όχι. Προτεινόμενη λύση: Έστω ότι υπάρχουν διακριτοί terms που υπάρχουν στο inverted index των κειμένων. Όλοι οι πιθανοί συνδυασμοί προκύπτουν από την εξής ακολουθία:. Έστω ότι για n=5. Οι πιθανοί συνδυασμοί προκύπτουν από την ακολουθία του πίνακα: Α/Α Συνδυασμός 1 1,2 2 1,3 3 1,4 4 1,5 5 2,3 6 2,4 7 2,5 8 3,4 9 3,5 10 4,5 Σκοπός είναι η δημιουργία μιας hash function η οποία να αντιστοιχεί κάθε συνδυασμό με τον A/A του και στη συνέχεια η αποθήκευση του A/A στη δομή A. H hash function υπολογίζεται ως εξής: Έστω ο πρώτος αριθμός ενός συνδυασμού και ο δεύτερος. Αν διαχωρίσουμε την ακολουθία σε ομάδες με βάση το a, παρατηρούμε ότι το πλήθος των συνδυασμών στην ομάδα όπου a=1, είναι n-1, το πλήθος των συνδυασμών στην ομάδα όπου a=2, είναι n-2, κ.ο.κ. Άρα ο A/A στο τέλος κάθε ομάδας υπολογίζεται ως: Για : Για : Για : Για : 102

104 με τον τύπο: Άρα για την εύρεση του A/A των ζευγαριών του τέλους κάθε ομάδας υπολογίζεται Για να υπολογίσουμε τον A/A ενός συγκεκριμένου ζευγαριού, θα χρησιμοποιήσουμε τον παραπάνω τύπο που με την βοήθεια του a υπολογίζει τον A/A του ζευγαριού του τέλους κάθε ομάδας, και από τον υπολογισμό αυτό θα αφαιρέσουμε την διαφορά για τον συνδυασμό που αναζητείται, με βάση τη διαφορά του n από το b. Δηλαδή η hash function ΗF η οποία θα παίρνει ως όρισμα τα a,b,n και θα επιστρέφει τον A/A του συνδυασμού (a,b) θα έχει τη μορφή: Με αυτό τον τρόπο όταν γίνεται επεξεργασία ενός συνδυασμού a,b θα υπολογίζεται το F, και στην συνέχεια αυτός ο αριθμός θα αποθηκεύεται σε μια δομή A που θα επιτρέπει (δυαδική) αναζήτηση. Κάθε φορά που θα συναντάται ένας συνδυασμός, θα υπολογίζεται το HF του. Αν το HF υπάρχει στην δομή Α, ο συνδυασμός των terms θα αποκλείεται. Αν το F δεν υπάρχει στη δομή, θα καταχωρείται στην κατάλληλη θέση. 103

105 ΚΕΦΑΛΑΙΟ 7 - Πειραματική Αξιολόγηση 7.1 Γενικά Στην Ενότητα αυτή αναφέρονται κάποιες γενικές πληροφορίες για την καλύτερη κατανόηση των πειραμάτων και των συμπερασμάτων της πειραματικής Αξιολόγησης. Στον Πίνακα 7.1 εμφανίζονται όλες οι λειτουργίες που μπορούν να εκτελεστούν όταν η συλλογή κειμένων αναπαριστάται ως Inverted Index, όπως έχουν αναλυθεί στην Ενότητα 4.1. Στη στήλη «ΕΙΔΟΣ WAVELET TREE» αναφέρεται ανάλογα με το είδος του Wavelet Tree στο οποίο έχει εισαχθεί η συλλογή κειμένων, αν μια Λειτουργία υποστηρίζεται ή όχι. Βλέπουμε ότι υποστηρίζονται όλες οι Λειτουργίες εκτός από την λειτουργία «Εύρεση ενός μετά από επίσκεψη ενός, για». Επίσης, ενώ οι λειτουργίες «Εξαγωγή οποιουδήποτε τμήματος», «Τομή τμημάτων δύο λιστών, δύο όρων» και «Τομή τμημάτων λιστών, όρων» υποστηρίζονται, ως αποτέλεσμα επιστρέφεται η λίστα των κειμένων που απαντούν τα αντίστοιχα ερωτήματα αλλά όχι διατεταγμένη. Στον Πίνακα 7.2 εμφανίζονται όλες οι λειτουργίες που μπορούν να εκτελεστούν όταν η συλλογή κειμένων αναπαριστάται ως Self Indexed Text, όπως έχουν αναλυθεί στην Ενότητα 4.2. Στη στήλη «ΕΙΔΟΣ WAVELET TREE» αναφέρεται ανάλογα με το είδος του Wavelet Tree στο οποίο έχει εισαχθεί η συλλογή κειμένων, αν μια Λειτουργία υποστηρίζεται ή όχι. Όπως βλέπουμε υποστηρίζονται όλες οι λειτουργίες, ανεξαρτήτως του σχήματος του Wavelet Tree.Συνεπώς τα πειράματα της τρέχουσας εργασίας θα εκτελεστούν με βάση αυτά τα δεδομένα. ΛΕΙΤΟΥΡΓΙΕΣ Inverted Index Normal Shaped ΕΙΔΟΣ WAVELET TREE Weight Balanced Huffman Shaped Εύρεση οποιασδήποτε τιμής Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Εξαγωγή οποιουδήποτε τμήματος Εύρεση ενός μετά από επίσκεψη ενός, για Τομή τμημάτων δύο λιστών, δύο όρων Τομή τμημάτων λιστών, όρων Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται (Αποτέλεσμα όχι διατεταγμένο) Δεν υποστηρίζεται Υποστηρίζεται (Αποτέλεσμα όχι διατεταγμένο) Υποστηρίζεται (Αποτέλεσμα όχι διατεταγμένο) 104

106 Πίνακας 7.1 ΛΕΙΤΟΥΡΓΙΕΣ Self Indexed Text A Simple Worst-Case Algorithm for Conjunctive Queries for 2 words A Simple Worst-Case Algorithm for Conjunctive Queries for k words An Adaptive Algorithm for Conjunctive Queries for 2 words An Adaptive Algorithm for Conjunctive Queries for k words Πίνακας 7.2 Normal Shaped ΕΙΔΟΣ WAVELET TREE Weight Balanced Huffman Shaped Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται Υποστηρίζεται 7.2 Δεδομένα Τα δεδομένα που χρησιμοποιήθηκαν για την τρέχουσα πειραματική αξιολόγηση αφορούν μια συλλογή 1000 κειμένων με μέγεθος λεξιλογίου διακριτούς όρους. Τα κείμενα έχουν μέσο όρο λέξεων 600 λέξεις (όχι διακριτές). Οι πληροφορίες αυτές απεικονίζονται στον Πίνακα 7.3. Τα δεδομένα αυτά ελήφθησαν αρχικά σε μορφή ανεστραμμένου αρχείου. Για την αναπαράσταση της συλλογής κειμένου με αυτοδεικτοδοτούμενο κείμενο, δημιουργήθηκαν τα αντίστοιχα πρωτότυπα κείμενα με βάση το ανεστραμμένο αρχείο και στη συνέχεια αναπαραστάθηκαν σε αυτοδεικτοδοτούμενο κέιμενο. Μέγεθος Συλλογής Μέγεθος λεξιλογίου Μέσος όρος λέξεων ανά κείμενο ΠΛΗΡΟΦΟΡΙΕΣ ΣΥΛΛΟΓΗΣ ΚΕΙΜΕΝΩΝ 1000 κείμενα διακριτοί όροι 600 όροι 105

107 Πίνακας 7.3 Στον Πίνακα 7.4 καταγράφονται κάποιες πληροφορίες σχετικά με την εισαγωγή της συλλογής κειμένων σε δομή Wavelet Trees. Βλέπουμε ότι οι πληροφορίες αυτές διαχωρίζονται ανάλογα με την αναπαράσταση κειμένου καθώς και τη μέθοδο υπολογισμού της αρχικής θέσης ενός κειμένου (σε αυτοδεικτοδοτούμενο κείμενο) και της αρχικής θέσης όρου (σε ανεστραμμένο αρχείο). Όπως μπορεί να παρατηρηθεί, ο αριθμός των κειμένων και των όρων φυσικά είναι ο ίδιος σε κάθε συνδυασμό περιπτώσεων αφού πρόκειται για την ίδια συλλογή. Όταν αναφερόμαστε στο «Μέγεθος Text» στη δεύτερη γραμμή, εννοούμε το μέγεθος της ακολουθίας που εισάγεται στο Wavelet Tree. Βλέπουμε ότι στην περίπτωση «Εύρεση αρχικής θέσης με Extra BV» και «Inverted Index», το Μέγεθος Text είναι Αυτό σημαίνει ότι αν υπολογιστεί για κάθε λέξη, σε πόσα κείμενα εμφανίζεται και στη συνέχεια αυτά τα ποσά αθροιστούν, θα έχουμε την τιμή Στην περίπτωση «Εύρεση αρχικής θέσης με $» και «Inverted Index», το Μέγεθος Text είναι Όπως είναι γνωστό, όταν η αρχική θέση υπολογίζεται με την εν λόγω μέθοδο, στην ακολουθία που εισάγεται στο Wavelet Tree, εισάγεται ο ειδικός χαρακτήρας διαχωρισμού $. Συνεπώς, στην περίπτωση του «Inverted Index» θα εισαχθεί τόσες φορές όσες είναι και ο αριθμός των όρων της συλλογής, συν μια για την επισήμανση του τέλους της συλλογής. Άρα αν αθροίσουμε (μέγεθος text χωρίς $ ), συν (αριθμός όρων της συλλογής), συν ένα, έχουμε το άθροισμα = Στην περίπτωση «Εύρεση αρχικής θέσης με Extra BV» και «Self Indexed Text», το Μέγεθος Text είναι Αυτό σημαίνει ότι αν υπολογιστεί πόσες λέξεις (όχι διακριτές) περιέχονται σε ένα κείμενο και στη συνέχεια αυτά τα ποσά αθροιστούν, θα έχουμε την τιμή Τέλος, στην περίπτωση «Εύρεση αρχικής θέσης με $» και «Self Indexed Text», το Μέγεθος Text είναι Όπως ήδη αναφέραμε, όταν η αρχική θέση υπολογίζεται με την εν λόγω μέθοδο, στην ακολουθία που εισάγεται στο Wavelet Tree, εισάγεται ο ειδικός χαρακτήρας διαχωρισμού $. Συνεπώς, στην περίπτωση του «Self Indexed Text» θα εισαχθεί τόσες φορές όσες είναι και ο αριθμός των κειμένων της συλλογής, συν μια για την επισήμανση του τέλους της συλλογής. Άρα αν αθροίσουμε (μέγεθος text χωρίς $ ), συν 1000 (αριθμός κειμένων της συλλογής), συν ένα, έχουμε το άθροισμα = Το «Μέγεθος Αλφαβήτου WT» είναι ουσιαστικά ο αριθμός των διακριτών όρων που έχουν εισαχθεί στην ακολουθία που αναπαριστά το Wavelet Tree. Στην περίπτωση «Εύρεση αρχικής θέσης με Extra BV» και «Inverted Index», το μέγεθος αλφαβήτου WT είναι 1000 γιατί τόσα είναι και τα κείμενα της συλλογής. Στην περίπτωση «Εύρεση αρχικής θέσης με $» και «Inverted Index», το μέγεθος αλφαβήτου WT είναι 1001 γιατί 1000 είναι και τα κείμενα της συλλογής και στη μέθοδο αυτή έχουμε προσθέσει και τον διαχωριστικό χαρακτήρα $. Αντίστοιχα στην περίπτωση «Εύρεση αρχικής θέσης με Extra BV» και «Self Indexed Text», το μέγεθος αλφαβήτου WT είναι γιατί τόσοι είναι και οι διακριτοί όροι της συλλογής. Τέλος, στην περίπτωση «Εύρεση αρχικής θέσης με $» και «Self Indexed Text», το μέγεθος αλφαβήτου WT είναι γιατί είναι οι διακριτοί όροι της συλλογής και στη μέθοδο αυτή έχουμε προσθέσει και τον διαχωριστικό χαρακτήρα $. Το «Μέγεθος 106

108 Αλφαβήτου WT» επισημαίνεται ότι είναι και ο αριθμός των φύλλων κάθε δένδρου ανά περίπτωση. ΑΝΑΠΑΡΑΣΤΑΣΗ ΚΕΙΜΕΝΟΥ ΜΕΘΟΔΟΣ ΕΥΡΕΣΗΣ ΑΡΧΙΚΗΣ ΘΕΣΗΣ Αριθμός Κειμένων Εύρεση αρχικής θέσης με Extra BV Inverted Index Εύρεση αρχικής θέσης με $ Εύρεση αρχικής θέσης με Extra BV Self Indexed Text Εύρεση αρχικής θέσης με $ Αριθμός Όρων Μέγεθος Text Mέγεθος Αλφαβήτου WT Πίνακας Αποτελέσματα Τύποι Wavelet Tree Στην ενότητα αυτή παρουσιάζεται ο χρόνος που χρειάζεται να χτιστεί κάθε ένα από τα ειδή Wavelet Trees που παρουσιάστηκαν στο Κεφάλαιο 2. Τα πειράματα που εκτελέστηκαν αφορούν το χτίσιμο κάθε Wavelet Tree ανά αναπαράσταση κειμένου, μέθοδο υπολογισμού αρχικής θέσης που έχει επιλεχθεί ανά περίπτωση και είδος Wavelet Tree. Σημειώνεται ότι για κάθε περίπτωση εκτελέστηκε 10 φορές το χτίσιμο του δένδρου και στη συνέχεια αθροίστηκαν οι χρόνοι των 10 εκτελέσεων και διαιρέθηκαν δια 10 για να βρεθεί ο μέσος όρος τους και να παρουσιαστεί. Σύμφωνα με τα αποτελέσματα του Πίνακα 7.5, βλέπουμε ότι ο τύπος δένδρου που παίρνει τον περισσότερο χρόνο για να χτιστεί είναι αυτός του Huffman Shaped Wavelet Tree, σε όλες τις περιπτώσεις. Αυτό είναι λογικό καθότι η μέθοδος με την οποία χτίζεται είναι πολύ πιο περίπλοκη από τις υπόλοιπες. Παρατηρούμε επίσης ότι το Normal Shaped Wavelet Tree χτίζεται στον ίδιο περίπου χρόνο με το Weight Balanced Wavelet Tree, με μια μικρή διαφορά όμως το Weight Balanced Wavelet Tree χτίζεται πιο γρήγορα σε κάθε περίπτωση. Σχετικά με τη μέθοδο υπολογισμού αρχικής θέσης, βλέπουμε ότι σε κάθε περίπτωση όταν η αρχική θέση του δένδρου υλοποιείται με τη χρήση ενός Εxtra bit vector, αυτό παίρνει περισσότερο χρόνο γιατί ουσιαστικά δημιουργείται μια επιπλέον δομή της οποίας η ακολουθία δεδομένων έχει το ίδιο μήκος με την ακολουθία που εισάγεται στο 107

109 Wavelet Tree. Για να γίνει καλύτερα κατανοητό, αναφέρεται ότι η δομή του extra bit vector έχει ορισθεί στο κώδικα ως μέλος της κλάσης CWaveletTree. Έτσι συμπεραίνουμε και ότι η προσθήκη του διαχωριστικού χαρακτήρα $ στις περιπτώσεις της χρήσης της μεθόδου εύρεσης αρχικής θέσης με $, αν και μεγαλώνει το μήκος της ακολουθίας που εισάγεται στο δένδρο και φυσικά αυξάνει τα φύλλα του δένδρου κατά 1, δεν επιφέρει σημαντική επιβάρυνση χρόνου. Τέλος, σχετικά με το είδος της αναπαράστασης της συλλογής κειμένων, παρατηρούμε ότι στην περίπτωση του ανεστραμμένου αρχείου (Inverted Index) οι χρόνοι που απαιτούνται για να χτιστεί το δένδρο είναι πολύ μικρότεροι από αυτούς που απαιτούνται για να χτιστεί στην περίπτωση του αυτοδεικτοδοτούμενου κειμένου (Self Indexed Text). Αυτό συμβαίνει γιατί στην περίπτωση του αυτοδεικτοδοτούμενου κειμένου η ακολουθία που εισάγεται στο δένδρο έχει μεγάλο μήκος και το δένδρο έχει μεγάλο αλφάβητο που σημαίνει μεγάλο αριθμό φύλλων (υπενθυμίζουμε τα αποτελέσματα του Πίνακα 7.4, τα φύλλα του δένδρου είναι όσο και το μέγεθος του αλφαβήτου WT). Αυτό βλέπουμε ότι έχει μεγαλύτερες συνέπειες όταν το είδος του δένδρου είναι Huffman Shaped. ΑΝΑΠΑΡΑΣΤΑΣΗ ΚΕΙΜΕΝΟΥ Inverted Index Self Indexed Text ΜΕΘΟΔΟΣ ΕΥΡΕΣΗΣ ΑΡΧΙΚΗΣ ΘΕΣΗΣ Εύρεση αρχικής θέσης με Extra BV Εύρεση αρχικής θέσης με $ Εύρεση αρχικής θέσης με Extra BV Εύρεση αρχικής θέσης με $ Normal Shaped Wavelet Tree 0, , , , Weight Balanced Wavelet Tree 0, , , , Huffman Shaped Wavelet Tree 0, , , ,544 Πίνακας 7.5: Τύποι Wavelet Trees Χρόνος για το Χτίσιμο δένδρου σε δευτερόλεπτα Σύγκριση μεθόδων υπολογισμού Αρχικής Θέσης (Starting Position) Στην ενότητα αυτή πραγματοποιείται σύγκριση των μεθόδων υπολογισμού των Starting Positions. Έχει ήδη γίνει αναφορά στο κομμάτι αυτό, στην Ενότητα 5.3. Τα πειράματα που εκτελέστηκαν αφορούν την εκτέλεση 10 εκατομμυρίων ερωτημάτων υπολογισμού αρχικής θέσης για τις περιπτώσεις που εμφανίζονται στους Πίνακες 7.6 και 7.7. Σημειώνεται ότι εκτελέστηκαν 10 φορές 10 εκατομμύρια ερωτήματα ανά περίπτωση και στη συνέχεια αθροίστηκαν οι χρόνοι των 10 εκτελέσεων και διαιρέθηκαν δια 10 για να βρεθεί ο μέσος όρος τους και να παρουσιαστεί. Στον Πίνακα 7.6 εμφανίζονται τα αποτελέσματα εκτέλεσης σε ένα Wavelet Tree στο οποίο έχει εισαχθεί η συλλογή κειμένων ως αυτοδεικτοδοτούμενο κείμενο. Αποδεικνύουμε ότι η μέθοδος «Εύρεση αρχικής θέσης με Extra BV» είναι πολύ πιο γρήγορη από τη μέθοδο «Εύρεση αρχικής θέσης με $». Στον 108

110 Πίνακα 7.7 εμφανίζονται τα αποτελέσματα εκτέλεσης σε ένα Wavelet Tree στο οποίο έχει εισαχθεί η συλλογή κειμένων ως ανεστραμμένο αρχείο. Αποδεικνύουμε και εδώ ότι η μέθοδος «Εύρεση αρχικής θέσης με Extra BV» είναι πολύ πιο γρήγορη από τη μέθοδο «Εύρεση αρχικής θέσης με $». Επίσης μπορούμε να παρατηρήσουμε ότι στον Πίνακα 7.6 οι διαφορές είναι πολύ μεγαλύτερες από ότι στον Πίνακα 7.7. Αυτό συμβαίνει γιατί το μέγεθος της ακολουθίας του Wavelet Tree στην πρώτη περίπτωση είναι πολύ μεγαλύτερο, έτσι αν χρησιμοποιηθεί η μέθοδος «Εύρεση αρχικής θέσης με Extra BV» έχουμε τη μέγιστη εξοικονόμηση ανάμεσα στις 2 περιπτώσεις. Στον Πίνακα 7.7 στην περίπτωση του ανεστραμμένου αρχείου υπάρχει πάλι μεγάλη εξοικονόμηση από τη χρήση της μεθόδου «Εύρεση αρχικής θέσης με Extra BV» αλλά όχι τόσο μεγάλη όσο στην περίπτωση του αυτοδεικτοδοτούμενου κειμένου. ΕΙΔΟΣ WAVELET TREE ΠΛΗΡΟΦΟΡΙΕΣ QUERIES ΛΕΙΤΟΥΡΓΙΕΣ Normal Shaped Weight Balanced Huffman Shaped Αριθμός Queries Απαντήσεις Εύρεση αρχικής θέσης με Extra BV mil 10mil Εύρεση αρχικής θέσης με $ mil 10mil Πίνακας 7.6 :Self Indexed Text - Χρόνος σε δευτερόλεπτα ΕΙΔΟΣ WAVELET TREE ΠΛΗΡΟΦΟΡΙΕΣ QUERIES ΛΕΙΤΟΥΡΓΙΕΣ Normal Shaped Weight Balanced Huffman Shaped Αριθμός Queries Απαντήσεις Εύρεση αρχικής θέσης με Extra BV 2, , , mil 10mil Εύρεση αρχικής θέσης με $ 15, , , mil 10mil Πίνακας 7.7 Inverted Index - Χρόνος σε δευτερόλεπτα Απόδοση και σύγκριση αλγορίθμων Στην ενότητα αυτή παρουσιάζεται η απόδοση των αλγορίθμων που παρουσιάστηκαν στο Κεφάλαιο 4. Επίσης πραγματοποιείται η σύγκριση που έχει αναφερθεί στην Ενότητα 5.3 για την σύγκριση μεθόδων υπολογισμού αρχικής θέσης. Σημειώνεται ότι στα πειράματα συμπεριλαμβάνεται και ο αλγόριθμος που παρουσιάζεται 109

111 στην Ενότητα Τα πειράματα που εκτελέστηκαν αφορούν την εκτέλεση 1 εκατομμυρίου ερωτημάτων. Σημειώνεται ότι εκτελέστηκαν 10 φορές 1 εκατομμύριο ερωτήματα ανά περίπτωση και στη συνέχεια αθροίστηκαν οι χρόνοι των 10 εκτελέσεων και διαιρέθηκαν δια 10 για να βρεθεί ο μέσος όρος τους και να παρουσιαστεί Αλγόριθμοι αυτοδεικτοδοτούμενου κειμένου Στην ενότητα αυτή παρουσιάζεται η απόδοση των αλγορίθμων που παρουσιάστηκαν στην Ενότητα 4.2. Αυτό γίνεται με τη χρήση της μεθόδου υπολογισμού αρχικής θέσης με Χαρακτήρα $ στην Ενότητα και με τη χρήση της μεθόδου υπολογισμού αρχικής θέσης με Extra Bit Vector στην Ενότητα Σύμφωνα με τα αποτελέσματα των Πινάκων 7.8, 7.9 και 7.10 που αφορούν την εκτέλεση με μέθοδο υπολογισμού αρχικής θέσης με χαρακτήρα $ και των Πινάκων 7.11, 7.12 και 7.13 που αφορούν την εκτέλεση με μέθοδο υπολογισμού αρχικής θέσης με Extra Bit Vector, οδηγούμαστε στα κάτωθι συμπεράσματα: Όταν χρησιμοποιείται η μέθοδος εύρεσης αρχικής θέσης με Χαρακτήρα $ έχουμε γενικά μεγαλύτερους χρόνους. Οι μέθοδοι που επηρεάζονται περισσότερο είναι οι κάτωθι: Document Reporting A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms A Simple Worst-Case Algorithm for Conjunctive Queries for k terms Ενώ οι μέθοδοι «An Adaptive Algorithm for Conjunctive Queries for 2 terms» και «An Adaptive Algorithm for Conjunctive Queries for k terms» έχουν μικρές διαφορές σε κάθε περίπτωση. Έτσι βλέπουμε ότι αν οι αλγόριθμοι αυτοδεικτοδοτούμενου κειμένου χρησιμοποιούσαν τη μέθοδο αρχικής θέσης με Χαρακτήρα $ στις περιπτώσεις «Document Reporting», «A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms» και «A Simple Worst-Case Algorithm for Conjunctive Queries for k terms» θα είχαν μια τεράστια βελτίωση σχετικά με το χρόνο εκτέλεσης τους Μέθοδος υπολογισμού αρχικής θέσης με Χαρακτήρα $ Παρακάτω παρουσιάζονται οι παρατηρήσεις μας ανά αλγόριθμο όταν χρησιμοποιείται η μέθοδος υπολογισμού αρχικής θέσης με το χαρακτήρα $ : «Document Reporting»: Αποδίδει χειρότερα με Normal Shaped και καλύτερα με Huffman Shaped. «A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms» και «A Simple Worst-Case Algorithm for Conjunctive Queries for k terms»: Αποδίδουν χειρότερα με Normal Shaped και καλύτερα με Huffman Shaped και Weight Balanced Wavelet Tree (οι διαφορές τους είναι μικρές). «An Adaptive Algorithm for Conjunctive Queries for 2 terms» και «An Adaptive Algorithm for Conjunctive Queries for k terms»: Αποδίδουν χειρότερα με Normal Shaped 110

112 και Huffman Shaped (οι διαφορές τους είναι μικρές) και αρκετά καλύτερα με Weight Balanced Wavelet Tree. ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Normal Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Document Reporting 1 1 mil 1 mil 49,9326 A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms 2 1 mil , A Simple Worst-Case Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , mil , An Adaptive Algorithm for Conjunctive Queries for 2 terms 2 1 mil , An Adaptive Algorithm for Conjunctive Queries for k terms Πίνακας mil , mil , mil 37 17,

113 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Χρόνος Εκτέλεσης σε sec Weight Balanced Wavelet Tree Document Reporting 1 1 mil 1 mil 44, A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms 2 1 mil , A Simple Worst-Case Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , mil , An Adaptive Algorithm for Conjunctive Queries for 2 terms 2 1 mil , An Adaptive Algorithm for Conjunctive Queries for k terms Πίνακας mil , mil , mil

114 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Huffman Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Document Reporting 1 1 mil 1 mil 42, A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms 2 1 mil , A Simple Worst-Case Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , mil , An Adaptive Algorithm for Conjunctive Queries for 2 terms 2 1 mil , An Adaptive Algorithm for Conjunctive Queries for k terms Πίνακας mil , mil , mil 41 20, Μέθοδος υπολογισμού αρχικής θέσης με Extra Bit Vector Παρακάτω παρουσιάζονται οι παρατηρήσεις μας ανά αλγόριθμο όταν χρησιμοποιείται η μέθοδος υπολογισμού αρχικής θέσης με Extra Bit Vector: «Document Reporting»: Αποδίδει το ίδιο σε κάθε τύπο Wavelet Tree. «A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms» και «A Simple Worst-Case Algorithm for Conjunctive Queries for k terms»: Αποδίδουν χειρότερα με Normal Shaped και καλύτερα με Weight Balanced Wavelet Tree. «An Adaptive Algorithm for Conjunctive Queries for 2 terms» και «An Adaptive Algorithm for Conjunctive Queries for k terms»: Αποδίδουν χειρότερα με Huffman Shaped Wavelet Tree και Weight Balanced Wavelet Tree (οι διαφορές τους είναι μικρές σε περιπτώσεις) και καλύτερα με Normal Shaped Wavelet Tree αν και οι διαφορές δεν είναι πολύ μεγάλες. 113

115 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Normal Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Document Reporting 1 1 mil 1 mil 29, A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms 2 1 mil , A Simple Worst-Case Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , mil , An Adaptive Algorithm for Conjunctive Queries for 2 terms 2 1 mil , An Adaptive Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , Πίνακας mil 39 12,

116 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Weight Balanced Wavelet Tree Χρόνος Εκτέλεσης σε sec Document Reporting 1 1 mil 1 mil 29, A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms 2 1 mil , A Simple Worst-Case Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , mil , An Adaptive Algorithm for Conjunctive Queries for 2 terms 2 1 mil , An Adaptive Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , Πίνακας mil 37 13,

117 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Huffman Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Document Reporting 1 1 mil 1 mil 29, A Simple Worst-Case Algorithm for Conjunctive Queries for 2 terms 2 1 mil , A Simple Worst-Case Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , mil , An Adaptive Algorithm for Conjunctive Queries for 2 terms 2 1 mil , An Adaptive Algorithm for Conjunctive Queries for k terms 2 1 mil , mil , Πίνακας mil 36 16, Αλγόριθμοι Ανεστραμμένου Αρχείου Στην ενότητα αυτή παρουσιάζεται η απόδοση των αλγορίθμων που παρουσιάστηκαν στην Ενότητα 4.1. Αυτό γίνεται με τη χρήση της μεθόδου υπολογισμού αρχικής θέσης με Χαρακτήρα $ στην Ενότητα και με τη χρήση της μεθόδου υπολογισμού αρχικής θέσης με Extra Bit Vector στην Ενότητα Σύμφωνα με τα αποτελέσματα των Πινάκων 7.14, 7.15 και 7.16 που αφορούν την εκτέλεση με μέθοδο υπολογισμού αρχικής θέσης με Extra Bit Vector και των Πινάκων 7.17, 7.18 και 7.19 που αφορούν την εκτέλεση με μέθοδο υπολογισμού αρχικής θέσης με χαρακτήρα $, οδηγούμαστε στα κάτωθι συμπεράσματα: Όταν χρησιμοποιείται η μέθοδος εύρεσης αρχικής θέσης με Χαρακτήρα $ έχουμε γενικά μεγαλύτερους χρόνους. Οι μέθοδοι που επηρεάζονται περισσότερο είναι οι κάτωθι: Τομή τμημάτων δύο λιστών, δύο όρων Τομή τμημάτων λιστών, όρων Ενώ οι μέθοδοι «Εύρεση οποιασδήποτε τιμής», «Εξαγωγή οποιουδήποτε τμήματος», «Εύρεση ενός μετά από επίσκεψη ενός, για» και «Εύρεση ενός 116

118 μετά από επίσκεψη ενός, για για» έχουν μικρές διαφορές σε κάθε περίπτωση Μέθοδος υπολογισμού αρχικής θέσης Extra Bit Vector Παρακάτω παρουσιάζονται οι παρατηρήσεις μας ανά αλγόριθμο όταν χρησιμοποιείται η μέθοδος υπολογισμού αρχικής θέσης με Extra Bit Vector: «Εύρεση οποιασδήποτε τιμής»: Αποδίδει σχεδόν το ίδιο σε κάθε τύπο Wavelet Tree, αλλά λίγο καλύτερα με Huffman Shaped Wavelet Tree. «Εξαγωγή οποιουδήποτε τμήματος»: Αποδίδει χειρότερα με Normal Shaped και καλύτερα με Weight Balanced Wavelet Tree. «Εύρεση ενός μετά από επίσκεψη ενός, για» και «Εύρεση ενός μετά από επίσκεψη ενός, για για»: Αποδίδουν χειρότερα Normal Shaped και καλύτερα με Weight Balanced Wavelet Tree. Σε Huffman Shaped Wavelet Tree δεν υποστηρίζεται όπως έχει ήδη αναφερθεί. «Τομή τμημάτων δύο λιστών, δύο όρων» και «Τομή τμημάτων λιστών, όρων»: Δεν επηρεάζονται από τον τύπο του Wavelet Tree. Αξιοσημείωτο είναι ότι η λειτουργία «Τομή τμημάτων λιστών, όρων» δεν επηρεάζεται καν από τον αριθμό όρων που περιέχονται μέσα στο query. 117

119 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Normal Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Εύρεση οποιασδήποτε τιμής 1 1 mil 1 mil 3, Εξαγωγή οποιουδήποτε τμήματος 1 1 mil 1 mil 8, Εύρεση ενός μετά από επίσκεψη ενός, για 1 1 mil 1 mil 10, Εύρεση ενός μετά από επίσκεψη ενός, για για 1 1 mil 1 mil 27, Τομή τμημάτων δύο λιστών, δύο όρων 2 1 mil , Τομή τμημάτων όρων Πίνακας 7.14 λιστών, 2 1 mil , mil , mil 36 3,

120 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Weight Balanced Wavelet Tree Χρόνος Εκτέλεσης σε sec Εύρεση οποιασδήποτε τιμής 1 1 mil 1 mil 3, Εξαγωγή οποιουδήποτε τμήματος 1 1 mil 1 mil 6, Εύρεση ενός μετά από επίσκεψη ενός, για 1 1 mil 1 mil 9, Εύρεση ενός μετά από επίσκεψη ενός, για για 1 1 mil 1 mil 26, Τομή τμημάτων δύο λιστών, δύο όρων 2 1 mil , Τομή τμημάτων όρων Πίνακας 7.15 λιστών, 2 1 mil , mil , mil 36 3,

121 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Huffman Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Εύρεση οποιασδήποτε τιμής 1 1 mil 1 mil 2, Εξαγωγή οποιουδήποτε τμήματος 1 1 mil 1 mil 7, Εύρεση ενός μετά από επίσκεψη ενός, για Εύρεση ενός μετά από επίσκεψη ενός, για για Δεν υποστηρίζεται Δεν υποστηρίζεται Τομή τμημάτων δύο λιστών, δύο όρων 2 1 mil , Τομή τμημάτων λιστών, όρων Πίνακας mil , mil , mil 39 3, Μέθοδος υπολογισμού αρχικής θέσης Χαρακτήρας $ Παρακάτω παρουσιάζονται οι παρατηρήσεις μας ανά αλγόριθμο όταν χρησιμοποιείται η μέθοδος υπολογισμού αρχικής θέσης με το χαρακτήρα $ : «Εύρεση οποιασδήποτε τιμής»: Αποδίδει σχεδόν το ίδιο σε κάθε τύπο Wavelet Tree, αλλά λίγο καλύτερα με Huffman Shaped Wavelet Tree. «Εξαγωγή οποιουδήποτε τμήματος»: Αποδίδει χειρότερα με Normal Shaped και καλύτερα με Weight Balanced Wavelet Tree. «Εύρεση ενός μετά από επίσκεψη ενός, για» και «Εύρεση ενός μετά από επίσκεψη ενός, για για»: Αποδίδουν χειρότερα Normal Shaped και καλύτερα με Weight Balanced Wavelet Tree. Σε Huffman Shaped Wavelet Tree δεν υποστηρίζεται όπως έχει ήδη αναφερθεί. «Τομή τμημάτων δύο λιστών, δύο όρων» και «Τομή τμημάτων λιστών, όρων»: Αποδίδουν χειρότερα με Normal Shaped Wavelet Tree και καλύτερα με Weight Balanced Wavelet Tree και Huffman Shaped (οι διαφορές τους είναι μηδαμινές). 120

122 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Normal Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Εύρεση οποιασδήποτε τιμής 1 1 mil 1 mil 5, Εξαγωγή οποιουδήποτε τμήματος 1 1 mil 1 mil 8, Εύρεση ενός μετά από επίσκεψη ενός, για 1 1 mil 1 mil 11, Εύρεση ενός μετά από επίσκεψη ενός, για για 1 1 mil 1 mil 29, Τομή τμημάτων δύο λιστών, δύο όρων 2 1 mil , Τομή τμημάτων όρων Πίνακας 7.17 λιστών, 2 1 mil , mil , mil 37 13,

123 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Weight Balanced Wavelet Tree Χρόνος Εκτέλεσης σε sec Εύρεση οποιασδήποτε τιμής 1 1 mil 1 mil 4, Εξαγωγή οποιουδήποτε τμήματος 1 1 mil 1 mil 6, Εύρεση ενός μετά από επίσκεψη ενός, για 1 1 mil 1 mil 9, Εύρεση ενός μετά από επίσκεψη ενός, για για 1 1 mil 1 mil 27, Τομή τμημάτων δύο λιστών, δύο όρων 2 1 mil , Τομή τμημάτων όρων Πίνακας 7.18 λιστών, 2 1 mil , mil , mil 37 6,

124 ΛΕΙΤΟΥΡΓΙΕΣ Αριθμός Terms που συμμετέχουν στο Query ΠΛΗΡΟΦΟΡΙΕΣ QUERIES Αριθμός Queries Απαντήσεις Huffman Shaped Wavelet Tree Χρόνος Εκτέλεσης σε sec Εύρεση οποιασδήποτε τιμής 1 1 mil 1 mil 3, Εξαγωγή οποιουδήποτε τμήματος 1 1 mil 1 mil 7, Εύρεση ενός μετά από επίσκεψη ενός, για Εύρεση ενός μετά από επίσκεψη ενός, για για Δεν υποστηρίζεται Δεν υποστηρίζεται Τομή τμημάτων δύο λιστών, δύο όρων 2 1 mil , Τομή τμημάτων λιστών, όρων Πίνακας mil , mil , mil 40 6,

125 Κεφάλαιο 8 Συμπεράσματα και Ιδέες για Μελλοντική Έρευνα 8.1 Συμπεράσματα Στην ενότητα αυτή παρατίθενται τα γενικά συμπεράσματα που αφορούν την τρέχουσα διπλωματική εργασία. Η χρήση ανεστραμμένου αρχείου ως τεχνική συμπίεσης κειμένου είναι πιο αποδοτική σε σχέση με αυτή του αυτοδεικτοδοτούμενου κειμένου καθότι εξοικονομείται χώρος σε επίπεδο δενδρικής δομής κάτι το οποίο έχει ως συνέπεια την εκτέλεση γρηγορότερων αλγορίθμων απάντησης ερωτημάτων. Από την άλλη η χρήση αυτοδεικτοδοτούμενου κειμένου έχει ως συνέπεια τη χρήση χώρου ανάλογου με το μέγεθος της συλλογής των κειμένων ενώ οι αντίστοιχοι αλγόριθμοι που υλοποιήθηκαν για αυτή την τεχνική συμπίεσης είναι αρκετά πιο χρονοβόροι κατά την εκτέλεση τους Σχετικά με τα είδη των Wavelet Trees που χρησιμοποιήθηκαν ήταν εμφανές ότι σχεδόν σε όλες τις περιπτώσεις το Normal Shaped Wavelet Tree εκτελούσε λειτουργίες σε πολύ μεγαλύτερο χρόνο από το Weight Balanced και το Huffman Shaped. Οι χρόνοι εκτέλεσης των λειτουργιών σε Weight Balanced σε κάποιες περιπτώσεις ήταν μικρότεροι από το του Huffman Shaped αλλά σε άλλες περιπτώσεις ίσχυσε το αντίθετο. Ο χρόνος που απαιτεί το χτίσιμο του δένδρου όμως είναι ξεκάθαρα πολύ μεγαλύτερος στην περίπτωση του Huffman Shaped Wavelet Tree. Σχετικά με τις μεθόδους εύρεσης αρχικής θέσης, διαπιστώθηκε ότι η μέθοδος «Εύρεση αρχικής θέσης με Extra BV» είναι πολύ πιο αποδοτική από τη μέθοδο «Εύρεση αρχικής θέσης με $» σε όλες τις περιπτώσεις. Επισημαίνεται ότι οι αλγόριθμοι για αυτοδεικτοδοτούμενο κείμενο βελτίωσαν θεαματικά τους χρόνους εκτέλεσης τους. Σημειώνεται ότι η χρήση της μεθόδου «Εύρεση αρχικής θέσης με Extra BV» επιβαρύνει το χρόνο που απαιτείται για το χτίσιμο του δένδρου (ο οποίος είναι χρόνος προεπεξεργασίας) αλλά αυτό είναι αμελητέο σε σχέση με την εξοικονόμηση του χρόνου εκτέλεσης των λειτουργιών. Όσο αφορά τις λειτουργίες που παρουσιάστηκαν, ανά είδος διαπιστώθηκαν τα κάτωθι: Οι Λειτουργίες που εκτελούν απαντήσεις ερωτημάτων ένωσης για ανεστραμμένο αρχείο («Τομή τμημάτων δύο λιστών, δύο όρων» και «Τομή τμημάτων λιστών όρων») εκτελούνται σε πολύ λιγότερο χρόνο από τις αντίστοιχες για αυτοδεικτοδοτούμενο κείμενο («A Simple Worst-Case Algorithm for Conjunctive Queries», «An Adaptive Algorithm for Conjunctive Queries»). Οι Λειτουργίες που επιστρέφουν λίστες εμφανίσεων (απαντούν σε ποια κείμενα εμφανίζεται ένας όρος) για ανεστραμμένο αρχείο (Εξαγωγή οποιουδήποτε τμήματος και Εύρεση ενός μετά από επίσκεψη ενός, για για ) εκτελούνται σε πολύ λιγότερο χρόνο από τις αντίστοιχες για αυτοδεικτοδοτούμενο κείμενο («Document Reporting»). 8.2 Ιδέες για Μελλοντική Έρευνα Μια κατεύθυνση για μελλοντική έρευνα είναι οι ιδέες που παρουσιάστηκαν στο Κεφάλαιο 5 και αφορούν την επέκταση των τεχνικών δεικτοδότησης και τον συνδυασμό 124

126 τους. Όλες οι ενότητες εκτός της που αφορά την «Εύρεση ενός μετά από επίσκεψη ενός, για και» και της 5.3 που αφορά τις Τεχνικές Εύρεσης Starting Position και έχουν ήδη υλοποιηθεί στην τρέχουσα εργασία, θα μπορούσαν να υλοποιηθούν και να αξιολογηθούν αντίστοιχα. Επίσης θα μπορούσε να υλοποιηθεί και αξιολογηθεί η ιδέα που παρουσιάζεται στο Κεφάλαιο 6 και αφορά την «Κατανεμημένη επέκταση με πολιτικές caching» και θα ήταν πολύ ενδιαφέρον να συγκριθεί και με άλλες αντίστοιχες μεθόδους. 125

127 ΠΑΡΑΡΤΗΜΑ Α Υλοποίηση Στο Παράρτημα αυτό αναφέρονται κάποιες λεπτομέρειες ως προς την υλοποίηση των θεμάτων που μελετάει η τρέχουσα διπλωματική εργασία. Αρχικά ζητήθηκε από τους συγγραφείς της δημοσίευσης «Wavelet trees from theory to practice» [8], (Grossi, R., Vitter J. και Xu, B) ο κώδικας τις υλοποίησης τους μέσω ηλεκτρονικής αλληλογραφίας. Εκείνοι μας απάντησαν και μας έδωσαν μια έκδοση του κώδικα τους από την οποία χρησιμοποιήσαμε την υλοποίηση Wavelet Trees. Το μέρος της υλοποίησης που χρησιμοποιήθηκε στην τρέχουσα εργασία αφορούσε την δημιουργία Wavelet Trees (Normal Shaped, Weight Balanced και Huffman Shaped). Αυτό γινόταν από τη λήψη μιας αλφαριθμητικής ακολουθίας μέσω ενός αρχείου text. Στα πλαίσια της τρέχουσας διπλωματικής εργασίας υλοποιήθηκαν τα κάτωθι: Λήψη πληροφορίας για το χτίσιμο του Wavelet Tree από ανεστραμμένο αρχείο. Λήψη πληροφορίας για το χτίσιμο του Wavelet Tree από αυτοδεικτοδοτούμενο κείμενο. Όλες οι τεχνικές / αλγόριθμοι που αναφέρονται στην Ενότητα 4.1 (Τεχνικές για αναπαράσταση συλλογής κειμένου με Inverted Index). Όλες οι τεχνικές / αλγόριθμοι που αναφέρονται στην Ενότητα 4.2 (Τεχνικές για αναπαράσταση συλλογής κειμένου με Self Indexed Text). Υλοποίηση λειτουργίας «Εύρεση ενός μετά από επίσκεψη ενός, για και» (Ενότητα 5.3.1). Υλοποίηση για την σύγκριση τεχνικών εύρεσης Αρχικής Θέσης (Ενότητα 5.3). Τα παραπάνω χρησιμοποιήθηκαν ως βάση για την απαραίτητη πειραματική αξιολόγηση. Συνεπώς ο κώδικας που επισυνάπτεται στην τρέχουσα διπλωματική εργασία έχει ως βάση τον κώδικα των (Grossi, R., Vitter J. και Xu, B) αλλά πραγματοποιήθηκαν πολλές τροποποιήσεις και επιπλέον υλοποίηση εκ μέρους μας. 126

128 ΠΑΡΑΡΤΗΜΑ Β Τύποι Wavelet Tree και ιδιαιτερότητες Στην ενότητα αυτή παρουσιάζονται κάποια βασικά χαρακτηριστικά ανά κατηγορία δένδρου και ανά κατηγορία ανάκτησης, (Ανάκτηση με Κατάταξη ή Ranked Retrieval και Απλή Ανάκτηση Κειμένων ή Full Text Retrieval) τα οποία είναι βοηθητικά για την κατανόηση της λειτουργίας των δένδρων και των αλγορίθμων της τρέχουσας διπλωματικής εργασίας. Λόγω του ότι θέλουμε να δείξουμε τις διαφορές μεταξύ Ανάκτησης με Κατάταξη και Απλής Ανάκτησης Κειμένων, χρησιμοποιούμε μόνο αναπαράσταση κειμένου με ανεστραμμένο αρχείο (και όχι αναπαράσταση κειμένου με αυτοδεικτοδοτούμενο κείμενο). Β.1 Normal Shaped Wavelet Tree Shaped. Στην ενότητα αυτή θα παρουσιαστούν Wavelet Trees τα οποία είναι Normal Β.1.1 Normal Shaped με δεδομένα ενός Inverted Index για Full Text Retrieval Στην Εικόνα Β.1 απεικονίζεται ένα Nomal Shaped Wavelet Tree με δεδομένα ενός Inverted Index για Full Text Retrieval. Παρατηρούμε ότι το bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Δεν βλέπουμε σε καμία περίπτωση ανάμεικτα μηδενικά και άσσους. Αυτό συμβαίνει για δύο λόγους. Γιατί το δένδρο είναι ένα κλασικό Wavelet Tree του οποίου τα φύλλα είναι διατεταγμένα αλφαβητικά και γιατί η posting list κάθε όρου είναι διατεταγμένη με βάση τα document ids, δηλαδή το inverted index από το οποίο εισήχθησαν τα δεδομένα στο δένδρο έχει κατασκευαστεί για Full Text Retrieval. 127

129 Εικόνα Β.1 Β.1.2 Normal Shaped με δεδομένα ενός Inverted Index για Ranked Retrieval Στην Εικόνα Β.2 απεικονίζεται ένα Nomal Shaped Wavelet Tree με δεδομένα ενός Inverted Index για Ranked Retrieval. Στην περίπτωση αυτή ο bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου δεν αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Τα μηδενικά και οι άσσοι αναμειγνύονται. Αυτό συμβαίνει γιατί αν και το δένδρο είναι Normal Shaped και τα φύλλα του είναι διατεταγμένα αλφαβητικά, η posting list κάθε όρου είναι διατεταγμένη με βάση τα frequencies των documents, αφού το inverted index από το οποίο εισήχθησαν τα δεδομένα στο δένδρο έχει κατασκευαστεί για Ranked Retrieval. Εικόνα Β.2 128

130 Β.2 Weight Balanced Wavelet Tree (WBWT) Balanced. Στην ενότητα αυτή θα παρουσιαστούν Wavelet Trees τα οποία είναι Weight Β.2.1 WBWT με δεδομένα ενός Inverted Index για Full Text Retrieval Στην Εικόνα Β.3 απεικονίζεται ένα Weight Balanced Wavelet Tree με δεδομένα ενός Inverted Index για Full Text Retrieval. Παρατηρούμε ότι όπως και στην περίπτωση του Normal Shaped Wavelet Tree, το bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Δεν βλέπουμε σε καμία περίπτωση ανάμεικτα μηδενικά και άσσους. Αυτό συμβαίνει γιατί το δένδρο είναι ένα κλασικό Weight Balanced Wavelet Tree του οποίου τα φύλλα είναι διατεταγμένα αλφαβητικά και γιατί η posting list κάθε όρου είναι διατεταγμένη με βάση τα document ids, δηλαδή το inverted index από το οποίο εισήχθησαν τα δεδομένα στο δένδρο έχει κατασκευαστεί για Full Text Retrieval. Εικόνα Β.3 Β.2.2 WBWT με δεδομένα ενός Inverted Index για Ranked Retrieval Στην Εικόνα Β.4 απεικονίζεται ένα Weight Balanced Wavelet Tree με δεδομένα ενός Inverted Index για Ranked Retrieval. 129

131 Στην περίπτωση αυτή ο bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου δεν αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Τα μηδενικά και οι άσσοι αναμειγνύονται. Αυτό συμβαίνει γιατί αν και το δένδρο είναι Weight Balanced και τα φύλλα του είναι διατεταγμένα αλφαβητικά, η posting list κάθε όρου είναι διατεταγμένη με βάση τα frequencies των documents, αφού το inverted index από το οποίο εισήχθησαν τα δεδομένα στο δένδρο έχει κατασκευαστεί για Ranked Retrieval. Εικόνα Β.4 Β.3 Huffman Shaped Wavelet Tree Shaped. Στην ενότητα αυτή θα παρουσιαστούν Wavelet Trees τα οποία είναι Huffman Β.3.1 Huffman Shaped με δεδομένα ενός Inverted Index για Full Text Retrieval Στην Εικόνα Β.5 απεικονίζεται ένα Huffman Shaped Wavelet Tree με δεδομένα ενός Inverted Index για Full Text Retrieval. Στην περίπτωση αυτή ο bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου δεν αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Τα μηδενικά και οι άσσοι αναμειγνύονται. Αυτό συμβαίνει γιατί το δένδρο είναι Huffman Shaped και τα φύλλα του δεν είναι διατεταγμένα αλφαβητικά. Δεν έχει σημασία όμως ότι η posting list κάθε όρου είναι 130

132 διατεταγμένη με βάση τα document ids αφού το inverted index από το οποίο εισήχθησαν τα δεδομένα στο δένδρο έχει κατασκευαστεί για Full Text Retrieval. Εικόνα Β.5 Β.3.2 Huffman Shaped με δεδομένα ενός Inverted Index για Ranked Retrieval Στην Εικόνα Β.6 απεικονίζεται ένα Huffman Shaped Wavelet Tree με δεδομένα ενός Inverted Index για Ranked Retrieval. Στην περίπτωση αυτή ο bit vector κάθε διαστήματος ενός όρου σε κάθε κόμβο του δένδρου δεν αποτελείται από μια ακολουθία που στις αρχικές θέσεις περιέχει μηδενικά και στις επόμενες άσους, ή σε όλες τις θέσεις μηδενικά ή σε όλες άσσους. Τα μηδενικά και οι άσσοι αναμειγνύονται. Αυτό συμβαίνει για δύο λόγους. Γιατί το δένδρο είναι Huffman Shaped, του οποίου τα φύλλα δεν είναι διατεταγμένα αλφαβητικά και γιατί η posting list κάθε όρου είναι διατεταγμένη με βάση τα frequencies των documents, αφού το inverted index από το οποίο εισήχθησαν τα δεδομένα στο δένδρο έχει κατασκευαστεί για Ranked Retrieval. 131

133 Εικόνα Β.6 132

Ανάκληση Πληποφοπίαρ. Information Retrieval. Διδάζκων Δημήηριος Καηζαρός

Ανάκληση Πληποφοπίαρ. Information Retrieval. Διδάζκων Δημήηριος Καηζαρός Ανάκληση Πληποφοπίαρ Information Retrieval Διδάζκων Δημήηριος Καηζαρός Διάλεξη 4η: 04/03/2017 1 Phrase queries 2 Ερωτήματα φράσεως Έστω ότι επιθυμούμε ν απαντήσουμε ερωτήματα της μορφής stanford university

Διαβάστε περισσότερα

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

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής Θεωρία Πληροφορίας Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα Διακριτή πηγή πληροφορίας χωρίς μνήμη Ποσότητα πληροφορίας της πηγής Κωδικοποίηση

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

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

Κεφ.11: Ευρετήρια και Κατακερματισμός Κεφ.11: Ευρετήρια και Κατακερματισμός Database System Concepts, 6 th Ed. See www.db-book.com for conditions on re-use Κεφ. 11: Ευρετήρια-Βασική θεωρία Μηχανισμοί ευρετηρίου χρησιμοποιούνται για την επιτάχυνση

Διαβάστε περισσότερα

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

Ανάκτηση πληροφορίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ανάκτηση πληροφορίας Ενότητα 6: Ο Αντεστραμμένος Κατάλογος Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #04 Εισαγωγή στα Μοντέλα Ανάκτησης Πληροφορίας Boolean Μοντέλο 1 Άδεια χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή

Διαβάστε περισσότερα

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Οι σημειώσεις, αν και βασίζονται στο διδακτικό πακέτο, αποτελούν προσωπική θεώρηση της σχετικής ύλης και όχι επίσημο

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 20 Huffman codes 1 / 12 Κωδικοποίηση σταθερού μήκους Αν χρησιμοποιηθεί κωδικοποίηση σταθερού μήκους δηλαδή

Διαβάστε περισσότερα

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

Διαβάστε περισσότερα

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2011-2012 Ημερομηνία Παράδοσης: Στην εξέταση του μαθήματος ΑΣΚΗΣΗ Δημιουργία Ευρετηρίων Συλλογής Κειμένων Σκοπός της άσκησης είναι η υλοποίηση ενός συστήματος επεξεργασίας

Διαβάστε περισσότερα

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή (ως τρόπος οργάνωσης αρχείου) μέγεθος

Διαβάστε περισσότερα

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

Ανάκτηση Πληροφορίας Το Πιθανοκρατικό Μοντέλο Κλασικά Μοντέλα Ανάκτησης Τρία είναι τα, λεγόμενα, κλασικά μοντέλα ανάκτησης: Λογικό (Boolean) που βασίζεται στη Θεωρία Συνόλων Διανυσματικό (Vector) που βασίζεται στη Γραμμική

Διαβάστε περισσότερα

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

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #06 Πιθανοτικό Μοντέλο 1 Άδεια χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη Ευρετηρίων για Σύνθετα Δεδομένα ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ της ΧΡΙΣΤΙΝΑΣ

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2017-2018 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

Διαβάστε περισσότερα

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

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

Διαβάστε περισσότερα

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Διαβάστε περισσότερα

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα 2 Βήματα Επεξεργασίας Τα βασικά βήματα στην επεξεργασία

Διαβάστε περισσότερα

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου Συμπίεση Η συμπίεση δεδομένων ελαττώνει το μέγεθος ενός αρχείου : Εξοικονόμηση αποθηκευτικού χώρου Εξοικονόμηση χρόνου μετάδοσης Τα περισσότερα αρχεία έχουν πλεονασμό στα δεδομένα τους Είναι σημαντική

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Πτυχιακή Εργασία Φοιτητής: Γεμενής Κωνσταντίνος ΑΜ: 30931 Επιβλέπων Καθηγητής Κοκκόσης Απόστολος Λέκτορας

Διαβάστε περισσότερα

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Παπαγιαννόπουλος Δημήτριος 30 Μαρτίου 2017 18 Μαΐου 2017 papagianno@ceid.upatras.gr 1 Περιεχόμενα Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ανάκτηση Πληροφορίας (Information Retrieval IR)

Ανάκτηση Πληροφορίας (Information Retrieval IR) Ανάκτηση Πληροφορίας (Information Retrieval IR) Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων Ακαδηµαϊκό Έτος 2005-2006 ιδακτικό βοήθηµα 1 Καλύπτει το 60% του αντικειµένου

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

Τηλεπικοινωνιακά Συστήματα ΙΙ

Τηλεπικοινωνιακά Συστήματα ΙΙ Τηλεπικοινωνιακά Συστήματα ΙΙ Διάλεξη 11: Κωδικοποίηση Πηγής Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα 1. Αλγόριθμοι κωδικοποίησης πηγής Αλγόριθμος Fano Αλγόριθμος Shannon Αλγόριθμος Huffman

Διαβάστε περισσότερα

Ανάκτηση Πληροφορίας (Information Retrieval IR) ιδακτικό βοήθηµα 2. Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων

Ανάκτηση Πληροφορίας (Information Retrieval IR) ιδακτικό βοήθηµα 2. Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων Ανάκτηση Πληροφορίας (Information Retrieval IR) Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων Ακαδηµαϊκό Έτος 2005-2006 ιδακτικό βοήθηµα 1 Καλύπτει το 60% του 510 σελίδες 1η

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Query-Driven Indexing for Scalable Peer-to-Peer Text Retrieval. Gleb Skobeltsyn, Toan Luu, Ivana Podnar Zarko, Martin Rajman, Karl Aberer

Query-Driven Indexing for Scalable Peer-to-Peer Text Retrieval. Gleb Skobeltsyn, Toan Luu, Ivana Podnar Zarko, Martin Rajman, Karl Aberer Query-Driven Indexing for Scalable Peer-to-Peer Text Retrieval Gleb Skobeltsyn, Toan Luu, Ivana Podnar Zarko, Martin Rajman, Karl Aberer Περιγραφή του προβλήματος Ευρετηριοποίηση μεγάλων συλλογών εγγράφων

Διαβάστε περισσότερα

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Πτυχιιακή Εργασίία Φοιτητής: Δημήτριος Παπαοικονόμου ΑΜ: 36712

Διαβάστε περισσότερα

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα Βάσεις

Διαβάστε περισσότερα

Συμπίεση Δεδομένων Δοκιμής (Test Data Compression) Νικολός Δημήτριος, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών & Πληροφορικής, Παν Πατρών

Συμπίεση Δεδομένων Δοκιμής (Test Data Compression) Νικολός Δημήτριος, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών & Πληροφορικής, Παν Πατρών Συμπίεση Δεδομένων Δοκιμής (Test Data Compression), Παν Πατρών Test resource partitioning techniques ΑΤΕ Automatic Test Equipment (ATE) based BIST based Έλεγχος παραγωγής γής βασισμένος σε ΑΤΕ Μεγάλος

Διαβάστε περισσότερα

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης Tutorial B-Trees, B+Trees Μπαριτάκης Παύλος 2018-2019 Ιδιότητες B-trees Χρήση για μείωση των προσπελάσεων στον δίσκο Επέκταση των Binary Search Trees

Διαβάστε περισσότερα

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινομημένα Αρχεία Φυσική διάταξη των εγγραφών

Διαβάστε περισσότερα

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

Διαβάστε περισσότερα

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

Ανάκτηση Πληροφορίας Ανάκτηση Πληροφορίας Το μοντέλο Boolean Το μοντέλο Vector Ταξινόμηση Μοντέλων IR Ανάκτηση Περιήγηση Κλασικά Μοντέλα Boolean Vector Probabilistic Δομικά Μοντέλα Non-Overlapping Lists Proximal Nodes Browsing

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Κατακερματισμός 1 Αποθήκευση εδομένων (σύνοψη) Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Παραδοσιακά, μία σχέση (πίνακας/στιγμιότυπο) αποθηκεύεται σε ένα αρχείο Αρχείο δεδομένων

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

Διαβάστε περισσότερα

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

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα Δένδρα Δένδρα Ειδική κατηγορία γραφημάτων: συνεκτικά γραφήματα που δεν περιέχουν απλά κυκλώματα [1857] Arthur Cayley: για απαρίθμηση ορισμένων ειδών χημικών ενώσεων Χρησιμοποιούνται σε πληθώρα προβλημάτων,

Διαβάστε περισσότερα

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

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ.Χατζόπουλος 2 Δένδρο αναζήτησης είναι ένας ειδικός τύπος δένδρου που χρησιμοποιείται για να καθοδηγήσει την αναζήτηση μιας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος. Δομές Δεδομένων Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο Φυσικό Επίπεδο RAM Πίνακας 8 10 17 19 22 Ταξινομημένος Πίνακας 5 8 10 12 17 Δένδρο 8 5 10 12 19 17

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης ΠΕΡΙΕΧΟΜΕΝΑ Εντολές επιλογής Εντολές επανάληψης Εισαγωγή Στο προηγούμενο κεφάλαιο αναπτύξαμε προγράμματα, τα οποία ήταν πολύ απλά και οι εντολές των οποίων εκτελούνται η μία μετά την άλλη. Αυτή η σειριακή

Διαβάστε περισσότερα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

Διαβάστε περισσότερα

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

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια Βάσεις Δεδομένων 2017-2018 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ

Διαβάστε περισσότερα

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια Graph Algorithms Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια Περιεχόμενα Μεταβατικό Κλείσιμο Συνεκτικές συνιστώσες Συντομότερα μονοπάτια Breadth First Spanning

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

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

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #10 εικτοδότηση και Αναζήτηση Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 1 Άδεια

Διαβάστε περισσότερα

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Ταξινόμηση. Ταξινόμηση με Εισαγωγή. Ταξινόμηση με Επιλογή Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Ταξινόμηση Η ταξινόμηση sortg τοποθετεί ένα σύνολο κόμβων ή εγγραφών σε μία συγκεκριμένη διάταξη

Διαβάστε περισσότερα

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων Ταξινόμηση: Εισαγωγικά Ταξινόμηση (Sor ng) Ορέστης Τελέλης Βασικό πρόβλημα για την Επιστήμη των Υπολογιστών. π.χ. αλφαβητική σειρά, πωλήσεις ανά τιμή, πόλεις με βάση πληθυσμό, Μπορεί να είναι ένα πρώτο

Διαβάστε περισσότερα

Διαχρονικές δομές δεδομένων

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

Διαβάστε περισσότερα

Διαχείριση εγγράφων. Αποθήκες και Εξόρυξη Δεδομένων Διδάσκων: Μ. Χαλκίδη

Διαχείριση εγγράφων. Αποθήκες και Εξόρυξη Δεδομένων Διδάσκων: Μ. Χαλκίδη Διαχείριση εγγράφων Αποθήκες και Εξόρυξη Δεδομένων Διδάσκων: Μ. Χαλκίδη Απεικόνιση κειμένων για Information Retrieval Δεδομένου ενός κειμένου αναζητούμε μια μεθοδολογία απεικόνισης του γραμματικού χώρου

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 1 Εισαγωγή 1 / 14 Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων

Διαβάστε περισσότερα

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα στα οποία κάθε κόμβος μπορεί να αποθηκεύει ένα ή περισσότερα κλειδιά. Κόμβος με d διακλαδώσεις : k 1 k 2 k 3 k 4 d-1 διατεταγμένα κλειδιά d διατεταγμένα παιδιά

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

Διαβάστε περισσότερα

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 14: Δέντρα IV - B-Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - 2-3 Δένδρα, Εισαγωγή και άλλες πράξεις - Άλλα Δέντρα: Β-δένδρα, Β+-δέντρα,

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

Διαβάστε περισσότερα

Επεξεργασία Πολυµέσων. Δρ. Μαρία Κοζύρη Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας

Επεξεργασία Πολυµέσων. Δρ. Μαρία Κοζύρη Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας Ενότητα 3: Επισκόπηση Συµπίεσης 2 Θεωρία Πληροφορίας Κωδικοποίηση Θεµελιώθηκε απο τον Claude

Διαβάστε περισσότερα

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch 1 Καλαμποκάς Ιάσων, 2 Καραστάθη Μαρία, 3 Καραστάθη Ουρανία, 4 Χαλβατσιώτης Γεώργιος, 5 Κωνσταντίνου Ζωή, 6 Καρόγλου Νικόλαος,

Διαβάστε περισσότερα

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

Διαβάστε περισσότερα

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Περιεχόμενα 14.1 Διωνυμικά Δένδρα... 255 14.2 Διωνυμικές Ουρές... 258 14.1.1 Εισαγωγή στοιχείου σε διωνυμική ουρά... 258 14.1.2 Διαγραφή μεγίστου από διωνυμική

Διαβάστε περισσότερα

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems Ημερομηνία Παράδοσης: 0/1/017 την ώρα του μαθήματος ή με email: mkarabin@csd.uoc.gr Γενικές Οδηγίες α) Επιτρέπεται η αναζήτηση στο Internet και στην βιβλιοθήκη

Διαβάστε περισσότερα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

Ανάκληση Πληποφοπίαρ. Information Retrieval. Διδάζκων Δημήηριος Καηζαρός

Ανάκληση Πληποφοπίαρ. Information Retrieval. Διδάζκων Δημήηριος Καηζαρός Ανάκληση Πληποφοπίαρ Information Retrieval Διδάζκων Δημήηριος Καηζαρός Διάλεξη 7η: 21/03/2016 1 Ch. 4 Κατασκευή του ευρετηρίου Πώς κατασκευάζουμε το ευρετήριο; Ποιες στρατηγικές μπορούμε ν ακολουθήσουμε

Διαβάστε περισσότερα

Αντισταθμιστική ανάλυση

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

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

Διαβάστε περισσότερα

a n + 6a n a n 2 + 8a n 3 = 0, a 0 = 1, a 1 = 2, a 2 = 8

a n + 6a n a n 2 + 8a n 3 = 0, a 0 = 1, a 1 = 2, a 2 = 8 Διακριτά Μαθηματικά Σχέσεις Αναδρομής Ι 1 / 17 a n + 6a n 1 + 12a n 2 + 8a n 3 = 0, a 0 = 1, a 1 = 2, a 2 = 8 2 / 17 a n + 6a n 1 + 12a n 2 + 8a n 3 = 0, a 0 = 1, a 1 = 2, a 2 = 8 1ος τρόπος: Εχουμε τη

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

JDSL Java Data Structures Library

JDSL Java Data Structures Library ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ JDSL Java Data Structures Library Δομές Δεδομένων Μπαλτάς Αλέξανδρος 24 Μαρτίου 2015 ampaltas@ceid.upatras.gr Εισαγωγή Η JDSL είναι μια βιβλιοθήκη ομών εδομένων σε

Διαβάστε περισσότερα

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

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing) Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ανασκόπηση Προβλήματος και Προκαταρκτικών Λύσεων Bit Διανύσματα Τεχνικές Κατακερματισμού & Συναρτήσεις

Διαβάστε περισσότερα

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου

Διαβάστε περισσότερα

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα

Διαβάστε περισσότερα

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Διπλωματική Εργασία Μεταπτυχιακού Προγράμματος στην Εφαρμοσμένη Πληροφορική Κατεύθυνση: Συστήματα Υπολογιστών

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες ως εξής P 1 K 1 P

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6β: Ταξινόμηση με εισαγωγή και επιλογή Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creatve

Διαβάστε περισσότερα

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» 2 ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβλήματα ελάχιστης συνεκτικότητας δικτύου Το πρόβλημα της ελάχιστης

Διαβάστε περισσότερα

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

Διαβάστε περισσότερα

Τα µπιτ και η σηµασία τους. Σχήµα bit. ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) 1.7 Αποθήκευση κλασµάτων 1.8 Συµπίεση δεδοµένων 1.9 Σφάλµατα επικοινωνίας

Τα µπιτ και η σηµασία τους. Σχήµα bit. ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) 1.7 Αποθήκευση κλασµάτων 1.8 Συµπίεση δεδοµένων 1.9 Σφάλµατα επικοινωνίας ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (2/2) 1.1 Τα bits και ο τρόπος που αποθηκεύονται 1.2 Κύρια µνήµη 1.3 Αποθηκευτικά µέσα 1.4 Αναπαράσταση πληροφοριών ως σχηµάτων bits

Διαβάστε περισσότερα

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

Διαβάστε περισσότερα

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

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #11 Suffix Arrays Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 1 Άδεια χρήσης Το παρόν

Διαβάστε περισσότερα

0 The quick brown fox leaped over the lazy lazy dog 1 Quick brown foxes leaped over lazy dogs for fun

0 The quick brown fox leaped over the lazy lazy dog 1 Quick brown foxes leaped over lazy dogs for fun Κ24: Προγραμματισμός Συστήματος - 1η Εργασία, Εαρινό Εξάμηνο 2018 Προθεσμία Υποβολής: Κυριακή 18 Μαρτίου, 23:59 Εισαγωγή Στην εργασία αυτή θα υλοποιήσετε μία μίνι μηχανή αναζήτησης (search engine). Οι

Διαβάστε περισσότερα

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

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια Ευαγγελία Πιτουρά 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες

Διαβάστε περισσότερα

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

Διαβάστε περισσότερα