ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 3: Ωμή Βία. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 8: Δυναμικός Προγραμματισμός. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 12: Αντιμετώπιση Περιορισμών Αλγοριθμικής Ισχύος

Διοικητική Λογιστική

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 11: Περιορισμοί της Αλγοριθμικής Ισχύος

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 7: Αλγόριθμοι γραμμικής άλγεβρας

Εισαγωγή στους Υπολογιστές

Βέλτιστος Έλεγχος Συστημάτων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

Μηχανολογικό Σχέδιο Ι

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

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

Γενικά Μαθηματικά Ι. Ενότητα 1: Συναρτήσεις και Γραφικές Παραστάσεις. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Διοίκηση Επιχειρήσεων

ΑΛΓΟΡΙΘΜΟΙ Ενότητα 10

Προγραμματισμός Η/Υ. Αλγόριθμοι. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Βέλτιστος Έλεγχος Συστημάτων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 1: Εκτιμητές και Ιδιότητες. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Βάσεις Περιβαλλοντικών Δεδομένων

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

Διοικητική Λογιστική

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Βέλτιστος Έλεγχος Συστημάτων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ιστορία της μετάφρασης

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

ΗΛΕΚΤΡΟΝΙΚΗ IΙ Ενότητα 6

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Κβαντική Επεξεργασία Πληροφορίας

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

Πληροφορική ΙΙ Θεματική Ενότητα 5

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Ψηφιακή Επεξεργασία Εικόνων

Πληροφορική ΙΙ Ενότητα 1

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εισαγωγή στους Αλγόριθμους

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Εκκλησιαστικό Δίκαιο

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

Κβαντική Επεξεργασία Πληροφορίας

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Ορισμός κανονικής τ.μ.

Μηχανολογικό Σχέδιο Ι

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Βέλτιστος Έλεγχος Συστημάτων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

ΔΡΔ: Διαγράμματα Ροής Δεδομένων

Εισαγωγή στον δομημένο προγραμματισμό

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

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

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 2: Ανάλυση Αλγορίθμων Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ανάλυση Αλγορίθμων Αποδοτικότητα, Συμβολισμοί Ο, Ω, Θ

Ανάλυση Αλγορίθμων Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα Προσεγγίσεις: Θεωρητική ανάλυση Εμπειρική ανάλυση 5

Θεωρητική ανάλυση χρονικής αποδοτικότητας Η χρονική αποδοτικότητα αναλύεται προσδιορίζοντας τον αριθμό των επαναλήψεων της βασικής πράξης ως συνάρτηση του μεγέθους εισόδου. Βασική πράξη: η πράξη που συνεισφέρει περισσότερο από τις άλλες στο χρόνο εκτέλεσης του αλγορίθμου. Μέγεθος εισόδου T(n) c op C(n) Χρόνος εκτέλεσης Χρόνος εκτέλεσης βασικής πράξης Πλήθος επαναλήψεων βασικής πράξης 6

Μέγεθος εισόδου & βασική πράξη Πρόβλημα Αναζήτηση κλειδιού σε λίστα με n αντικείμενα Πολλαπλασιασμός πινάκων με πραγματικούς αριθμούς Υπολογισμός a n Προβλήματα με γράφους Μέγεθος εισόδου Το πλήθος n των αντικειμένων Διαστάσεις των πινάκων n Πλήθος κορυφών ή/και ακμών Βασική πράξη Συγκρίσεις κλειδιών Πολλαπλασιασμός πραγματικών αριθμών Πολλαπλασιασμός πραγματικών αριθμών Η επίσκεψη ενός κόμβου ή η διάσχιση μίας ακμής 7

Εμπειρική ανάλυση της χρονικής αποδοτικότητας Επιλέγουμε ένα συγκεκριμένο δείγμα εισόδου Χρησιμοποιούμε τη φυσική μονάδα μέτρησης (π.χ., milliseconds) ή Μετρούμε τον πραγματικό αριθμό επαναλήψεων της βασικής πράξης Αναλύουμε τα εμπειρικά δεδομένα 8

