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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δένδρα van Emde Boas TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μελετάμε την περίπτωση όπου αποθηκεύουμε.
Advertisements

Εισαγωγή στους Η/Υ Πίνακες.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΕΠΛ231 – Δομές Δεδομένων και Αλγόριθμοι
Μαθηματικοί Υπολογισμοί Χειμερινό Εξάμηνο η Διάλεξη Επίλυση Εξισώσεων Νοέμβρη 2002.
Δομές Δεδομένων - Δυαδικά Δένδρα (binary trees)
Αλγόριθμοι Ι Κάθε καλώς ορισμένη υπολογιστική διαδικασία, η οποία καλείται να επιλύσει ένα συγκεκριμένο πρόβλημα εντός πεπερασμένου χρόνου. Αλγόριθμος.
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Σχεδίαση Αλγορίθμων Προτεινόμενα βιβλία:
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΠΡΟΒΛΗΜΑΤΑ ΜΕΤΑΦΟΡΑΣ Β. Κώστογλου – Τμήμα Πληροφορικής ΑΤΕΙ-Θ
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Δυναμικός Προγραμματισμός
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Αριθμητικές Μέθοδοι Βελτιστοποίησης Θεωρία & Λογισμικό Τμήμα Πληροφορικής - Πανεπιστήμιο Ιωαννίνων Ι. Η. Λαγαρής.
Σχεδίαση αλγορίθμων (2ο μέρος)
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Διαίρει και Βασίλευε γνωστότερη Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: Διαιρούμε.
Ενεργή επιλογή αλγορίθμου, Active Algorithm Selection, Feilong Chen and Rong Jin Εύα Σιταρίδη.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Ωμή Βία Είναι μία άμεση προσέγγιση που βασίζεται στην εκφώνηση του προβλήματος και τους ορισμούς.
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Διάλεξη 9η: Εφαρμογή της μεθόδου Simplex στο γραμμικό προγραμματισμό κατά τη μεγιστοποίηση Μέθοδος Simplex 1.Όταν υπάρχουν μέχρι πέντε κλάδοι παραγωγής.
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Μερικές Διαφορικές Εξισώσεις ΙΙ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Eξάμηνο 4ο1 Μείωσε και Βασίλευε Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο.
Ταξινόμηση και Αναζήτηση
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Μετασχημάτισε και Κυριάρχησε Μπορούμε να επιλύσουμε ένα πρόβλημα με μετασχηματισμό σε: b απλοποίηση.
Χωρικοί-χρονικοί συμβιβασμοί
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Ενότητα 1.2 Αναδρομικές Σχέσεις Σχεδίαση & Ανάλυση Αλγορίθμων.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Χρονική Πολυπλοκότητα και Μοντέλα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΒΕΣ 06: Προσαρμοστικά Συστήματα στις Τηλεπικοινωνίες © 2007 Nicolas Tsapatsoulis Προσαρμοστικοί Αλγόριθμοι Υλοποίησης Βέλτιστων Ψηφιακών Φίλτρων: Ο αλγόριθμος.
Ασυμπτωτικός Συμβολισμός
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Χρονική Πολυπλοκότητα
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Επιστημονικός Υπολογισμός Ι Πρώτο Εργαστήριο Εισαγωγή στο matlab 15 Οκτωβρίου 2010 Γιώργος Δρακόπουλος ΤΜΗΥΠ.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΣΥΣΤΗΜΑΤΑ ΑΥΤΟΜΑΤΟΥ ΕΛΕΓΧΟΥ Ι 7 η Διάλεξη Η ΜΕΘΟΔΟΣ ΤΟΥ ΓΕΩΜΕΤΡΙΚΟΥ ΤΟΠΟΥ ΡΙΖΩΝ  Ορισμός του γεωμετρικού τόπου ριζών Αποτελεί μια συγκεκριμένη καμπύλη,
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
Σήματα και Συστήματα 11 10η διάλεξη. Σήματα και Συστήματα 12 Εισαγωγικά (1) Έστω γραμμικό σύστημα που περιγράφεται από τη σχέση: Αν η είσοδος είναι γραμμικός.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Κεφάλαιο 8 Μέθοδοι ανάλυσης κυκλωμάτων
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Διάλεξη 6: Εξίσωση διάχυσης (συνέχεια)
Δυναμικός Προγραμματισμός
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Μη Γραμμικός Προγραμματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Μεταγράφημα παρουσίασης:

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

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

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

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

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

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο7 Παράδειγμα: Σειριακή αναζήτηση b b Χειρότερη περίπτωση b b Καλύτερη περίπτωση b b Μέση περίπτωση 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 k do i  i+1 If i<n return i else return -1

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο9 Τάξη μεγέθους b Σημείωση b Σημείωση: η τάξη μεγέθους θεωρείται με κάποια σταθερά καθώς n→∞ b Παράδειγμα b Παράδειγμα: Πόσο ταχύτερα θα τρέξει ένας αλγόριθμος σε ένα υπολογιστή δύο φορές ταχύτερο? Πόσο περισσότερο χρόνο θα χρειασθεί η επίλυση προβλήματος με διπλάσιο μέγεθος εισόδου?

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο10 Τάξη μεγέθους (2) Τιμές μερικών σημαντικών συναρήσεων για την ανάλυση αλγορίθμων

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο12 Συμβολισμός Ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο13 Συμβολισμός Ω

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο14 Συμβολισμός Θ

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο15 Εύρεση ρυθμού αύξησης: Μέθοδος 1 – με όρια lim n→∞ T(n)/g(n) = T(n)g(n) 0 τάξη αύξησης της T(n) < τάξη αύξησης της g(n) T(n)g(n) c>0 τάξη αύξησης της T(n) = τάξη αύξησης της g(n) 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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο16 Κανόνας του L’Hôpital b Αν lim n→∞ f(n) = lim n→∞ g(n) = ∞ και υπάρχουν οι παράγωγοι f´ και g´, τότε ισχύει f(n)f(n)g(n)g(n)f(n)f(n)g(n)g(n)lim n→∞ = f ´(n) g ´(n) lim n→∞ b Παράδειγμα: logn vs. n

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο17 b b Η f(n) είναι O(g(n)) αν η τάξη αύξησης της f(n) ≤ τάξης αύξησης της g(n) (εντός μίας σταθεράς) b b Υπάρχει μία θετική σταθερά c και ένας μη αρνητικός ακέραιος n 0 τέτοιος ώστε να ισχύει f(n) ≤ c g(n) για κάθε n ≥ n 0 Παραδείγματα Παραδείγματα: b b 10n είναι O(2n 2 ) b b 5n+20 είναι O(10n) Εύρεση ρυθμού αύξησης: Μέθοδος 2 – με τον ορισμό

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο18 Βασικές ασυμπτωτικές κλάσεις αποδοτικότητας 1σταθερή log nλογαριθμική nγραμμική n log n n2n2 τετραγωνική n3n3 κυβική 2n2n εκθετική n!παραγοντική

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο20 Ένα απλό παράδειγμα 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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο21 Ένα άλλο απλό παράδειγμα 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 if A[i]=A[j] return false return true

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο22 Άλλα παραδείγματα b b Πολλαπλασιασμός πινάκων b b Ταξινόμηση με επιλογή b b Ταξινόμηση με εισαγωγή b b Μυστηριώδης αλγόριθμος

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο23 Πολλαπλασιασμός πινάκων 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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο24 ‘Ενα τρίτο απλό παράδειγμα 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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο25 Ταξινόμηση με επιλογή 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]

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο26 Ταξινόμηση με εισαγωγή 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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο27 Μυστηριώδης αλγόριθμος 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];

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

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο30 Οι πύργοι του Ανόι b Πρόβλημα b Πρόβλημα: να μετρήσουμε το πλήθος των κινήσεων b Αναδρομή για το πλήθος των κινήσεων b Αναδρομή για το πλήθος των κινήσεων: M(n) = M(n-1) M(n-1) for n>1 M(1) = 1

