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



Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λύσεις Σειράς Ασκήσεων 5

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

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

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

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

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

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

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

ΑΛΓΟΡΙΘΜΟΙ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

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

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

Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό

για τις διαφορές µεταξύ των δύο επαναληπτικών δοµών «Όσο... Επανέλαβε» και «Αρχή_επανάληψης.. Μέχρις_οτου» 1 η Εργασία

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

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

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

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. Καβακλή. Χειμερινό Εξάμηνο 2001

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Ψευδοκώδικας. November 7, 2011

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

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

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

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

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Δ ΕΣΠΕΡΙΝΩΝ

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Ερωτήσεις επανάληψης

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

for for for for( . */

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

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

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

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

ΕΝΟΤΗΤΑ 1 Κεφάλαιο 1: Εισαγωγή στην έννοια του αλγορίθμου και στον Προγραμματισμό. Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό

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

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

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

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

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

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

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

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

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

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

Προγραµµατισµός στην Basic

α. Προσπέλαση β. Αντιγραφή γ. ιαγραφή δ. Αναζήτηση ε. Εισαγωγή στ. Ταξινόµηση

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ) 2007 ΕΚΦΩΝΗΣΕΙΣ

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ. ΘΕΜΑ 1 Δίνεται το παρακάτω τμήμα δηλώσεων ενός προγράμματος σε «ΓΛΩΣΣΑ»: ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Π[10] ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ ΑΚΕΡΑΙΕΣ: i

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

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

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

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

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

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

Περι-γράφοντας... βρόχους

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

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

ΑΛΓΕΒΡΑ Α ΓΥΜΝΑΣΙΟΥ ΕΞΙΣΩΣΕΙΣ

Δεδομένα Ζητούμενο Επίλυση Κατανόηση «περιβάλλον»

Διάγραμμα Ροής. Σελίδα 1 από 10

Transcript:

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι 5.1 Αλγόριθµος: Ορισµός 5.1 Η έννοια του αλγορίθµου 5.2 Αναπαράσταση αλγορίθµων 5.3 Επινόηση αλγορίθµων 5.4 οµές επανάληψης Ένας αλγόριθµος είναι ένα διατεταγµένο σύνολο, σαφώς ορισµένων, εκτελέσιµων βηµάτων, το οποίο ορίζει µία τερµατιζόµενη διαδικασία. 5.5 Αναδροµικές δοµές 5.6 Αποδοτικότητα και ορθότητα 1 2 Αλγόριθµοι, προγράµµατα και γλώσσες Αλγόριθµοι : επίπεδα αφαίρεσης είσοδος Αλγόριθµος έξοδος αλγόριθµοι τερµατίζουν ή δεν τερµατίζουν πως να περιγράψουµε έναν αλγόριθµο; φυσική γλώσσα (ελληνικά, αγγλικά) είναι ασαφής «µαζεύετε τριαντάφυλλα όσο σας επιτρέπεται» γλώσσα προγραµµατισµού: εύκολη και περιεκτική έκφραση αλγορίθµων άµεσα κατανοητή από υπολογιστές και ανθρώπους περιορισµός λαθών Ένα πρόβληµα αποτελεί το κίνητρο για την επινόηση ενός αλγόριθµου. Ο αλγόριθµος είναι µια διαδικασία επίλυσης του προβλήµατος αυτού. Συνήθως µία διαδικασία από πολλές πιθανές Η αναπαράσταση είναι η επαρκής περιγραφή ενός αλγορίθµου για τη µετάδοση του στο επιθυµητό κοινό. Πάντα µία περιγραφή από πολλές πιθανές. 3 4

Κατασκευή πουλιού από ένα τετράγωνο κοµµάτι χαρτί (Σχήµα 5.2) Αρχέτυπα οριγκάµι (Σχήµα 5.4) 5 6 5.2 Αρχέτυπα ψευδοκώδικα Ανάθεση όνοµα έκφραση Επιλογή συνθήκης αν (συνθήκη) τότε (ενέργεια) Επαναλαµβανόµενη εκτέλεση όσο (συνθήκη) κάνε (ενέργεια) ιαδικασία διαδικασία όνοµα (συγκεκριµένο όνοµα τηςµονάδας) Ηδιαδικασία Χαιρετισµός σε ψευδοκώδικα (Σχήµα 5.4) διαδικασία Χαιρετισµός Μετρητής 3; όσο (Μετρητής >0) κάνε (τύπωσε το µήνυµα Γεια χαρά και Μετρητής Μετρητής-1) 7 8

