Αλγόριθμοι Μάρθα Σιδέρη epl333 lect 011 1 ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 0% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία. Οι πρόοδοι είναι προαιρετικές και το ποσοστό μετράει μόνο αν ανεβάζουν την τελική βαθμολογία. Για να περάσετε το μάθημα πρέπει προσέλθετε στο τελικό διαγώνισμα πάρετε βαθμό τουλάχιστον 3,5/10. Ώρες Φροντιστηρίου ευτέρα 1:00-3:00 Π, αρχίζει την επόμενη Τετάρτη Τετάρτη 1-3 15:00 3 epl333 lect 011 1
Προηγούμενο μάθημα: πρόβλημα Σταθερός γάμος (stable marriage) Κάθε γυναίκα βάζει σε σειρά προτίμησης όλους τους άνδρες Κάθε άνδρας βάζει σε σειρά προτίμησης όλες τις γυναίκες Υπάρχει σταθερό ταίριασμα; Μπορούμε να το βρούμε γρήγορα; Παρουσιάσαμε αλγόριθμο και εξετάσαμε τα ερωτήματα: Τερματίζει; Είναι ορθός; Είναι γρήγορος; O ( ) epl333 lect 011 3 Θέλουμε οι αλγόριθμοί μας να τρέχουν γρήγορα! Πώς κάνουμε την έννοια «γρήγορος αλγόριθμος» κάτι πιο συγκεκριμένο??? Υπάρχει πάντα ο αλγόριθμος να ψάξουμε όλες τις δυνατές λύσεις. Π.χ. Στο σταθερό γάμο: Να εξετάσουμε όλα τα δυνατά σύνολα ζευγών, ένα- ένα.! ταιριάσματα epl333 lect 011 4
Για κάθε ένα από τα! ταιριάσματα Ελέγχουμε αν υπάρχουν ζευγάρια ( mw, ) και ( m', w') Που προκαλούν «αστάθεια» δηλαδή, ο m προτιμά την w από την w και η w προτιμά τον m από τον m. Ένας αλγόριθμος θεωρείται γρήγορος αν, όταν τον αναλύσουμε, είναι σημαντικά καλύτερος από το να ψάχναμε όλες τις λύσεις... epl333 lect 011 5 Ένας αλγόριθμος θεωρείται γρήγορος, αν ο χρόνος εκτέλεσης είναι πολυωνυμικός Τι σημαίνει πολυωνυμικός αλγόριθμος?? Στην χειρότερη περίπτωση εισόδου μήκους N, ο αλγόριθμος κάνει cn cn d :Συνάρτηση και c, d σταθερές (δεν εξαρτώνται από το Ν) d υπολογιστικά βήματα μέχρι να σταματήσει. epl333 lect 011 6 3
Γρήγοροι αλγόριθμοι Είσοδος Ν, cn cn d υπολογιστικά βήματα d :Συνάρτηση και c, d σταθερές (δεν εξαρτώνται από το Ν) 1. Πώς μετράμε το μήκος εισόδου Ν;. Σε ποια γλώσσα προγραμματισμού τα βήματα;; 3. Είναι σωστή αυτή η θεώρηση γρήγορου αλγορίθμου? epl333 lect 011 7 3. Είναι σωστή αυτή η θεώρηση γρήγορου αλγορίθμου? 100?? 1 0.log?? Τέτοιες συναρτήσεις δεν παρουσιάζονται στην πράξη Κάθε γενίκευση έχει και τα αντιπαραδείγματά της Όταν το γίνει πολύ μεγάλο, πάντα τα πολυώνυμα έχουν μικρότερη τιμή από τις εκθετικές συναρτήσεις. epl333 lect 011 8 4
epl333 lect 011 9 Ασυμπτωτικός συμβολισμός Επέζησε όλα αυτά τα χρόνια... Kuth 1968 Αλλά τώρα πια με το web έχουμε δει καθαρά τη σημασία του... Ναι, πολύ μεγάλο μέγεθος εισόδου αλγορίθμων υπάρχει στην πράξη! epl333 lect 011 10 5
Ένας αλγόριθμος θεωρείται γρήγορος, αν ο χρόνος εκτέλεσης είναι πολυωνυμικός Είσοδος Ν, cn d c, d σταθερές (δεν εξαρτώνται από το Ν) υπολογιστικά βήματα 1. Είναι σωστή αυτή η θεώρηση γρήγορου αλγορίθμου? Ναι, είναι λογική απλούστευση και βοηθάει ιδιαίτερα.. Πώς μετράμε το μήκος εισόδου Ν; Όπως θέλουμε, αρκεί να σχετίζονται πολυωνυμικά οι παραστάσεις. 3. Σε ποια γλώσσα προγραμματισμού τα βήματα;; Οποία θέλουμε, αρκεί κάθε εντολή να έχει σταθερό αριθμό βημάτων σε μια απλή γλώσσα (assembly). epl333 lect 011 11 Μέγεθος εισόδου? 8390 epl333 lect 011 1 6
Μέγεθος εισόδου? 5 8390 1cm cm Φυσικό μήκος- = cm # bits - = 17 bits # ψηφίων - = 5 digits Τιμή - = 8390 Τι είναι λογικό epl333 lect 011 13 Μήκος εισόδου 5 8390 1cm cm Φυσικό μήκος- = cm... # of bits - = 17 bits λογικό # ψηφίων - = 5 ψηφία λογικό Τιμή - = 8390 Παράλογο # of bits = log (Τιμής) Τιμή = # of bits epl333 lect 011 14 7
Μήκος εισόδου? 14,3,5,30,31,5,6,79,88,98 epl333 lect 011 15 Μήκος εισόδου 10 14,3,5,30,31,5,6,79,88,98 αριθμός στοιχείων = 10 στοιχεία epl333 lect 011 16 8
Μήκος εισόδου 10 14,3,5,30,31,5,6,79,88,98 # στοιχείων - = 10 Είναι λογικό? epl333 lect 011 17 Μήκος εισόδου 10 14,3,5,30,31,5,6,79,88,98 # στοιχείων - = 10 ~ Λογικό Αν κάθε στοιχείο έχει σταθερό αριθμό bits c # bits = c * # στοιχείων epl333 lect 011 18 9
Πως μετράμε βήματα? Έχει νόημα να πούμε «ο τάδε αλγόριθμος με είσοδο κάνει.5 85 9 βήματα»? ΟΧΙ Οι σταθερές εξαρτώνται από παράσταση εισόδου και ψευδογλώσσα. Έχει πολύ περισσότερη λεπτομέρεια από όση χρειαζόμαστε... epl333 lect 011 19 Πρώτο παράδειγμα αλγορίθμου για να μετρήσουμε χρόνο...isertio sort isertio sort(a) {for i= to do { j=i; while (A[j] < A[j-1] ad j>1) {swap(a[j], A[j-1]); j--;}}} epl333 lect 011 0 10
Τρέξιμο aimatios isertio sort(a) 5 1 706348 {for i= to do 5 1 7 0 6 3 4 8 { j=i; while (A[j] < A[j-1] ad j>1) 5 7 1 0 6 3 4 8 {swap(a[j], A[j-1]); j--;}}} 5 7 1 0 6 3 4 8 5 6 7 1 0 3 4 8 3 5 6 7 1 0 4 8 3 4 5 6 7 1 0 8 3 4 5 6 7 8 1 0 epl333 lect 011 1 Είναι ο αλγόριθμός αυτός γρήγορος? Είναι καλύτερος από το να απαριθμούσαμε όλες τις μεταθέσεις των αριθμών και για κάθε μια να ελέγχαμε αν είναι ταξινομημένη? epl333 lect 011 11
Πόσο γρήγορος είναι? μήκος εισόδου (πόσους αριθμούς έχουμε) {for i=todo -1 επαναλήψεις { j=i; -1 επαναλήψεις while (A[j] < A[j-1] ad j>1) t t t t επαναλήψεις 3 4... {swap(a[j], A[j-1]); j--;}}} t t3 t4 t 1 1 1... 1 t j αριθμός στοιχείων, με τα οποία κανουμε swap το j 1 epl333 lect 011 3 Ανάλυση isertio sort Ακριβής ανάλυση τα t j εξαρτώνται από την είσοδο Καλύτερη περίπτωση (best case) sorted όλα τα t j = 1 πράξεις c+d Χειρότερη ρηπερίπτωση η( (worst case) όλα τα t j =j epl333 lect 011 4 1
j j Συνολικός αριθμός βημάτων: άθροιση... Ασυμπτωτικά Γιατί?? epl333 lect 011 5 Είναι ο x (x>) πρώτος; αλγόριθμος prime(x) /* x > { y=; repeat if (mod(x, y)= = 0) {write(x δεν είναι πρώτος); exit;} else y=y+1; util y<=x; write(x είναι πρώτος); } Εκθετική πολυπλοκότητα! Υπάρχει γρήγορος αλγόριθμος? ΝΑΙ! epl333 lect 011 6 13
Γιατί εκθετική πολυπλοκότητα? Μήκος εισόδου =#των bits (κωδικοποίηση στο δυαδικό) δ Αριθμός βημάτων = τιμή του # of bits = log (Τιμής) Τιμή = # of bits epl333 lect 011 7 Ασυμπτωτικός συμβολισμός (otatio) Θέλουμε να βρούμε άνω όρια στο χρόνο εκτέλεσης T() ενός αλγορίθμου, θετικές τιμές. T ( ) Of ( ( )) Η f() είναι άνω όριο στην T(), ένα πολλαπλάσιο της f() είναι άνω όριο στην Τ() για αρκετά μεγάλα epl333 lect 011 8 14
Παράδειγμα αν : pqr,, 0 T ( ) p q r p q r ( pqr) 0, T( ) c, c p q r T ( ) O ( ) epl333 lect 011 9 Isertio sort j j ( )/ T ( ) O ( ) T() p q r ( p q r), άρα 1 1 epl333 lect 011 30 15
Ασυμπτωτικός συμβολισμός (otatio) συγκρίνουμε συναρτήσεις f( ): f (g) = f (g) f (g) epl333 lect 011 31 cg() f() 0 f 0 Og ( ) epl333 lect 011 3 16
epl333 lect 011 33 Ασυμπτωτικός συμβολισμός (otatio) f (g) epl333 lect 011 34 17
Παράδειγμα: pqr,, 0 T ( ) p q r p T 0, T( ) c, c p ( ) ( ) epl333 lect 011 35 Παράδειγμα: pqr,, 0 T ( ) p q r p p 0, T( ) c, c p T ( ) ( ) epl333 lect 011 36 18
Ασυμπτωτικός συμβολισμός (otatio) f (g) «Το ακριβές όριο...» epl333 lect 011 37 Παράδειγμα: pqr,, 0 T () p qr Αποδείξαμε ότι: T ( ) O ( ) T ( ) ( ) } T ( ) ( ) epl333 lect 011 38 19
Σχέση μεταξύ, O, epl333 lect 011 39 f ( ) O( g( )) σημαίνει c : c g( ) είναι πάνω όριο στη f ( ) f ( ) ( g( )) σημαίνει c : cg( ) είναι κάτω όριο στη f ( ) f ( ) ( g( )) σημαίνει c, c : c g( ) είναι πάνω όριο στη f ( ) 1 1 c g( ) είναι κάτω όριο στη f ( ) cc, 1, c σταθερές! εν μας ενδιαφέρουν μικρές τιμές του epl333 lect 011 40 0
Χρήσιμη ιδιότητα Ιδιότητα: f Oh ( ), g Oh ( ) f g Oh ( ) c : f ( ) ch( ) 0 ' } c ': g( ) c' h( ) 0 f ( ) g( ) ( cc') h( ) max(, ) ' 0 0 Προφανώς γενικεύεται για περισσότερες από συναρτήσεις.. epl333 lect 011 41 3 Παραδείγματα 100 6 O ( ) Επειδή για C=3 και για κάθε 3 1006 3 epl333 lect 011 4 1
Παράδειγμα O( ) 0, c 1, epl333 lect 011 43 Παράδειγμα..συνέχεια ( )? Χρειαζόμαστε σταθερά μικρότερη του 1, έστω c=1/3 1 1:1 3 4 : 4 4 3 3 : 9 6 3!!!... 1 ( ) 3 3 ( ) epl333 lect 011 44
Παράδειγμα...συνέχεια ( ) c c 1 c 1/3, c 1, 3 1 0 epl333 lect 011 45 Προσοχή! Υπάρχουν πολλοί συνδυασμοί c1, c, 0 για την διπλή ανισότητα: c c 1 Αρκεί ένας, οποιοσδήποτε... ή epl333 lect 011 46 3
Τι είναι όλα αυτά?? Δεν καταλαβαίνω τίποτα... Ο ασυμπτωτικός συμβολισμός είναι τρόπος να συγκρίνουμε (..χοντροειδώς) συναρτήσεις για να δούμε ποία έχει μεγαλύτερες τιμές. Τι χρειάζεται? Ο χρόνος (υπολογιστικά βήματα) αλγορίθμου είναι συνάρτηση του μήκους της εισόδου. Αν υπολογίσουμε τα βήματα ενός αλγορίθμου είναι πολύπλοκη συνάρτηση, χρειάζεται να την συγκρίνουμε με μια πιο απλή. epl333 lect 011 47 Και γιατί τα κάνουμε όλα αυτά? Για να ξέρουμε αν η διαδικασία που σκεφτήκαμε για να λύσουμε ένα πρόβλημα είναι «έξυπνη», δηλαδή καλλίτερη από το να ψάχναμε όλες τις λύσεις....και πόσο ακριβώς «έξυπνη» είναι! Πριν την υλοποιήσουμε... Δίχως να χρειαστεί να δοκιμαστεί... epl333 lect 011 48 4
Γιατί κάναμε όλες αυτές τις πράξεις με πολυώνυμα? Τα πολυώνυμα μας ενδιαφέρουν πολύ ως συναρτήσεις βημάτων. Πολυωνυμικός χρόνος σημαίνει «γρήγορος» αλγόριθμος. Όλοι οι αλγόριθμοι του μαθήματος είναι πολυωνυμικοί! epl333 lect 011 49 Τελικά, τι λέγαμε τόση ώρα για τα πολυώνυμα? Ότι ΚΑΘΕ πολυώνυμο ανεξάρτητα από τους συντελεστές του αυξάνεται ακριβώς τόσο γρήγορα ασυμπτωτικά όσο ο μεγαλύτερος εκθέτης. Π.χ. 1 4 3 4 00 4 50 ( ) 8 x x x x x Τόση ώρα μόνο αυτό??? Προσπαθούσαμε να το αποδείξουμε τυπικά με βάση τους ορισμούς. epl333 lect 011 50 5
Χρησιμοποιείται στην πράξη ο ασυμπτωτικός συμβολισμός, ή είναι από τα πράγματα που ποτέ δεν θα δούμε μετά το μάθημα? Για κάθε διαδικασία που υλοποιείτε η σχεδιάζετε θα πρέπει να ξέρετε πόσο γρήγορη είναι. Σιγά, σιγά, με την εμπειρία, δεν χρειάζονται πράξεις, γίνεται αυτόματα... Είσαστε στο σημείο αυτό?? epl333 lect 011 51 Τώρα, στην αρχή, πριν την φάση που μου έχει γίνει σχεδόν αυτόματο (και για τις εξετάσεις και ασκήσεις...) τι κάνω για να πω ότι f () (()) g Δύο τρόποι epl333 lect 011 5 6
f () (()) g Τρόπος α. 1.Αποδεικνύουμε ότι δηλαδή βρίσκουμε c, 0 με δοκιμές δηλαδή βρίσκουμε.αποδεικνύουμε ότι c', epl333 lect 011 53 0 ' με δοκιμές f () (()) g Τρόπος β. f ( x ) lim L 0 x gx ( ) epl333 lect 011 54 7
Γιατί οι δύο τρόποι είναι ακριβώς το ίδιο?? (Χρειάζεται να το πούμε?) s: f ( x ) L xs epl333 lect 011 55 f( x) lim L 0 x gx ( ) 1 L 1 f( ) : L L g ( ) 0 0 f ( ) Lg( ) f( ) O( g( )) 1 f ( ) Lg ( ) f( ) ( g ( )) Άρα υπάρχει c L 1 c' L epl333 lect 011 56 8
Παράδειγμα απόδειξης με όρια: τρόπος (χρειάζεται?) ( )? 1 (1 ) 1 lim lim lim (1 ) 1 epl333 lect 011 57 Από όσα είπαμε έως τώρα, τα ελάχιστα που πρέπει να θυμάστε είναι: 1. Για να δούμε πόσο γρήγορος είναι ένας αλγόριθμος: Μετράμε βήματα Παραλείπουμε σταθερές Από τα πολυώνυμα κρατάμε τον όρο με το μεγαλύτερο βαθμό. Οι κύριες ομάδες αλγορίθμων είναι: a ( ), 1 log... a πολυωνυμικοί, γρήγοροι ( a ): a1 εκθετικοί 3. Ιεραρχία συναρτήσεων epl333 lect 011 58 9
Μερικοί ακόμα κανόνες, που χρησιμεύουν συχνά: Κάθε λογάριθμος αυξάνεται αργότερα ρ από κάθε πολυώνυμο ανεξάρτητα βάσης και εκθέτη x b0, x0: log O( ) Εκθέτες μικρότεροι θετικοί μικρότεροι από 1 b Γιατί? epl333 lect 011 59 Μερικοί ακόμα κανόνες, που χρησιμεύουν συχνά: Κάθε εκθετική συνάρτηση αυξάνεται γρηγορότερα από κάθε πολυωνυμική, ανεξάρτητα εκθέτη και βάσης d r 1, d 0 : O( r ) epl333 lect 011 60 30
Μερικοί ακόμα κανόνες, που χρησιμεύουν συχνά: Όσο μεγαλύτερη είναι η βάση της εκθετικής συνάρτησης, τόσο γρηγορότερα αυξάνεται r s 1: s O ( r ) s ( r ) epl333 lect 011 61 Μερικοί ακόμα κανόνες, που χρησιμεύουν συχνά: Ποιο είναι το ασυμπτωτικό όριο του Είναι αργότερο από όλες τις εκθετικές συναρτήσεις! 134...! Επειδή όλοι οι αριθμοί είναι μικρότεροι από το 1 3... ( 1)... ( )! Επειδή όλοι οι αριθμοί είναι μεγαλύτεροι από / epl333 lect 011 6 31
( )! Προσέγγιση Stirlig 1! ( ) (1 ( )) e epl333 lect 011 63 3