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

Σχετικά έγγραφα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

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

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

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

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

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

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

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

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

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

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Προγραμματιστικές Τεχνικές

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση

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

Διαδικασιακός Προγραμματισμός

Αναδρομικοί Αλγόριθμοι

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

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

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

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

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

Προγραµµατιστικές Τεχνικές

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

1η Σειρά Γραπτών Ασκήσεων

Αναδρομή Ανάλυση Αλγορίθμων

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

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Δομές Δεδομένων Ενότητα 2

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ

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

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

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Προγραμματισμός Η/Υ (ΤΛ2007 )

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

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

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

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

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

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 6: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ: ΠΡΟΒΛΗΜΑ ΑΝΑΖΗΤΗΣΗΣ

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

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

Διάλεξη 5η: Εντολές Επανάληψης

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

Fast Fourier Transform

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

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

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

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

Ταχεία Ταξινόμηση Quick-Sort

Εισαγωγή στους Αλγόριθμους

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

Προγραμματιστικές Τεχνικές

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

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

Εισαγωγή στην Ανάλυση Αλγορίθμων

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

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

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

Transcript:

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

Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου εκτέλεσης ενός αλγόριθμου θα αποδίδεται με τον όρο (χρονική) πολυπλοκότητα ενός αλγόριθμου.

Παραδοχή Πολυπλοκότητα Χειρότερης περίπτωσης: () μέγιστος χρόνος εκτέλεσης του αλγορίθμου για οποιαδήποτε είσοδο μεγέθους. Πολυπλοκότητα Μέσης περίπτωσης: () αναμενόμενος χρόνος εκτέλεσης αλγορίθμου επί όλων των εισόδων μεγέθους. Όπου i ένα στιγμιότυπο και Ι τα στιγμιότυπα μεγέθους 3

Αναζήτηση Το πρόβλημα της αποτελεσματικής αναζήτησης είναι σημαντικό καθώς εμφανίζεται σε πλήθος θεωρητικών και πρακτικών προβλημάτων. Στην ενότητα αυτή συνοψίζονται δεδομένα αποτελέσματα αλλά παρουσιάζονται κατά αναλυτικότερο τρόπο. 4

Σειριακή Αναζήτηση Από πού να ξεκινήσω, παρακαλώ Μεγαλειότατε; ρώτησε, Ξεκίνα από την αρχή, είπε ο Βασιλιάς με σοβαρότητα, και συνέχισε μέχρι να φτάσεις στο τέλος: τότε σταμάτα. Lewis Caroll, Alice s Advetures i Woderlad 5

Σειριακή Αναζήτηση Η απλούστερη μέθοδος αναζήτησης είναι η σειριακή (sequetial) ή αλλιώς γραμμική (liear search). Η επόμενη διαδικασία Sequetial υποθέτει ότι αναζητείται η τιμή ey στον πίνακα Α που περιέχει αταξινόμητα στοιχεία, και επιστρέφει τη θέση του κλειδιού στον πίνακα ή την τιμή - αν το κλειδί δεν υπάρχει (περίπτωση ανεπιτυχούς αναζήτησης). 6

Αλγόριθμος σειριακής αναζήτησης Algorithm Sequetial(ey). i. while (i ) do 3. if (Α[i] ey) the retur i 4. else i i 5. retur - 7

Βελτίωση με κόμβο φρουρό Με την τεχνική του κόμβου φρουρού (setiel), η μέθοδος θα υλοποιηθεί θεωρώντας μια ακόμη θέση στον πίνακα: A[ ] ey Αν και πρακτικά η διαδικασία θα βελτιωθεί, σε θεωρητικό επίπεδο σε κάθε περίπτωση θα ισχύουν οι επόμενες προτάσεις υποθέτοντας ότι η πιθανότητα αναζήτησης του κλειδιού Α[i] είναι Ρ i /, για i (δηλαδή η πιθανότητα το κλειδί να βρίσκεται σε οποιαδήποτε θέση είναι ίδια) 8

