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



Σχετικά έγγραφα
Διαδικασιακός Προγραμματισμός

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

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

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

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

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

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

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

Εκτενείς Δομές Δεδομένων

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

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

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

an:3 are:6 a:10

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

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

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

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

Εκτενείς Δομές Δεδομένων

Red-black δέντρα (Κεφ. 5)

JDSL Java Data Structures Library

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

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. 5)

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

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

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

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

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

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

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014

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

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

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

Υπολογιστικό Πρόβληµα

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

HY-486 Αρχές Κατανεμημένου Υπολογισμού

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Κατακερματισμός (Hashing)

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

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

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

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

Βαθμός Σχόλια. lab PASS 1194 PASS 1238 PASS 1239 PASS

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

Αλγόριθμοι Αναζήτησης. (AeppAcademy.com)

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

Προηγμένη Ευρετηρίαση Δεδομένων (ΠΜΣ) Ενδεικτικές ερωτήσεις-θέματα για την εξέταση της θεωρίας

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

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

Διάλεξη 18: B-Δένδρα

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Advanced Data Indexing

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

Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών. Κοντοτάσιου Ιωάννα ΑΜ 3125 Μπέσσας Απόστολος ΑΜ 3171

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

Αναζήτηση. Στην λειτουργία της αναζήτησης εξακριβώνεται η παρουσία ή η απουσία ενός δεδομένου σε μια δομή δεδομένων.

Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών. Κοντοτάσιου Ιωάννα ΑΜ 3125 Μπέσσας Απόστολος ΑΜ 3171

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

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

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

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

