Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ΠΛΗ30 ΜΑΘΗΜΑ 1.5

6,085 views

Published on

1) Η αναδρομή Τ(n)=aT(n-b)+c
1.1) Επίλυση με την Μέθοδο της Επανάληψης
2) Η αναδρομή Τ(n)=T(n-1)+f(n)
2.1) Επίλυση με την Μέθοδο της Επανάληψης
3) Η αναδρομή T(n)=T(n/a)+T(n/b)+f(n)
3.1) Επίλυση με τη Μέθοδο των Φραγμάτων
3.2) Επίλυση με το Δένδρο Αναδρομής
3.3) Επίλυση με τη Δραστηριότητα 3.6
Ασκήσεις

Published in: Education
  • Be the first to comment

  • Be the first to like this

ΠΛΗ30 ΜΑΘΗΜΑ 1.5

  1. 1. ΠΛΗ30 ΕΝΟΤΗΤΑ 1: ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 1.5: Η αναδροµική σχέση T(n)=aT(n-b)+f(n) Η αναδροµική σχέση T(n)=T(n/a)+T(n/b)+f(n)Η αναδροµική σχέση T(n)=T(n/a)+T(n/b)+f(n) ∆ηµήτρης Ψούνης
  2. 2. ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήµατος B. Μεθοδολογία Ασκήσεων 1. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε τη Μέθοδο της Επανάληψης 2. Η αναδροµή T(n)=T(n-1)+f(n) 1. Επίλυση µε τη Μέθοδο της Επανάληψης 2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 1. Επίλυση µε τη Μέθοδο των Φραγµάτων 2. Επίλυση µε το ∆ένδρο της Αναδροµής 3. Επίλυση µε την ∆ραστ.3.6 Γ.Ασκήσεις
  3. 3. Α. Σκοπός του Μαθήµατος Οι στόχοι του µαθήµατος είναι: Επίπεδο Α Η δραστηριότητα 3.6 για την επίλυση της T(n)=T(n/a)+T(n/b)+f(n) Η µέθοδος επανάληψης για την επίλυση της T(n)=T(n-1)+f(n) Επίπεδο Β 3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Επίπεδο Β Το δένδρο αναδροµής για την επίλυση της T(n)=T(n/a)+T(n/b)+f(n) Η µέθοδος επανάληψης για την επίλυση της T(n)=aT(n-b)+c Επίπεδο Γ Η µέθοδος υπολογισµού φραγµάτων για την επίλυση της T(n)=T(n/a)+T(n/b)+f(n)
  4. 4. B. Μεθοδολογία Ασκήσεων Η αναδροµή T(n)=aT(n-b)+f(n) 4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) H επίλυση της αναδροµικής σχέσης T(n)=aT(n-b)+f(n) γίνεται µε την µέθοδο επανάληψη. Θα µελετήσουµε δύο ειδικές περιπτώσεις αυτής της αναδροµής: Αν f(n)=c, οπότε προκύπτει η αναδροµή T(n)=aT(n-b)+c και απαιτεί την κλασική µέθοδο της επανάληψης που είδαµε και στο προηγούµενο µάθηµα.µάθηµα. Αν a=1, προκύπτει η αναδροµή T(n)=T(n-b)+f(n) που λύνεται µε έναν εύκολο και εµπειρικό τρόπο που αποτελεί παραλλαγή της µεθόδου επανάληψης. Η γενική µορφή της αναδροµής για κάθε a, b, f(n) είναι εκτός ύλης.
  5. 5. Β. Μεθοδολογία Ασκήσεων 1. Η αναδροµή T(n)=aT(n-b)+c 5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Η αναδροµική σχέση T(n)=aT(n-b)+c λύνεται µε την µέθοδο επανάληψης ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΕΠΑΝΑΛΗΨΗΣ 1. Κάνουµε 3 εφαρµογές της αναδροµικής σχέσης (Μέχρι να φτάσουµε στην µορφή ) 2. Εκτίµηση της σειράς που προκύπτει µετά από k επαναλήψεις (Μας ( ) ....3...)( +−⋅= bnTnT ( )+−⋅=καθοδηγεί ο όρος ) 3. Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η συνθήκη τερµατισµού της αναδροµής και λύνουµε ως προς k). Π.χ. αν n0=0 τότε n/b 4. Αντικατάσταση του k στον αναδροµικό τύπο του βήµατος 2. 5. Υπολογισµός του αθροίσµατος που προέκυψε. ( ) .......)( +−⋅= kbnTnT 0nkbn =−
  6. 6. B. Μεθοδολογία Ασκήσεων 1. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 1: 3 εφαρµογές του κανόνα) 6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 1ο βήµα εφαρµόζουµε τον αναδροµικό κανόνα 3 φορές και κάνουµε τις πράξεις που προκύπτουν. ΠΑΡΑ∆ΕΙΓΜΑ: Να λύσετε την αναδροµή: Λύση: ( )    = >+− = 0,1 0,225 )( n nnT nT αν αν Λύση: ( ) ( )[ ] ( ) ( )[ ] ( ) 22525652252655 2254522455 225)( 232 2 +⋅+⋅+−=+⋅++−= +⋅+−=++−= +−= nTnT nTnT nTnT
  7. 7. B. Μεθοδολογία Ασκήσεων 1. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 2: Εκτίµηση στο βήµα k) 7∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 2ο βήµα εκτιµάµε την σειρά που θα προκύψει µετά από k επαναλήψεις (Μας καθοδηγεί ο όρος (…συνέχεια…) ( ) .......)( +−⋅= kbnTnT ( ) ... 2252565)( 23 == =+⋅+⋅+−= nTnT ( ) 22525...2525 ... 21 +⋅+⋅++⋅+−= == −kk knT
  8. 8. B. Μεθοδολογία Ασκήσεων 1. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 3: Υπολογισµός του k) 8∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η συνθήκη τερµατισµού της αναδροµής και λύνουµε ως προς k). (…συνέχεια…) 0nkbn =− (…συνέχεια…) Η αναδροµή σταµατά όταν 2/ 2 02 nk kn kn = ⇒= ⇒=−
  9. 9. B. Μεθοδολογία Ασκήσεων 1. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 4: Αντικατάσταση του k) 9∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Αντικαθιστούµε το k που βρήκαµε στην παράσταση που προέκυψε στο βήµα 2. Θα πρέπει να απαλειφθεί ο αναδροµικός όρος µε την συνθήκη τερµατισµού της αναδροµής. (…συνέχεια…) Θέτοντας k=n/2 στην Τ(n) έχουµε: ( ) 22525...255 22525...2505)( 212/2/ 212/2/ +⋅+⋅++⋅+= +⋅+⋅++⋅+= − − nn nn TnT
  10. 10. B. Μεθοδολογία Ασκήσεων 1. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 5: Υπολογισµός αθροίσµατος) 10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Το άθροισµα που προκύπτει υπολογίζεται µε τον γνωστό τύπο του υπολογισµού αθροίσµατος όρων γεωµετρικής προόδου: (…συνέχεια…) ∑= + − − = n i n i x x x 0 1 1 1 Θέτοντας k=n/2 στην Τ(n) έχουµε: 5,055,1 )15(5,05 15 15 25 525 ]5...551[25 ]25...25252[5 22525...255)( 2/ 2/2/ 112/ 2/ 12/ 0 2/ 12/22/ 12/22/ 212/2/ −⋅= =−+= = − − += =+= =+++++= =⋅++⋅+⋅++= =+⋅+⋅++⋅+= +− − = − − − ∑ n nn n n n i in nn nn nn nT
  11. 11. Β. Μεθοδολογία Ασκήσεων 2. Η αναδροµή T(n)=T(n-b)+f(n) 11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Η αναδροµική σχέση T(n)=T(n-1)+f(n) λύνεται µε την µέθοδο επανάληψης ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΕΠΑΝΑΛΗΨΗΣ 1. Γράφουµε όλους τους αναδροµικούς όρους T(n), T(n-1),… µέχρι και την οριακή περίπτωση της αναδροµής 2. Προσθέτουµε τις εξισώσεις κατά µέλη 3. Υπολογίζουµε το άθροισµα που προκύπτει
  12. 12. B. Μεθοδολογία Ασκήσεων 2. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 1: Γράψιµο των όρων) 12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 1ο βήµα γράφουµε όλους τους αναδροµικούς όρους από το T(n) µέχρι και τον όρο T(n0) όπου n0 είναι η οριακή περίπτωση της αναδροµής ΠΑΡΑ∆ΕΙΓΜΑ: Να λύσετε την αναδροµή: Λύση: ( )1 3 , 0 ( ) 1, 0 T n n n T n n αν αν  − + > =  = Λύση: 1)0( 13)0()1( 23)1()2( ... )2(3)3()2( )1(3)2()1( 3)1()( = ⋅+= ⋅+= −+−=− −+−=− +−= T TT TT nnTnT nnTnT nnTnT
  13. 13. B. Μεθοδολογία Ασκήσεων 2. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 2: Πρόσθεση κατά µέλη) 13∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 2ο βήµα προσθέτουµε κατά µέλη τις σχέσεις που έχουµε γράψει στο προηγούµενο βήµα: 3)1()( +−= nnTnT 1)0( 13)0()1( 23)1()2( ... )2(3)3()2( )1(3)2()1( 3)1()( = ⋅+= ⋅+= −+−=− −+−=− +−= T TT TT nnTnT nnTnT nnTnT )(+ 11323...)2(3)1(33)( +⋅+⋅++−+−+= nnnnT
  14. 14. B. Μεθοδολογία Ασκήσεων 2. Η αναδροµή T(n)=aT(n-b)+c 1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 3: Υπολογισµός του αθροίσµατος) 14∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 3ο βήµα υπολογίζουµε το άθροισµα που προκύπτει που συνήθως θα είναι αριθµητική πρόοδος. Χρήσιµα θα φανούν τα εξής αθροίσµατα: ∑= + = n i nn i 1 2 )1( ∑= ++ = n i nnn i 1 2 6 )12)(1( ∑= + Θ= n i kk ni 1 1 )( (µόνο µε υπόδειξη) (συνέχεια…) 15,15,1 2 )1( 3131 ])1()2(...21[31 3)1(3)2(3...23131 11323...)2(3)1(33)( 2 1 ++= = + +=+= +−+−++++= +−+−++⋅+⋅+= +⋅+⋅++−+−+= ∑= nn nn i nnn nnn nnnnT n i
  15. 15. B. Μεθοδολογία Ασκήσεων Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 15∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) H επίλυση της αναδροµικής σχέσης T(n)=T(n/a)+T(n/b)+f(n) γίνεται: Με εφαρµογή της δραστηριότητας 3.6 (αν ) Με το δένδρο αναδροµής (Αν ) 1 11 ≤+ ba 1 11 >+ ba Με το δένδρο αναδροµής (Αν ) Υπάρχει και η µέθοδος υπολογισµού φραγµάτων την οποία δεν θα εφαρµόζουµε ποτέ, παρά µόνο αν µας το ζητάνε ρητά! 1>+ ba
  16. 16. Β. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 16∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Η αναδροµική σχέση T(n)=T(n/a)+Τ(n/b)+f(n) λύνεται µε την µέθοδο του δένδρου αναδροµής ΒΗΜΑΤΑ ΤΟΥ ∆ΕΝ∆ΡΟΥ ΑΝΑ∆ΡΟΜΗΣ 1. Ανάπτυξη του ∆ένδρου Αναδροµικών Κλήσεων µέχρι και µε το 2ο επίπεδο 2. Σε κάθε κόµβο σηµειώνουµε πόσες πράξεις γίνονται (από το f(n))2. Σε κάθε κόµβο σηµειώνουµε πόσες πράξεις γίνονται (από το f(n)) 3. Υπολογισµός πράξεων ανά επίπεδο (συνήθως γεωµετρική πρόοδος) 4. Υπολογισµός του ύψους του δένδρου (Είναι logcn µε c το ελάχιστο από τα a,b) 5. T(n)=το άθροισµα των πράξεων όλων των επιπέδων
  17. 17. B. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 1. Επίλυση µε το δένδρο αναδροµής (Βήµα 1: Ανάπτυξη δένδρου µέχρι 2ο επίπεδο) 17∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 1ο βήµα αναπτύσσουµε το δένδρο αναδροµικών κλήσεων εµφανίζοντας µόνο τους αναδροµικούς όρους (όπως θα γινόντουσαν οι κλήσεις στον αντίστοιχο αναδροµικό κώδικα). ΠΑΡΑ∆ΕΙΓΜΑ: Να λύσετε την αναδροµή:     = >+      +      = 1,1 1, 32)( n nn n T n T nT αν αν Λύση:  =1,1 nαν )(nT       2 n T       3 n T       4 n T 3963 2642 32 )( nn T n T n T nn T n T n T n n T n TnT +      +      =      +      +      =      +      +      = ΠΡΟΧΕΙΡΟ       6 n T       6 n T       9 n T N N N NO O O O
  18. 18. B. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 1. Επίλυση µε το δένδρο αναδροµής (Βήµα 2: Πράξεις σε κάθε κόµβο) 18∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 2ο βήµα σηµειώνουµε σε κάθε κόµβο πόσες πράξεις γίνονται σε αυτήν την αναδροµική κλήση (καθορίζεται από τον όρο που έχουµε εµφανίσει αντικαθιστώντας το f(n) ) (…συνέχεια…) )(nT       2 n T       3 n T       4 n T       6 n T       6 n T       9 n T n 2 n 3 n 4 n 6 n 6 n 9 n 3963 2642 32 )( nn T n T n T nn T n T n T n n T n TnT +      +      =      +      +      =      +      +      = ΠΡΟΧΕΙΡΟ N N N NO O O O
  19. 19. B. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 1. Επίλυση µε το δένδρο αναδροµής (Βήµα 3: Πράξεις ανα επίπεδο) 19∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 3ο βήµα προσθέτουµε ανά επίπεδο τις πράξεις για να µας βγει ένα κλάσµα. Προσοχή ότι πάντα θα µας βγαίνει ότι είναι µια γεωµετρική πρόοδος. Εκτιµάµε πόσες πράξεις γίνονται στο επίπεδο i. (…συνέχεια…) )(nT       2 n T       3 n T       4 n T       6 n T       6 n T       9 n T n 2 n 3 n 4 n 6 n 6 n 9 n Επιπεδο 0: n Επιπεδο 1: 6 5 6 2 6 3 32 nnnnn =+=+ Επιπεδο 2: 2 2 6 5 ... 9664 nnnnn ==+++ Άρα στο επίπεδο i γίνονται πράξειςi i n 6 5
  20. 20. B. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 1. Επίλυση µε το δένδρο αναδροµής (Βήµα 4: Υπολογισµός ύψους δένδρου) 20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 4ο βήµα υπολογίζουµε το ύψος του δένδρου. Το ύψος του δένδρου καθορίζεται από ποιος όρος από τους n/a kai n/b θα φτάσει πιο αργά να γίνει ίσος µε το n0, δηλαδή λύνοντας την εξίσωση n/min{a,b}=n0 Εµπειρικά το ύψος του δένδρου καθορίζεται από τον µικρότερο από τους δύο παρονοµαστές και συγκεκριµένα είναι αν c είναι ο µικρότερος από τους δύο παρονοµαστές (δηλ. c=min{a,b} ) έπεται ότι το ύψος του δένδρου είναι logcn.παρονοµαστές (δηλ. c=min{a,b} ) έπεται ότι το ύψος του δένδρου είναι logcn. (…συνέχεια…) Το ύψος του δένδρου είναι log2n
  21. 21. B. Μεθοδολογία Ασκήσεων 2. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 1. Επίλυση µε το δένδρο αναδροµής (Βήµα 5: Υπολογισµός αθροίσµατος) 21∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Στο 5ο βήµα υπολογίζουµε την πολυπλοκότητα ως το άθροισµα των πράξεων όλων των επιπέδων. Θα είναι πάντα µια γεωµετρική πρόοδος. Άρα θα χρησιµοποιήσουµε τον τύπο: (…συνέχεια…) ∑= + − − = n i n i x x x 0 1 1 1 Συνεπώς οι πράξεις είναι: ( ) log log 0 0 log 1 log 0 log 1 5 ( ) 5 6 6 5 1 5 6 56 1 6 6 0,83 6 i n ni i ii i n i n i n n T n n n n n n = = + = + = = =   −     = = =    − = ⋅ − ∑ ∑ ∑
  22. 22. Β. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 2. Επίλυση µε τα φράγµατα 22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Η αναδροµική σχέση T(n)=T(n/a)+Τ(n/b)+f(n) λύνεται µε την µέθοδο των φραγµάτων ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΤΩΝ ΦΡΑΓΜΑΤΩΝ 1. Υπολογισµός κάτω φράγµατος µε το µεγαλύτερο από τα a και b και το θεώρηµα κυριαρχίας. 2. Υπολογισµός άνω φράγµατος µε το µικρότερο από τα a και b και το θεώρηµα κυριαρχίας. 3. Αν το κάτω φράγµα είναι ίσο µε το άνω φράγµα έχουµε ασυµπτωτική εκτίµηση της συνάρτησης πολυπλοκότητας. Αλλιώς η µέθοδος
  23. 23. Β. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 2. Επίλυση µε τα φράγµατα 23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Αρχικά γράφουµε τις δύο αναδροµικές σχέσεις µέσω των οποίων θα υπολογίσουµε το άνω και το κάτω φράγµα. Το άνω φράγµα θα προκύψει µε το µικρότερο από τα a,b και το κάτω φράγµα θα προκύψει µε το µεγαλύτερο από τα a,b ΠΑΡΑ∆ΕΙΓΜΑ: Να υπολογίσετε µια ασυµπτωτική εκτίµηση της αναδροµής: 2 43 )( n n T n TnT +      +      = Λύση: Το άνω φράγµα θα προκύψει από την επίλυση της αναδροµικής σχέσης: Και το κάτω φράγµα θα προκύψει από την επίλυση της αναδροµικής σχέσης: 2 ( ) 2 3 n n n   Α = Α +    2 ( ) 2 4 n n n   Κ = Κ +   
  24. 24. Β. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 2. Επίλυση µε τα φράγµατα (1. Υπολογισµός του άνω φράγµατος) 24∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Ο υπολογισµός του άνω φράγµατος θα γίνει µε το θεώρηµα κυριαρχίας. Υπολογισµός άνω φράγµατος 2 3 2)( n n AnA +      = 63,02loglog,)(,3,2 2 ===== annfbaΈχω: Ισχύει: για κάποια σταθερά ε>0 Ελέγχω αν υπάρχει c<1 τέτοιο ώστε: Άρα ισχύει για 2/9 ≤ c < 1. Άρα από την Γ’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι: Άρα 63,02loglog,)(,3,2 3 2 ===== annfba b )()( 63,02 ε+ Ω== nnnf )()( 2 nnA Θ= ccn n cn n ncf n fncf b n af ≤⇔≤⇔≤      ⇔≤      ⇔≤      9 2 3 2 3 2)( 2 4)( 2 2 2 2 2 )()( 2 nnT Ο=
  25. 25. Β. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 2. Επίλυση µε τα φράγµατα (2. Υπολογισµός του κάτω φράγµατος) 25∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Ο υπολογισµός του άνω φράγµατος θα γίνει µε το θεώρηµα κυριαρχίας. Υπολογισµός κάτω φράγµατος 2 4 2)( n n KnK +      = 5,02loglog,)(,4,2 2 ===== annfbaΈχω: Ισχύει: για κάποια σταθερά ε>0 Ελέγχω αν υπάρχει c<1 τέτοιο ώστε: Άρα ισχύει για 1/8 ≤ c < 1. Άρα από την Γ’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι: Άρα 5,02loglog,)(,4,2 4 2 ===== annfba b )()( 5,02 ε+ Ω== nnnf )()( 2 nnK Θ= cccn n cn n ncf n fncf b n af ≤⇔≤⇔≤⇔≤      ⇔≤      ⇔≤      8 1 16 2 4 2 4 2)( 2 4)( 3 2 2 3 2 )()( 2 nnT Ω=
  26. 26. Β. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 2. Επίλυση µε τα φράγµατα (3. Συµπέρασµα για την ασυµπτωτική πολ/τα) 26∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Αν το άνω φράγµα και το κάτω φράγµα είναι ίδια, τότε έχουµε ασυµπτωτική εκτίµηση της πολυπλοκότητάς του. (...συνέχεια…) Συνεπώς από τα προηγούµενα: )()( 2 nnT Ο= Αν τα φράγµατα είναι διαφορετικά, η µέθοδος των φραγµάτων έχει αποτύχει! Ισχύει: και Συνεπώς )()( 2 nnT Ο= )()( 2 nnT Ω= )()( 2 nnT Θ=
  27. 27. Β. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 3. Επίλυση µε την δραστηριότητα 3.6 27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Η αναδροµική σχέση T(n)=T(n/a)+Τ(n/b)+f(n) λύνεται και µε την δραστηριότητα 3.6 του βιβλίου ΒΗΜΑΤΑ ΤΗΣ ∆ΡΑΣΤΗΡΙΟΤΗΤΑΣ 3.6 Υπολογίζουµε την ποσότητα ba 11 + 1. Αν τότε 2. Αν τότε 3. Αν τότε η δραστηριότητα 3.6 έχει αποτύχει και πάµε υποχρεωτικά µε δένδρο αναδροµής ba + 1 11 <+ ba ))(()( nfnT Θ= 1 11 =+ ba )log)(()( nnfnT ⋅Θ= 1 11 >+ ba
  28. 28. B. Μεθοδολογία Ασκήσεων 3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n) 3. Επίλυση µε την δραστηριότητα 3.6 (Παραδείγµατα) 28∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) Η εφαρµογή της δραστηριότητας 3.6 είναι πολύ εύκολη διότι µας δίνει έτοιµη την λύση σε κάποιες αναδροµές. ΠΑΡΑ∆ΕΙΓΜΑ: Να υπολογίσετε µια ασυµπτωτική εκτίµηση της αναδροµής: Λύση: 2 43 )( n n T n TnT +      +      = Λύση: Ισχύει: άρα από την δραστ.3.6 ισχύει: ΠΑΡΑ∆ΕΙΓΜΑ: Να υπολογίσετε µια ασυµπτωτική εκτίµηση της αναδροµής: Λύση: Ισχύει: άρα από την δραστ.3.6 ισχύει: 1 12 7 12 3 12 4 4 1 3 1 <=+=+ )()( 2 nnT Θ= n n T n TnT +      +      = 3 2 3 )( 1 3 3 3 2 3 1 ==+ )log()( nnnT ⋅Θ=
  29. 29. Γ. Ασκήσεις Εφαρµογή 1 Υπολογίστε την ακριβή λύση των αναδροµών µε την µέθοδο επανάληψης: 29∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) ( )4 3 5, 0 ) ( ) 0, 0 T n n A T n n αν αν  − + > =  = 2 0, 0 ( 1) 2 , 0 ) ( ) 1, 0 n T n n n B T n n αν αν αν =  − + > =  =
  30. 30. Γ. Ασκήσεις Εφαρµογή 2 Υπολογίστε ασυµπτωτική εκτίµηση των αναδροµών χρησιµοποιώντας το δένδρο αναδροµής: 30∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)     = >+      +      = 1,1 1, 43)() 2 n nn n T n T nTA αν αν     = >+      +      =  = 1,1 1, 3 2 3)() 1,1 n nn n T n T nTB n αν αν αν
  31. 31. Γ. Ασκήσεις Εφαρµογή 3 Χρησιµοποιείστε την µέθοδο υπολογισµού φραγµάτων για την επίλυση της αναδροµής 31∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) 2 3 2 2 )( n n T n TnT +      +      =
  32. 32. Γ. Ασκήσεις Εφαρµογή 4 Υπολογίστε µια ασυµπτωτική εκτίµηση των αναδροµών 32∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) log 44 3 )() n n T n TnTA +      +      = 2 3 23 2 )() 65 2 )() n n T n TnTC n n T n TnTB +      +      = +      +      =
  33. 33. Γ. Ασκήσεις Εφαρµογή 5 Για την επίλυση ενός προβλήµατος έχουµε στην διάθεσή µας τρείς αλγόριθµούς. • (A1) Ο πρώτος αλγόριθµος για επιλύσει ένα πρόβληµα µεγέθους n, επιλύει αναδροµικά επτά υποπροβλήµατα µεγέθους n/3 το καθένα και συνδυάζει τις λύσεις τους σε χρόνο n3. 33∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n) • (A2) Ο δεύτερος αλγόριθµος για να επιλύσει ένα πρόβληµα µεγέθους n, επιλύει αναδροµικά δέκα υποπροβλήµατα µεγέθους n/2 το καθένα και συνδυάζει τις λύσεις τους σε χρόνο n. • (A3) Ο τρίτος αλγόριθµος επιλύει ένα υποπρόβληµα µεγέθους n-1 και βρίσκει την λύση του αρχικού προβλήµατος σε χρόνο n3. Να βρεθούν οι ασυµπτωτικοί χρόνοι επίλυσης του προβλήµατος για τον κάθε αλγόριθµο, και να επιλέξετε τον ταχύτερο αλγόριθµο για την επίλυση του προβλήµατος. ΥΠΟ∆ΕΙΞΗ: Μπορείτε να χρησιµοποιήσετε ότι ∑= Θ= n i ni 1 43 )(

×