Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 1: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών
ΠΕΡΙΕΧΟΜΕΝΟ Εισαγωγικές Έννοιες Ορισμός Αλγορίθμου Ανάλυση Παραδείγματα Απλών Αλγορίθμων Ορθότητα Μέτρα Αποδοτικότητας 2
ΟΡΙΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ Αλγόριθμος είναι μια μέθοδος που λύνει κάθε στιγμιότυπο ενός δοσμένου προβλήματος και μπορεί να προγραμματιστεί σε κάποια υπολογιστική μηχανή. 3
ΙΔΙΟΤΗΤΕΣ ΑΛΓΟΡΙΘΜΩΝ Είσοδος (input) : Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Έξοδος (output) : τουλάχιστον μία τιμή ως αποτέλεσμα προς το χρήστη ή προς ένα άλλο αλγόριθμο. Καθοριστικότητα (defineteness) : κάθε εντολή καθορίζεται πολύ συγκεκριμένα για τον τρόπο εκτέλεσής της (π.χ. διαίρεση) Περατότητα (finiteness) : ο αλγόριθμος τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης. Αλλιώς ονομάζεται υπολογιστική διαδικασία Αποτελεσματικότητα (effectiveness) : ο αλγόριθμος αποτελείται από μεμονωμένες απλές εντολές 4
ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΣΕ ΣΧΕΣΗ ΜΕ ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΗΧΑΝΕΣ Ακολουθιακοί (σειριακοί) Παράλληλοι Μη αιτιοκρατικοί 5
ΘΕΜΕΛΙΩΔΕΣ ΜΟΝΤΕΛΟ ΥΠΟΛΟΓΙΣΜΟΥ Μηχανή Turing: Ισοδύναμο με μηχανές τυχαίας πρόσβασης. 6
ΙΣΤΟΡΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ Πρώτος αλγόριθμος θεωρείται η μέθοδος υπολογισμού του μέγιστου κοινού διαιρέτη που πρότεινε ο Ευκλείδης. Η λέξη αλγόριθμος προέρχεται από το όνομα του Πέρση μαθηματικού Αλ Χοαρίζμι που έγραψε ένα βιβλίο μαθηματικών το 825 μ.χ. 7
ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΩΝ Ελεύθερο κείμενο (free text): ανεπεξέργαστος και αδόμητος τρόπος παρουσίασης αλγορίθμου (παραβίαση αποτελεσματικότητας) Διαγραμματικές τεχνικές (diagramming techniques): γραφικός τρόπος παρουσίασης του αλγορίθμου (διάγραμμα ροής) Φυσική γλώσσα (natural language): περιγραφή κατά βήματα (παραβίαση της καθοριστικότητας) Ψευδογλώσσα (pseudocoding): δομημένος τρόπος παρουσίασης αλγορίθμου που μπορεί εύκολα να προγραμματιστεί σε κάποια γλώσσα προγραμματισμού Κωδικοποίηση (coding): πρόγραμμα γραμμένο σε κάποια γλώσσα προγραμματισμού που όταν εκτελεστεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο 8
ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΕ ΕΛΕΥΘΕΡΟ ΚΕΙΜΕΝΟ Λύση Δευτεροβάθμιας εξίσωσης: αx 2 +βx+γ=0. Ζητούμε να μας δοθούν οι τιμές των συντελεστών α, β, και γ της εξίσωσης. Προχωρούμε σε υπολογισμό της διακρίνουσας Δ=β 2-4αγ. Σε περίπτωση που ισχύει ότι η διακρίνουσα Δ είναι μεγαλύτερη ή ίση του μηδενός οι δυο πραγματικές ρίζες της εξίσωσης δίνονται από τη σχέση, ενώ αν η 2 διακρίνουσα Δ είναι μικρότερη του μηδενός τότε ισχύει ότι η εξίσωση δεν έχει πραγματικές ρίζες. 9
ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΕ ΦΥΣΙΚΗ ΓΛΩΣΣΑ Λύση Δευτεροβάθμιας εξίσωσης: αx 2 +βx+γ=0. Δίνονται οι συντελεστές α,β,γ Υπολογίζεται η Διακρίνουσα Δ=β 2-4αγ Αν Δ>0 υπολογίζονται και εμφανίζονται οι 2 πραγματικές ρίζες από τη σχέση 2 Αν Δ=0 υπολογίζεται και εμφανίζεται η διπλή πραγματική ρίζα από τη σχέση 2 Αν Δ<0 ενημερώνουμε ότι δεν υπάρχουν πραγματικές ρίζες. 10
ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΕ ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΑΡΧΗ Διάβασε α, β, γ ΝΑΙ δ1=(-β+ )/2α δ2=(-β- Γράψε δ1 και δ2 )/2α Δ=β 2-4αγ >= 0 ΤΕΛΟΣ ΟΧΙ Γράψε Δεν υπάρχουν πραγματικές ρίζες 11
ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΕ ΨΕΥΔΟΓΛΩΣΣΑ Αλγόριθμος Λύση_Δευτεροβάθμιας_Εξίσωσης Είσοδος: Πραγματικοί αριθμοί α, β, και γ. Έξοδος: Πραγματικοί αριθμοί δ1 και δ2 ή -1 αν δεν υπάρχουν πραγματικές ρίζες Ψευδοκώδικας: Διάβασε α, β, γ Δ=β*β-4*α*γ if Δ>=0 then δ1=(-β+ )/(2*α) δ2=(-β- )/(2*α) Επέστρεψε δ1, δ2 else Επέστρεψε -1 end 12
ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΝΑΠΑΡΑΣΤΑΣΗ ΣΕ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ #include<stdio.h> #include<math.h> void main() { float a,b,c,d,d1,d2; scanf( %f \n %f \n %f, &a, &b,&c); D=b*b-4*a*c; d1=(-b+sqrt(d))/(2*a); d2=(-b-sqrt(d))/(2*a); if (D >= 0) printf( The equation has real roots:\n %f \n %f,d1, d2); else printf( The equation have not real roots ); } 13
ΑΞΙΟΛΟΓΗΣΗ ΑΛΓΟΡΙΘΜΟΥ Σειριακός Σωστός Τερματίζει Απλός Ο αλγόριθμος εκτελεί 1 σύγκριση 14
ΠΑΡΑΔΕΙΓΜΑ Δίνονται ο φυσικός αριθμός n και οι αριθμοί x 1,, x n. Να υπολογιστούν τα n αθροίσματα: α 1 = x 1 α 2 = x 1 +x 2 α 3 = x 1 +x 2 +x 3 α 4 = x 1 +x 2 +x 3 +x 4 α n = x 1 +x 2 + + x n 15
ΠΡΩΤΗ ΛΥΣΗ Αλγόριθμος Υπολογισμός_αθροισμάτων_απλά Είσοδος: Φυσικός αριθμός n και πίνακας X μήκους n με Χ[i]=x i Έξοδος: Πίνακας Α μήκους n που περιέχει τα αθροίσματα α j με Α[j]=α j Ψευδοκώδικας: for j=1 to n επανέλαβε A[j]=0 for i=1 to j επανέλαβε A[j]=A[j]+X[i] τέλοςfor τέλοςfor 16
ΔΕΥΤΕΡΗ ΛΥΣΗ Αλγόριθμος Υπολογισμός_αθροισμάτων_σύνθετα Είσοδος: Φυσικός αριθμός n και πίνακας X μήκους n με Χ[i]=x i Έξοδος: Πίνακας Α μήκους n που περιέχει τα αθροίσματα α j με Α[j]=α j Ψευδοκώδικας: A[1]=x 1 if n>1 τότε for j=2 to n επανέλαβε A[j]=A[j-1]+X[j] τέλοςfor τέλοςif 17
ΑΞΙΟΛΟΓΗΣΗ Αξιολόγηση Αλγορίθμων Σειριακοί Σωστοί Τερματίζουν Απλοί Ο πρώτος αλγόριθμος εκτελεί n(n+1)/2 προσθέσεις Ο δεύτερος αλγόριθμος 2 εκτελεί n-1 προσθέσεις 18
ΤΡΙΤΗ ΛΥΣΗ ΠΑΡΑΛΛΗΛΗ 1/2 Παράλληλος Αλγόριθμος Έστω παράλληλη μηχανή με n προσθέτες Ε 1,, Ε n και n=2 p ή p=logn. Κατασκευάζω παράλληλο αλγόριθμο. Εντολές χωρίζονται σε φάσεις: Στην αρχή κάθε πρόσθεσης κάθε προσθέτης δέχεται 2 αριθμούς, τους προσθέτει και στέλνει το αποτέλεσμα σε τρίτο προσθέτη. Κάθε προσθέτης αποθηκεύει το αποτέλεσμα της πρόσθεσης που εκτελεί. 19
ΤΡΙΤΗ ΛΥΣΗ ΠΑΡΑΛΛΗΛΗ 2/2 Παράλληλος Αλγόριθμος Αν j<=0 τότε x j =0 και Ε j συντονιστής προσθέτης Φάση 1: O E i δέχεται τους αριθμούς x i-1, x i από συντονιστή. O E i εκτελεί x i =x i-1 +x i. Φάση 2: O E i δέχεται τον αριθμό x i-2 από τον E i-2. O E i εκτελεί x i =x i-2 +x i. Φάση k: O E i δέχεται τον αριθμό x j με j=i-2 k-1 από τον E j. O E i εκτελεί x i =x j +x i. Φάση p: O E i δέχεται τον αριθμό x j με j=i-2 n-1 από τον E j. O E i εκτελεί x i =x j +x i και στέλνει το x i στο συντονιστή. 20
ΑΞΙΟΛΟΓΗΣΗ ΛΥΣΗΣ Παράλληλος Αλγόριθμος Χρόνος: p=logn προσθέσεις Συνολικές προσθέσεις n p=n logn > n-1 n προσθέσεις κάθε φάσης εκτελούνται ταυτόχρονα. 21
ΟΡΘΟΤΗΤΑ Ορισμός Ένας αλγόριθμος ικανοποιεί το κριτήριο της ορθότητας αν λύνει σωστά όλα τα στιγμιότυπα του προβλήματος για το οποίο σχεδιάστηκε. Τρόποι εξακρίβωσης ορθότητας Μαθηματικά, δύσκολο Πειραματικά Διάρθρωση αλγορίθμου σε απλούς υποαλγορίθμους 22
ΠΟΙΟΤΗΤΑ Κύριο κριτήριο αξιολόγησης: Κόστος κατασκευής και εκτέλεσης Εξαρτάται: Διαθέσιμο υλικό και λογικό Γλώσσα προγραμματισμού Ικανότητες προγραμματιστή Υπολογιστικό περιβάλλον Κύρια στοιχεία κόστους: Χρόνος κατασκευής και δοκιμής σωστού προγράμματος Χρόνος εκτέλεσης για κάθε νέο στιγμιότυπο 23
ΧΡΟΝΟΣ ΕΚΤΕΛΕΣΗΣ Εξαρτάται: Πλήθος εντολών που εκτελούνται για κάθε στιγμιότυπο. Επιβαρύνσεις που οφείλονται στο σχεδιασμό. Ποσό μνήμης 24
ΑΝΑΛΥΣΗ Ορθότητα Απλότητα Μνήμη Επιβαρύνσεις Πλήθος εντολών που εκτελούνται σε κάθε περίπτωση (τυπική, μέσος όρος, χειρότερη, καλύτερη) συναρτήσει μεγέθους εισόδου. 25
ΜΕΤΡΑ ΑΠΟΔΟΤΙΚΟΤΗΤΑΣ Αν οι παράμετροι εισόδου είναι n 1,, n k διακρίνουμε: Πολυπλοκότητα Μέσου Όρου-ΠΜΟ(n 1,, n k ): το πλήθος των εντολών που εκτελούνται κατά μέσο όρο, για όλα τα πιθανά νόμιμα εισαγόμενα. Πολυπλοκότητα Χειρότερης Περίπτωσης-ΠΧΠ(n 1,, n k ): το πλήθος των εντολών που εκτελούνται στη χειρότερη περίπτωση. Ισχύει (n,,n ) (n,,n ) για κάθε n 1,, n k. 0 1 k 1 k 26
ΧΡΗΜΑΤΟΔΟΤΗΣΗ Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 27
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ Το παρόν έργο αποτελεί την έκδοση 1.0. 28
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ Copyright Πανεπιστήμιο Πατρών, Δημήτριος Κουκόπουλος. «Σχεδίαση και Ανάλυση Αλγορίθμων. ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ - ΟΡΙΣΜΟΙ». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/culture109/. 29
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 30
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 31