Καλύτερη, μέση, χειρότερη περίπτωση Σε μερικούς αλγορίθμους η αποδοτικότητα εξαρτάται από τον τύπο της εισόδου: Χειρότερη περίπτωση: W(n) το μέγιστο από όλες τις εισόδους μεγέθους n Καλύτερη περίπτωση: B(n) το ελάχιστο από όλες τις εισόδους μεγέθους n Μέση περίπτωση: A(n) ο μέσος όρος από όλες τις εισόδους μεγέθους n Είναι το πλήθος εκτελέσεων της βασικής πράξης σε μία τυπική είσοδο Όχι ο μέσος όρος της καλύτερης και της χειρότερης περίπτωσης Η αναμενόμενη τιμή των επαναλήψεων της βασικής πράξης θεωρείται μία τυχαία μεταβλητή υπό την προϋπόθεση της γνώσης της κατανομής πιθανότητας όλων των δυνατών εισόδων μεγέθους n 9

Παράδειγμα: Σειριακή αναζήτηση (1) Πρόβλημα: Δοθείσης λίστας με n στοιχεία και ενός κλειδιού K, να βρεθεί ένα στοιχείο ίσο με K, αν υπάρχει. Αλγόριθμος: Σαρώνουμε τη λίστα και συγκρίνουμε διαδοχικά τα στοιχεία με την τιμή K μέχρι είτε να βρούμε μία τιμή που να ταιριάζει (επιτυχής αναζήτηση) ή να εξαντληθεί η λίστα (ανεπιτυχής αναζήτηση) 10

Παράδειγμα: Σειριακή αναζήτηση (2) Algorithm Sequential(A[0..n-1]) // Input: An array A[0..n-1] and a sought value k // Output: the position of k if found, -1 otherwise i 0 while i<n and A[i]<>k do i i+1 If i<n return i else return -1 Χειρότερη περίπτωση Καλύτερη περίπτωση Μέση περίπτωση 11

Εκφράσεις για τη μέτρηση της Επακριβής τύπος βασικής πράξης π.χ., C(n) = n(n-1)/2 Τύπος ενδεικτικός της τάξης μεγέθους με συγκεκριμένη πολλαπλασιαστική σταθερά π.χ., C(n) 0.5 n 2 Τύπος ενδεικτικός της τάξης μεγέθους με άγνωστη πολλαπλασιαστική σταθερά π.χ., C(n) cn 2 12

Τάξη μεγέθους (1) Σημείωση: η τάξη μεγέθους θεωρείται με κάποια σταθερά καθώς n Παράδειγμα: Πόσο ταχύτερα θα τρέξει ένας αλγόριθμος σε ένα υπολογιστή δύο φορές ταχύτερο? Πόσο περισσότερο χρόνο θα χρειασθεί η επίλυση προβλήματος με διπλάσιο μέγεθος εισόδου? 13

Τάξη μεγέθους (2) n log 2 n n nlog 2 n n 2 n 3 2 n n! 10 3.3 10 1 3.3 10 1 10 2 10 3 10 3 3.6 10 6 10 2 6.6 10 2 6.6 10 2 10 4 10 6 1.3 10 30 9.3 10 157 10 3 10 10 3 1.0 10 4 10 6 10 9 10 4 13 10 4 1.3 10 5 10 8 10 12 10 5 17 10 5 1.7 10 6 10 10 10 15 10 6 20 10 6 2.0 10 7 10 12 10 18 Τιμές μερικών σημαντικών συναρτήσεων για την ανάλυση αλγορίθμων 14

Ασυμπτωτικός λόγος αύξησης Ένας τρόπος σύγκρισης συναρτήσεων που αγνοεί τους σταθερούς παράγοντες και τα μικρά μεγέθη εισόδου O(g(n)): η κλάση των συναρτήσεων f(n) που μεγαλώνουν όχι γρηγορότερα από τη g(n) Θ(g(n)): η κλάση των συναρτήσεων f(n) που μεγαλώνουν με τον ίδιο ρυθμό όπως η g(n) Ω(g(n)): η κλάση των συναρτήσεων f(n) που μεγαλώνουν τουλάχιστον τόσο γρήγορα όπως η g(n) Δες επόμενα σχήματα 15

