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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Θέματα Προγραμματισμού Η/Υ

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

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

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

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

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

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

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

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

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

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

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

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

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

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

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

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

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

5.1. Προσδοκώμενα αποτελέσματα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

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

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

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

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

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

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

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2-1

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

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

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

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

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

Transcript:

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

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. Παράδειγμα : Υπολογισμός Χρόνου Εκτέλεσης Υποθέστε ότι ένα πρόβλημα επιλύνεται με τον πιο κάτω κώδικα: Ανάλυση k+i; for(i0; i<; i++) it i,k0; for (i0; i<; i++) k+i; H βασική πράξη η οποία χρειάζεται Ο() χρόνο Ο αλγόριθμος εκτελεί την βασική πράξη φορές i 0 ή i oo αλγόριθμος έχει πολυπλοκότητατης τάξης O() oστην βέλτιστη περίπτωση χρειάζεται Ω() O() & Ω() Θ()

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

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

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 5 Παράδειγμα 3: Υπολογισμός Χρόνου Εκτέλεσης Υποθέστε ότι ένα πρόβλημα επιλύνεται με τον πιο κάτω κώδικα: Ανάλυση it i, j, sum0; for (i0; i<; i++) Εσωτερικός Βρόγχος: for (j0; j< i*i; j++) sum++; IL j 0 Εξωτερικός Βρόγχος Εσωτερικός Βρόγχος Παρατηρούμε ότι ο χρόνος εκτέλεσης του εσωτερικού βρόχου εξαρτάται από την τιμή i, οποία καθορίζεται από τον εξωτερικό βρόχο. i i

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 6 Παράδειγμα 3: Υπολογισμ.Χρόνου Εκτέλεσης (συν.) Ο πιο κάτω πίνακας δείχνει το πόσες φορές εκτελείται ο εσωτερικός βρόγχος σαν συνάρτηση του i: i 0 3 - IL i 0 4 9 (-) Εξωτερικός Βρόγχος: 0++4+9+ +(-) Σύνολο:Ο χρόνος εκτέλεσης του προγράμματος είναι ίσοςμε το άθροισμα του χρόνου εκτέλεσης κάθε επανάληψης του εσωτερικού βρόχου: i i ( + )(+ ) ( 3 + + + ) Θ( 3 ) 6 6

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

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8 Παράδειγμα 5: Υπολογισμός Χρόνου Εκτέλεσης Υποθέστε ότι ένα πρόβλημα επιλύνεται με τον πιο κάτω κώδικα: Ανάλυση it i, j, sum0; Εσωτερικός Βρόγχος: for (i; i<; i*i) for (j0; j< ; j++) sum++; IL Εξωτερικός Βρόγχος Εσωτερικός Βρόγχος Εξωτερικός Βρόγχος: Κάθε φορά, το iπολλαπλασιάζεται επί. Παράδειγμα: για 0το iθα είναι,, 4, 8, 6> break j Πόσες φορές εκτελείται;;;

Παράδειγμα 5: Υπολογισμ.Χρόνου Εκτέλεσης (συν.) Ας υποθέσουμε ότι το είναι μία δύναμη του κ Ο πιο κάτω πίνακας δείχνει το πόσες φορές εκτελείται ο εσωτερικός βρόγχος σαν συνάρτηση του k: k 0 3 4 k k 4 8 6 k τιμές I -,,,4,,4,8 επαναλ. 0 3 4 k Συμπέρασμα:ik, άρα για i θα χρειαστούν iεπαναλ. Ερώτηση:πως μπορούμε να βρούμε το την τιμή iέχοντας σαν δεδομένο το i ; Απάντηση: με χρήση λογάριθμου (log): log i i ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 9

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

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. Παράδειγμα 6: Υπολογισμός Χρόνου Εκτέλεσης Υποθέστε ότι ένα πρόβλημα επιλύνεται με τον πιο κάτω κώδικα: Ανάλυση περιττός Εσωτερικός Βρόγχος(else): άρτιος Εσωτερικός Βρόγχος(if): Εξωτερικός Βρόγχος: Σύνολο: it i, j, sum0; for (i0; i<; i++) Θ( ) if( (%)0 ) for (j0; j<; j++) sum++; else sum--; OL Εξωτερικός Βρόγχος Εσωτερικός Βρόγχος (if) Εσωτερικός Βρόγχος (else) IL ( if ) j max( IL if, IL else ) IL if i IL ( else ) i i