Πρόταση. Η επιτυχής αναζήτηση σε πίνακα με αταξινόμητα κλειδιά έχει πολυπλοκότητα Θ(), Θ() και Θ() στην καλύτερη, στη χειρότερη και στη μέση περίπτωση, αντίστοιχα. Απόδειξη. Η καλύτερη και η χειρότερη περίπτωση συμβαίνουν όταν η αναζήτηση τερματίζεται με την εξέταση της πρώτης και της τελευταίας θέσης του πίνακα, αντίστοιχα. Αρα Θ() και Θ() αντίστοιχα καθώς θα κάνει σύγκριση ή. Για τη μέση περίπτωση θεωρώντας ότι η πιθανότητα αναζήτησης του κλειδιού Α[i] είναι Ρ i /, για i, άρα η εντολή {3} μπορεί να εκτελεστεί ή ή 3 ή φορές αν το κλειδί βρίσκεται αντίστοιχα στην η ή στη η ή στην - οστή θέση και όλες οι θέσεις να βρεθεί το κλειδί είναι με ίση πιθανότητα / : ( )... ( ) Θ από όπου προκύπτει η αλήθεια της πρότασης. ( ) 9

Πρόταση. Η ανεπιτυχής αναζήτηση σε πίνακα με αταξινόμητα κλειδιά έχει πολυπλοκότητα Θ() στην καλύτερη, στη χειρότερη και στη μέση περίπτωση. Απόδειξη. Σε κάθε περίπτωση θα σαρωθεί ολόκληρος ο πίνακας και άρα η πρόταση ισχύει. Αν υποθέσουμε ότι ο πίνακας περιέχει ταξινομημένα στοιχεία, τότε για την επιτυχή αναζήτηση ισχύει η ανωτέρω πρόταση αλλά για να επιταχύνουμε την ανεπιτυχή αναζήτηση πρέπει να μετατρέψουμε τη διαδικασία Sequetial ως εξής. 0

Αλγόριθμος σειριακής αναζήτησης για ταξινομημένους πίνακες Algorithm Sequetial(ey). i. while (i ) do 3. if (Α[i] < ey) the i i 4. else if (Α[i] ey) the retur i 5. else retur -

Πρόταση 3. Η ανεπιτυχής αναζήτηση σε πίνακα με ταξινομημένα κλειδιά έχει πολυπλοκότητα Θ(), Θ() και Θ() στην καλύτερη, στη χειρότερη και στη μέση περίπτωση, αντίστοιχα. Απόδειξη. Όταν αναζητούμε ένα μη υπαρκτό κλειδί, τότε αυτό μπορεί να ανήκει σε ένα από μεσοδιαστήματα που (σχηματικά) δημιουργούνται από τις τιμές των στοιχείων του πίνακα επάνω στην ευθεία των ακεραίων. ey A[] A[] A[3] A[i] A[i] A[] Η καλύτερη περίπτωση όταν το αναζητούμενο ey είναι μικρότερο από το πρώτο στοιχείο του πίνακα και έχουμε Θ(). Η χειρότερη περίπτωση όταν το αναζητούμενο ey είναι μεγαλύτερο από το τελευταίο στοιχείο και έχουμε Θ().

Για τη μέση περίπτωση θα πρέπει να εξετάσουμε περιπτώσεις και να λάβουμε το μέσο όρο τους. Αν το ey είναι μικρότερο από το πρώτο στοιχείο, τότε αρκεί μία σύγκριση για να τερματισθεί η διαδικασία. Αν το ey είναι μεγαλύτερο από το i-οστό και μικρότερο από το (i )-οστό στοιχείο (για i < ), τότε αρκούν i συγκρίσεις. A[i]<ey< A[i] 3 i i - συγκρίσεις 3 4 i i Αν το ey είναι μεγαλύτερο από το -οστό στοιχείο, τότε αρκούν συγκρίσεις. Συνεπώς ισχύει: (... ) (... ) ( ) ( ) από όπου προκύπτει η αλήθεια της πρότασης 3 Θ ( ) 3

Δυαδική Αναζήτηση Κλασικό παράδειγμα των αλγορίθμων της οικογενείας Διαίρει και Βασίλευε είναι η δυαδική αναζήτηση (biary search). Όπως γνωρίζουμε η αναζήτηση αυτή εφαρμόζεται σε πίνακες που περιέχουν ταξινομημένα στοιχεία. Υπενθυμίζοντας ότι η αποτελεσματικότητα των επαναληπτικών μεθόδων είναι καλύτερη των αναδρομικών (το κόστος κλήσης κάθε υποπρογράμματος δεν είναι αμελητέο), στη συνέχεια παρουσιάζουμε την επαναληπτική διαδικασία Biary_Iterate και την αναδρομική διαδικασία Biary_Rec που δείχνουν την ίδια θεωρητική συμπεριφορά. 4

