Προηγούµενο: Ανω Φράγµα στην Τάξη των Συναρτήσεων Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων Ορέστης Τελέλης η (τάξη της) f() είναι O( g() ) αν υπάρχουν σταθερές C και 0, τέτοιες ώστε: f() C g() για κάθε 0 telelis@uipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς O( g() ) είναι σύνολο συναρτήσεων: O( g() ) = { f() : f() C g() για κάθε 0, για σταθερές C, 0 που εξαρτώνται από την f. Είναι επίσης σωστό να γράφουµε f O( g() ). Εχει επικρατήσει να γράφουµε απλώς f() = O( g() ). Οµως δεν εννοούµε ισότητα! ε γράφουµε: O( g() ) = f() Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων / 0 Προηγούµενο: O( )-Ιεραρχία Απλών Συναρτήσεων Σύνοψη Ιδιοτήτων Στον άξονα y απεικονίζεται η τιµή log[f()], για κάθε συνάρτηση f() 0 5! 0 4 0 3 0 0 0 0 4 6 8 0 log log 0 0 0 0 log log log 50 00 50 00 O() O(log log ) O(log ) O((log ) ) Πάντα είναι f() = O(f()) Αν Τότε: f() = O(g()) αf() = O(g()) (α σταθερά) f () = O(g ()) f () = O(g ()) f() = O(h()) g() = O(h()) f () = O(g ()) f () = O(g ()) f () + f () = O(max{ g (), g () ) f() + g() = O(h()) f ()f () = O(g ()g ()) O( ) O() O( ) O( ) O(!) Ανω ϕράγµα τάξης πολυωνύµου είναι ο µεγιστοβάθµιος όρος Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 3 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 4 / 0
Παράδειγµα Να δώσετε f(), g() τέτοιες ώστε: f() O(g()) και g() O(f()) Θεωρούµε τις συναρτήσεις f : N {0, και g : N {0, : f() = { 0 άρτιος περιττός g() = Τότε, για οποιοδήποτε 0 και για οποιοδήποτε C: { άρτιος 0 περιττός υπάρχει άρτιο 0 τέτοιο ώστε f( ) = 0 < = g( ) άρα δε γίνεται g() C f() για κάθε 0. Να δοθεί η καλύτερη δυνατή εκτίµηση O( ) για τις ακόλουθες συναρτήσεις: f() = 3 log(!) + ( + 3) log f() = ( + ) log( + ) + 3 f() = ( 5 + + )/( 3 + ) f() = ( 4 + 5 log )/(7 4 + ) υπάρχει περιττό 0 τέτοιο ώστε f( ) = > 0 = g( ) άρα δε γίνεται f() C g() για κάθε 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 5 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 6 / 0 Παράδειγµα Να δείξετε ότι οι παρακάτω συναρτήσεις είναι ίδιας τάξης: f() = ( + 5)/( + ), g() = (4 3 + 3 )/( + ) Αρκεί Ν Ο f() = O(g()) και g() = O(f()). Για κάθε 5, είναι: + 5 + Για κάθε, είναι: 4 3 + 3 + = 43 + + = 3 + 5 + 43 + + < 43 + 3 + = 4 4 8 + < 8 3 4 + 3 8 + ( + + 5 ) = 8 + 5 + + Ορισµοί για «Αλγεβρική» ιευκόλυνση Μπορούµε να ορίσουµε: O( f() ) + O( g() ) = { h + r : h() = O( f() ), r() = O( g() ) αo( g() ) = { αf() : f() = O( g() ) O( f() )O( g() ) = { h r : h = O( f() ), r = O( g() ) f() + O( g() ) = { f() + h() : h() = O( g() ) f()o( g() ) = { f()h() h() = O( g() ) O( g() ) = { f() = h() h() = O( g() ) Οµως δεν κάνουµε αυθαίρετα πράξεις µε O( ): είναι σύνολα Πριν τα χειριστούµε αλγεβρικά, ας έχουµε υπόψην τους κατάλληλους ορισµούς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 7 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 8 / 0
Ορισµοί για «Αλγεβρική» ιευκόλυνση Από τους ορισµούς και µέσω των ιδιοτήτων που έχουµε δείξει, αποδεικνύονται: O( f() ) + O( g() ) = O(max ( f(), g() ) ) αo( g() ) = O( g() ) O( f() )O( g() ) = O( f()g() ) f() + O( g() ) = O(max ( f(), g() ) ) f()o( g() ) = O( f()g() ) Προσοχή: εν είναι O(g()) = O( g() )! Να δοθεί εκτίµηση O(g()) για καθεµία από τις παρακάτω συναρτήσεις, µε χρήση µιας απλής συνάρτησης g() της µικρότερης δυνατής τάξης. f() = ( 3 + log )(log + ) + (7 log + 9)( 3 + ) f() = ( + )( 3 + 3 ) f() = ( + + 5 )(! + 5 ) f() = ( log + ) + (log + )( + ) Παράδειγµα: Η f() = είναι O() και O(4 ), αλλά όχι O( ). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 9 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 0 / 0 Συµβολισµός Ω( ) Συµβολισµός Ω( ) f() η f() είναι Ω( g() ) αν υπάρχουν σταθερές C και 0, τέτοιες ώστε: cg() f() C g() για κάθε 0 Κατά τα γνωστά, γράφουµε f() = Ω(g()) (αλλά ξέρουµε τι εννοούµε). Θεώρηµα. f() = Ω(g()) αν και µόνο αν g() = O(f()). 0 f = Ω(g) Η f() µεγαλώνει τουλάχιστον τόσο γρήγορα όσο ένα σταθερό πολλαπλάσιο της g(), καθώς το πηγαίνει στο άπειρο. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων / 0
Συµβολισµός Θ( ) η f() είναι fi( g() ) αν υπάρχουν σταθερές C, C και 0, τέτοιες ώστε: C g() f() C g() για κάθε 0 Κατά τα γνωστά, γράφουµε f() = Θ(g()) (αλλά ξέρουµε τι εννοούµε). Προτάσεις (χρήσιµες για την εκτίµηση του Θ( )): f() = Θ(g()) αν και µόνο αν g() = Θ(f()). f() = Θ(g()) αν και µόνο αν f() = O(g()) και g() = O(f()). f() = Θ(g()) αν και µόνο αν f() = O(g()) και f() = Ω(g()). Απόδειξη Πρότασης f() = Θ(g()) αν και µόνο αν f() = O(g()) και g() = O(f()).. f() = Θ(g()) = C g() f() C g(), για κάθε 0. Αρα: 0 : f() C g() = f() = O(g()). 0 : g() C f() = g() = O(f()).. f() = O(g()), g() = O(f()) { f() C g() για g() C f() για Αρα: για κάθε max(, ): C g() f() C g() Εποµένως: f() = Θ(g()) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 3 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 4 / 0 Συµβολισµός Θ( ) c g() Να δείξετε ότι: c g() f() () 8 3 + 5 + 7 = Ω( ) () log a = Θ(log b ), για κάθε δύο ϐάσεις a, b. Αλλαγή βάσης λογαρίθµων: log a = log b log b a = log b a log b Εποµένως για C = C = (log b a) και αποδείξαµε το Ϲητούµενο. 0 (3) Να εξάγετε έκφραση Θ( ) για την τάξη των πολυωνύµων. f = Θ(g) ηλαδή η f() µεγαλώνει ακριβώς τόσο γρήγορα όσο η g(), καθώς το πηγαίνει στο άπειρο. (4) Να εξάγετε έκφραση Θ( ) για την τάξη των κλασµάτων πολυωνύµων. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 5 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 6 / 0
Παράδειγµα 3α: Η Τάξη των Πολυωνύµων Παράδειγµα 3β: Η Τάξη των Πολυωνύµων Εχουµε δείξει p() = O( k ), για p() = k + k + + a 0, 0. Θέτουµε: C =, και 0 = max (, ) a i Μένει να δείξουµε ότι: p() = Ω( k ). Τότε, για κάθε 0 είναι: Παρατήρηση. Μπορούµε να υποθέσουµε ότι > 0: Αν < 0, αρκεί να δείξουµε ότι p() = Ω( k ). Τότε ϑα είναι p() C k για 0, για κατάλληλα 0, C. Εποµένως ϑα ισχύει και p() C k, για τα ίδια 0, C. Αρα ϑα είναι p() = Ω( k ) επίσης. k a i a i i (k ) Παρατηρήστε ότι i (k ), για κάθε i = 0,..., k, και επειδή. Πολλαπλασιάζοντας µε (k ) και τα δύο µέλη: k a i i = ( )a i i a i i Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 7 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 8 / 0 Παράδειγµα 3γ: Η Τάξη των Πολυωνύµων Παράδειγµα 4: Η Τάξη των Κλασµάτων Πολυωνύµων Θεωρούµε τη συνάρτηση r() = p()/q(), όπου: Προσθέτουµε ( /) k και στα δύο µέλη και έχουµε: k a k k a i i Εποµένως: p() k, για κάθε 0. Και είναι C = /, όπως είχαµε ορίσει. Τελικά, p() = Ω( k ). p() είναι πολυώνυµο ϐαθµού k q() είναι πολυώνυµο ϐαθµού λ. Είναι p() = Θ( k ), άρα: C k p() C k για. Είναι q() = Θ( λ ), άρα: C λ q() C λ, για. Εποµένως έχουµε: C k λ p() C q() C k λ, για max{, C Αρα, τελικά r() = Θ( k λ ). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 9 / 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Τάξη Συναρτήσεων 0 / 0