Παράδειγμα 7: Χρόνος Εκτέλεσης BubbleSort ΗBubbleSortταξινομεί κάποιο πίνακα με συνεχή εναλλαγή των στοιχείων του αν δεν είναι στη σωστή σειρά. Παράδειγμα: itx {3,, 4,, 5; swap o swap Πέρασμα 3 4 5 3 4 5 3 4 5 3 4 5 Πέρασμα 3 4 5 3 4 5 3 4 5 3 4 5 Πέρασμα 3 3 4 5 3 4 5 Πέρασμα 4 3 4 5

Παράδειγμα 7: Χρόνος Εκτέλεσης BubbleSort(συν.) void bubblesort( it X[], it ){ it i, j, temp; bool swapped; for (i0;i<-;i++) { swapped false; for (j0;j<-i-;j++) { if (X[j] > X[j+]) { temp X[j]; X[j] X[j+]; X[j+] temp; swapped true; Εσωτερικός Βρόγχος if (swappedfalse) retur; Εξωτερικός Βρόγχος

Παράδειγμα 7: Χρόνος Εκτέλεσης BubbleSort(συν.) void bubblesort( it X[], it ){ for (i0;i<-;i++) { for (j0;j<-i-;j++) { Εσωτερικός Βρόγχος Ανάλυση Εσωτερικός Βρόγχος: Εξωτερικός Βρόγχος: Σύνολο: Θ( ) Εξωτερικός Βρόγχος IL OL i ( ) j 0 ( ) IL i i 0 i 0 i i 0 ( )( ) i 0 i

Γραμμική 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 -; 3 4 5 Xείριστη περίπτωση: Ο() (ο βρόχος εκτελείται φορές) ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 5

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

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 7 Δυαδική Διερεύνηση Δυαδική Διερεύνηση: βρίσκουμε το μέσο του πίνακα και αποφασίζουμε αν το k ανήκει στο δεξιό ή αριστερό μισό. Επαναλαμβάνουμε την ίδια διαδικασία στο μισό που μας ενδιαφέρει: it biary (it X[], it, it key) { it low0; it high - ; it mid; while( low > high) { mid (low + high) / ; if( key < X[mid]) high mid-; else if (key > X[mid]) low mid+; else { retur mid; break; retur -;

Αναδρομική Δυαδική Διερεύνηση ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8 it rbiary_aux (it X[], it low, it high, it key) { it mid; if( low < high) { mid (low + high) / ; if( key X[mid]) retur mid; else if( key < X[mid]) retur rbiary_aux( X, low, mid-, key); else retur rbiary_aux( X, mid+, high, key); retur -; it rbiary (it X[], it, it key) { it low 0; it high -; retur rbiary_aux( X, low, high, key);

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

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

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. Ανάλυση Αναδρομικής Δυαδικής Διερεύνησης Ας ξαναδούμε την αναδρομική έκδοση της δυαδικής αναζήτησης Από ότι βλέπουμε σε κάθε εκτέλεση το biary_searchμοιράζει μια ακολουθία στοιχείων σε / στοιχεία (εάν είναι ζυγός). Επομένως το πρόβλημα μεγέθους έγινε τώρα /. Σε κάθε βήμα χρειαζόμαστε και δυο συγκρίσεις (τα δυο if statemets) O χρόνος εκτέλεσης της biary_search εκφράζεται με την αναδρομική συνάρτηση: f() f(/) + // αναδρομικό βήμα f() // συνθήκη τερματισμού

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

ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3 Ανάλυση Αναδρομικής Δυαδικής Διερεύνησης Στην δυαδική διερεύνηση η ακολουθία μοιράζεται ως εξής:, /, /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 /, 4 /4, 4 4,, 3 Στοιχε α ί :log, 4 /3, 4 /9, 4 4, 3, 3 Στοιχε α ί :log 3 Όσο μεγαλύτερη η βάση του λογάριθμου τόσο πιο λίγες εκτελέσεις του αλγόριθμου έχουμε! Ωστόσο, αυξάνονται οι συγκρίσειςσε κάθε εκτέλεση! Π.χ.,δυαδική διερεύνηση: lg εκτελέσεις, έλεγχο σε κάθε βήμα.

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

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

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

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