Επαναληπτικός αλγόριθμος δυαδικής αναζήτησης Algorithm Biary_Iterate(ey). bottom ; top ;. while (bottom top) do 3. top bottom middle 4. if (A[middle] ey) the retur middle 5. else if (A[middle] > ey) the top middle - 6. else bottom middle 7. retur - 5

Αναδρομικός αλγόριθμος δυαδικής αναζήτησης Algorithm Biary_Rec(ey, left, rίght). if (left > right) the retur -;. left right middle 3. if (A[middle] ey) the retur middle 4. else if (A[middle] > ey) the 5. Biary_Rec(ey, left, middle - ) 6. else Biary_Rec(ey, middle, right) 6

Μπορούμε να περιγράψουμε τη λογική των προηγούμενων διαδικασιών ως εξής. Έστω ότι αναζητούμε το ακέραιο κλειδί ey σε ένα πίνακα Α[... ] με ταξινομημένους ακεραίους αριθμούς. Συγκρίνουμε το κλειδί ey με το περιεχόμενο της μεσαίας θέσης του πίνακα Α, που είναι η θέση middle. Στο σημείο αυτό τρία ενδεχόμενα μπορεί να συμβούν: τα δύο στοιχεία είναι ίσα, οπότε ο σκοπός µας επιτεύχθηκε, το ey είναι μικρότερο από το A[middle], οπότε είμαστε βέβαιοι ότι το ey αποκλείεται να βρίσκεται στον υποπίνακα A[middle... top]. Έτσι συνεχίζουμε στον υποπίνακα A[bottom... middle - ] εξετάζοντας το μεσαίο στοιχείο του, το ey είναι μεγαλύτερο του Α[middle], οπότε το ey σαφώς δεν βρίσκεται στον υποπίνακα Α[bottom... middle). Έτσι συνεχίζουμε και πάλι εξετάζοντας το μεσαίο στοιχείο του υποπίνακα A[middle... top] εξετάζοντας το μεσαίο στοιχείο του 7

Πρόταση 4. Η πολυπλοκότητα της δυαδικής αναζήτησης στη χειρότερη περίπτωση είναι λογαριθμική. Απόδειξη. Κάθε φορά που η σύγκριση του ey µε το µεσαίο στοιχείο του πίνακα δεν καταλήγει σε ισότητα, η σύγκριση επαναλαμβάνεται σε υποπίνακα µισού μεγέθους σε σχέση µε το μέγεθος του αρχικού. Η αναδρομική σχέση που εκφράζει το χειρότερο κόστος του αλγορίθμου ο οποίος διαιρεί σε 3 μέρη το πρόβλημα μπορεί να σχηματισθεί ως εξής, αν θεωρήσουμε με g() το κόστος για να διαιρέσουμε το πρόβλημα σε 3 μέρη: () g() το κόστος για να λύσουμε το ο μέρος το κόστος για να λύσουμε το ο μέρος το κόστος για να λύσουμε το 3 ο μέρος Καθώς g() (σύγκριση με το μεσαίο στοιχείο) και τα 3 μέρη της εργασίας είναι ξένα μεταξύ τους, και το ο μέρος δεν έχει επιπλέον κόστος (περίπτωση το ey ίσο με το μεσαίο στοιχείο) τότε έχουμε την εξής αναδρομική σχέση () max{τ(μέγεθος της αριστερής υπολίστας), 0, Τ(μέγεθος της δεξιάς υπολίστας )} ( ) max{ ( ( ) / ), ( ( ) / )} 8

