Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Ε. ΠετράκηςΑνάλυση Αλγορίθμων1  Αλγόριθμοι που λύνουν το ίδιο πρόβλημα και είναι το ίδιο σωστοί μπορούν να διαφέρουν σε χρόνο εκτέλεσης και χρήση μνήμης.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Ε. ΠετράκηςΑνάλυση Αλγορίθμων1  Αλγόριθμοι που λύνουν το ίδιο πρόβλημα και είναι το ίδιο σωστοί μπορούν να διαφέρουν σε χρόνο εκτέλεσης και χρήση μνήμης."— Μεταγράφημα παρουσίασης:

1 Ε. ΠετράκηςΑνάλυση Αλγορίθμων1  Αλγόριθμοι που λύνουν το ίδιο πρόβλημα και είναι το ίδιο σωστοί μπορούν να διαφέρουν σε χρόνο εκτέλεσης και χρήση μνήμης  Ένα αργό πρόγραμμα είναι πιθανό να μη χρησιμοποιηθεί  Ένα πρόγραμμα που απαιτεί πολύ μνήμη μπορεί να είναι μην τρέχει στα διαθέσιμα μηχανήματα

2 Ε. ΠετράκηςΑνάλυση Αλγορίθμων2 Μνήμη - Χρόνος  Είναι σημαντικό να μπορείς να προβλέψεις πως ένας αλγόριθμος συμπεριφέρεται σε ένα εύρος πιθανών καταστάσεων  Συνήθως σε διαφορετικές εισόδους  Η έμφαση δίνεται στην σωστή χρήση του χρόνου παρά του χώρου  Η μνήμη είναι φτηνή!

3 Ε. ΠετράκηςΑνάλυση Αλγορίθμων3 Χρόνος Εκτέλεσης  Ο χρόνος για να λυθεί ένα πρόβλημα αυξάνεται με το μέγεθος της εισόδου  Μετρήστε το ρυθμό με τον οποίο ο χρόνος αυξάνεται ως συνάρτηση του μεγέθους της εισόδου  π.χ., γραμμικά, τετραγωνικά, εκθετικά  Αυτή η μέτρηση πρέπει να επικεντρώνεται στα βασικά χαρακτηριστικά του αλγορίθμου παρά σε δευτερεύοντες παράγοντες όπως  Ταχύτητα υπολογιστή, προγραμματιστικά κόλπα, βελτιστοποιήσεις, ποιότητα του μεταγλωττιστή

4 Ε. ΠετράκηςΑνάλυση Αλγορίθμων4 Επιλογή Αλγορίθμου  Μερικές φορές, απλοί αλλά λιγότερο αποδοτικοί αλγόριθμοι προτιμούνται από πιο αποδοτικούς (γρήγορους) αλγορίθμους αν  Οι αποδοτικοί αλγόριθμοι δεν είναι εύκολο να γραφτούν σε πρόγραμμα  Το πρόγραμμα θα αλλάξει σύντομα  Ο χρόνος μπορεί να μην είναι κρίσιμο στοιχείο  Το πρόγραμμα θα τρέχει μόνο λίγες φορές (π.χ., μια φορά το χρόνο)  Το μέγεθος της εισόδου είναι πάντα πολύ μικρό

5 Ε. ΠετράκηςΑνάλυση Αλγορίθμων5 Ταξινόμηση Φυσαλίδας (Βubble Sort)  Μετρήστε τον αριθμό των βημάτων που εκτελούνται από τον αλγόριθμο  Βήμα: βασική λειτουργία, ίσως πολλές πράξεις μαζί for ( i = 1; i < ( n – 1); i ++) for (j = n; j < (i + 1); j --) if ( A[ j – 1 ] > A[ j ] ) // βήμα swap(A[ j ], A[ j – 1 ]); //βήμα  T(n) = c n 2 βήματα

6 Ε. ΠετράκηςΑνάλυση Αλγορίθμων6 Ασύμπτωτη Ανάλυση Αλγορίθμων  Μετράει την αποδοτικότητα ενός αλγορίθμου όσο το μέγεθος της εισόδου μεγαλώνει  Μετράει τον “ρυθμό αύξησης” του χρόνου εκτέλεσης: δηλ. τον ρυθμό με τον οποίο ο χρόνος εκτέλεσης ενός αλγορίθμου μεγαλώνει όσο το μέγεθος της εισόδου γίνεται ‘‘μεγάλο”  Πολυπλοκότητα => Ρυθμός αύξησης χρόνου  Επικεντρώνεται στα πάνω και κάτω όρια του ρυθμού αύξησης χρόνου εκτέλεσης  Μετράει τάξη μεγέθους του αριθμού των βημάτων εκτέλεσης ως συνάρτηση του μεγέθους της εισόδου και αγνοεί όλους τους σταθερούς παράγοντες