Συμβολισμός Ο cg(n) t(n) αδιάφορο n 0 n t(n) O(g(n)) 16

Συμβολισμός Ω t(n) cg(n) αδιάφορο n 0 n t(n) Ω(g(n)) 17

Συμβολισμός Θ c 1 g(n) t(n) c 2 g(n) αδιάφορο n 0 n t(n) Θ(g(n)) 18

Εύρεση ρυθμού αύξησης: Μέθοδος 1 με όρια 0 τάξη αύξησης της T(n) < τάξη αύξησης της g(n) lim n T(n)/g(n) = c>0 τάξη αύξησης της T(n) = τάξη αύξησης της g(n) τάξη αύξησης της T(n) > τάξη αύξησης της g(n) Παραδείγματα: 10n vs. 2n 2 n(n+1)/2 vs. n 2 log b n vs. log c n 19

Κανόνας του L Hôpital Αν lim n f(n) = lim n g(n) = και υπάρχουν οι παράγωγοι f και g, τότε ισχύει lim n f(n) g(n) = lim n Παράδειγμα: logn vs. n f (n) g (n) 20

Εύρεση ρυθμού αύξησης: Μέθοδος 2 με τον ορισμό Η f(n) είναι O(g(n)) αν η τάξη αύξησης της f(n) τάξης αύξησης της g(n) (εντός μίας σταθεράς) Υπάρχει μία θετική σταθερά c και ένας μη αρνητικός ακέραιος n 0 τέτοιος ώστε να ισχύει f(n) c g(n) για κάθε n n 0 Παραδείγματα: 10n είναι O(2n 2 ) 5n+20 είναι O(10n) 21

Βασικές ασυμπτωτικές κλάσεις αποδοτικότητας 1 σταθερή log n λογαριθμική n γραμμική n log n n log n n 2 n 3 τετραγωνική κυβική 2 n εκθετική n! παραγοντική 22

Χρονική αποδοτικότητα επαναληπτικών αλγορίθμων Βήματα της μαθηματικής ανάλυσης επαναληπτικών αλγορίθμων: Αποφασίζουμε την παράμετρο n που δείχνει το μέγεθος της εισόδου Προσδιορίζουμε τη βασική πράξη του αλγορίθμου Προσδιορίζουμε τη χειρότερη, τη μέση, και την καλύτερη περίπτωση για μία είσοδο μεγέθους n Βρίσκουμε την έκφραση C(n) με βάση τη δομή βρόχου του αλγορίθμου Απλοποιούμε την έκφραση με τη βοήθεια τυποποιημένων σχέσεων 23

Ένα απλό παράδειγμα Algorithm MaxElement(A[0..n-1]) // Determines the largest value in a given array // Input: An array A[0..n-1] of real numbers // Output: The value of the largest element in A maxval A[0] for i 1 to n-1 do if A[i]>maxval maxval A[i] return maxval 24

Ένα άλλο απλό παράδειγμα Algorithm UniqueElement(A[0..n-1]) // Check whether all the elements in an array are distinct // Input: An array A[0..n-1] of real numbers // Output: Returns true if all the elements are distinct for i 0 to n-2 do for j i+1 to n-1 do return true if A[i]=A[j] return false 25

Άλλα παραδείγματα Πολλαπλασιασμός πινάκων Ταξινόμηση με επιλογή Ταξινόμηση με εισαγωγή Μυστηριώδης αλγόριθμος 26

Πολλαπλασιασμός πινάκων Algorithm MatrixMultiplication(A[0..n-1,0..n-1], B[0..n-1,0..n-1], C[0..n-1,0..n-1]) // Input: Two n-by-n matrices A and B // Output: Matrix C=AB for i 0 to n-1 do for j 0 to n-1 do C[i,j] 0.0 for k 0 to n-1 do C[i,j] C[i,j]+A[i,k]*B[k,j] return C 27