() max{τ(μέγεθος της αριστερής υπολίστας), 0, Τ(μέγεθος της δεξιάς υπολίστας )} () Στην πρώτη εξέταση δυαδικής αναζήτησης έχουμε Αρα η () γίνεται: πλήθος στοιχείων Μέγεθος της αριστερή υπολίστας Μέγεθος της δεξιάς υπολίστας ( ) max{ ( ( ) / ), ( ( ) / )} πλήθος στοιχείων (το μεσαίο στοιχείο δεν είναι στοιχείο ούτε της αριστερής ούτε της δεξιάς υπολίστας) Καθώς η δεξιά υπολίστα είναι πάντα τουλάχιστον τόσο μεγάλη όσο και η αριστερή, άρα: max /, / / { ( ( ) ) ( ( ) )} ( ( ) ) 9

( 0) 0 ( ) ( ) ( ( ) / ) ( ) ( ( ) / ) αν ey A[middle] αν ey < A[middle] αν ey > A[middle] lοg () lοg lοg () lοg lοg () Απλοποιούµε τη σχέση αυτή θεωρώντας τη χειρότερη περίπτωση (δηλαδή, αγνοούμε το δεύτερο σκέλος) και επίσης υποθέτουμε ότι - ( περιττός) για κάποιο ακέραιο αριθμό. Έτσι προκύπτει ( ) ( ) ( ) ( ) ( / ) 0

( ) ( ) Με αρχική Τ(0)0. Εχουμε (με επαναλήψεις της αναδρομής): lοg () lοg lοg () lοg lοg () ( ) ( ) ( ) ( ) ( ) / ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) i i 0 3 log log 0 0...... Θ Ετσι λοιπόν για - προκύπτει ότι η πολυπλοκότητα της δυαδικής αναζήτησης είναι λογαριθμική Θ(log ). log ()Θ(log ) (δες άσκηση.3-6, απόδειξη με κανόνα του ορίου)

Με την Πρόταση 4 αποδείξαμε ότι η πολυπλοκότητα της χειρότερης περίπτωσης της δυαδικής αναζήτησης είναι της τάξης Θ(log ()). Αυτήν την απάντηση την αναμέναμε εφόσον ο αλγόριθμος υποδιπλασιάζει περίπου το μέγεθος του εναπομείναντα πίνακα σε κάθε επανάληψη, ο αριθμός των επαναλήψεων που απαιτούνται για την αναγωγή του αρχικού μεγέθους στο τελικό, είναι περίπου log. Η λογαριθμική συνάρτηση αυξάνει τόσο αργά που οι τιμές της εξακολουθούν να παραμένουν μικρές ακόμη και για πολύ μεγάλες τιμές του. Για την περίπτωση με 000 τότε log (0 3 )0 συγκρίσεις.

Μια ανάλυση της μέσης περίπτωσης επίσης θα δείξει ότι ο μέσος συγκρίσεων είναι ελαφρά μόνο καλύτερος από την χειρότερη περίπτωση. Οι ακριβείς τύποι για το μέσον όρο των συγκρίσεων για επιτυχή και ανεπιτυχή αναζήτηση είναι log - και log () αντίστοιχα. Αν και η δυαδική αναζήτηση είναι ένας βέλτιστος αλγόριθμος αναζήτησης αν και περιοριζόμαστε στις επιτελούμενες πράξεις μόνο στις συγκρίσεις μεταξύ των κλειδιών, παρ όλα αυτά υπάρχουν αλγόριθμοι που επιδεικνύουν καλύτερη αποδοτικότητα μέσης περίπτωσης όπως ο κατακερματισμός για παράδειγμα που δεν απαιτεί ο πίνακας να είναι ταξινομημένος. 3

Ένα τελευταίο σχόλιο είναι ότι ο αλγόριθμος της δυαδικής αναζήτησης παρουσιάζεται ως αλγόριθμος της κατηγορίας διαίρει και βασίλευε. Ο αλγόριθμος της δυαδικής αναζήτησης είναι μια κατεξοχήν μη τυπική περίπτωση της κατηγορίας διαίρει και βασίλευε. Η τεχνική του διαίρει και βασίλευε διαιρεί ένα πρόβλημα σε μικρότερα υποπροβλήματα που το καθένα απαιτεί λύση. Αυτό δε συνάδει με τη δυαδική αναζήτηση όπου μόνο ένα από τα δυο προκύπτοντα υποπροβλήματα απαιτεί λύση. Αρα ο αλγόριθμος της δυαδικής αναζήτησης μπορεί να θεωρηθεί ως εκφυλισμένη περίπτωση της τεχνικής διαίρει και βασίλευε. 4