7 Ε. ΠετράκηςΑνάλυση Αλγορίθμων7 Ρυθμός Αύξησης  Ως συνάρτηση του με μεγέθους της εισόδου n ένας αλγόριθμος μπορεί να έχει  Γραμμική Πολυπλοκότητα: T(n) = c n  Τετραγωνική Πολυπλοκότητα: T(n) = c n 2  Εκθετική Πολυπλοκότητα: T(n) = c n k  Τ(n) είναι ο αριθμός των βημάτων του αλγόρίθμου  Η διαφορά μεταξύ ενός αλγορίθμου με T(n) = 10n και ενός άλλου με T(n) = 2n 2 είναι τεράστια  Για n > 5 ο γραμμικός αλγόριθμος είναι πολύ πιο γρήγορος παρά το γεγονός ότι έχει μεγαλύτερη σταθερά  Είναι πιο αργός μόνο για μικρότερα n αλλά, για τέτοια n, και οι δύο αλγόριθμοι είναι πολύ γρήγοροι

8 Ε. ΠετράκηςΑνάλυση Αλγορίθμων8

9 Ε. ΠετράκηςΑνάλυση Αλγορίθμων9 Πάνω και Κάτω Όρια  Περιγράψουν πως αυξάνεται ο αριθμός των βημάτων εκτέλεσης ενός αλγορίθμου:  Το πάνω όριο συμβολίζεται με O  Αν f(n) είναι το πάνω όριο του T(n) γράφουμε ότι T(n)  O(f(n))  Το κάτω όριο συμβολίζεται με Ω  Αν g(n) είναι το κάτω όριο του T(n) γράφουμε ότι T(n)  Ω(g(n))  Αν τα πάνω και κάτω όρια είναι ίδια γράφουμε ότι T(n)  Θ(g(n))

10 Ε. ΠετράκηςΑνάλυση Αλγορίθμων10 O (πάνω όριο)  Ορισμός:  Παράδειγμα:

11 Ε. ΠετράκηςΑνάλυση Αλγορίθμων11 Ιδιότητες του O  Είναι μεταβατικό: Αν  Αν

12 Ε. ΠετράκηςΑνάλυση Αλγορίθμων12 Περισσότερα για τα Πάνω Όρια  Μπορεί να υπάρχουν πολλά πάνω όρια  π.χ., T(n) = n 2  O(n 2 ), O(n 3 ) … O(n 100 )  Βρείτε το μικρότερο πάνω όρο!!  Το Ο(n 2 ) δίνει περισσότερη πληροφορία για την ταχύτητα του αλγορίθμου από τα μεγαλύτερα όρια  Το O “κρύβει” τις σταθερές  π.χ., cn 2, c 2 n 2, c!n 2,…c k n 2  O(n 2 )

13 Ε. ΠετράκηςΑνάλυση Αλγορίθμων13 Το O στην Πράξη  Ανάμεσα σε διαφορετικούς αλγορίθμους που λύνουν το ίδιο πρόβλημα, πιο γρήγορος είναι αυτός με μικρότερο O  Θα είναι γρηγορότερος για μεγάλα n  Ο(1) < Ο(log n) < Ο(n) < Ο(n log n) < Ο(n 2 ) < Ο(n 3 ) < …< Ο(2 n ) < O(n n )  Ο(n), Ο(n log n), Ο(n 2 ) < Ο(n 3 ): πολυωνυμικός  Ο(log n): λογαριθμικός  O(n k ), O(2 n ), (n!), O(n n ): εκθετικός!!

14 Ε. ΠετράκηςΑνάλυση Αλγορίθμων n Πολυπλοκότητα 58 min 35 yrs hrs cent 220 da y hrs 21 min 1.0 min min nlogn n sec/εντολή 5050