Ενα τρίτο απλό παράδειγμα Algorithm Binary(n) // Input: A positive decimal integer n // Output: The number of binary digits in n s binary representation count 1 while n>1 do count count+1 n n/2 return count 28

Ταξινόμηση με επιλογή Algorithm SelectionSort(A[0..n-1]) // Input: An array A[0..n-1] of unordered elements // Output: Array A[0..n-1] in ascending order for i 0 to n-2 do min i for j i+1 to n-1 do if A[j]<A[min] min j swap A[i] and A[min] 29

Ταξινόμηση με εισαγωγή Algorithm InsertionSort(A[0..n-1]) // Input: An array A[0..n-1] of unordered elements // Output: Array A[0..n-1] in ascending order for i 0 to n-1 do v A[i] j i-1 while j 0 and A[j] > v do A[j+1]<- A[j] j j-1 A[j+1] v 30

Μυστηριώδης αλγόριθμος for i := 1 to n-1 do max := i; for j := i+1 to n do if A[j,i] > A[max,i] then max := j; for k := i to n+1 do swap A[i,k] with A[max,k]; for j := i+1 to n do for k := n+1 downto i do A[j,k]:=A[j,k]- A[i,k]*A[j,i]/A[i,i]; 31

Χρονική αποδοτικότητα αναδρομικών αλγορίθμων Βήματα της μαθηματικής ανάλυσης αναδρομικών αλγορίθμων: Αποφασίζουμε την παράμετρο n που δείχνει το μέγεθος της εισόδου Προσδιορίζουμε τη βασική πράξη του αλγορίθμου Προσδιορίζουμε τη χειρότερη, τη μέση, και την καλύτερη περίπτωση για μία είσοδο μεγέθους n Σχηματίζουμε για τη C(n) μία αναδρομική εξίσωση με αρχικές συνθήκες το πλήθος των επαναλήψεων που θα εκτελεσθεί η βασική πράξη για μία είσοδο μεγέθους n (εναλλακτικά μπορούμε να μετρήσουμε τις αναδρομικές κλήσεις). Επιλύουμε την αναδρομική εξίσωση για να πετύχουμε μία κλειστή έκφραση ή να εκτιμήσουμε το μέγεθος της λύσης 32

Αναδρομικός υπολογισμός του n! Ορισμός: n! = 1*2* *(n-1)*n Αναδρομικός ορισμός του n!: n! = (n-1)!*n Αλγόριθμος: if n=0 then F(n) := 1 else F(n) := F(n-1) * n return F(n) Αναδρομή για το πλήθος των πολλαπλασιασμών: M(n) = M(n-1) + 1 for n>0 M(0) = 0 Μέθοδος: αντικατάσταση προς τα πίσω 33

Οι πύργοι του Ανόι Πρόβλημα: να μετρήσουμε το πλήθος των κινήσεων Αναδρομή για το πλήθος των κινήσεων: M(n) = M(n-1) + 1 + M(n-1) for n>1 M(1) = 1 1 3 2 34

Οι πύργοι του Ανόι (συνέχεια) Εναλλακτικά: σχηματίζουμε ένα δένδρο για το πλήθος των αναδρομικών κλήσεων Σχόλιο: εγγενής μη αποδοτικότητα n n-1 n-1 2 n-2 n-2 n-2 n-2 2 2 2 1 1 1 1 1 1 1 1 35

Επανεξέταση του «δυαδικού» Algorithm BinRec(n) αλγόριθμου // Input: A positive decimal integer n // Output: The number of binary digits in n s binary representation if n=1 return 1 else return BinRec( n/2 )+1 Αναδρομή για το πλήθος των προσθέσεων: A(n) = A( n/2 ) + 1 for n>1 A(1) = 0 Εφαρμόζουμε την απλοποίηση: n=2 k 36

Υπολογισμός αριθμών Fibonacci (1) Leonardo Fibonacci, 1202. Ακολουθία Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21, Αναδρομή Fibonacci : F(n)=F(n-1)+F(n-2), F(0)=0, F(1)=1 Algorithm F(n): // Computes the n-th Fibonacci number recursively // Input: A nonnegative integer n // Output: The n-th Fibonacci number if n <= 1 return n else return F(n-1)+F(n-2) 37