5.3 Βήµατα επίλυσης προβλήµατος Υπόδειγµα προβλήµατος 1. Κατανόηση του προβλήµατος. 2. Σχηµατισµός (στο νου µας) µιας ιδέας για το πώς µπορεί να λυθεί το πρόβληµα από µία αλγοριθµική διαδικασία. 3. Συγκρότηση του αλγορίθµου και αναπαράσταση του ως πρόγραµµα. 4. Αξιολόγηση του προγράµµατος όσον αφορά την ακρίβεια του και τη δυνατότητα να χρησιµοποιηθεί ως εργαλείο για την επίλυση άλλων προβληµάτων. Το άτοµο Α πρέπει να βρει τις ηλικίες των τριών παιδιών του ατόµου Β. Ο Β λέει στον Α ότι το γινόµενο των ηλικιών των παιδιών του είναι 36. Ο Α απαντάει ότι χρειάζεται άλλο ένα στοιχείο Ο Β λέει στον Α το άθροισµα των ηλικιών των παιδιών του. Ο Α απαντάει ξανά ότι χρειάζεται άλλο ένα στοιχείο Ο Β λέει στον Α ότι το µεγαλύτερο παιδί του παίζει πιάνο Ο Α λέει στον Β τις ηλικίες των τριών παιδιών του. Ποιες είναι οι ηλικίες των τριών παιδιών; 9 10 Υπόδειγµα προβλήµατος (Σχήµα 5.5) Τεχνικές για το πρώτο βήµα Επίλυση του προβλήµατος προς τα πίσω. Επίλυση ενός πιο εύκολου, σχετικού προβλήµατος: «Χαλαρώνει» κάποιους από τους ασφυκτικούς περιορισµούς του προβλήµατος. Επιλύει πρώτα κάποια επιµέρους τµήµατα του προβλήµατος - συνθετική µεθοδολογία. Η βηµατική εκλέπτυνση είναι µία αναλυτική µεθοδολογία. ηµοφιλής τεχνική επειδή παράγει τµηµατικά προγράµµατα. 11 12

