1o Φροντιστήριο ΗΥ240

Σχετικά έγγραφα
Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

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

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

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

Τηλ , Fax: , URL:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

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

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

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

Πολυπλοκότητα Αλγορίθµων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι

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

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

Ασυμπτωτικός Συμβολισμός

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

ΗΥ240: οµές εδοµένων. ιδάσκουσα: Παναγιώτα Φατούρου ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240: οµές εδοµένων

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

Υπολογιστική Πολυπλοκότητα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 1η: Εισαγωγή Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Ασυμπτωτικός Συμβολισμός

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

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

Δομές Δεδομένων (Data Structures)

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

Ασυμπτωτικός Συμβολισμός

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

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

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

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

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

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

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

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

Ενότητα 1 Εισαγωγή. ΗΥ240: Δοµές Δεδοµένων. Διδάσκουσα: Παναγιώτα Φατούρου

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

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

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

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

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

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

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

Ασυμπτωτικός Συμβολισμός

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

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

Διακριτά Μαθηματικά. Γιάννης Εμίρης. Τμήμα Πληροφορικής & Τηλεπικοινωνιών ΕΚΠΑ. Οκτώβριος

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

Αλγόριθμοι Αναζήτησης

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

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

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

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

Θεωρητικό Μέρος. 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); } }

Μάντεψε τον Αριθμό. Έχω Ένα Μυστικό. Το Βρήκα;

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

Ασκήσεις (2) Άσκηση 1

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

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

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

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

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

Επαγωγή και αναδρομή για άκυκλα συνεκτικά γραφήματα

ΚΕΦΑΛΑΙΟ 5: Αλγόριθμοι

Επαγωγή και αναδρομή για συνεκτικά γραφήματα

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

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

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

Μεταγλωττιστές Βελτιστοποίηση

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΤ ΟΙΚΟΝ ΕΡΓΑΣΙΑ 1 ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΔΟΣΗΣ: 22/02/10

Δυναμικός προγραμματισμός για δέντρα

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

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις

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

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

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

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

Transcript:

1o Φροντιστήριο ΗΥ240 Άσκηση 1 Αποδείξτε τη μεταβατική και τη συμμετρική ιδιότητα του Θ Μεταβατική Ιδιότητα (ορισμός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)) Για να ισχύει f(n)= Θ(h(n)) πρέπει να δείξουμε ότι f(n)= Ο(h(n)) και ότι f(n)= Ω(h(n)) Αποδεικνύω πρώτα ότι f(n)= Ο(h(n)) Αφού f(n) = Θ(g(n)) f(n)= Ο(g(n)), άρα Ǝ c 1 R + και n 1 0 τω f(n) c 1 g(n), n n 1 (1) Αφού g(n) = Θ(h(n)) g(n)= Ο(h(n)), άρα Ǝ c 2 R + και n 2 0 τω g(n) c 2 h(n), n n 2 (2) Επιλέγω n 0 = max{n 1,n 2 } και τότε (1) + (2) f(n) c 1 g(n) c 1 c 2 h(n), n n 0 Επιλέγω c= c 1 c 2 και τότε c (=c 1 c 2 ) και n 0 = max{n 1,n 2 } τω f(n) c h(n), n n 0, Άρα f(n) = O(h(n)) Αποδεικνύω τώρα ότι f(n)= Ω(h(n)) Αφού f(n) = Θ(g(n)) f(n)= Ω(g(n)), άρα Ǝ c 1 R + και n 1 0 τω f(n) c 1 g(n), n n 1 (1) Αφού g(n) = Θ(h(n)) g(n)= Ω(h(n)), άρα Ǝ c 2 R + και n 2 0 τω g(n) c 2 h(n), n n 2 (2) Επιλέγω n 0 = max{n 1,n 2 } και τότε (1) + (2) f(n) c 1 g(n) c 1 c 2 h(n), n n 0 Επιλέγω c= c 1 c 2 και τότε c (=c 1 c 2 ) και n 0 = max{n 1,n 2 } τω f(n) c h(n), n n 0, Άρα f(n) = Ω(h(n))

Συμμετρική ιδιότητα (ορισμός): f(n) = Θ(g(n)) αν και μόνο αν g(n) = Θ(f(n)) Αν f(n) = Θ(g(n)) τότε πρέπει g(n) = Θ(f(n)) ( Αν g(n) = Θ(f(n)) τότε πρέπει f(n) = Θ(g(n)), είναι συμμετρική!) Για να δείξω ότι g(n) = Θ(f(n)) πρέπει να δείξω ότι g(n) = Ο(f(n)) και g(n) = Ω(f(n)) (1) Αφού f(n) = Θ(g(n)) τότε f(n) = Ο(g(n)) Άρα c 1 R + και n 1 0 τω f(n) c 1 g(n), n n 1 g(n) 1/c 1 f(n), n n 1 Άρα αν επιλέξω c = 1/c 1 και n 0 = n 1 προκύπτει ότι g(n) c f(n), n n 0 Άρα g(n) = Ω(f(n)) (2) Αφού f(n) = Θ(g(n)) τότε f(n) = Ω(g(n)) Άρα c 2 R + και n 2 0 τω f(n) c 2 g(n), n n 2 g(n) 1/c 2 f(n), n n 2 Άρα αν επιλέξω c = 1/c 2 και n 0 = n 2 προκύπτει ότι g(n) c f(n), n n 0 Άρα g(n) = Ο(f(n)) (3) (2) + (3) g(n) = Θ(f(n)) (όπως ζητείται ) (απόδειξη του ομοίως και για το αντίστροφο) Άσκηση 2 i) Ισχύει ότι log ( = O(n 3 )? ii) Ισχύει ότι log ( = Θ( log(n) )? i) Εξετάζω εάν log ( O(n 3 ) Αναζητώ c R + και ακέραιο n 0 0 τω log ( c n 3, n n 0 n 5/2 logn 5/2 c n 3 n 25 25 log(n) c n 3 25 n 25 log(n) 25 n 25 = 25 n 3, n 4 Αν επιλέξω c = 25 και n 0 = 4 προκύπτει ότι log ( c n 3, n n 0 Άρα log ( Ο(n 3 )

ii) Εξετάζω εάν log ( O(log(n)) Αναζητώ c R + και ακέραιο n 0 0 τω log ( c log(n), n n 0 log n 1/2 c log(n) ½ log(n) c log(n) 1/2 c Αν επιλέξω c = 1/2 και n 0 = 1 προκύπτει ότι log ( c log(n), n n 0 Άρα log ( Ο(log(n)) (Ομοίως εξετάζω και το εάν log ( Ω(log(n)) ) Άσκηση 3 a) Αποδείξτε επαγωγικά ότι αν Τ(0) = 0 και Τ(n) = 2Τ(n-1) + 1, n>0 τότε Τ(n) = 2 n - 1 b) Θεωρήστε τη συνάρτηση f : N N που ορίζεται ως εξής : f(0) =1, f(1)= 2 και f(n)= 4 f(n-2) +2 n αν n>1 Αποδείξτε επαγωγικά ότι για κάθε ακέραιο n 3 ισχύει f(n) 3 n 2 n-2 a) Βάση επαγωγής: για n=1, Τ(1)= 2Τ(1-1) + 1 = 2Τ(0) +1 = 0+1=1 Τ(1) = 2 1-1 = 2-1 =1, άρα ισχύει για n=1 Επαγωγική Υπόθεση: έστω ότι ισχύει για n= k-1 Θα δείξω ότι ισχύει για n = k Επαγωγικό Βήμα: T(k) = 2T(k-1) +1 = 2(2 k-1 1) +1 = 2 k -2 +1 = 2 k -1 (απεδείχθη) b) Βάση επαγωγής: για n=3, f(3) = 4 f(1) +2 3 = 4 2 +8 =16 f(3) 3 3 2 1 =18,άρα ισχύει αφού 16<18 Επαγωγική Υπόθεση: έστω ότι ισχύει για κάθε 3 n k-1θα δείξω ότι ισχύει για n=k Επαγωγικό Βήμα: f(k)= 4 f(k-2) +2 k 4(3(k-2) 2 k-4 ) +2 k = 2 2 (3(k-2) 2 k-4 ) +2 2 k-1 2 2 (3(k-2) 2 k-4 ) +3 2 k-1 = 2 2 (3(k-2) 2 k-4 ) +3 2 2 k-2 = 3 2 k-2 (k-2) +3 2 k-2 2 = 3 2 k-2 k = 3 k 2 k-2 (απεδείχθη)

Άσκηση 4 Βρείτε την τάξη (βάσει των συμβολισμών Ο,Ω,Θ) της χρονικής πολυπλοκότητας Τ(n) του ακόλουθου αλγόριθμου } Procedure f (integer n){ for(i=1; i n; i++) for(k=n; k n+5; k++) x=x+1; Για i=1: k =n k=n+1 k=n+2 k=n+3 k=n+4 k=n+5 Για i=2 k =n k=n+1 k=n+2 k=n+3 k=n+4 k=n+5 Για i=n k =n k=n+1 k=n+2 k=n+3 k=n+4 k=n+5 Οπότε η εντολή «x=x+1» εκτελείται : Τ(n) = n * 6 = Θ(n)

Άσκηση 5 Δίνεται ο αλγόριθμος Binary Search, ο οποίος χρησιμοποιείται για την αναζήτηση ενός στοιχείου σε έναν ήδη ταξινομημένο πίνακα Integer BinarySearch(A[0 N-1], value, low, high) { if( high < low) return -1; //not found mid = low+(high-low)/2; if (A[mid] > value) return BinarySearch(A, value, low, mid-1); else if (A[mid] < value) return BinarySearch(A, value, mid+1, high); else return mid; //found } a) Παρουσιάστε σύντομη περιγραφή του τρόπου λειτουργίας του αλγορίθμου b) Ιχνηλατήστε την BinarySearch (Α,6,0,9) για την περίπτωση που Α= [0,1,2,3,4,5,6,7,8,9] Πρέπει να παρουσιαστούν όλες οι αναδρομικές κλήσεις της BinarySearch με τη σειρά που καλούνται καθώς και οι τιμές των παραμέτρων Α, value, low,high σε κάθε κλήση Πρέπει επίσης να παρουσιαστεί ο χώρος στη μνήμη που κατανέμεται για την εκτέλεση των αναδρομικών κλήσεων της BinarySearch c) Παρουσιάστε αναδρομική σχέση που να περιγράφει τη χρονική πολυπλοκότητα Τ(n) της BinarySearch για την περίπτωση που n = 2 k, για κάποιο k (δηλαδή για την περίπτωση που το n είναι μια δύναμη του 2) Τι τάξης είναι η πολυπλοκότητα της BinarySearch, αποδείξτε τον ισχυρισμό σας a) Η BinarySearch ακολουθεί την ιδέα του διαίρει και κυρίευε i)το πρόβλημα διαιρείται σε μικρότερα υποπροβλήματα, ii) το πρόβλημα επιλύεται στα υποπροβλήματα (και πάλι υποδιαιρούνται σε μικρότερα υποπροβλήματα) η διαίρεση αυτή σταματά,στη BinarySearch, όταν βρεθεί το στοιχείο που έχει δοθεί προς αναζήτηση(value), iii) οι λύσεις των υποπροβλημάτων συνδυάζονται ώστε να παραχθεί η τελική λύση Η συνάρτηση λειτουργεί ως εξής, παίρνει ορίσματα ένα ταξινομημένο πίνακα Α, μία τιμή προς αναζήτηση value,ένα κάτω όριο low και ένα πάνω όριο high τα δύο όρια αυτά υποδηλώνουν τα όρια του πίνακα όπου θα γίνει η αναζήτηση,(δηλαδή «ψάξε» στον Α[low high] το value) Μέσα στη συνάρτηση βρίσκει το μεσαίο στοιχείο του πίνακα A[low high], το mid,και ελέγχει αν το στοιχείο στη θέση Α[mid] είναι μεγαλύτερο ή μικρότερο από το valueστην περίπτωση που είναι μικρότερο κάνει αναδρομική κλήση της BinarySearch(A, value, mid+1, high) δηλαδή ψάχνει το value στο άνω μισό του πίνακα Α, ενώ αν είναι μεγαλύτερο κάνει αναδρομική κλήση της BinarySearch(A, value, low, mid-1) δηλαδή ψάχνει το value στο κάτω μισό του πίνακα Α Αν το στοιχείο δε βρεθεί στον πίνακα(δηλαδή φτάνουμε στο σημείο

όπου high < low τότε η συνάρτηση επιστρέφει -1, αν το στοιχείο βρεθεί τότε επιστρέφεται η θέση του πίνακα που βρέθηκε, δηλαδή mid b) Η ιχνηλάτηση: Sorted Array: [0,1,2,3,4,5,6,7,8,9] BinarySearch ([0,1,2,3,4,5,6,7,8,9], 6, 0,9): ----------------------------------------------------------------- if (9 < 0) --> False-Not Found value=6 low=0 high=9 mid = 0+(9-0)/2 = 4 if(4>6)--> FALSE else if(4<6)--> TRUE BinarySearch ([0,1,2,3,4,5,6,7,8,9], 6, 5, 9): ------------------------------------------------------------ if (9 < 5) --> False-Not Found value=6 low=5 high=9 mid = 5+(9-5)/2 = 7 if(7>6)--> TRUE BinarySearch ([0,1,2,3,4,5,6,7,8,9], 6, 5, 6): ------------------------------------------------ if (6 < 5) --> False-Not Found value=6 low=5 high=6 mid = 5+(6-5)/2 = 5 if(5>6)--> FALSE else if(5<6)--> TRUE BinarySearch ([0,1,2,3,4,5,6,7,8,9], 6, 6, 6): ---------------------------------------------- if (6 < 6) --> False-Not Found value=6 low=6 high=6 mid = 6+(6-6)/2 = 6 if (6>6)--> TRUE else if(6<6)--> FALSE else return 6 //Found το στοιχείο βρίσκεται στη θέση 6 του πίνακα A[0,1,2,3,4,5,6,7,8,9] -->A[6]=6

Για τη μνήμη: Α= [0,1,2,3,4,5,6,7,8,9] σε όλες τις περιπτώσεις Value : 6 Low: 0 BinarySearch(A,6,0,9) High: 9 Mid: 4 Value : 6 Low: 5 BinarySearch(A,6,5,9) High: 9 Mid: 7 Value : 6 Low: 5 BinarySearch(A,6,5,5) High: 6 Mid: 5 Value : 6 Low: 6 BinarySearch(A,6,6,6) High: 6 Mid: 6 c) T(1)=1 T(n) = T(n/2) + c 1 = T(n/2 2 ) + c 1 +c 2 = (προσθέτω τον όρο Τα(n/2) +c log n φορές) = T(n/2 3 ) + c 1 +c 2 + c 3 = = T(n/2 logn ) + c 1 +c 2 + c 3 + + c logn ( T(n/2 logn ) = T(n/n) =T(1) =1) = 1 + c 1 +c 2 + c 3 + + c logn Επιλέγω c = max{ c 1,c 2, c 3,,c logn } T(n) 1+ c(1+1++1) = [((1+1++1) logn φορές )] =1+ c * logn, άρα Τ(n) O(logn) (1)

Επιλέγω c = min{ c 1,c 2, c 3,,c logn } T(n) 1+ c(1+1++1) = [((1+1++1) logn φορές )] =1+ c * logn, άρα Τ(n) Ω(logn) (2) (1) + (2) Τ(n) Θ(logn)