Υπολογισμός αριθμών Fibonacci (2) 1. Αναδρομικός αλγόριθμος με βάση τον ορισμό 2. Επαναληπτικός ορισμός με ωμή βία 3. Αλγόριθμος με βοήθεια ρητής έκφρασης 4. Αλγόριθμος βασισμένος σε πολλαπλασιασμό πινάκων 38

Υπολογισμός αριθμών Fibonacci (3) Αναδρομικός αλγόριθμος με βάση τον ορισμό Γραμμική ομογενής αναδρομική σχέση 2 ου βαθμού με σταθερούς συντελεστές Χαρακτηριστική εξίσωση Επίλυση F(n) = φ n / 5 φ n / 5 φ = (1+ 5)/2 (golden ratio) F(n) φ n / 5 φ = (1-5)/2 Κατασκευάζουμε ένα δένδρο για το πλήθος των αναδρομικών κλήσεων Οι λύσεις αναδρομικών εξισώσεων δεν είναι πανάκεια 39

Υπολογισμός αριθμών Fibonacci (4) Επαναληπτικός ορισμός με ωμή βία Algorithm F(n): // Computes the n-th Fibonacci number iteratively // Input: A nonnegative integer n // Output: The n-th Fibonacci number F[0] 0; F[1] 1; for i 2 to n do F[i] F[i-1] + F[i-2] return F(n) Πολυπλοκότητα? 40

Υπολογισμός αριθμών Fibonacci (5) Αλγόριθμος με βοήθεια ρητής έκφρασης Με έξυπνη στρογγυλοποίηση της εξίσωσης F(n) φ n / 5 Επαφίεται στον εκθετικό αλγόριθμο Λύσεις: Θ(n), Θ(logn) 41

Υπολογισμός αριθμών Fibonacci (6) Αλγόριθμος με πολλαπλασιασμό πινάκων Ισχύει ότι F(n-1) F(n) F(n) F(n+1) = 0 1 1 1 n για n 1, Υποθέτοντας έναν αποτελεσματικό τρόπο πολλαπλασιασμού δυνάμεων πινάκων, η λύση είναι Θ(logn) 42

Σημαντικοί τύποι αναδρομών Μία πράξη μειώνει το μέγεθος του προβλήματος κατά 1. T(n) = T(n-1) + c T(1) = d Λύση: T(n) = (n-1)c + d γραμμική Ένα πέρασμα από την είσοδο μειώνει το πρόβλημα κατά ένα. T(n) = T(n-1) + cn T(1) = d Λύση: T(n) = [n(n+1)/2 1] c + d τετραγωνική Μία πράξη μειώνει το μέγεθος του προβλήματος κατά το μισό. T(n) = T(n/2) + c T(1) = d Λύση: T(n) = c lg n + d λογαριθμική Ένα πέρασμα από την είσοδο μειώνει το πρόβλημα κατά το μισό. T(n) = 2T(n/2) + cn T(1) = d Λύση: T(n) = cn lg n + d n n log n 43

Μία γενική αναδρομή διαίρει-καιβασίλευε T(n) = at(n/b) + f (n) όπου f (n) Θ(n k ) 1. a < b k T(n) Θ(n k ) 2. a = b k T(n) Θ(n k lg n ) 3. a > b k T(n) Θ(n log b a ) Σημείωση: το ίδιο ισχύει και για O αντί για Θ. 44

Ποια η κλάση αποδοτικότητας size 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 count 11966 24303 39992 53010 67272 78692 91274 113063 129799 140538 45

Σημείωμα Αναφοράς Copyright, Ιωάννης Μανωλόπουλος, Αναστάσιος Γούναρης. «.». Έκδοση: 1.0. Θεσσαλονίκη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.auth.gr/courses/ocrs417/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο [1] http://creativecommons.org/licenses/by-nc-sa/4.0/

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: Ανδρέας Κοσματόπουλος Θεσσαλονίκη, Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.00.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.