Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων 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 Διαίρει και Βασίλευε γνωστότερη Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: Διαιρούμε.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Ενεργή επιλογή αλγορίθμου, 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 Αναδρομικές Σχέσεις Σχεδίαση & Ανάλυση Αλγορίθμων.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Χρονική Πολυπλοκότητα και Μοντέλα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
Ασυμπτωτικός Συμβολισμός
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Χρονική Πολυπλοκότητα
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Επιστημονικός Υπολογισμός Ι Πρώτο Εργαστήριο Εισαγωγή στο matlab 15 Οκτωβρίου 2010 Γιώργος Δρακόπουλος ΤΜΗΥΠ.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΣΥΣΤΗΜΑΤΑ ΑΥΤΟΜΑΤΟΥ ΕΛΕΓΧΟΥ Ι 7 η Διάλεξη Η ΜΕΘΟΔΟΣ ΤΟΥ ΓΕΩΜΕΤΡΙΚΟΥ ΤΟΠΟΥ ΡΙΖΩΝ  Ορισμός του γεωμετρικού τόπου ριζών Αποτελεί μια συγκεκριμένη καμπύλη,
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
Σήματα και Συστήματα 11 10η διάλεξη. Σήματα και Συστήματα 12 Εισαγωγικά (1) Έστω γραμμικό σύστημα που περιγράφεται από τη σχέση: Αν η είσοδος είναι γραμμικός.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Οι Δομές Δεδομένων Ουρά και Στοίβα
Κεφάλαιο 8 Μέθοδοι ανάλυσης κυκλωμάτων
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Διάλεξη 6: Εξίσωση διάχυσης (συνέχεια)
Δυναμικός Προγραμματισμός
Οι Δομές Δεδομένων Ουρά και Στοίβα
ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Μη Γραμμικός Προγραμματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Προβλήματα Εκχώρησης (Assignment Problems)
Μεταγράφημα παρουσίασης:

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

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

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

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

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 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 Επανεπίσκεψη του «δυαδικού» αλγόριθμου 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ο εξάμηνο32 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 (1)

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

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

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο35 Επαναληπτικός ορισμός με ωμή βία 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ο εξάμηνο36 Αλγόριθμος με βοήθεια ρητής έκφρασης b b με έξυπνη στρογγυλοποίηση της εξίσωσης F(n) ≈ φ n /√5 b b Επαφίεται στον εκθετικό αλγόριθμο b b Λύσεις: Θ(n), Θ(logn) Υπολογισμός αριθμών Fibonacci (5)

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

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο38 Σημαντικοί τύποι αναδρομών: b Μία πράξη μειώνει το μέγεθος του προβλήματος κατά 1. 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ο εξάμηνο39 Μία γενική αναδρομή διαίρει-και-βασίλευε 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ο εξάμηνο40 Επίλυση γραμμικών ομογενών αναδρομικών εξισώσεων με σταθερούς συντελεστές 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