Δομές Δεδομένων ΑΣΚΗΣΗ 3Η Αναλυτική Βαθμολογία. Λειτουργικότητα. Κυρίως Πρόγραμμα (είσοδος με Random. Evr Αναζήτηση Δεδομένων από αρχείο

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

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

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

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

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

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

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

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

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

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

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

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

Insert(K,I,S) Delete(K,S)

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

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

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Τεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

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

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

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

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

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

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Transcript:

Δομές Δεδομένων Εργαστηριακή Άσκηση 2012-2013 Γκόγκος Νίκος Α.Μ.: 4973 Έτος: 3 ο Email: gkogkos@ceid.upatras.gr Εισαγωγικά: Η υλοποίηση του project έχει γίνει σε python [2.7]. Τα python modules είναι αυτόνομα και μπορούν να τρέξουν απλά σε έναν 2.7 python interpreter. Στη αρχή εκτέλεσης του προγράμματος ο χρήστης καλείται να διαλέξει mode, δηλαδή σε ποια δομή θα στηριχτούν οι πράξεις που θα κάνει. Έχει τη δυνατότητα να φορτώσει την βάση με τα βιβλία σε λίστα στη RAM, σε Binary Tree, σε TRIE και σε AVL tree. Όλες οι βασικές πράξεις είναι διαθέσιμες σε κάθε δομή (αναζήτηση, εισαγωγή, διαγραφή) και μπορούν να επιλεχθούν μέσω των menus. Η αναζήτηση γίνεται σε κάθε δομή αντίστοιχα με το κλειδί που έχει ζητηθεί στην εκφώνηση της άσκησης. Η δομή Books που αναφέρεται στην εκφώνηση έχει υλοποιηθεί με μία λίστα. Η python έχει την built-in function len(), η οποία επιστρέφει το μέγεθος μιας δομής (η λίστα με τα βιβλία) σε O(1). Επομένως, δεν χρειάζεται να κρατάμε μετρητή για τα βιβλία. Επιπρόσθετα, έχει δημιουργηθεί ένα HTML API Documentation χρησιμοποιώντας το sphinxmodule της python. Μπορείτε να το βρείτε στα αρχεία του project ή σε αυτό το link: Part A Για την υλοποίηση αυτού του κομματιού, αποθηκεύουμε τη συλλογή βιβλίων σε μία δυναμική λίστα. Όλες οι πράξεις που μπορεί να κάνει ο user γίνονται σε γραμμικό χρόνο. Όπου χρειάζεται προσπελαύνουμε τη λίστα σειριακά (for loop) για να έχουμε γραμμικό χρόνο. Η python προσφέρει built-in functions για τις λίστες, οι οποίες όμως τρέχουν σε O(1). Με άλλα λόγια, η λίστα χρησιμοποιείται ως ένα array. Part B Κατασκευάζουμε ένα object Binary tree, το οποίο είναι κομβοπροσανατολισμένο. Το Binary Interpolation Search χρησιμοποιεί μία λίστα με ταξινομημένα book IDs με δείκτες στο αντίστοιχο βιβλίο αντικείμενο. Ο αλγόριθμος δεν θα μπορούσε να εφαρμοστεί πάνω στην λίστα books, αφού δεν είναι sorted. Κάθε φορά που γίνεται μια αλλαγή στη συλλογή (insert, delete) πρέπει να επαναταξινομούμε αυτή τη λίστα.

Part C Σε αυτή την περίπτωση πρέπει να δημιουργούνται 2 TRIEs. Ένα βασισμένο στο title των βιβλίων και ένα βασισμένο στο lastname των συγγραφέων. Η δομή TRIE αποτελεί ένα συμπαγές ψηφιακό δέντρο. Εφόσον, τα TRIEs δεν είναι χτισμένα πάνω σε unique key (i.e ISBN), υπάρχει περίπτωση όπου θα έχουμε πολλαπλά matches για μια αναζήτηση. Επομένως, επιστρέφεται μία λίστα που περιέχει όλα τα matching books. Part D Δημιουργούμε ένα κομβοπροσανατολισμένο AVL δέντρο το οποίο είναι οργανωμένο με βάση τα ids των βιβλίων (ISBN). Σε κάθε πράξη ελέγχεται η ζύγιση (balance score) του υποδέντρου και αν έχει χαλάσει γίνονται κατάλληλες επαναζυγιστικές κινήσεις. Αυτό ελέγχεται κοιτώντας το balance score του Κρίσιμου Κόμβου Ένθεσης [ΚΚΕ]. Part E Αρχικά, parsάρουμε το Books.csv αρχείο και δημιουργούμε ένα δικό μας books database file με το εξής απλό format. Αυτό το κάνει το createdb module. Κάθε γραμμή αποτελεί ένα record-book και τα στοιχεία αυτού (ISBN, title etc) χωρίζονται με έναν delimiter= $_$. Αφού δημιουργηθεί μια βάση με πολλά βιβλία μεγέθους περίπου 100 MB, τρέχουμε test benches για κάθε δομή. Αυτό το αναλαμβάνει το PerformanceTest module. Για την ακριβή και αντικειμενική μέτρηση των χρόνων έχει χρησιμοποιηθεί το timeit module. Όσο αφορά τη λογική που ακολουθήθηκε ώστε να παρθούν μετρήσεις, έγινε μεγάλος αριθμός αναζητήσεων randomly για κάθε δομή. Σταδιακά αυξάνουμε το πλήθος της συλλογής και όσο πιο πολλά βιβλία περιέχει, τόσο πιο πολλές αναζητήσεις γίνονται. Αυτό βοηθά να γίνουν πιο αντικειμενικές οι μετρήσεις. Πιο συγκεκριμένα, randomly κάθε φορά επιλεγόταν ένα κλειδί μέσα από το σύνολο βιβλίων και επαναλαμβανόταν η αναζήτηση αυτού για ένα μικρό πεπερασμένο αριθμό. (repeatnum = 5). Έπειτα, υπολογίζουμε τον μέσο όρο αυτού. Ο λόγος που παίρνουμε την ίδια μέτρηση 5 φορές για κάθε αναζήτηση είναι προφανής. Είναι θεμιτό να έχουμε αντικειμενικές μετρήσεις, το οποίο σημαίνει ότι θα πρέπει να εξαλείψουμε τυχόν ανωμαλίες του συστήματος (π.χ κάποιο source unavailability την στιγμή που γίνεται η αναζήτηση, το οποίο θα επιφέρει απρόσμενο delay). Επομένως, βρίσκοντας το μέσο όρο εξασφαλίζουμε καλύτερη τυπική απόκλιση των μετρήσεών και άρα τα αποτελέσματα είναι πιο έγκυρα. Επίσης, σε κάθε πείραμα (για κάθε δομή) χρησιμοποιήθηκε άλλος αριθμός αναζητήσεων. Αυτό έγινε διότι έπρεπε να έχουμε αντικειμενικό δείγμα για την κάθε δομή, αλλά το όλο randomness δεν επιφέρει τα αναμενόμενα αποτελέσματα πάντα. Οπότε, σε κάποιες περιπτώσεις χρειαζόταν περισσότερες μετρήσεις. Παρακάτω υπάρχουν οι γραφικές παραστάσεις για των παραπάνω πειραμάτων. Τα graphs παράχθηκαν με matlab. Για κάθε περίπτωση έχουμε 2 ίδιες γραφικές ως προς την πληροφορία που αναπαριστούν. Απλά στην μία τα σημεία είναι ενωμένα, ενώ στην άλλη όχι. Τέλος, οι γραφικές παραστάσεις έχουν δημιουργηθεί συναρτήσει του χρόνου και του μεγέθους της συλλογής S (books size) κάθε φορά. Εδώ εξαίρεση αποτελεί η δομή TRIE, για το

οποίο ζωγραφίζουμε την γραφική παράστασή της συναρτήσει του χρόνου και του μήκους των λέξεων που ψάχνουμε. Σε όλες τις μετρήσεις, οι τυπικές αποκλίσεις των ίδιων πειραμάτων είναι μικρές. Συνεπώς, τα συμπεράσματα μπορούν να θεωρηθούν αντικειμενικά και έγκυρα. Linear search graphs: Όσο αφορά την απόδοση της γραμμικής αναζήτησης, μπορούμε να πούμε ότι τα αποτελέσματα είναι τα αναμενόμενα. Με άλλα λόγια, η αναζήτηση ολοκληρώνεται σε γραμμικό χρόνο, δηλαδή έχει complexity O(n) όπου n είναι το μέγεθος της συλλογής. Αυτό φαίνεται και στις παρακάτω γραφικές παραστάσεις. Όπου υπάρχουν μικρά spikes ίσως οφείλονται στο ότι η random κατανομή δεν είναι τόσο κοντά στο uniform distribution ή κάποιο instability του συστήματος που πάρθηκαν οι μετρήσεις.

Binary search graphs: Παρατηρούμε σύμφωνα με τις γραφικές παραστάσεις ότι η απόδοση της δυαδικής αναζήτησης προσεγγίζει αυτή που ξέρουμε από τη θεωρία. Η θεωρητική απόδοση ενός binary search είναι O(logn) σε μέση περίπτωση αλλά μπορεί να γίνει και O(n) στην χειρότερη. Αυτό οφείλεται στο ότι το Binary Tree δεν αποτελεί ισοζυγισμένο δέντρο ως προς κάποιο κριτήριο. Συνεπώς, υπάρχει η ακραία περίπτωση να παίρνει μορφή λίστας αν κάθε καινούριος κόμβος που εισάγεται γίνεται παιδί αριστερό/δεξί παιδί του προηγούμενου. Εμείς μετράμε την μέση περίπτωση και παρατηρούμε ότι η αναζήτηση τείνει να γίνει λογαριθμική. Επομένως, συμβαδίζει με τη θεωρητική απόδοση.

Binary Interpolation search graphs: Παρατηρούμε σύμφωνα με τις γραφικές παραστάσεις ότι η απόδοση του Binary Interpolation Search είναι αρκετά κοντά στο complexity που μας δίνει η θεωρία, το O(loglogn). Φυσικά, τα αποτελέσματα δεν είναι τέλεια, μιας και οι συνθήκες που παίρνουμε τις μετρήσεις δεν είναι ιδανικές (random searches, system instabilities).

TRIE search graphs: Όσο αφορά την αναζήτηση σε αυτή τη δομή, η θεωρία μας λέει ότι η πολυπλοκότητα εξαρτάται από το λ, όπου λ είναι το πλήθος χαρακτήρων του κλειδιού αναζήτησης πάνω στο TRIE. Εφόσον, το TRIE είναι συμπαγές (εκτός του ότι πιάνει πολύ λιγότερο χώρο στη RAM) αναμένουμε κάποιες αναζητήσεις να γίνονται πιο γρήγορα από ότι περιμένουμε. Αυτό οφείλεται στο ότι κάποια κλειδιά αναζήτησης μπορεί να είναι μοναδικά στο μεγαλύτερο μήκος τους αν δούμε το key ως ένα πίνακα αλφαριθμητικών. Για παράδειγμα, αν θα είχαμε κάποιο όνομα συγγραφέα που ξεκινά από ω ή άλλα ασυνήθιστα prefixes, το πιο πιθανό θα ήταν να αποθηκευτεί σε ύψος = 1 ή τουλάχιστον χαμηλό ύψος η πληροφορία, μιας και το TRIE είναι συμπαγές. Παρατηρούμε ότι για μεγάλο μήκος κλειδιών κάποιες φορές έχουμε καλύτερη απόδοση στην αναζήτηση. Αυτό οφείλεται στο ότι όσο μεγαλώνει το μήκος του κλειδιού αναζήτησης, τόσο πιο δύσκολο είναι να έχουμε κοινά κομμάτια στο string key. Για παράδειγμα, τα lastnames 15 ψηφίων θα είναι λίγα και από αυτά τα λίγα είναι απίθανο να έχουμε lastnames με ίδια prefixes μεγάλου μήκους. Γενικά, το TRIE έχει καλή απόδοση, η οποία εξαρτάται κάθε φορά από τις πληροφορίες των βιβλίων της συλλογής (πχ πολλοί με common lastname prefixes συγγραφείς, βιβλία με σχεδόν ίδιους τίτλους)

AVL search graphs: Σύμφωνα με το θεωρητικό complexity του AVL search αναμένουμε χρόνους O(logn). Αυτό επαληθεύεται στις παρακάτω γραφικές παραστάσεις.

Conclusion: Όσο αφορά τις μετρήσεις, μπορούμε να πούμε ότι χωρίς βλάβη της γενικότητας και με λίγη ελαστικότητα επαληθεύονται όλοι οι θεωρητικοί χρόνοι. Η πιο γρήγορα αναζήτηση φαίνεται να είναι αυτή του Binary Interpolation Search. Αυτό είναι αναμενόμενο αφού το time complexity του είναι O(loglogn). References: Binary Search Tree: http://code.activestate.com/recipes/577540-python-binarysearch-tree/ AVL Tree: https://github.com/pgrafov/python-avl-tree/blob/master/pyavltree.py TRIE: http://en.wikipedia.org/wiki/trie