15 Ε. ΠετράκηςΑνάλυση Αλγορίθμων15 Ω (κάτω όριο)  Ορισμός:  Το g(n) είναι ένα κάτω όριο του ρυθμού αύξησης του f(n)  Το f(n) αυξάνεται γρηγορότερα από το g(n) όσο το n αυξάνεται  π.χ.:T(n) = 6n 2 – 2n + 7=>T(n) σε Ω(n 2 )

16 Ε. ΠετράκηςΑνάλυση Αλγορίθμων16 Περισσότερα για τα Κάτω Όρια  Το Ω παρέχει το κάτω όριο του ρυθμού αύξησης του T(n)  Αν υπάρχουν πολλά κάτω όρια  T(n) = n 4  Ω(n),  Ω(n 2 ),  Ω(n 3 ),  Ω(n 4 )  Βρείτε το μεγαλύτερο=> T(n)  Ω(n 4 )

17 Ε. ΠετράκηςΑνάλυση Αλγορίθμων17 Θ (κοινό όριο)  Αν το κάτω και το πάνω όριο είναι τα ίδια:  π.χ.: T(n) = n n  Θ(n 3 )

18 Ε. ΠετράκηςΑνάλυση Αλγορίθμων18 Θεώρημα: T(n)=Σ α i n i  Θ(n m )  T(n) = α n n m +α n-1 n m-1 +…+α 1 n+ α 0  O(n m ) Απόδειξη: T(n)  |T(n)|  |α n n m |+|α m-1 n m-1 |+…|α 1 n|+|α 0 |  n m {|α m | + 1/n|α m-1 |+…+1/n m-1 |α 1 |+1/n m |α 0 |}   n m {|α m |+|α m-1 |+…+|α 1 |+|α 0 |}  T(n)  O(n m )

19 Ε. ΠετράκηςΑνάλυση Αλγορίθμων19 Θεώρημα (συν.) b)T(n) = α m n m + α m-1 n m-1 +… α 1 n + α 0 >= cn m + cn m-1 + … cn + c >= cn m όπου c = min{α m, α m-1,… α 1, α 0 } => T(n)  Ω(n m ) (a), (b) => Τ(n)  Θ(n m )

20 Ε. ΠετράκηςΑνάλυση Αλγορίθμων20 Θεώρημα: (a) (b) (είτε ή )

21 Ε. ΠετράκηςΑνάλυση Αλγορίθμων21 Αναδρομικές Σχέσεις(1)

22 Ε. ΠετράκηςΑνάλυση Αλγορίθμων22 Σχέση Fibonacci

23 Ε. ΠετράκηςΑνάλυση Αλγορίθμων23 Σχέση Fibonacci (συν.)  Από (a), (b):  Μπορεί να αποδειχτεί ότι F(n)  Θ(φ n ) όπου χρυσός ρυθμός (golden ratio)

24 Ε. ΠετράκηςΑνάλυση Αλγορίθμων24 Δυαδική Αναζήτηση int BSearch(int table[a..b], key, n) { if (a > b) return (– 1) ; int middle = (a + b)/2 ; if (T[middle] == key) return (middle); else if ( key < T[middle] ) return BSearch(T[a..middle – 1], key); else return BSearch(T[middle + 1..b], key); }

25 Ε. ΠετράκηςΑνάλυση Αλγορίθμων25 Ανάλυση της Δυαδικής Αναζήτησης  Έστω n = b – a + 1: το μέγεθος του πίνακα και n = 2 k – 1 για κάποια k (e.g., 1, 3, 5 etc)  Το μέγεθος του κάθε υπό-πίνακα είναι 2 k-1 –1  c: χρόνος εκτέλεσης της πρώτης εντολής  d: χρόνος εκτέλεσης εκτός αναδρομής  T: χρόνος εκτέλεσης

26 Ε. ΠετράκηςΑνάλυση Αλγορίθμων26 Δυαδική Αναζήτηση (συν.)

27 Ε. ΠετράκηςΑνάλυση Αλγορίθμων27 Δυαδική Αναζήτηση για Τυχαίο n  T(n) <= T(n+1) <=...T(u(n)) όπου u(n)=2 k – 1  Για κάποια k: n < u(n) < 2n  Τότε, T(n) d log(2n + 1) + c => T(n)  O(log n)