Οι πύργοι του Ανόι (συνέχεια) b Εναλλακτικά b Εναλλακτικά: σχηματίζουμε ένα δένδρο για το πλήθος των αναδρομικών κλήσεων b Σχόλιο b Σχόλιο: εγγενής μη αποδοτικότητα Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο31

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο32 Επανεπίσκεψη του «δυαδικού» αλγόριθμου b 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 b Αναδρομή για το πλήθος των προσθέσεων: A(n) = A(└n/2┘) + 1 for n>1 A(1) = 0 A(1) = 0 b Εφαρμόζουμε την απλοποίηση: n=2 k

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο34 b Leonardo Fibonacci, b Ακολουθία Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21, … b Αναδρομή Fibonacci : F(n)=F(n-1)+F(n-2), F(0)=0, F(1)=1 b 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) Υπολογισμός αριθμών Fibonacci (2)

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο36 Επαναληπτικός ορισμός με ωμή βία b b 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) b b Πολυπλοκότητα ? Υπολογισμός αριθμών Fibonacci (4)

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο37 Αλγόριθμος με βοήθεια ρητής έκφρασης b b F(n) = φ n /√5 – φ’ n /√5 φ = (1+√5)/2 (golden ratio)φ’ = (1-√5)/2 b b με έξυπνη στρογγυλοποίηση της εξίσωσης F(n) ≈ φ n /√5 b b Επαφίεται στον εκθετικό αλγόριθμο b b Λύσεις: Θ(n), Θ(logn) Υπολογισμός αριθμών Fibonacci (5)

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο38 Αλγόριθμος με πολλαπλασιασμό πινάκων b b Ισχύει ότι για n≥1, b b Υποθέτοντας έναν αποτελεσματικό τρόπο πολλαπλασιασμού δυνάμεων πινάκων, η λύση είναι Θ(logn) F(n-1) F(n) F(n) F(n+1) = n Υπολογισμός αριθμών Fibonacci (6)

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο39 Σημαντικοί τύποι αναδρομών: b Μία πράξη μειώνει το μέγεθος του προβλήματος κατά ένα. T(n) = T(n-1) + cT(1) = d Λύση: T(n) = (n-1)c + dγραμμική b Ένα πέρασμα από την είσοδο μειώνει το πρόβλημα κατά ένα. T(n) = T(n-1) + cn T(1) = d Λύση: T(n) = [n(n+1)/2 – 1] c + dτετραγωνική b Μία πράξη μειώνει το μέγεθος του προβλήματος κατά το μισό. T(n) = T(n/2) + cT(1) = d Λύση: T(n) = c lg n + dλογαριθμική b Ένα πέρασμα από την είσοδο μειώνει το πρόβλημα κατά το μισό. T(n) = 2T(n/2) + cnT(1) = d Λύση: T(n) = cn lg n + d nn log n

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο40 Μία γενική αναδρομή διαίρει-και-βασίλευε T(n) = aT(n/b) + f (n) όπου f (n) ∈ Θ(n k ) a < b k T(n) ∈ Θ(n k ) a = b k T(n) ∈ Θ(n k lg n ) a > b k T(n) ∈ Θ( n log b a ) Σημείωση Σημείωση: το ίδιο ισχύει και για O αντί για Θ.

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο41 Επίλυση γραμμικών ομογενών αναδρομικών εξισώσεων με σταθερούς συντελεστές b b Πρώτα τα εύκολα: 1 ης τάξης C(n) = a C(n -1) C(0) = t … Λύση: C(n) = t a n b b 2 ης τάξης L(n) = a L(n-1) + b L(n-2) … Μία λύση?: L(n) = r n b b Χαρακτηριστική εξίσωση (τετραγωνική) b b Επιλύουμε για να πάρουμε τις ρίζες r 1 και r 2 π.χ.: A(n) = 3A(n-1) - 2(n-2) b b Γενική λύση: γραμμικός συνδυασμός των r 1 n και r 2 n b b Συγκεκριμένη λύση: χρησιμοποιούμε τις αρχικές συνθήκες. π.χ.: A(0) = 1 A(1) = 3

Ποια η κλάση αποδοτικότητας Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο42