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

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

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

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

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

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

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

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

ηδάζθσλ: εµήηξεο Εετλαιηπνύξ

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

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

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

Εργαστήριο 2: Πίνακες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Διάλεξη 17: Επανάληψη για την ενδιάμεση εξέταση. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

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

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

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

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

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

Διάλεξη 17: Επανάληψη για την ενδιάμεση εξέταση. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(CLR, κεφάλαιο 32) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier

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

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

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

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

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

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

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

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

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

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

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

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

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

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

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Διδακτικά προβλήματα σχετικά με την έννοια της επανάληψης

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Εργαστηριακή Άσκηση 1

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

Transcript:

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

Υπολογισμός Χρόνου Εκτέλεσης με φωλιασμένους βρόχους και συνθήκες if Σε ένα βρόχο (for loop) o συνολικός χρόνος που απαιτείται είναι : Βασική Πράξη x Αριθμό Επαναλήψεων Φωλιασμένοι Βρόχοι: η ανάλυση γίνεται από τα μέσα προς τα έξω for (i0; i<; i++) for (j0; j<; j++) k++; Φωλιασμένος Βρόχος Συνεχόμενες Εντολές: Ο χρόνος εκτέλεσης της εντολής S και μετά S παίρνει χρόνο ίσο του αθροίσματος των χρόνων εκτέλεσης των S + S. Συνθήκες if: Ο χρόνος εκτέλεσης της εντολής if b the S else S παίρνει χρόνο ίσο με max(t(b)+t(s), T(b)+T(S )) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -3

Παράδειγμα : Υπολογισμός Χρόνου Εκτέλεσης. it i, j, sum0; for (i0; i<; i++) for (j0; j<; j++) sum++; Ανάλυση Εσωτερικός βρόχος: Εξωτερικός βρόχος: j i Συνολικά: * ( ) i j ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -4

Παράδειγμα 3: Υπολογισμός Χρόνου Εκτέλεσης 3. it i, j, sum0; for (i0; i<; i++) for (j0; j<i*i; j++) sum++; Ανάλυση B i Εσωτερικός βρόχος: Εξωτερικός βρόχος: Εκτελείται φορές Συνολικά: i i ( 6 ( 3 + i B + )( 6 + + ) ji δηλ., + ) 6 6 ( 3 + i i 3 6 i 0 3 ( + )( 6 + + )( Για i, δείχνει πόσες φορές εκτελείται το j. - + + ) 6 j 0 4 9 (-) ( Συνολικά; ) 3 i ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -5 ) i

Παράδειγμα 4: Υπολογισμός Χρόνου Εκτέλεσης it i, j, k, sum0; for (i0; i<; i++) for (j0; j<; j++) for (k0; k<; k++) sum++ Ανάλυση Βρόχος (Β): Βρόχος (B): Εξωτερικός βρόχος: k j B * j Συνολικά: i B 3 * i ε Θ ( 3 ) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -6

