1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #10: Αλγόριθμοι Διαίρει & Βασίλευε: Master Theorem, Αλγόριθμοι Ταξινόμησης, Πιθανοτικός Αλγόριθμος Μέσου, Ντετερμινιστικός Αλγόριθμος Μέσου, Άλλοι Αλγόριθμοι Διαίρει & Βασίλευε Άσκηση #1 Αποφανθείτε αν οι ακόλουθες προτάσεις είναι Σωστές ή Λανθασμένες και αιτιολογήστε συνοπτικά την απάντησή σας. Σε όλες τις περιπτώσεις δίνεται ότι T(1)=1. a. Η εξίσωση T( ) = 3 T( ) + 15έχει ασυμπτωτική λύση Ο() 4 b. Η εξίσωση T ( ) = 6 T( ) + 1 έχει ασυμπτωτική λύση Θ( ) c. Η εξίσωση T( ) = T( ) + + 5 έχει ασυμπτωτική λύση O( ) d. Η εξίσωση T ( ) = 16 T( ) + έχει ασυμπτωτική λύση O( ) 4 Υπόδειξη: Σε όλες τις περιπτώσεις, αρκεί να εφαρμόσω την απλουστευμένη μορφή του Master Theorem Έστω Τότε: c, m k T ( ) =, όπου: f ( ) =Θ ( ), k 0, a 1, b> 1, c 0, 0 at ( ) + f ( ), > m b 1) Αν α>b k logb, η ασυμπτωτική λύση είναι T ( ) =Θ( a ) ) Αν α= b k, η ασυμπτωτική λύση είναι T( ) =Θ( k log ) 3) Αν α< b k k, η ασυμπτωτική λύση είναι T ( ) =Θ( ) b Οπότε, από το Master Theorem και τους κανόνες για τις ασυμπτωτικές σχέσεις μεταξύ των συναρτήσεων, προκύπτει εύκολα ότι: a. Σωστό b. Λάθος c. Σωστό d. Λάθος
Άσκηση # (Λύθηκε στο Φροντιστήριο #11) Να λυθεί η ακόλουθη αναδρομική εξίσωση και να δώσετε το Θ όριο της ασυμπτωτικής T ( 1) +, > 0 πολυπλοκότητάς της: T ( ) = 1, = 0 Υπόδειξη: Επειδή προφανώς δεν μπορούμε να χρησιμοποιήσουμε το Master Theorem, θα ακολουθήσουμε τη μέθοδο των διαδοχικών αντικαταστάσεων. T ( ) = T ( 1) + = T ( ) + 1+ = = T ( 3) + + 1 + =... ( + 1) = T(0) + 1+ +... + = 1+ που προφανώς είναι Θ( ) Άσκηση #3 Δίνονται οι ακόλουθοι αλγόριθμοι διαίρει και βασίλευε. Να περιγράψετε τη λειτουργικότητά τους, να δώσετε την αναδρομική εξίσωση που τους περιγράφουν και να υπολογίσετε την πολυπλοκότητά τους. 1. Ταχύς Μετασχηματισμός Fourier. Πολλαπλασιασμός δύο ακεραίων από -bits ο καθένας ασυμπτωτικά ταχύτερα από Ο( ) 3. Πολλαπλασιασμός πινάκων μεγέθους x με τον αλγόριθμο του Strasse 4. Αλγόριθμος ταξινόμησης mergesort 5. Αλγόριθμος ταξινόμησης quicksort 6. Αλγόριθμος δυαδικής αναζήτησης (biary search) Υπόδειξη: Η λειτουργικότητα συζητήθηκε αναλυτικά στο φροντιστήριο και έχει παρουσιαστεί διεξοδικά στις διαλέξεις. Οι αναδρομικές σχέσεις και οι πολυπλοκότητες έχουν ως εξής: 1. T ( ) = T( ) + O ( ) με ασυμπτωτική λύση Θ ( log ).. 1.59 T ( ) = 3 T( ) + O ( ) με ασυμπτωτική λύση Θ( ) 3..81 T ( ) = 7 T( ) + O ( ) με ασυμπτωτική λύση Θ( ) 4. T ( ) = T( ) + O ( ) με ασυμπτωτική λύση Θ ( log ). Η πολυπλοκότητα αυτή αντιστοιχεί τόσο στη μέση περίπτωση όσο και στη χειρότερη περίπτωση 5. Πολυπλόκοτητα χειρότερης περίπτωσης: Ο( ). Πολυπλοκότητα μέσης περίπτωσης: T ( ) = T( ) + O ( ) με ασυμπτωτική λύση Θ ( log ).
3 6. T ( ) = T( ) + O(1) με ασυμπτωτική λύση Θ (log ). Άσκηση #4 Δίνεται η φράση ΠΑΡΑΔΕΙΓΜΑΕΠΙΛΟΓΗΣ. Να χρησιμοποιήσετε αλγόριθμο που θα υπολογίζει το 9 ο μικρότερο αλφαβητικά στοιχείο της φράσης. Ο αλγόριθμος που θα χρησιμοποιήσετε θα πρέπει να έχει πολυπλοκότητα μέσης περίπτωσης Ο(Ν), όπου Ν: μήκος της ακολουθίας. Υπόδειξη: Η αρχική ιδέα είναι να κάνω ταξινόμηση (quicksort ή mergesort) και να βρω το ζητούμενο στοιχείο. Δεν είναι όμως αποδεκτή γιατί θα είχε πολυπλοκότητα μέσης περίπτωσης Ο(ΝlogN) που είναι μεγαλύτερη από Ο(Ν). Οπότε, εφαρμόζουμε προσεκτικά τον πιθανοτικό αλγόριθμο μέσου (που συχνά αναφέρεται και ως αλγόριθμος select) που έχει πολυπλοκότητα μέσης περίπτωσης Ο(Ν). Ο αλγόριθμος υπάρχει στη διάλεξη 14. Η συνοπτική περιγραφή της λειτουργικότητάς του ακολουθεί: Αλγόριθμος select Επιλέγουμε τυχαία ένα στοιχείο του πίνακα, έστω Μ Έστω ότι ψάχνουμε το κ-οστό μικρότερο στοιχείο. o Έστω Β : # στοιχείων που είναι < από το Μ o Έστω C : # στοιχείων που είναι ίσα με το Μ o Έστω D : # στοιχείων που είναι > από το Μ If κ <= B the retur select (B, κ); else if κ <= B + C the retur M; else retur select(d, κ- B - C ); 1 ος Γύρος: Επιλέγω το Π (η επιλογή του στοιχείου είναι τυχαία) Β: ΑΑΔΕΙΓΜΑΕΙΛΟΓΗ C: ΠΠ D: ΡΣ κ=9 Β =14 ΝΑΙ! retur SELECT(B,9) ος Γύρος: Επιλέγω το Γ (η επιλογή του στοιχείου είναι τυχαία) Β: ΑΑΑ C: ΓΓ D: ΔΕΙΜΕΙΛΟΗ κ=9 Β =3 ΟΧΙ! κ=9 Β + C =5 ΟΧΙ!
4 Άρα, retur SELECT(D,9-( B + C ))= retur SELECT(D,4) 3 ος Γύρος: Επιλέγω το Ι (η επιλογή του στοιχείου είναι τυχαία) Β: ΔΕΕΗ C: ΙΙ D: ΜΛΟ κ=4 Β =4 ΝΑΙ! Άρα, retur SELECT(Β,4) 4 ος Γύρος: Επιλέγω το Ε (η επιλογή του στοιχείου είναι τυχαία) Β: Δ C: ΕΕ D: Η κ=4 Β =1 ΟΧΙ κ=4 Β + C =3 ΟΧΙ! Άρα, retur SELECT(D,4-( B + C ))= retur SELECT(D,1) 5 ος Γύρος: Επιλέγω το Η (μοναδική επιλογή) Β: (ΚΕΝΟ ΣΥΝΟΛΟ) C: Η D: (ΚΕΝΟ ΣΥΝΟΛΟ) κ=1 Β =0 ΟΧΙ κ=1 Β + C =1 ΝΑΙ! Άρα, επιστρέφω το γράμμα Η που είναι το ζητούμενο στοιχείο Άσκηση #5 (Λύθηκε στο Φροντιστήριο #11) Δίνεται η ακολουθία αριθμών: 5, 1, 6, 4, 3, 16,, 7, 5, 13, 9, 11, 11, 15, 8, 17, 0, 14, 19 Να εφαρμόσετε τον ντετερμινιστικό αλγόριθμο μέσου (media) (που συχνά αναφέρεται και ως αλγόριθμος των Blum, Floyd, Pratt, Rivest και Tarja) για την εύρεση του μεσαίου στοιχείου της παραπάνω ακολουθίας. Σύμβαση: Αν μια ακολουθία αποτελείται από άρτιο πλήθος στοιχείων π.χ. Ν, να θεωρήσετε ως μεσαίο το Ν/ +1 στοιχείο. Υπόδειξη: H συνοπτική περιγραφή της λειτουργικότητας του ντετερμινιστικού αλγορίθμου μέσου συμπυκνώνεται στα ακόλουθα βήματα (για μια αναλυτική περιγραφή, δείτε τη σχετική διάλεξη): Αλγόριθμος media Χωρίζουμε τα στοιχεία σε ομάδες των πέντε στοιχείων (πεντάδες). Η τελευταία ομάδα μπορεί να έχει < 5 στοιχεία.
5 Βρίσκουμε το μεσαίο στοιχείο κάθε πεντάδας Βρίσκουμε το μεσαίο στοιχείο των μεσαίων στοιχείων. Έστω Μ το στοιχείο αυτό Έστω ότι ψάχνουμε το κ-οστό μικρότερο στοιχείο. o Έστω Β : # στοιχείων που είναι < από το Μ o Έστω C : # στοιχείων που είναι ίσα με το Μ o Έστω D : # στοιχείων που είναι > από το Μ If κ <= B the retur media (B, κ); else if κ <= B + C the retur M; else retur media(d, κ- B - C ); Έχουμε Ν=19 στοιχεία, άρα ψάχνουμε το κ=10 ο μικρότερο στοιχείο. Εφαρμόζουμε προσεκτικά τον αλγόριθμο. Χωρίζουμε τα στοιχεία σε πεντάδες και υπολογίζουμε τα μεσαία στοιχεία (είναι με κόκκινο). 5 16 9 17 1 11 0 6 7 11 14 4 5 15 19 3 13 8 Βρίσκουμε το μεσαίο στοιχείο των μεσαίων στοιχείων, δηλ. το Μ=11. To σύνολο Β περιλαμβάνει τα μικρότερα στοιχεία από το Μ=11. Αυτά είναι τα 5, 1, 6, 4, 3,, 7, 5, 9, 8. Β =10 και καθόσον κ<= Β =10, retur media (B,10). 5 1 7 6 5 4 9 3 8 Βρίσκουμε το μεσαίο στοιχείο των μεσαίων στοιχείων, δηλ. το M=7. To σύνολο Β περιλαμβάνει τα μικρότερα στοιχεία από το Μ=7. Αυτά είναι τα 5, 1, 6, 4, 3,, 5. Β =7 To σύνολο C περιλαμβάνει τα στοιχεία που είναι ίσα με Μ=7. Αυτά είναι το 7. C =1 To σύνολο D περιλαμβάνει τα μεγαλύτερα στοιχεία από το Μ=7. Αυτά είναι τα 8, 9. D = κ=10 <= B =7 ΟΧΙ! κ=10 <= B + C =7+1=8 ΟΧΙ! Οπότε retur media(d, 10-7 - 1 )=retur media (D, ) Ψάχνουμε το ο μικρότερο στοιχείο στον πίνακα D={8,9} που είναι προφανώς το 9. Συνεπώς το 9 είναι το μεσαίο στοιχείο της ακολουθίας.
6 Άσκηση #6 Λύστε την άσκηση #4 επιλέγοντας διαφορετικά τυχαία στοιχεία από αυτά που χρησιμοποιήσαμε στο φροντιστήριο. Άσκηση #7 Να εφαρμόσετε τον ντετερμινιστικό αλγόριθμο μέσου (media) (που συχνά αναφέρεται και ως αλγόριθμος των Blum, Floyd, Pratt, Rivest και Tarja) για την εύρεση του 8 ου μικρότερου στοιχείου για την ακολουθία: 5, 36,, 1, 8, 13, 11, 0, 5, 4, 1. Τέλος, κάτι πέρα από τα συνηθισμένα: Αλγόριθμοι Ταξινόμησης και παραδοσιακοί χοροί! Δείτε τα ακόλουθα βίντεο: Bubblesort: http://www.youtube.com/watch?v=lyzqpjut5b4&feature=related Isertio sort: http://www.youtube.com/watch?v=roalu379l3u&feature=related Mergesort: http://www.youtube.com/watch?v=xaqr3g_nvoo&feature=related Quicksort: http://www.youtube.com/watch?v=ywwby6j5gz8&feature=related