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

Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι. 5.1 Αλγόριθµος: Ορισµός. Αλγόριθµοι : επίπεδα αφαίρεσης

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

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

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

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

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

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

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

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

Εισαγωγή στην πληροφορική

Εισαγωγή στην επιστήμη των Υπολογιστών & Τηλεπικοινωνιών

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

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

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

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

Προγραµµατισµός Η/Υ. Μέρος2

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

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

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

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

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

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

Τεχνικές Αναπαράστασης αλγορίθµων Ψευδοκώδικας Διάγραµµα Ροής Αλγοριθµικές δοµές (Ακολουθία Επιλογή Επανάληψη)

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η.

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

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

ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

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

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

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

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

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

Επίλυση Προβλημάτων 1

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

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

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

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

Προτεινόμενος τρόπος διδασκαλίας του μαθήματος με ενδεικτικό χρονοπρογραμματισμό. Α/Α Ενότητες Περιγραφή Ώρες 1 Εισαγωγικό μάθημα 1

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα

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

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

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

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

Ορισμός Κάθε ζήτημα που τίθεται προς επίλυση, κάθε δύσκολη κατάσταση που μας απασχολεί και πρέπει να αντιμετωπιστεί.

Διορθώσεις σελ

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

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

for for for for( . */

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

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

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Επιµέλεια Θοδωρής Πιερράτος

Αλγόριθμοι Γραφημάτων

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

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

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

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

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

Εισαγωγή στην Πληροφορική

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

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

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

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

ΠαράδειγµαΠρογραµµατισµού

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

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

Transcript:

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι 5.1 Η έννοια του αλγορίθµου 5.2 Αναπαράσταση αλγορίθµων 5.3 Επινόηση αλγορίθµων 5.4 Δοµές επανάληψης 5.5 Αναδροµικές δοµές 1

Αλγόριθµος: Ορισµός Ένας αλγόριθµος είναι ένα διατεταγµένο σύνολο, πεπερασµένων, σαφώς ορισµένων, εκτελέσιµων βηµάτων, το οποίο ορίζει µία τερµατιζόµενη διαδικασία. 2

Αλγόριθµοι, προγράµµατα και γλώσσες είσοδος Αλγόριθµος έξοδος - αλγόριθµοι τερµατίζουν ή δεν τερµατίζουν - πως να περιγράψουµε έναν αλγόριθµο; - φυσική γλώσσα (ελληνικά, αγγλικά) είναι ασαφής «µαζεύετε τριαντάφυλλα όσο σας επιτρέπεται» - γλώσσα προγραµµατισµού: - εύκολη και περιεκτική έκφραση αλγορίθµων - άµεσα κατανοητή από υπολογιστές και ανθρώπους - περιορισµός λαθών 3

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

Βήµατα επίλυσης προβλήµατος 1. Κατανόηση του προβλήµατος. 2. Σχηµατισµός (στο νου µας) µιας ιδέας για το πώς µπορεί να λυθεί το πρόβληµα από µία αλγοριθµική διαδικασία. 3. Συγκρότηση του αλγορίθµου και αναπαράσταση του ως πρόγραµµα. 4. Αξιολόγηση του προγράµµατος όσον αφορά την ακρίβεια του και τη δυνατότητα να χρησιµοποιηθεί ως εργαλείο για την επίλυση άλλων προβληµάτων. 5

Τεχνικές για το πρώτο βήµα Επίλυση του προβλήµατος προς τα πίσω. Επίλυση ενός πιο εύκολου, σχετικού προβλήµατος: «Χαλαρώνει» κάποιους από τους ασφυκτικούς περιορισµούς του προβλήµατος. Επιλύει πρώτα κάποια επιµέρους τµήµατα του προβλήµατος - συνθετική µεθοδολογία. Η βηµατική εκλέπτυνση είναι µία αναλυτική µεθοδολογία. Δηµοφιλής τεχνική επειδή παράγει τµηµατικά προγράµµατα. 6

Αλγόριθµος: (1) βράσε νερό Βηµατική εκλέπτυνση φτιάξε στιγµιαίο καφέ (1.1) γέµισε χύτρα (1.1.1) βάλε χύτρα κάτω από βρύση (1.1.2) άνοιξε βρύση (1.1.3) περίµενε να γεµίσει η χύτρα (1.2) άναψε το µάτι (1.1.4) κλείσε βρύση (1.3) περίµενε να βράσει (1.4) σβήσε το µάτι (1.3.1) περίµενε να σφυρίξει η χύτρα (2) βάλε καφέ στο φλιτζάνι (3) πρόσθεσε νερό στο φλιτζάνι (2.1) άνοιξε το δοχείο του καφέ (2.2) πάρε ένα κουταλάκι καφέ (2.3) άδειασε το κουταλάκι στο φλιτζάνι (2.4) κλείσε το δοχείο του καφέ (3.1) βάλε νερό από την χύτρα στο φλιτζάνι µέχρι να γεµίσει (2.1.1) πάρε το δοχείο του καφέ από το ντουλάπι (2.1.2) βγάλε το καπάκι (2.4.1) βάλε το καπάκι στο δοχείο (2.4.2) βαλε το δοχείο στο ντουλάπι 7

Ακολουθία βηµάτων 1. βάλε την χύτρα κάτω από βρύση 2. άνοιξε την βρύση εάν δεν υπάρχει νερό; 3. περίµενε να γεµίσει η χύτρα 4. κλείσε την βρύση 5. άναψε το µάτι 6. περίµενε να σφυρίξει η χύτρα 7. σβήσε το µάτι 8. πάρε το δοχείο του καφέ από το ντουλάπι 9. βγάλε το καπάκι 10. πάρε ένα κουταλάκι καφέ 11. άδειασε το κουταλάκι στο φλιτζάνι 12. βάλε το καπάκι στο δοχείο 13. βαλε το δοχείο στο ντουλάπι 14. βάλε νερό από την χύτρα στο φλιτζάνι µέχρι να γεµίσει εάν δεν υπάρχει καφές, να δοκιµάσει το επόµενο δοχείο καφέ; εάν υπάρχουν 1000 δοχεία, πολλά από αυτά άδεια, τι να κάνει; 8

Διαγράµµατα ροής Διαγράµµατα ροής: γραφικός τρόπος περιγραφής δοµής αλγορίθµων Ορίζουµε τα βασικά συστατικά διαγραµµάτων ροής - - ακολουθία - - δοκιµή (διάφοροι τύποι) - - επανάληψη (διάφοροι τύποι) βάλε την χύτρα κάτω από βρύση άνοιξε την βρύση περίµενε να γεµίσει η χύτρα κλείσε την βρύση άναψε το µάτι περίµενε να σφυρίξει η χύτρα σβήσε το µάτι πάρε το δοχείο του καφέ από το ντουλάπι ακολουθία δοκιµή (test) συνθήκη = false συνθήκη = false συνθήκη = true 9

Σύνθεση βασικών διαγραµµάτων Αλγόριθµος: σύνθεση βασικών διαγραµµάτων ακολουθία δοκιµή (test) false true ακολουθία ακολουθία 10

Η δοµή ελέγχου επιλογής δοκιµή συνθήκης false if condition then P1 true δοκιµή συνθήκης false P1 P2 true P1 if condition then P1 else P2 if x>3 then z:=1 else y:=8 11

Παράδειγµα φωλιασµένων επιλογών δοκιµή συνθήκης false δοκιµή συνθήκης false P2 true true δοκιµή συνθήκης false P1 P1 P2 true P3 P4 if condition then P1 else if condition then P3 else P4 P2 12

Η δοµή ελέγχου επανάληψης Η δοµή βρόχου όσο (while) 13

Άλλο παράδειγµα δοµής επανάληψης Η δοµή βρόχου επανέλαβε (repeat) 14

Αρχέτυπα (εντολές) ψευδοκώδικα Ανάθεση όνοµα ß έκφραση Επιλογή συνθήκης αν (συνθήκη) τότε (ενέργεια) Επαναλαµβανόµενη εκτέλεση όσο (συνθήκη) κάνε (ενέργεια) Διαδικασία διαδικασία όνοµα (συγκεκριµένο όνοµα της µονάδας) 15

Η διαδικασία Χαιρετισµός σε ψευδοκώδικα διαδικασία Χαιρετισµός Μετρητής ß 3; όσο (Μετρητής >0) κάνε (τύπωσε το µήνυµα Γεια χαρά και Μετρητήςß Μετρητής-1) 16

Αλφαβητική ταξινόµηση της λίστας Fred, Alex, Diana, Byron, Carol Ορίζουµε βήµα = σύγκριση Αριθµός βηµάτων χειρότερης περίτπωσης 1 + 2 + 3 + + (n 1) = 1 2 (n 2 n) Βασικές έννοιες: πρόβληµα, µέγεθος προβλήµατος, Πολυπλοκότητα αλγορίθµου 17

Εφαρµογή της ταξινόµησης παρεµβολής σε ένα σενάριο χειρότερης περίπτωσης 18

Ο αλγόριθµος ταξινόµησης παρεµβολής σε ψευδοκώδικα διαδικασία Ταξινόµηση (Λίστα) Νß 2 όσο (η τιµή του Ν δεν υπερβαίνει το µήκος της Λίστας) κάνε (επίλεξε την Ν-οστή καταχώρηση της Λίστας ως οριακή καταχώρηση. Μετακίνησε την οριακή καταχώριση σε µία προσωρινή θέση, αφήνοντας ένα κενό στη Λίστα. όσο (υπάρχει κάποιο όνοµα επάνω από το κενό, και το όνοµα αυτό είναι µεγαλύτερο από την οριακή καταχώριση) κάνε (µετακίνησε το όνοµα που βρίσκεται επάνω από το κενό προς τα κάτω, αφήνοντας ένα κενό από πάνω του) Τοποθέτησε την οριακή καταχώριση στο κενό της Λίστας. Ν ß Ν + 1 ) 19

Αναδροµή Αναδροµικός αλγόριθµος: καλεί τον εαυτό του Μεθοδολογία: εκφράζουµε την διαδικασία µε βάση ιδίου τύπου διαδικασίες που λειτουργούν σε απλούστερα προβλήµατα, γνωρίζουµε την απάντηση για το πλέον απλό πρόβληµα factorial(n) = 1*2*3*... (N-1)*N = N*factorial(N-1) module factorial(n) if N=1 then answer = 1 else answer = N * factorial(n-1) 3 2 1 3 * 2 * 1 20

Παράδειγµα: οι πύργοι του Hanoi Πρόβληµα: να µεταφέρουµε όλους τους δίσκους σε έναν άλλο πάσσαλο κουνώντας ένα δίσκο τη φορά, χωρίς ποτέ ένας δίσκος να τοποθετηθεί πάνω από µικρότερους δίσκους. 64 δίσκοι a b c Ψάχνουµε για αναδροµική σχέση: Πρόβληµα Α: µετάφερε 64 δίσκους από το a στο b (χωρίς να παραβείς τους περιορισµούς) Πρόβληµα Β: µετάφερε 63 δίσκους από το a στο c, µετάφερε τον τελευταίο δίσκο από το a στο b, µετάφερε 63 δίσκους από το c στο b. 21

Παράδειγµα: οι πύργοι του Hanoi (2) 64 δίσκοι a b c πηγή προορισµός βοηθητικός µεταφορά_πύργου (Ν, πηγή, προορισµός, βοηθητικός) module µεταφορά_πύργου (Ν, a, b, c) if N=1 then µετακίνησε 1 δίσκο από a σε b else { µεταφορά_πύργου (Ν-1, a, c, b); µετακίνησε 1 δίσκο από a σε b; µεταφορά_πύργου (Ν-1, c, b, a) } 22

Παράδειγµα: οι πύργοι του Hanoi (3) module µεταφορά_πύργου (Ν, a, b, c) if N=1 then µετακίνησε τον δίσκο από πηγή σε προορισµό else { µεταφορά_πύργου (Ν-1, a, c, b); µετακίνησε 1 δίσκο από πηγή σε προορισµό; µεταφορά_πύργου (Ν-1, c, b, a) } Δ3 Δ2 Δ1 µ_π (3, a, b, c) µ_π (2, a, c, b) Δ2,a,c Δ1,a,b µ_π (2, c, b, a) Δ2,c,b µ_π (1, a, b, c) µ_π (1, b, c, a) µ_π (1, c, a, b) µ_π (1, a, b, c) Δ1,a,b Δ1,b,c Δ1,c,a Δ1,a,b 23

Ο αλγόριθµος της δυαδικής αναζήτησης σε ψευδοκώδικα Διαδικασία Αναζήτηση (Λίστα, ΤιµήΣτόχος) αν ( Η Λίστα είναι άδεια) τότε (Ανάφερε ότι η αναζήτηση απέτυχε) αλλιώς [Επίλεξε τη µεσαία καταχώριση της Λίστας ως την ΚαταχώρισηΠροςΈλεγχο. Εκτέλεσε το παρακάτω µπλοκ εντολών που αντιστοιχεί στην κατάλληλη περίπτωση. περίπτωση 1: ΤιµήΣτόχος=ΚαταχώρισηΠροςΈλεγχο (Ανέφερε ότι η αναζήτηση είναι επιτυχής.) περίπτωση 2: ΤιµήΣτόχος<ΚαταχώρισηΠροςΈλεγχο (Εφάρµοσε τη διαδικασία Αναζήτηση για να δεις αν η ΤιµήΣτόχος βρίσκεται στο τµήµα της λίστα που προηγείται της ΚαταχώρισηΠροςΈλεγχο, και ανέφερε το αποτέλεσµα αυτής της αναζήτησης.) περίπτωση3: ΤιµήΣτόχος> ΚαταχώρισηΠροςΈλεγχο (Εφάρµοσε τη διαδικασία Αναζήτηση για να δεις αν η ΤιµήΣτόχος βρίσκεται στο τµήµα της λίστα µετά την ΚαταχώρισηΠροςΈλεγχο, και ανέφερε το αποτέλεσµα αυτής της αναζήτησης.) ] τέλος αν 24

Binary search low = 0; high = N-1; BinarySearch(A[0..N-1], value, low, high) { if (high < low) return -1 // not found mid = (low + high) / 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 } 25

Δυαδική αναζήτηση 26

Εφαρµογή της δυαδικής αναζήτησης για την καταχώριση Κώστας σε µία ταξινοµηµένη λίστα Αριθµός βηµάτων χειρότερης περίτπωσης Log 2 n = πόσες φορές διαιρείται το n µε το 2 2 log n = n 27

Αποδοτικότητα Λογισµικού Μετριέται ως το πλήθος των εκτελούµενων εντολών. Ο συµβολισµός µε Θ προσδιορίζει την αποδοτικότητα των αλγορίθµων Παράδειγµα η ταξινόµηση παρεµβολής αναπαριστάται µε Θ(n 2 ) Καλύτερη, χειρότερη και µέση περίπτωση. 28

Ορισµός ταχύτητας αύξησης µιας συνάρτησης f ( n) O( g( n)): f έχει την g ασυµπτωτικό άνω φράγµα όταν n, f ( n) g( n) k η f αυξάνεται το πολύ σαν την g n 2,5 O(n 3 ), 2n 2 +10n 5 O(n 2 ), 2 n + 2n 2 O(2 n ) f ( n) Θ( g( n)): f έχει την g ασυµπτωτικό άνω και κάτω φράγµα όταν n, η f αυξάνεται σαν την g, άρα είναι στην οικογένεια Θ(g) g( n) k 1 f( n) g( n) k 2n 2 +10n 5 Θ(n 2 ), 2nlogn +10n 5 Θ(n logn) 2 29

Γράφηµα της ανάλυσης χειρότερης περίπτωσης του αλγορίθµου ταξινόµησης παρεµβολής (ρυθµός αύξησης) 30

Γράφηµα της ανάλυσης χειρότερης περίπτωσης του αλγορίθµου δυαδικής αναζήτησης (ρυθµός αύξησης) 31