Παράδειγμα 5: Υπολογισμός Χρόνου Εκτέλεσης. it i, j, sum0; for (i; i<; i *i) for (j0; j<; j++) sum++ Ανάλυση Εσωτερικός βρόχος: j Συνολικά log βήματα Για i, δείχνει πόσες φορές εκτελείται το j { i 4 8. j Εξωτερικός βρόχος:,, 4, 8,, i Συνολικά: i i log log i log Επομένως το i εκτελείται τουλαχιστο log φορές (Θα υποθέτουμε ότι είναι δύναμη του ) Θ( *log ) log i ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -7

Παράδειγμα 6: Υπολογισμός Χρόνου Εκτέλεσης (Με συνθήκη if) it i, j, sum0; for (i0; i<; i++) if (( % ) 0) // άρτιος for (j0; j<; j++) sum++ else // περιττός sum--; Ανάλυση (Βασική πράξη πρόσθεση/αφαίρεση) α) N περιττός: i β) N άρτιος: i ( ) ( ) Παρατηρούμε ότι δεν καταλήγουμε στο MAX(odd, eve), εφόσον πάντα θα εκτελείται μόνο ένα από τα δυο σκέλη της συνθήκης. Εάν η συνθήκη ήταν ((i % ) 0)τότε θα μπορούσαμε να πούμε ότι έχουμε O() χρόνο. ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -8

Παράδειγμα 7: Χρόνος Εκτέλεσης Bubblesort void bubblesort( it X[], it ){ it i,j,temp; it swapped 0; for (i0;i<-;i++) { swapped 0; for (j0;j<-i-;j++) { if (X[j]>X[j+]) { temp X[j]; X[j] X[j+]; X[j+] temp; swapped ; if (swapped0) retur; Ανάλυση Εσωτερικός βρόχος: Συνολικά: i i( ) i( i ) i ( ) i( ) i( ) i ( )( ) i i( ) ( ) ( )( ) ( ) ( )( ) ( )( ) ( )( ) ( ) i i ( +) -9

Γραμμική Vs Δυαδική Διερεύνηση (Ανάλυση) Δεδομένα Εισόδου: Πίνακας Χ με στοιχεία, ταξινομημένος από το μικρότερο στο μεγαλύτερο, και ακέραιος k. Στόχος: Να εξακριβώσουμε αν το k είναι στοιχείο του Χ. Γραμμική Διερεύνηση: εξερευνούμε τον πίνακα από τα αριστερά στα δεξιά. it liear( it X[], it, it k){ it i0; while ( i < ) { if (X[i] k) retur i; if (X[i] > k) retur -; i++; retur -; Xείριστη περίπτωση: Ο() (ο βρόχος εκτελείται φορές) X 8 5 7 8 30 33 ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -0

Αναδρομική Γραμμική Διερεύνηση it rliear( it X[], it, it k, it pos){ if (pos ) retur -; // ot foud if (X[pos] k) retur pos; // foud else if (X[pos] > k) retur -; // larger foud - skip rest retur rliear(x,, k, pos+); X 8 5 7 8 30 33 Xείριστη περίπτωση: Ο() (εκτελούνται αναδρομικές κλήσεις της rliear) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -

Δυαδική Διερεύνηση Δυαδική Διερεύνηση: βρίσκουμε το μέσο του πίνακα και αποφασίζουμε αν το k ανήκει στο δεξιό ή το αριστερό μισό. Επαναλαμβάνουμε την ίδια διαδικασία στο "μισό" που μας ενδιαφέρει. it biary( it X[],it,it k){ it low 0, high -; it mid; while ( low < high ){ mid low+(high-low)/; if (X[mid] k) retur mid; else if (X[mid] < k) low mid + ; else if (X[mid] > k) retur -; high mid-; X K5? 8 5 7 8 30 33 0 3 4 5 6 low mid high mid mid3 Ίδιο με (low+high)/. Ωστόσο η έκδοση αυτή μπορεί να υποφέρει από υπερχείλιση ακεραίου. ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -

Αναδρομική Δυαδική Διερεύνηση it BS_aux(it list[],it low,it high,it k) { it mid; K5? if (low<high) { midlow+(high-low)/; if (list[mid]k) X 8 5 8 retur mid; low mid else if (k<list[mid]) mid3 mid retur BS_aux(list,low,mid-,k); else retur BS_aux(list,mid+,high,k); retur -; BiarySearch(it A[], it, it k) { it low 0, high -; retur BS_aux(A, low, high, k); Τα όρια δίδονται σαν παράμετρο 7 30 33 0 3 4 5 6 high ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -3

Δυαδική Διερεύνηση Χρόνος Εκτέλεσης Η βασική πράξη (σύγκριση) εκτελείται Ο(log ) φορές δηλαδή: Εκτέλεση -> Μας απομένει* / του πίνακα, Εκτέλεση -> Μας απομένει /4 του πίνακα, Εκτέλεση 3 -> Μας απομένει /8 του πίνακα, Εκτέλεση Χ -> Μας απομένει στοιχείο του πίνακα, Στην εκτέλεση Χ είτε βρήκαμε το στοιχείο είτε όχι δηλ.έχουμε την ακολουθία, /, /4, /8,, 4,,, <> 0,,, 3,, x Το x εκφράζει πόσες φορές εκτελούμε το while loop x x log log x log Biary Search ε Ο(log ) * Χωρίς βλάβη της γενικότητας, θεωρήστε ότι είναι ζυγός ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -4

Πολυπλοκότητα Αναδρομικών Διαδικασιών Μέχρι τώρα συζητήσαμε τεχνικές για την ανάλυση επαναληπτικών αλγορίθμων (με while, for, κτλ.) Ωστόσο, πολλοί αλγόριθμοι ορίζονται αναδρομικά (π.χ. biary search, Fiboacci, etc) Θέλουμε κάποια μεθοδολογία για να αναλύουμε την πολυπλοκότητα τέτοιων αναδρομικών εξισώσεων. π.χ. Τ() T(/) +000 Τ()*T(-), >0 κτλ. Σημειώστε ότι υπάρχουν διάφοροι τύποι αναδρομικών εξισώσεων. Πολλοί τύποι χρειάζονται ειδικά εργαλεία τα οποία δεν θα δούμε σε αυτό το μάθημα. Ένα τύπο που θα μελετήσουμε θα είναι οι Αναδρομικές Εξισώσεις τύπου «Διαίρει και Βασίλευε» Θα τις επιλύσουμε με την Μέθοδο της Αντικατάστασης και θα τις επαληθεύουμε με το Θεώρημα Master -5

Ανάλυση Αναδρομικής Δυαδικής Διερεύνησης Ας ξαναδούμε την αναδρομική έκδοση της δυαδικής αναζήτησης it BS_aux(it list[],it low,it high,it k) { it mid; if (low<high) { midlow+(high-low)/; if (list[mid]a) retur mid; else if (k<list[mid]) retur BS_aux(list,low,mid-,k); else retur BS_aux(list,mid+,high,k); retur -; X K5? 8 5 7 8 30 33 0 3 4 5 6 low mid high mid mid3 Από ότι βλέπουμε σε κάθε εκτέλεση το biary_search μοιράζει μια ακολουθία στοιχείων σε / στοιχεία (εάν είναι ζυγός). Επομένως το πρόβλημα μεγέθους έγινε τώρα /. Σε κάθε βήμα χρειαζόμαστε και δυο συγκρίσεις (τα δυο if statemets) O χρόνος εκτέλεσης της biary_search εκφράζεται με την αναδρομική συνάρτηση: f() f(/) + // αναδρομικό βήμα f() // συνθήκη τερματισμού -6

Ανάλυση Αναδρομικής Δυαδικής Διερεύνησης Μέθοδος της Αντικατάστασης Μέθοδος της Αντικατάστασης Χρησιμοποιούμε το βήμα της αναδρομής επαναληπτικά, μέχρι να εκφράσουμε το Τ() ως συνάρτηση της βασικής περίπτωσης, δυνάμεις του και σταθερές τιμές. Εφαρμογή Έχουμε την αναδρομική εξίσωση της δυαδικής διερεύνησης (Τύπου Διαίρει και Βασίλευε) Τ() T(/) +, T() για κάθε Τότε, αντικαθιστώντας το Τ(/) με την τιμή του παίρνουμε Τ() T(/) + T(/4) + + T(/8) + + + (Μπορούμε τώρα να μαντέψουμε ότι ) +... + + + log φορές Επομένως η δυαδική αναζήτηση εκτελείται log βήματα Biary Search ε Ο(log ) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -7

Ανάλυση Αναδρομικής Δυαδικής Διερεύνησης Στην δυαδική διερεύνηση η ακολουθία μοιράζεται ως εξής:, /, /4,,,. Προσοχή: Δεν σημαίνει ότι έχουμε +/+ /4+ + + - εκτελέσεις. Έχουμε μονάχα log εκτελέσεις Ανάλογα με το σε πόσα κομμάτια «διαιρείται» το πρόβλημα κάθε φορά, αλλάζει και η βάση του λογάριθμου. log log 3 0 3 4 5 6 7 3 8 9 0 9 5 0 04 048 30,073,74,84 0.5849650.398095.5849650.8073549 3 3.699500 3.398095 9 0 30 0 0.63099754.6859507.4649735.63099754.7743749.897896.09590374 5.67836778 6.30997536 6.940789 8.97896 Αριθμός πράξεων, /, /4,,, ί :log, /3, /9,, 3, ί :log3 Όσο μεγαλύτερη η βάση του λογάριθμου τόσο πιο λίγες εκτελέσεις του αλγόριθμου έχουμε! Ωστόσο, αυξάνονται οι συγκρίσεις σε κάθε εκτέλεση! Πχ δυαδική διερεύνηση: lg εκτελέσεις, έλεγχο σε κάθε βήμα. -8

Ανάλυση Αναδρομικής Δυαδικής Διερεύνησης Master Theorem To Master Theorem μας επιτρέπει να βρίσκουμε ή να επαληθεύουμε την χρονική πολυπλοκότητα αναδρομικών εξισώσεων τύπου διαίρει και βασίλευε. Διαίρει και Βασίλευε: πχ. Τ() T(/) + αλλά όχι Τ()*T(-) Αυτό το θεώρημα δεν χρειάζεται να τον απομνημονεύσετε αλλά μπορείτε να τον χρησιμοποιήσετε για την επαλήθευση ασκήσεων. ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -9

Ανάλυση Αναδρομικής Δυαδικής Διερεύνησης Master Theorem - Εφαρμογή Αναδρομική Δυαδική Αναζήτηση Τ() T(/) + για κάθε T() a, b, c, d0 (δες τύπο Master) a και b d 0 T() is O( d log) T() is O( 0 log) T() is O(log) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -0

Παράδειγμα - Μέθοδος της αντικατάστασης Έχουμε την αναδρομική εξίσωση Τ() 4T(/) +, T() για κάθε Τότε, αντικαθιστώντας το Τ(/) με την τιμή του παίρνουμε Τ() 4T(/) + // Εκτέλεση 4(4T(/4) + /) + // Εκτέλεση 4²Τ(/4) + + // Πράξεις 4³Τ(/8) + ² + + // Εκτέλεση 3... Μπορούμε τώρα να μαντέψουμε ότι 4 k Τ() + k- + +² + + // klog log 4 + * + ( ) O( + *( log i log log i 0 ) ) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. - // i 0 i +

Παράδειγμα 3 - Μέθοδος της αντικατάστασης Άσκηση Να λύσετε την πιο κάτω αναδρομική εξίσωση με την μέθοδο της αντικατάστασης (προσοχή δεν είναι τύπου διαίρει & βασίλευε) Τ(0) Τ()*T(-), >0 Λύση Τ() **T(-) * *(-)*T(-) 3* *(-)*(-)*T(-3).(Μπορούμε τώρα να μαντέψουμε ότι ) **(-)*(-)*...***T(0) *! ε Ο(!) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -