Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες Βαγγέλης ούρος douros@aueb.gr 1 11/6/2012 Αλγόριθμοι, Εαρινό Εξάμηνο 2012, Φροντιστήριο #14
Γενικά Σχόλια (1) 2 Για το τελικό διαγώνισμα θα χρειαστείτε: Φοιτητική ταυτότητα (το πάσο δεν αρκεί ) 2 στυλό (λόγω του νόμου του Μέρφυ ;-)) Ποτέ δεν έχω κάνει επιτήρηση σε αίθουσα που όλοι οι φοιτητές να είχαν στυλό (που να γράφει ;-)) και φοιτητική ταυτότητα Τυχαίο; Μπλάνκο (αν δε σας αρέσει να κάνετε μουτζούρες ;-)) Ίσως είναι καλή ιδέα να έχετε αριθμομηχανή (αρκεί να ξέρετε να τη χρησιμοποιείτε ;-)) Το κινητό δε θα σας χρειαστεί κατά τη διάρκεια της εξέτασης (θα σας λέω εγώ την ώρα αν δε φοράτε ρολόι ;-)) Αν θέλετε για ενθύμιο το «σκονάκι», θυμηθείτε να το βγάλετε μια φωτοτυπία
Γενικά Σχόλια (2) Θα πρότεινα να έχετε λύσει 2 τουλάχιστον παραδείγματα για κάθε αλγόριθμο που είδαμε στο μάθημα Μην προσπαθήσετε να εφαρμόσετε τους αλγορίθμους prima vista στο διαγώνισμα Η μηχανική εφαρμογή αλγορίθμων δεν αρκεί Πρέπει να έχετε κατανοήσει γιατί δουλεύουν «έτσι» και όχι «αλλιώς» οι αλγόριθμοι Πρέπει να μπορείτε να κατηγοριοποιήσετε αλγορίθμους και να μπορείτε να τους συγκρίνετε 3
Γενικά Σχόλια (3) Αν η εκφώνηση μιας άσκησης μοιάζει άγνωστη, αφιερώστε λίγο χρόνο μήπως ταιριάζει με κάποια από τις μεθοδολογίες γνωστών ασκήσεων Με μεγάλη πιθανότητα, θα ταιριάζει ή θα είναι παραλλαγή θεμάτων που έχετε διδαχθεί Αν το 1ο ερώτημα μιας άσκησης δεν μπορείτε να το λύσετε, προχωρήστε στο επόμενο Μπορεί να είναι πιο απλό ή/και να λύνετε χρησιμοποιώντας ως δεδομένο το 1ο ερώτημα 4
Γενικά Σχόλια (4) Αν μια ερώτηση αντιστοιχεί σε 3/100 και μετά από 3-4 λεπτά δεν μπορείτε να καταλήξετε κάπου, προχωρήστε σε άλλη ερώτηση Αν μια ερώτηση θεωρείτε ότι είναι διφορούμενη, προχωρήστε στην επόμενη μέχρι να δοθούν διευκρινίσεις Αν αργούν πολύ οι διευκρινίσεις και «καίγεστε» να την απαντήσετε, γράψτε ποια θεώρηση κάνατε, δώστε την απάντησή σας και αν η απάντηση είναι σωστή και η θεώρηση είναι βάσιμη, δε θα χάσετε μονάδες 5
Γενικά Σχόλια (5) Προτού δώσετε μια απάντηση, διαβάστε όλη την εκφώνηση κάθε ερωτήματος προσεκτικά Αν η άσκηση ζητά αλγόριθμο πολυπλοκότητας Ο(n) και εσείς χρησιμοποιήσετε αλγόριθμο πολυπλοκότητας Ο(nlogn) θα νομίζετε ότι την έχετε απαντήσει σωστά Αν στην εφαρμογή αλγορίθμων καταλήξετε σε αποτέλεσμα που δε συμπίπτει με τη θεωρία και δεν προλαβαίνετε να το διορθώσετε, θα εκτιμηθεί θετικά να εξηγήσετε γιατί το αποτέλεσμα που βγάλατε είναι παράλογο Π.χ. η εφαρμογήkruskal και Prim στο ίδιο γράφημα να δώσει MST με διαφορετικό συνολικό βάρος 6
Γενικά Σχόλια (6) Στο eclass υπάρχουν τα θέματα των εξετάσεων του Οκτωβρίου 2006 εν μπορώ να εγγυηθώ ότι είναι αντιπροσωπευτικά, αλλά ίσως έχει νόημα να τους ρίξετε μια ματιά Θα βγάλω ανακοίνωση με ώρες γραφείου λίγες ημέρες πριν το τελικό διαγώνισμα Αξιοποιήστε τες! 7
Γενικά Σχόλια (7) 8 (11/06/2012) To τελικό διαγώνισμα μετατέθηκε την Πέμπτη 28 Ιουνίου, 08:00-11:00 http://www.aueb.gr/pages/news/attachments/1324_0.pdf Παρακολουθείτε το πρόγραμμα μήπως κάτι αλλάξει Τετάρτη 27 Ιουνίου στις 21:45 θα διεξαχθεί ο 1ος ημιτελικός του Euro 2012 Για να αποφασίσετε αν θα δείτε τον αγώνα ή θα κάνετε την τελευταία επανάληψη στους Αλγορίθμους, εφαρμόστε τον αλγόριθμο «Champions League ή ΘερινόΣινεμά» απαιτώντας 20/20 «Κορώνες» για να το δείτε :Ρ Μετά το διαγώνισμα, ρωτήστε με να σας πω βαρετές λεπτομέρειες για τον αγώνα που δεν είδατε ;-)
Αλγόριθμοι Εξερεύνησης ενός Γραφήματος 9 Αναζήτηση κατά Βάθος (DFS) Πολυπλοκότητα: Ο( V + E ) Εφαρμογές [Όλες έχουν πολυπλοκότητα Ο( V + E )]: Εύρεση κύκλου σε ένα γράφημα Τοπολογική Ταξινόμηση σε κατευθυνόμενο ακυκλικό γράφημα (DAG) Εύρεση Ισχυρά Συνεκτικών Συνιστωσών σε κατευθυνόμενο γράφημα Πρόβλημα 2-SAT Αναζήτηση κατά Πλάτος (BFS) Πολυπλοκότητα: Ο( V + E ) BFS, DFS, Τοπολογική Ταξινόμηση, Εύρεση Ισχυρά Συνεκτικών Συνιστωσών εφαρμόζονται χωρίς τροποποιήσεις και σε γραφήματα με βάρη
Αλγόριθμοι Εύρεσης Ελαχίστων Μονοπατιών (1) από μια κορυφή προς οποιαδήποτε άλλη Για γράφημα χωρίς βάρη ή γράφημα που όλες οι ακμές έχουν τα ίδια βάρη: Αναζήτηση κατά Πλάτος (BFS) Πολυπλοκότητα: Ο( V + E ) Για γράφημα με μόνο θετικά βάρη: Αλγόριθμος Dijkstra Πολυπλοκότητα: Εξαρτάται από την υλοποίηση και τον τύπο του γραφήματος. είτε lecture 6, slides 46-49 και το σχετικό φροντιστήριο 10
Αλγόριθμοι Εύρεσης Ελαχίστων Μονοπατιών (2) Για γράφημα που περιλαμβάνει και αρνητικά βάρη Αλγόριθμος Bellman-Ford Πολυπλοκότητα: O( V E ) Για κατευθυνόμενα ακυκλικά γραφήματα: Αλγόριθμος υναμικού Προγραμματισμού για ελάχιστα μονοπάτια σε DAGs Πολυπλοκότητα: Ο( V + E ) 11
Αλγόριθμοι Εύρεσης Ελάχιστου Επικαλυπτικού ένδρου (MST) (1) σε Μη Κατευθυνόμενα Βεβαρημένα Συνεκτικά Γραφήματα Αλγόριθμος Prim Πολυπλοκότητα: Εξαρτάται από την υλοποίηση και τον τύπο του γραφήματος. είτε lecture 8, slide 8 και το σχετικό φροντιστήριο Αλγόριθμος Boruvka Πολυπλοκότητα: Ο( E log V ) 12
Αλγόριθμοι Εύρεσης Ελάχιστου Επικαλυπτικού ένδρου (MST) (2) Αλγόριθμος Kruskal Πολυπλοκότητα: Εξαρτάται από την υλοποίηση ομές union-find και union by rank ομές union-find και union by rank σε συνδυασμό με path compression προϋπόθεση για βελτίωση πολυπλοκότητας: οι ακμές να είναι ταξινομημένες ή τα βάρη των ακμών να είναι μικρές ποσότητες είτε και τις σχετικές διαλέξεις και το φροντιστήριο 13
Άπληστοι Αλγόριθμοι (Greedy Algorithms) (1) Αλγόριθμος Huffman Πολυπλοκότητα: Εξαρτάται από την υλοποίηση Αλγόριθμος Lempel-Ziv Πολυπλοκότητα: Εξαρτάται από την υλοποίηση Αλγόριθμος Horn-SAT Πολυπλοκότητα: Γραμμικός στο μέγεθος της εισόδου 14
Άπληστοι Αλγόριθμοι (Greedy Algorithms) (2) Άπληστοι Αλγόριθμοι είναι και οι: Αλγόριθμος Prim, Αλγόριθμος Kruskal, Αλγόριθμος Boruvka, Αλγόριθμος Dijkstra Στις διαλέξεις είδατε και άπληστους αλγορίθμους για: το πρόβλημα set cover και το πρόβλημα του περιοδεύοντος πωλητή 15
Αλγόριθμοι ιαίρει και Βασίλευε (Divide & Conquer) (1) Ταχύς Μετασχηματισμός Fourier (FFT) Αναδρομική Εξίσωση: Tn ( ) = 2 T( ) + On ( ) με 2 ασυμπτωτική λύση Θ( nlog n) Πολλαπλασιασμός δύο ακεραίων από n-bits ο καθένας ασυμπτωτικά ταχύτερα από Ο(n 2 ) Αναδρομική Εξίσωση: Tn ( ) = 3 T( ) + On ( ) με 1.59 2 ασυμπτωτική λύση Θ( n ) n n 16
Αλγόριθμοι ιαίρει και Βασίλευε (Divide & Conquer) (2) Πολλαπλασιασμός 2 πινάκων μεγέθους nxn με τον αλγόριθμο του Strassen 2 Αναδρομική Εξίσωση: Tn ( ) = 7 T( ) + On ( ) με 2.81 2 ασυμπτωτική λύση Θ( n ) Αλγόριθμος ταξινόμησης mergesort Αναδρομική Εξίσωση: Tn ( ) = 2 T( ) + On ( ) 2 με ασυμπτωτική λύση Θ( nlog n) Η πολυπλοκότητα αυτή αντιστοιχεί τόσο στη μέση περίπτωση όσο και στη χειρότερη περίπτωση n n 17
Αλγόριθμοι ιαίρει και Βασίλευε (Divide & Conquer) (3) 18 Αλγόριθμος ταξινόμησης quicksort Πολυπλοκότητα χειρότερης περίπτωσης: Ο(n 2 ) Πολυπλοκότητα μέσης περίπτωσης: n με ασυμπτωτική λύση Tn ( ) = 2 T( ) + On ( ) Θ( nlog n) 2 Μελετήσαμε και τους αλγόριθμους ταξινόμησης Insertion Sort και Bubble Sort με ασυμπτωτική πολυπλοκότητα Θ(n 2 ) (τόσο στη μέση περίπτωση όσο και στη χειρότερη περίπτωση) Οι αλγόριθμοι αυτοί όμως δεν είναι διαίρει και βασίλευε
Αλγόριθμοι ιαίρει και Βασίλευε (Divide & Conquer) (4) Αλγόριθμος δυαδικής αναζήτησης n Tn ( ) = T( ) + O(1) με ασυμπτωτική λύση Θ(logn) 2 Η πολυπλοκότητα αυτή αντιστοιχεί τόσο στη μέση περίπτωση όσο και στη χειρότερη περίπτωση Αλγόριθμος Select (πιθανοτικός αλγόριθμος μέσου) Πολυπλόκοτητα χειρότερης περίπτωσης: 2 T( n) = T( n 1) + n με ασυμπτωτική λύση Θ( n ) Πολυπλοκότητα μέσης περίπτωσης: 3n Tn ( ) = T( ) + On ( ) μεασυμπτωτικήλύσηθ(n) 4 19
Αλγόριθμοι ιαίρει και Βασίλευε (Divide & Conquer) (5) Ντετερμινιστικός αλγόριθμος μέσου (median) συχνά αναφέρεται και ως αλγόριθμος των Blum, Floyd, Pratt, Rivest και Tarjan 7n n Tn ( ) = T( ) + T( ) + On ( ) 10 5 μεασυμπτωτικήλύσηθ(n) Η πολυπλοκότητα αυτή αντιστοιχεί τόσο στη μέση περίπτωση όσο και στη χειρότερη περίπτωση 20
Αλγόριθμοι υναμικού Προγραμματισμού (1) το πρόβλημα της «πεθεράς» ηλ. Integer (unbounded) knapsack problem Πολυπλοκότητα: Ο(nW), n: # διαφορετικών αντικειμένων, W: χωρητικότητα Προσοχή: Ο αλγόριθμος δεν είναι πολυωνυμικός, ο αλγόριθμος είναι εκθετικός! το πρόβλημα «Champions League ή Σινεμά» ηλ. Πρόβλημα υπολογισμού πιθανότητας με δυωνυμική κατανομή Πολυπλοκότητα: Ο(n 2 ), n: # νομισμάτων 21
Αλγόριθμοι υναμικού Προγραμματισμού (2) Το πρόβλημα προβολής τηλεοπτικών διαφημίσεων ενός κόμματος Πολυπλοκότητα: Ο(n), n: # ωρών + όποια προβλήματα δείτε στις διαλέξεις Παρεμπιπτόντως, αλγόριθμος δυναμικού προγραμματισμού είναι και ο αλγόριθμος των Bellman-Ford 22
Κλάση NP, NP-Complete Προβλήματα Αντικείμενο του φροντιστηρίου #14 23
Εργαλεία Υπολογισμού Πολυπλοκότητας Ασυμπτωτικός Συμβολισμός: Ο, Ω, Θ Master Theorem (για τους αλγορίθμους διαίρει και βασίλευε) 24
Μεθοδολογία Ανάλυσης Πολυπλοκότητας ενός Αλγορίθμου (1) Ας πούμε ότι έχουμε καταλήξει ότι ο Αλγόριθμος Α έχει πολυπλοκότητα Ο(n) Είναι πολυωνυμικός; Για να απαντήσουμε στο ερώτημα αυτό κοιτάζουμε στην εκφώνηση της άσκησης τι εκφράζει η μεταβλητή n Αν εκφράζει πλήθος στοιχείων της εισόδου, τότε ο αλγόριθμος είναι πολυωνυμικός Αν εκφράζει κάποια τιμή της εισόδου, τότε ο αλγόριθμος δεν είναι πολυωνυμικός, είναι εκθετικός 25
Μεθοδολογία Ανάλυσης Πολυπλοκότητας ενός Αλγορίθμου (2) ο Βαγγέλης πήρε βαθμό κ=10 στους Αλγορίθμους Αν η πολυπλοκότητα είναι Ο(κ), ο αλγόριθμος είναι εκθετικός έχουμε n=15 βιβλία Αν η πολυπλοκότητα είναι Ο(n), ο αλγόριθμος είναι πολυωνυμικός 26
Μεθοδολογία Ανάλυσης Πολυπλοκότητας ενός Αλγορίθμου (3) Ας πούμε ότι έχουμε καταλήξει ότι ο Αλγόριθμος Α έχει πολυπλοκότητα Ο(nm k) Είναι πολυωνυμικός; Για να απαντήσουμε στο ερώτημα αυτό κοιτάζουμε στην εκφώνηση της άσκησης τι εκφράζουν οι μεταβλητές n, m, k Αν όλες εκφράζουν πλήθος στοιχείων της εισόδου, τότε ο αλγόριθμος είναι πολυωνυμικός Αν έστω και μία εκφράζει κάποια τιμή της εισόδου, τότε ο αλγόριθμος δεν είναι πολυωνυμικός, είναι εκθετικός 27
Μεθοδολογία Ανάλυσης Πολυπλοκότητας ενός Αλγορίθμου (4) η Κατερίνα διάβασε n=5 βιβλία και το καθένα είχε κ=100 σελίδες Αν η πολυπλοκότητα είναι Ο(nκ), ο αλγόριθμος είναι πολυωνυμικός η Αντιγόνη διάβασε n=2 βιβλία και πήρε βαθμό κ=7 στους Αλγορίθμους Αν η πολυπλοκότητα είναι Ο(nκ), ο αλγόριθμος είναι εκθετικός 28
Η Πατροπαράδοτη Ευχή ε θέλω να ξαναδώ ούτε έναν/μία από εσάς στο φροντιστήριο των Αλγορίθμων του χρόνου!! Αυτό μπορεί να γίνει με το: Να μη διδάξω το φροντιστήριο του χρόνου Να το διδάξω, να χρωστάτε το μάθημα και να μην έρθετε ποτέ στο φροντιστήριο Να το διδάξω και όλοι να έχετε περάσει το μάθημα (& με καλό βαθμό) [+1] «Συν Αθηνά και χείρα κίνει» 29
Ευχαριστώ! Vaggelis G. Douros Mobile Multimedia Laboratory Department of Informatics Athens University of Economics and Business douros@aueb.gr http://mm.aueb.gr/~douros 30