28 Ε. ΠετράκηςΑνάλυση Αλγορίθμων28 Ταξινόμηση με Συγχώνευση list mergesort(list L, int n) { if (n == 1) return (L); L 1 = κάτω μισό του L; L 2 = πάνω μισό του L; return merge (mergesort(L 1,n/2), mergesort(L 2,n/2) ); } n:μέγεθος του πίνακα L (έστω ότι το L είναι κάποια δύναμη του 2) merge:συγχωνεύει τα ταξινομημένα L 1, L 2 σε ένα ταξινομημένο πίνακα

29 Ε. ΠετράκηςΑνάλυση Αλγορίθμων29

30 Ε. ΠετράκηςΑνάλυση Αλγορίθμων30 Ανάλυση Πολυπλοκότητας [25][57][48][37][12][92][86][33] [2557][3748][1292][3386] [ ][ ] [ ] log 2 N επίπεδα Ν πράξεις σε κάθε επίπεδο => Ο(Ν log 2 N) πολυπλοκότητα

31 Ε. ΠετράκηςΑνάλυση Αλγορίθμων31 Ανάλυση Ταξινόμησης  Δύο τρόποι:  Ανάλυση αναδρομής  Επαγωγή

32 Ε. ΠετράκηςΑνάλυση Αλγορίθμων32 Επαγωγή  Έστω T(n) = O(n log n) τότε το T(n) μπορεί να γραφτεί T(n) 0  Απόδειξη: (1) για n = 1, αληθές αν b >= c 1 (2) Έστω T(k) = a k log k + b για k=1,2,..n-1 (3) για k=n βρίσκουμε ότι T(n) <= a nlog n+b Για k = n/2 : T(n/2) <= a n/2 log n/2 + b γι’ αυτό, το T(n) μπορεί να γραφτεί ως T(n) = 2 {a n/2 log n/2 + b} + c 2 n = a n(log n – 1)+ 2b + c 2 n =

33 Ε. ΠετράκηςΑνάλυση Αλγορίθμων33 Επαγωγή (συν.)  T(n) = a n log n – a n + 2 b + c 2 n  Έστω b = c 1 και a = c 1 + c 2 => T(n) T(n) <= C n log n + B

34 Ε. ΠετράκηςΑνάλυση Αλγορίθμων34 Ανάλυση Αναδρομής  T(n) = 2T(n/2) + c 2 n <= <= 4T(n/4) + 2 c 2 n <= <= 8T(n/8) + 3 c 2 n <= ……  T(n) <= 2 i T(n/2 i ) + ic 2 n όπου n = 2 i  T(n) T(n) T(n) T(n) <= C n log n

35 Ε. ΠετράκηςΑνάλυση Αλγορίθμων35 Καλύτερες, Χειρότερες, Μέσες Περιπτώσεις  Κάποιοι αλγόριθμοι εξαρτώνται από τις τιμές της εισόδου  π.χ., σειριακή αναζήτηση σε ένα πίνακα μεγέθους n  χειρότερη-περίπτωση: στοιχείο δεν ανήκει στον πίνακα => T(n) = n  καλύτερη-περίπτωση: στοιχείο πρώτο στον πίνακα =>T(n) = 1  μέση-περίπτωση: στοιχείο ανάμεσα στο 1, n =>T(n) = n/2... n συγκρίσεις

36 Ε. ΠετράκηςΑνάλυση Αλγορίθμων36 Σύγκριση  Η καλύτερη-περίπτωση δεν είναι αντιπροσωπευτική διότι συμβαίνει σπάνια  Η χειρότερη-περίπτωση είναι πολύ χρήσιμη  Ο αλγόριθμος αποδίδει τουλάχιστον τόσο καλά όσο δείχνει η χειρότερη περίπτωση και αυτό πρέπει να είναι γνωστό σε εφαρμογές πραγματικού χρόνου  Η μέση-περίπτωση αντιπροσωπεύει την τυπική συμπεριφορά του αλγορίθμου  Η γνώση για την κατανομή (πιθανότητα) των τιμών δεδομένων είναι απαραίτητη για να δούμε ποια περίπτωση είναι χρήσιμη (όχι πάντα γνωστή)


Κατέβασμα ppt "Ε. ΠετράκηςΑνάλυση Αλγορίθμων1  Αλγόριθμοι που λύνουν το ίδιο πρόβλημα και είναι το ίδιο σωστοί μπορούν να διαφέρουν σε χρόνο εκτέλεσης και χρήση μνήμης."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google