Αρχή Εγκλεισµού-Αποκλεισµού (3 σύνολα) Αρχή Εκλεισµού-Αποκλεισµού Η Τάξη των Συναρτήσεων Ορέστης Τελέλης telelis@unipi.g Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς A B C = A + B + C A B B C A C + A B C A + B + C προσµετρά: 2 φορές καθεµία από τις 1, 2, 3. 3 φορές την A B C. A B αφαιρεί: 1 φορά την πληθικότητα της 1 1 φορά την A B C. B C αφαιρεί: 1 φορά την πληθικότητα της 2 1 φορά την A B C. A B 1 3 2 C A C αφαιρεί: 1 φορά την πληθικότητα της 3 1 φορά την A B C. Η A B C χρειάζεται να προστεθεί. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 1 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 2 / 17 Εφαρµογές 1. 100 ϕοιτητές πήγαν στο κυλικείο για καφέ, πίτσα, τυρόπιτα ( 1 έκαστο): Καθένας αγόρασε το πολύ ένα κοµµάτι από κάθε είδος. Ξόδεψαν συνολικά 200. 75 ϕοιτητές ξόδεψαν τουλάχιστον 2 έκαστος. 30 χάλασαν ακριβώς 3. Πόσοι πήγαν µόνο για παρέα; 2. Πόσες λύσεις έχει η x 1 + x 2 + x 3 = 11 στο N 3, για x 1 3, x 2 4, x 3 6; 3. Πόσοι ακέραιοι x { 1, 2,..., 100 } έχουν πρώτο παράγοντα οποιονδήποτε από τους 2, 3, 5 (συµπεριλαµβανοµένων των ιδίων); Παράδειγµα 1 Σύνολα K, Π, T ϕοιτητών που αγόρασαν αντίστοιχα καφέ, πίτσα, τυρόπιτα. Αυτά δεν είναι απαραίτητα ξένα σύνολα! Για παρέα πήγαν ακριβώς 100 K Π T ϕοιτητές. Εφαρµόζουµε την αρχή εγκλεισµού-αποκλεισµού για την K Π T : 30 = K Π T αγόρασαν ένα κοµµάτι από κάθε είδος. 75 = K Π + Π T + K T 2 K Π T αγόρασαν τουλ. 2 είδη. Αρα: K Π + Π T + K T K Π T = 75 + K Π T = 105 K + Π + T = 200 ξοδεύτηκαν συνολικά. Αρα: 100 200 + 105 = 5 ϕοιτητές πήγαν µόνο για παρέα. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 3 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 4 / 17
Παράδειγµα 3: Μέτρηση Ακεραίων Πόσοι ακέραιοι x { 1, 2,..., 100 } έχουν πρώτο παράγοντα οποιονδήποτε από τους 2, 3, 5 (συµπεριλαµβανοµένων των ιδίων); Ακριβώς 100/2 = 50 έχουν πρώτο παράγοντα το 2. Ακριβώς 100/3 = 33 έχουν πρώτο παράγοντα το 3. Ακριβώς 100/5 = 20 έχουν πρώτο παράγοντα το 5. Ακριβώς 100/(2 3) = 16 έχουν πρώτους παράγοντες τους 2 και 3. Ακριβώς 100/(3 5) = 6 έχουν πρώτους παράγοντες τους 3 και 5. Ακριβώς 100/(2 5) = 10 έχουν πρώτους παράγοντες τους 2 και 5. Ακριβώς 100/(2 3 5) = 3 έχουν πρώτους παράγοντες τους 2, 3 και 5. Αρα το Ϲητούµενο πλήθος είναι: 50 + 33 + 20 16 6 10 + 3 = 74 Αρχή Εγκλεισµού-Αποκλεισµού Και η γενίκευση: A 1 A 2 A n = ( n ( 1) k+1 k=1 1 i 1< <i k n ηλαδή, στον υπολογισµό της πληθικότητας της ένωσης: Συµπεριλαµβάνουµε: τις πληθικότητες των συνόλων. Αποκλείουµε: τις πληθικότητες των τοµών ανά ζεύγη. Συµπεριλαµβάνουµε: τις πληθικότητες των τοµών ανά τριάδες. Αποκλείουµε: τις πληθικότητες των τοµών ανά τετράδες. Συµπεριλαµβάνουµε: τις πληθικότητες των τοµών ανά πεντάδες............. ) A i1 A ik Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 5 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 6 / 17 Απόδειξη Αρχής Εγκλεισµού-Αποκλεισµού (1/2) Θ Ο ότι κάθε x (A 1 A n ) προσµετράται στο δεξιό µέλος µία ϕορά. Εστω στοιχείο x που ανήκει σε σύνολα από τα n. Προσµετράται = ( 1) ϕορές, λόγω συµπερίληψης των Ai. Αφαιρείται ( 2) ϕορές, λόγω αφαίρεσης των Ai A j. Προσµετράται ( 3) ϕορές, λόγω συµπερίληψης των Ai A j A k.... Προσµετράται ή Αφαιρείται ( 1) +1( ) ϕορές λόγω του A1 A n. Απόδειξη Αρχής Εγκλεισµού-Αποκλεισµού (2/2) Συνολικά: + + ( 1) +1 1 2 3 Από το διωνυµικό ϑεώρηµα έχουµε την ταυτότητα k=0 ϕορές n n ( 1) k = 0, άρα: k + + ( 1) = 0 0 1 2 Πολλαπλασιάζοντας µε ( 1) και λύνοντας για = 1 λαµβάνουµε: 0 + + ( 1) +1 = 1 1 2 3 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 7 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 8 / 17
Ανω Φράγµα στην Τάξη των Συναρτήσεων Ορισµός. Εστω συναρτήσεις: f : N R και g : N R η (τάξη της) f(n) είναι O( g(n) ) αν υπάρχουν σταθερές C και n 0, τέτοιες ώστε: Η Τάξη των Συναρτήσεων f(n) C g(n) για κάθε n n 0 O( g(n) ) είναι σύνολο συναρτήσεων: O( g(n) ) = { f(n) : f(n) C g(n) για κάθε n n 0, για σταθερές C, n 0 που εξαρτώνται από την f. } Είναι επίσης σωστό να γράφουµε f O( g(n) ). Εχει επικρατήσει να γράφουµε απλώς f(n) = O( g(n) ). Οµως δεν εννοούµε ισότητα! ε γράφουµε: O( g(n) ) = f(n) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 9 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 10 / 17 Ανω Φράγµα στην Τάξη των Συναρτήσεων Παράδειγµα (1/2) cg(n) Παράδειγµα: η f(n) = n 2 + 2n + 1 είναι O(n 2 ). f(n) Παρατηρούµε ότι για n 1 έχουµε n n 2, 1 n 2, εποµένως: f(n) = n 2 + 2n + 1 < n 2 + 2n 2 + n 2 = 4n 2 (Εδώ δε χρησιµοποιούµε απόλυτες τιµές, διότι η f είναι ϑετική για n 1). Εποµένως, µπορούµε να ϑέσουµε n 0 = 1 και C = 4. n 0 f = O(g) Η f(n) µεγαλώνει το πολύ τόσο γρήγορα όσο ένα σταθερό πολλαπλάσιο της g(n), καθώς το n πηγαίνει στο άπειρο. Εναλλακτικά, ϑα µπορούσαµε να ϑέσουµε επίσης n 0 = 2 και C = 3. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 11 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 12 / 17
Παράδειγµα (2/2) «Μεθοδολογία» Εκτίµησης Ανω Φράγµατος 8 6 4 2 n 2 + 2n + 1 4n 2 n 2 Για να δείξουµε f(n) = O( g(n) ), χρειαζόµαστε κατάλληλα C και n 0. Αν υπάρχει ένα τέτοιο Ϲεύγος σταθερών, υπάρχουν άπειρα τέτοια Ϲεύγη: Κάθε Ϲεύγος C, n 0 µε C > C, n 0 > n 0 αποδεικνύει f(n) = O( g(n) ). Οταν δουλεύουµε µε τον ορισµό του O( ), επιλέγουµε n 0 για το οποίο: µπορούµε εύκολα να εκτιµήσουµε την f(n), για κάθε n n 0, 0 0 1 2 3 4 5 µπορούµε να εξάγουµε κατάλληλη σταθ. C από την εκτίµηση της f(n). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 13 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 14 / 17 Παρατηρήσεις Εστω η g(n) = n 2. Τότε, τετριµµένα, g(n) = O(n 2 ). Επίσης: g(n) = O(n 3 ) g(n) = O(n 2 + n + 7) g(n) = O(n 2 + 2n + 1). Από προηγούµενο παράδειγµα όπου δείξαµε ότι f(n) = n 2 + 2n + 1 = O(n 2 ): f(n) = O( g(n) ) και g(n) = O( f(n) ) { } f(n) = O( g(n) ) Αν, λέµε ότι οι f και g είναι ίδιας τάξης. g(n) = O( f(n) ) Πρακτικά σηµαίνει ότι O(f(n)) = O(g(n)), δηλαδή τα δύο σύνολα είναι ίσα. Συναρτήσεις Ιδιας Τάξης Αποδεικνύουµε ότι f(n) = O(g(n)) και g(n) = O(f(n)) O(f(n)) = O(g(n)) Θα δείξουµε ότι O(f(n)) O(g(n)) και O(g(n)) O(f(n)). Εστω αυθαίρετη h O(f(n)), δηλαδή h(n) = O(f(n)). Τότε, υπάρχουν σταθερές C 1, n 1, τέτοιες ώστε: h(n) C 1 f(n), για κάθε n n 1 Επειδή f(n) = O(g(n)), υπάρχουν σταθερές C 1, n 1, τέτοιες ώστε: f(n) C 1 g(n), για κάθε n n 1 Αρα h(n) C 1 C 1 f(n), για κάθε n max{n 1, n 1} και h(n) = O(g(n)). Εποµένως, h O(g(n)) και, τότε O(f(n)) O(g(n)). Οµοίως αποδεικνύεται η αντίστροφη ϕορά της σχέσης υποσυνόλου. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 15 / 17 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 16 / 17
Παραδείγµατα 1. Να δειχθεί ότι 7n 2 = O(n 3 ) 2. Να δειχθεί ότι η n 2 δεν είναι O(n). 3. Αληθεύει ότι n 3 = O(7n 2 ); Ο. Τελέλης Πανεπιστήµιο Πειραιώς Εγκλεισµός-Αποκλεισµός, Τάξη Συναρτήσεων 17 / 17