Κατά βήµατα ανάλυση Ακολουθία Αλγόριθµος: (1) βράσε νερό (2) βάλε καφέ στο φλιτζάνι (3) πρόσθεσε νερό στο φλιτζάνι φτιάξε στιγµιαίο καφέ (1.1) γέµισε χύτρα (1.1.1) βάλε χύτρα κάτω από βρύση (1.1.2) άνοιξε βρύση (1.1.3) περίµενε να γεµίσει η χύτρα (1.2) άναψε το µάτι (1.1.4) κλείσε βρύση (1.3) περίµενε να βράσει (1.4) σβήσε το µάτι (1.3.1) περίµενε να σφυρίξει η χύτρα (2.1) άνοιξε το δοχείο του καφέ (2.2) πάρε ένα κουταλάκι καφέ (2.3) άδειασε το κουταλάκι στο φλιτζάνι (2.4) κλείσε το δοχείο του καφέ (3.1) βάλε νερό από την χύτρα στο φλιτζάνι µέχρι να γεµίσει (2.1.1) πάρε το δοχείο του καφέ από το ντουλάπι (2.1.2) βγάλε το καπάκι (2.4.1) βάλε το καπάκι στο δοχείο (2.4.2) βαλε το δοχείο στο ντουλάπι 13 1. βάλε την χύτρα κάτω από βρύση 2. άνοιξε την βρύση εάν δεν υπάρχει νερό; 3. περίµενε να γεµίσει η χύτρα 4. κλείσε την βρύση 5. άναψε το µάτι 6. περίµενε να σφυρίξει η χύτρα 7. σβήσε το µάτι 8. πάρε το δοχείο του καφέ από το ντουλάπι 9. βγάλε το καπάκι 10. πάρε ένα κουταλάκι καφέ 11. άδειασε το κουταλάκι στο φλιτζάνι 12. βάλε το καπάκι στο δοχείο 13. βαλε το δοχείο στο ντουλάπι 14. βάλε νερό από την χύτρα στο φλιτζάνι µέχρι να γεµίσει εάν δεν υπάρχει καφές, να δοκιµάσει το επόµενο δοχείο καφέ; εάν υπάρχουν 1000 δοχεία, πολλά από αυτά άδεια, τι να κάνει; 14 5.4 Στοιχεία ελέγχου επανάληψης (Σχήµα 5.7) Απόδοση αρχικής τιµής: ηµιουργία µιας αρχικής κατάστασης η οποία θα τροποποιείται προς την κατεύθυνση της συνθήκης τερµατισµού. Έλεγχος: Τροποποίηση: Σύγκριση της τρέχουσας κατάστασης µε τη συνθήκη τερµατισµού και τερµατισµός της επανάληψης αν είναι ίσες. Αλλαγή της κατάστασης µε τέτοιον τρόπο ώστε να µετακινείται προς τη συνθήκη τερµατισµού. Ο αλγόριθµος της σειριακής αναζήτησης σε ψευδοκώδικα (Σχήµα 5.6) διαδικασία Αναζήτηση (Λίστα, ΤιµήΣτόχος) αν (Λίστα άδεια) τότε ( ήλωσε την αναζήτηση ως ανεπιτυχή) αλλιώς (Επίλεξε την πρώτη καταχώριση της Λίστας ως ΚαταχώρισηΠροςΈλεγχο. όσο (ΤιµήΣτόχος > ΚαταχώρισηΠροςΈλεγχο και υπάρχουν καταχωρίσεις προς σύγκριση) κάνε (επίλεξε την επόµενη καταχώριση της Λίστας ως ΚαταχώρισηΠροςΈλεγχο). αν (ΤιµήΣτόχος > ΚαταχώρισηΠροςΈλεγχο) τότε ( ήλωσε την αναζήτηση ως επιτυχή.) αλλιώς ( ήλωσε την αναζήτηση ως ανεπιτυχή.) ) τέλος αν 15 16

Ηδοµή βρόχου όσο (while) (Σχήµα 5.8) Η δοµή βρόχου επανέλαβε (repeat) (Σχήµα 5.9) 17 18 Αλφαβητική ταξινόµηση της λίστας Fred, Alex, Diana, Byron, Carol (Σχήµα 5.10) Ο αλγόριθµος ταξινόµησης παρεµβολής σε ψευδοκώδικα (Σχήµα 5.11) διαδικασία Ταξινόµηση (Λίστα) Ν 2 όσο (η τιµή του Ν δεν υπερβαίνει το µήκος της Λίστας) κάνε (επίλεξε την Ν-οστή καταχώρηση της Λίστας ως οριακή καταχώρηση. Μετακίνησε την οριακή καταχώριση σε µία προσωρινή θέση, αφήνοντας ένα κενό στη Λίστα. όσο (υπάρχει κάποιο όνοµα επάνω από το κενό, και το όνοµα αυτό είναι µεγαλύτερο από την οριακή καταχώριση) κάνε (µετακίνησε το όνοµα που βρίσκεται επάνω από το κενό προς τα κάτω, αφήνοντας ένα κενό από πάνω του) Τοποθέτησε την οριακή καταχώριση στο κενό της Λίστας. Ν Ν + 1 ) 19 20

