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

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

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

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


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

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

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

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

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

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 n2 βήματα Ε. Πετράκης Ανάλυση Αλγορίθμων

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

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

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

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

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

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

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

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

14 1000 500 200 n 100 20 Πολυπλοκότητα 58min 35yrs 1.0 2.7hrs 0.1 .0001 125cent 220day 1.1 .4 27hrs 21min 1.0min 10 .08 2min 25 4.0 .25 .04 4.5 1.5 .6 .3 .9 1000nlogn .5 .2 .1 .02 1000n 10-6 sec/εντολή 50 Ε. Πετράκης Ανάλυση Αλγορίθμων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

32 Επαγωγή Έστω T(n) = O(n log n) τότε το T(n) μπορεί να γραφτεί T(n) <= a n log n + b , a, b > 0 Απόδειξη: (1) για n = 1, αληθές αν b >= c1 (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} + c2 n = a n(log n – 1)+ 2b + c2 n = Ε. Πετράκης Ανάλυση Αλγορίθμων

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

34 Ανάλυση Αναδρομής T(n) = 2T(n/2) + c2 n <=
…… T(n) <= 2i T(n/2i) + ic2n όπου n = 2i T(n) <= n T(1) + c2 n log n => T(n) <= n c1 + c2 n log n => T(n) <= (c1 + c2) n log n => T(n) <= C n log n Ε. Πετράκης Ανάλυση Αλγορίθμων

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

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


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

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


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