Εισαγωγή στην επιστήμη των Υπολογιστών & Τηλεπικοινωνιών Λογισμικό Υπολογιστών Αλγόριθμοι 1
Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση μιας εργασίας. Ένας αλγόριθμος δέχεται ως είσοδο μια λίστα δεδομένων και δημιουργεί ως έξοδο μια άλλη λίστα δεδομένων. 2
Έννοια 3
Εύρεση Μεγίστου 4
Ορισμός Ενεργειών 5
Βελτίωση 6
Γενίκευση 7
Τρεις ομές 8
9
10
11
Αναπαράσταση Αλγορίθμων Το διάγραμμα ροής αποτελεί τη σχηματική αναπαράσταση ενός αλγορίθμου. Ο ψευδοκώδικας είναι μια αναπαράσταση ενός αλγορίθμου σε φυσική γλώσσα 12
ιάγραμμα ροής 13
Ψευδοκώδικας 14
15
Μέσος όρος δύο αριθμών ΜέσοςΌροςΔύοΑριθμών Είσοδος: ύο αριθμοί 1.Πρόσθεσε τους δύο αριθμούς 2. ιαίρεσε το αποτέλεσμα με το 2 3.Επέστρεψε το αποτέλεσμα του βήματος 2 Τέλος 16
Αξιολόγηση Βαθμολογίας ΑξιολόγησηΒαθμολογίας Είσοδος: Αριθμός 1. αν ( αριθμός είναι μεγαλύτερος ή ίσος με το 5) τότε 1.1 Όρισε αξιολόγηση σε "προάγεται" αλλιώς 1.2 Όρισε αξιολόγηση σε "απορρίπτεται" τέλος αν 2. Επέστρεψε αξιολόγηση Τέλος 17
Αξιολόγηση βάσει γραμμάτων 1 ΑξιολόγησηΓραμμάτων Είσοδος: Ένας αριθμός 1. αν (αριθμός είναι μεταξύ 9 και 10, συμπεριλαμβανομένων) τότε 1.1 Όρισε αξιολόγηση σε "Α" Τέλος αν 2. αν (αριθμός είναι μεταξύ 8 και 8,9 συμπεριλαμβανομένων) τότε 2.1 Όρισε αξιολόγηση σε "B" Τέλος αν 3. αν (αριθμός είναι μεταξύ 7 και 7,9 συμπεριλαμβανομένων) τότε 3.1 Όρισε αξιολόγηση σε "Γ" Τέλος αν 18
Αξιολόγηση βάσει γραμμάτων 2 4. αν (αριθμός είναι μεταξύ 5 και 6,9 συμπεριλαμβανομένων) τότε 4.1 Όρισε αξιολόγηση σε " " Τέλος αν 5. αν (αριθμός είναι μικρότερος από 5) τότε 5.1 Όρισε αξιολόγηση σε "Ε" Τέλος αν 6. Επέστρεψε αξιολόγηση Τέλος 19
Εύρεση Μεγίστου ΕύρεσηΜέγιστου Είσοδος: Λίστα θετικών ακεραίων 1. Όρισε Μέγιστο στο 0 2. όσο (υπάρχουν άλλοι ακέραιοι) 2.1 αν ( ακέραιος είναι μεγαλύτερος από Μέγιστο) τότε 2.1.1 Όρισε Μέγιστο στην τιμή του ακέραιου Τέλος αν Τέλος όσο 3. Επέστρεψε Μέγιστο Τέλος 20
Εύρεση Μεγίστου από 1000 ακεραίους ΕύρεσηΜέγιστου Είσοδος: 1.000 θετικοί ακέραιοι 1. Όρισε Μέγιστο στο 0 2. Όρισε Μετρητή στο 0 3. όσο (Μετρητής είναι μικρότερος από 1.000) 3.1 αν (ακέραιος είναι μεγαλύτερος από Μέγιστο) τότε 3.1.1 Όρισε Μέγιστο στην τιμή του ακέραιου Τέλος αν 3.2 Αύξησε Μετρητή Τέλος όσο 4. Επέστρεψε Μέγιστο Τέλος 21
Ορισμός Αλγόριθμος είναι ιατεταγμένο σύνολο εντολών Σαφή βήματα Παραγωγή αποτελέσματος Τερματισμός σε πεπερασμένο χρόνο 22
Υποαλγόριθμοι Ένας αλγόριθμος μπορεί να χωριστεί σε μικρότερες μονάδες που ονομάζονται υποαλγόριθμοι Υποπρογράμματα Διαδικασίες Συναρτήσεις Μέθοδοι Υπομονάδες 23
Υποαλγόριθμοι 24
Υποαλγόριθμοι ΕύρεσηΜέγιστου Είσοδος: Λίστα θετικών ακεραίων 1. Όρισε Μέγιστο στο 0 2. όσο (υπάρχουν ακέραιοι) 2.1 ΕύρεσηΜεγαλύτερου Τέλος όσο 3. Επέστρεψε Μέγιστο Τέλος ΕύρεσηΜεγαλύτερου Είσοδος: Μέγιστος και τρέχων ακέραιος 1. αν (ο ακέραιος είναι μεγαλύτερος από τον Μέγιστο) τότε 1.1Όρισε τον Μέγιστο ίσο με την στην τιμή του ακέραιου Τέλος αν Τέλος 25
Βασικοί Αλγόριθμοι Άθροιση Γινόμενο Ελάχιστο και Μέγιστο Ταξινόμηση Αναζήτηση 26
Άθροιση 27
Γινόμενο 28
Ελάχιστο και Μέγιστο Η εύρεση του ελάχιστου από μια λίστα αριθμών είναι παρόμοια με την εύρεση μεγίστου που παρουσιάστηκε πριν, με δύο μικρές διαφορές. Πρώτον, χρησιμοποιούμε μια δομή απόφασης που να βρίσκει τον μικρότερο από δύο αριθμούς. εύτερον, χρησιμοποιούμε ως αρχική τιμή έναν πολύ μεγάλο αριθμό αντί για έναν πολύ μικρό. 29
Ταξινόμηση Επιλογή Φυσαλίδα Παρεμβολή 30
Ταξινόμηση Επιλογής 31
Ταξινόμηση Επιλογής 32
Ταξινόμηση Φυσαλίδας 33
Ταξινόμηση Φυσαλίδας 34
Ταξινόμηση Φυσαλίδας 35
Ερωτήματα Πόσεςσυγκρίσειςθαχρειασθείη μέθοδος της φυσαλίδας? Μπορεί να γίνει κάτι καλύτερο? 36
Ταξινόμηση Παρεμβολής 37
Ταξινόμηση Παρεμβολής 38
Αναζήτηση Σειριακή χρησιμοποιείται για τις μη ταξινομημένες λίστες υαδική χρησιμοποιείται για τις ταξινομημένες λίστες 39
Αναζήτηση Σειριακή 40
Αναζήτηση υαδική 41
Αναζήτηση υαδική Στην αρχή ο πρώτος έχει την τιμή 0 και ο τελευταίος την τιμή 11. Ορίζουμε τον μέσο ώστε να δείχνει στη μεσαία θέση, (0 + 11) / 2, ή 5. Τώρα συγκρίνουμε το στόχο (22) με το στοιχείο στη θέση 5 (21). Ο στόχος είναι μεγαλύτερος από αυτή την τιμή, οπότε αγνοούμε το πρώτο μισό. 42
Αναζήτηση υαδική Μεταφέρουμε τον πρώτο μετά τον μέσο, στη θέση 6. Ορίζουμε τον μέσο ώστε να δείχνει στη μεσαία θέση του δεύτερου μισού, (6 + 11) / 2, ή 8. Τώρα συγκρίνουμε το στόχο (22) με το στοιχείο της θέσης 8 (62). Ο στόχος είναι μικρότερος από αυτή την τιμή, οπότε αγνοούμε τους αριθμούς από τη συγκεκριμένη τιμή (62) μέχρι το τέλος. 43
Αναζήτηση υαδική Μετακινούμε τον τελευταίο πριν από τον μέσο, στη θέση 7. Ξαναϋπολογίζουμε τον μέσο, (7 + 6) / 2, ή 6. Συγκρίνουμε το στόχο (22) με την τιμή σε αυτή τη θέση (22). Βρήκαμε το στόχο, οπότε μπορούμε να σταματήσουμε 44
Αναδρομή Ένας επαναληπτικός αλγόριθμος χρησιμοποιεί μόνο τις παραμέτρους και όχι τον ίδιο τον εαυτό του. Ένας αναδρομικός αλγόριθμος χρησιμοποιεί τον ίδιο τον εαυτό του Αναδρομή (recursion) ονομάζεται η διαδικασία κατά την οποία ένας αλγόριθμος καλεί τον εαυτό του 45
Αναδρομή Επαναληπτικός ορισμός του παραγοντικού Αναδρομικός ορισμός του παραγοντικού 46
Αναδρομή 47
Αναδρομή (Επαναληπτική Λύση) Παραγοντικό Είσοδος: Θετικός ακέραιος αριθ 1. Όρισε ΠαραγΝ στο 1 2. Όρισε i στο 1 3. όσο (i είναι μικρότερο ή ίσο με αριθ) 3.1 Όρισε ΠαραγΝ στο ΠαραγΝ i 3.2 Αύξησε i κατά ένα Τέλος όσο 4. Επέστρεψε ΠαραγΝ Τέλος 48
Αναδρομή (Αναδρομική Λύση) Παραγοντικό Είσοδος: Θετικός ακέραιος αριθ 1. αν (αριθ είναι ίσος με 0) τότε 1.1 επέστρεψε 1 αλλιώς 1.2 επέστρεψε αριθ Παραγοντικό (αριθ 1) Τέλος αν Τέλος 49
Φάσεις επίλυσης προβλημάτων Μαθηματικά 1. Κατανόηση του προβλήματος 2. Κατάστρωση ενός σχεδίου για την επίλυση του προβλήματος 3. Εκτέλεση του σχεδίου 4. Αξιολόγηση της λύσης όσον αφορά την ακρίβειά της και τη δυνατότητα να χρησιμοποιηθεί ως εργαλείο για την επίλυση άλλων προβλημάτων 50
Φάσεις Επίλυσης ενός Προβλήματος 1. Κατανόηση του προβλήματος 2. Σχηματισμός μιας ιδέας για το πως μπορεί να λυθεί το πρόβλημα από μια αλγοριθμική διαδικασία. 3. Σχηματισμός Αλγορίθμου και αναπαράστασή του ως πρόγραμμα. 4. Αξιολόγηση του προγράμματος όσον αφορά την ακρίβεια του και τη δυνατότητά του να χρησιμοποιηθεί σαν εργαλείο για την επίλυση άλλων προβλημάτων. 51
Πριν οι Α, Β, Γ και Δ διαγωνισθούν σε μια κούρσα ταχύτητας, έκαναν τις ακόλουθες προβλέψεις: Ο Α προέβλεψε ότι θα νικούσε ο Β. Ο Β προέβλεψε ότι ο Δ θα ήταν τελευταίος Ο Γ προέβλεψε ότι ο Α θα ήταν τρίτος Ο Δ προέβλεψε ότι η πρόβλεψη του Α θα ήταν σωστή. Μόνο μια από τις προβλέψεις αυτές ήταν σωστή και αυτή έγινε από τον νικητή. Με ποια σειρά τερμάτισαν την κούρσα οι Α, Β, Γ, και Δ. 52
Βηματική Εκλέπτυνση Είναι η τεχνική που ακολουθούμε όταν δεν στοχεύουμε να διεκπεραιώσουμε μια ολόκληρη εργασία (σε όλες τις λεπτομέρειες) με την πρώτη προσέγγιση. Είναι μια αναλυτική μεθοδολογία που η οποία προχωράει από το γενικό στο ειδικό. 53
Το άτομο Α πρέπει να βρει τις ηλικίες των παιδιών του ατόμου Β. Ο Β λέει στον Α ότι το γινόμενο των ηλικιών των παιδιών του είναι 36. Αφού σκέφτεται λίγο αυτό το στοιχείο, ο Α απαντάει ότι χρειάζεται άλλο ένα στοιχείο, οπότε ο Β λέει στον Α το άθροισμα των ηλικιών των παιδιών του. Ξανά ο Α απαντάει ότι χρειάζεται ένα ακόμη στοιχείο,και ο Β του λέει ότι το μεγαλύτερο παιδί του παίζει πιάνο. Αφού ακούει αυτό το στοιχείο, ο Α λέει στον Β τις ηλικίες των τριών παιδιών. Ποιες είναι? 54
(1, 1, 36) (1, 6, 6) (1, 2, 18) (2, 2, 9) (1, 3, 12) (2, 3, 6) (1, 4, 9) (3, 3, 4) (1, 1, 36)=38 (1, 6, 6)=13 (1, 2, 18)=21 (2, 2, 9)=13 (1, 3, 12)=16 (2, 3, 6)=11 (1, 4, 9)=14 (3, 3, 4)=10 55
Παράδειγμα Ένας ταξιδιώτης με μια χρυσή αλυσίδα επτά κρίκων πρέπει να μείνει σε ένα ξενοδοχείο για 7 νύκτες. Το ενοίκιο μιας νύχτας είναι ένας κρίκος και πρέπει να το πληρώνει κάθε πρωί προκαταβολικά. Ποιος ο μικρότερος αριθμός κρίκων που πρέπει να κοπούν; 56
57
58
Ο Ευκλείδειος Αλγόριθμος βρίσκει τον μέγιστο κοινό διαιρέτη δύο θετικών ακέραιων αριθμών Χ και Υ με την ακόλουθη διαδικασία: Όσο οι τιμές των Χ και Υ δεν είναι μηδέν, συνέχισε να διαιρείς τη μεγαλύτερη από τις τιμές με την μικρότερη αναθέτοντας στα Χ και Υ τις τιμές του διαιρέτη και του υπολοίπου αντίστοιχα. Η τελική τιμή του Χ είναι ο μέγιστος κοινός διαιρέτης. 59
Μη αναδρομικός αλγόριθμος 1. Αν Χ<Υ τότε{t X; X Y; Y t} 2. Όσο Υ 0 κάνε { 1. t X mod Y; 2. X Y; Y t } 3. Έξοδος Χ 60
Αναδρομικός Αλγόριθμος 1. ΜΚ (Χ,Υ) 2. Αν Χ<Υ τότε{t X; X Y; Y t} 3. Αν Υ>0 τότε ΜΚ (Υ, Χ mod Y); 4. Έξοδος το Χ; 5. Τέλος 61