5.5 Αναδροµή Παράδειγµα: οι πύργοι του Hanoi Αναδροµικός αλγόριθµος: καλεί τον εαυτό του Μεθοδολογία: εκφράζουµε την διαδικασία µε βάση ιδίου τύπου διαδικασίες που λειτουργούν σε απλούστερα προβλήµατα, γνωρίζουµε την απάντηση για το πλέον απλό πρόβληµα 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 3 * 2 1 2 * 1 Πρόβληµα: να µεταφέρουµε όλους τους δίσκους σε έναν άλλο πάσσαλο κουνώντας ένα δίσκο τη φορά, χωρίς ποτέ ένας δίσκος να τοποθετηθεί πάνω από µικρότερους δίσκους. 64 δίσκοι a b c Ψάχνουµε για αναδροµική σχέση: Πρόβληµα Α: µετάφερε 64 δίσκους από το a στο b Πρόβληµα Β: µετάφερε 63 δίσκους από το a στο c, µετάφερε τον τελευταίο δίσκο από το a στο b, µετάφερε 63 δίσκους από το c στο b. 21 22 Παράδειγµα: οι πύργοι του Hanoi (2) Παράδειγµα: οι πύργοι του Hanoi (3) 64 δίσκοι a b c πηγή προορισµός βοηθητικός module µεταφορά_πύργου (Ν, πηγή, προορισµός, βοηθητικός) if N=1 then µετακίνησε τον δίσκο από πηγή σε προορισµό else { µεταφορά_πύργου (Ν-1, πηγή, βοηθητικός, προορισµός); µετακίνησε 1 δίσκο από πηγή σε προορισµό; µεταφορά_πύργου (Ν-1, βοηθητικός, προορισµός, πηγή) } d1 d2 d3 module µεταφορά_πύργου (Ν, πηγή, προορισµός, βοηθητικός) if N=1 then µετακίνησε τον δίσκο από πηγή σε προορισµό else { µεταφορά_πύργου (Ν-1, πηγή, βοηθητικός, προορισµός); µετακίνησε 1 δίσκο από πηγή σε προορισµό; µεταφορά_πύργου (Ν-1, βοηθητικός, προορισµός, πηγή) } µ_π (3, a, b, c) µ_π (2, a, c, b) d2,a,c d3,a,b µ_π (2, c,b,a) d2,c,b µ_π (1, a, b, c) d1,a,b µ_π (1, b, c, a) d1,b,c µ_π (1, c,a,b) d1,c,a µ_π (1, a,b,c) d1,a,b 23 24

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

Ο αλγόριθµος της δυαδικής αναζήτησης (Σχήµα 5.16) Ο αλγόριθµος της δυαδικής αναζήτησης (Σχήµα 5.17) 29 30 5.6 Αποδοτικότητα Λογισµικού Εφαρµογή της ταξινόµησης παρεµβολής σε ένα σενάριο χειρότερης περίπτωσης (Σχήµα 5.18) Μετριέται ως το πλήθος των εκτελούµενων εντολών. Ο συµβολισµός µε Θ προσδιορίζει την αποδοτικότητα των αλγορίθµων Παράδειγµα η ταξινόµηση παρεµβολής αναπαριστάται µε Θ(n 2 ) Καλύτερη, χειρότερη και µέση περίπτωση. 31 32

Γράφηµα της ανάλυσης χειρότερης περίπτωσης του αλγορίθµου ταξινόµησης παρεµβολής (Σχήµα 5.19) Γράφηµα της ανάλυσης χειρότερης περίπτωσης του αλγορίθµου δυαδικής αναζήτησης (Σχήµα 5.20) 33 34 Επαλήθευση λογισµικού Παράδειγµα προβλήµατος: ιαχωρισµός αλυσίδας Απόδειξη ορθότητας. Ισχυρισµοί. Προσυνθήκες. Αµετάβλητοι βρόχοι. Έλεγχοι. Ένας ταξιδιώτης έχει µία χρυσή αλυσίδα εφτά κρίκων. Πρέπει να µείνει σε ένα αποµονωµένο ξενοδοχείο για επτά νύχτες. Το ενοίκιο για κάθε νύχτα είναι ένας κρίκος από την αλυσίδα του. Ποιος είναι ο µικρότερος αριθµός κρίκων που πρέπει να κοπούν ώστε ο ταξιδιώτης να πληρώνει στο ξενοδοχείο έναν κρίκο από την αλυσίδα κάθε πρωί χωρίς να καταβάλει προκαταβολικά τη διαµονή του; 35 36

ιαχωρισµός της αλυσίδας µε τρία µόνο κοψίµατα (Σχήµα 5.21) ιαχωρισµός της αλυσίδας µε µόνο ένα κόψιµο (Σχήµα 5.23) 37 38 Οι ισχυρισµοί που σχετίζονται µε µία τυπική δοµή όσο (while) (Σχήµα 5.23) 39