ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research
Περιγραφή Αλγορίθμων Χρήση Ψευδοκώδικα Γενική μορφή ψευδοκώδικα Αλγόριθμος : όνομα αλγορίθμου Δεδομένα : ονόματα μεταβλητών Αποτελέσματα : ονόματα μεταβλητών 1 εντολή_1... n εντολή_... εντολή_n
Τελεστές & Συνθήκες (1) Οι εντολές ψευδοκώδικα περιέχουν Μαθηματικές παραστάσεις Συνθήκες Σχεσιακούς τελεστές < > π.χ. (x y) (z<y) Λογικοί τελεστές: και ή ή όχι π.χ. (x y) και (y<z) (x y) ή (y<z) π.χ. (x y) ή (y<z) 3
Τελεστές & Συνθήκες () Πίνακας τιμών λογικών πράξεων ή Πίνακας Αληθείας p q p και q p ή q p ή q όχι(p) Α Α Α Α Ψ Ψ Α Ψ Ψ Α Α Ψ Ψ Α Ψ Α Α Α Ψ Ψ Ψ Ψ Ψ Α 4
Τελεστές & Συνθήκες (3) ΠΑΡΑΔΕΙΓΜΑ. F (A AND (NOT B)) OR ((NOT A) AND B AND C) A B C A B K AB L A BC F K+L 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 5
Οι εντολές του ψευδοκώδικα (1) Απλή εντολή καταχώρησης όνομα_μεταβλητής μαθηματική έκφραση z z+x+5+y Σύνθετη εντολή καταχώρησης όνομα_μεταβλητής Συστοιχία ή Πίνακας ή παραστάσεις πινάκων z [ 10 3 8-4 -8] 6
Οι εντολές του ψευδοκώδικα () Κλήση αλγορίθμων : Στην εντολή καταχώρησης μπορούμε να χρησιμοποιούμε αλγορίθμους [a 1 a... a m ] αλγ(x 1 x... x n ) Μεταβλητές εξόδου Όνομα αλγορίθμου Μεταβλητές εισόδου Μερικές από τις μεταβλητές εξόδου και μερικές από τις μεταβλητές εισόδου μπορεί να παραλείπονται α αλγ(x 1 x... x n ) 7
Οι εντολές του ψευδοκώδικα (3) Μερικοί χρήσιμοι αλγόριθμοι συναρτήσεις [x y] swap(x y) ή [x y] εναλλαγή(x y) temp x x y y temp x div(ab) (άγνωστος προς το παρόν ψευδοκώδικας) x mod(ab) (άγνωστος προς το παρόν ψευδοκώδικας 8
Οι εντολές του ψευδοκώδικα (4) Προσοχή!!! Στις εσοχές: Δηλώνουν πότε τελειώνει μια και πότε αρχίζει άλλη εντολή Στις δεσμευμένες λέξεις : γράφονται bold Η εντολή επιλογής αν...αλλιώς_αν... αν συνθήκη_1 εντολές_1 αλλιώς_αν συνθήκη_ εντολές_ αλλιώς εντολές_ν Προαιρετικά τμήματα 9
Οι εντολές του ψευδοκώδικα (5) Αλγόριθμος: AbsoluteValue1 Δεδομένα: x Αποτελέσματα: a 1 3 4 αν x 0 a x αλλιώς a - x Αλγόριθμος: AbsoluteValue Δεδομένα: x Αποτελέσματα: a 1 3 a x αν x < 0 a - x 10
Οι εντολές του ψευδοκώδικα (6) Παράδειγμα. Γνωρίζοντας ότι οι 4 πρώτοι αριθμοί 0 1 3 στο δυαδικό σύστημα αρίθμησης είναι 00 01 10 11 να γραφεί αλγόριθμος υπολογισμού αθροίσματος 3 δυφίων (ψηφία του δυαδικού συστήματος αρίθμησης). Λύση. Έστω x y z τα 3 δυφία. Επειδή το άθροισμά τους είναι ένας από τους αριθμούς 00 01 10 11 του δυαδικού συστήματος θα γράψουμε το αποτέλεσμα στο στοιχείων διάνυσμα s. Δηλ ο s έχει διάσταση 1x. Κάθε δυφίο παίρνει τιμές 1 ή 0. Άρα 8 περιπτώσεις 11
Οι εντολές του ψευδοκώδικα (7) χ y z 0 0 0 0 0 1 Οι 8 περιπτώσεις. Ομαδοποίηση σε 3 περιπτώσεις Περίπτωση 1 0 1 0 0 1 1 1 0 0 Περίπτωση 1 0 1 1 1 0 1 1 1 Περίπτωση 3 1
Οι εντολές του ψευδοκώδικα (8) Διάνυσμα στοιχείων Οι 8 περιπτώσεις ανάγονται σε 3: x0 και y0 x1 ή y1 x1 και y1 και σε κάθε μια εξετάζουμε αν z0 ή z1 Αλγόριθμος : add3bits Δεδομένα : x y z Αποτελέσματα : s 1 3 4 5 6 7 8 9 αν x 0 και y 0 s [0 0] αν z 1 s() 1 αλλιώς_αν x 1 ή y 1 s [0 1] αν z 1 s [1 0] αλλιώς s [1 0] αν z 1 s() 1 13
Πρόβλημα (για το σπίτι) Να γραφεί ψευδοκώδικας για τον υπολογισμό των ριζών εξισώσεως ου βαθμού με πραγματικούς συντελεστές (θεωρείστε ότι η φανταστική μονάδα είναι αποθηκευμένη στη μεταβλητή j και ότι είναι διαθέσιμος αλγόριθμος υπολογισμού της τετραγωνικής ρίζας). 14
Quiz-[3] Ανίχνευση ψεύτικου νομίσματος Υπάρχουν 8 εμφανισιακά ίδια νομίσματα π.χ. του ενός ευρώ. Ένα από αυτά είναι πλαστό και είναι γνωστό ότι είναι ελαφρύτερο από τα υπόλοιπα γνήσια νομίσματα. Ποιος είναι ο ελάχιστος αριθμός ζυγισμάτων που απαιτούνται για την ανίχνευση του πλαστού νομίσματος έχοντας στη διάθεσή σας μια κλασσική ζυγαριά και κανένα ζύγι. 15
Οι εντολές του ψευδοκώδικα (9) Bρόχος για...από...μέχρι... για μεταβλητή από αρχική_τιμή μέχρι τελική_τιμή με βήμα β εντολές Παράδειγμα. Υπολογισμός αθροίσματος 1++3+4+5 s 0 για x από 1 μέχρι 5 s s+x Επαναλήψεις x s Αρχή - 0 1 1 1 3 3 3 6 4 4 10 5 5 15 16
17 Οι εντολές του ψευδοκώδικα (10) Φωλιασμένοι βρόχοι Παράδειγμα. Να υπολογιστεί το άθροισμα των στοιχείων της μήτρας 6 3 1 4 A s 0 για i από 1 μέχρι 3 για j από 1 μέχρι s s + A(i j) 8 A(3) s j A(31) 5 s 1 j 3 i 5 A() 4 s j 4 A(1) 6 s 1 j i 6 A(1) s j A(11) 0 s 1 j 1 i 0 s + + + + + +
Οι εντολές του ψευδοκώδικα (11) Το πλήθος των επαναλήψεων που εκτελεί ένας βρόχος μετρητή όταν είναι βήμα>0 : τελική τιμή-αρχική τιμή+βήμα βήμα ΓΙΑ i 1 100 4. ΤΕΛΟΣ ΓΙΑ; 100 1+ 4 4 103 4 5 18
Οι εντολές του ψευδοκώδικα (1) Το πλήθος των επαναλήψεων που εκτελεί ένας βρόχος μετρητή όταν είναι βήμα<0 : αρχική τιμή-τελική τιμή-βήμα -βήμα ΓΙΑ i 100 1-4. ΤΕΛΟΣ ΓΙΑ; 100 1+ 4 103 4 4 5 19
Οι εντολές του ψευδοκώδικα (13) Παράδειγμα. Υπολογισμός όρων ακολουθίας Fibonacci f(n) f(n 1) + f(n ) n f(0) 0 f(1) 1 n 0 1 3 4 5 6 7 8 f(n) 0 1 1 3 5 8 13 1 0
Οι εντολές του ψευδοκώδικα (14) Λύση. Αλγόριθμος : fib1 Δεδομένα : n Αποτελέσματα : f 1 3 4 5 f 0 i 1 για k από 1 μέχρι n f f+i i f-i Υλοποίηση για n 5 k f i - 0 1 1 1 0 1 1 3 1 4 3 5 5 3 1
Οι εντολές του ψευδοκώδικα (15) Παράδειγμα. Να γραφεί αλγόριθμος ο οποίος να υπολογίζει το ελάχιστο (min) στοιχείο ενός διανύσματος Τ n στοιχείων καθώς και τη θέση του (index). Αλγόριθμος: min1 Δεδομένα: T n Αποτελέσματα: min index 1 3 4 5 6 Λύση min Τ(1) index 1 για i από μέχρι n αν Τ(i) < min min T(i) index i