Αλγόριθμοι και Πολυπλοκότητα (ΣΗΜΜΥ)
χειμερινό εξάμηνο 2009-2010
Γενικά
Διδάσκοντες
- Στάθης Ζάχος, Καθηγητής ()
- Δημήτρης Φωτάκης, Λέκτορας ()
Βοηθός διδασκαλίας
- Γεωργία Καούρη, Υ.Δ. ()
Διαλέξεις (θεωρία)
- κάθε Δευτέρα 15:00-17:00 (Αμφιθέατρο 5, νέο κτήριο Ηλεκτρολόγων)
- κάθε Πέμπτη 17:00-18:00 (Αίθουσα 06, νέο κτήριο Ηλεκτρολόγων)
Ασκήσεις
- κάθε Πέμπτη 18:00-19:00 (Αίθουσα 06, νέο κτήριο Ηλεκτρολόγων)
Ώρες γραφείου
- κάθε Δευτέρα 12:00-14:00 στο εργαστήριο 1.1.30 (CoReLab) και στο γρ. 1.1.10 του κτηρίου Ηλεκτρολόγων
- κάθε Πέμπτη 14:00-16:00 στο εργαστήριο 1.1.30 (CoReLab) και στο γρ. 1.1.10 του κτηρίου Ηλεκτρολόγων
Ενημερωτικό φυλλάδιο
Μπορείτε να βρείτε το ενημερωτικό φυλλάδιο του μαθήματος εδώ.
Βιβλιογραφία
- Thomas Cormen, Charles Leiserson, Ronald Rivest and Cliff Stein: "Introduction to Algorithms", 2nd edition, MIT Press, 2001.
- J. Kleinberg, E. Tardos: "Algorithm Design", Addison-Wesley, 2005.
- S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani: "Algorithms", MacGraw-Hill, 2006 (Μπορείτε να βρείτε draft έκδοση του βιβλίου αυτού εδώ).
- G. Brassard, P. Bratley: "Algorithmics: Theory and Practice", Prentice-Hall.
- Sara Baase, Allen Van Gelder, "Computer Algorithms: Introduction to Design and Analysis", 3rd edition, Addison Wesley Longman, 2000.
- Alfred V. Aho, John E. Hopcroft, "The Design and Analysis of Computer Algorithms", Addison-Wesley Series in Computer Science and Information Processing, 1974.
- Dexter C. Kozen, "The Design and Analysis of Algorithms", Springer, 1991.
- A. Levitin: "Ανάλυση και Σχεδίαση Αλγορίθμων", Εκδόσεις Τζιόλα, 2007.
- G. J. E. Rawlings: "Αλγόριθμοι: Ανάλυση και Σύγκριση", Εκδόσεις Κριτική, 2004.
Ανακοινώσεις
- [4/10/2010] Βαθμολογία επαναληπτικής εξέτασης Σεπτεμβρίου 2010. Μπορείτε να δείτε τα γραπτά σας και να ρωτήσετε για την βαθμολογία σας την Πέμπτη 7 Οκτωβρίου, ώρα 15:00-16:00, στο CoReLab (1.1.30).
- [2/3/2010] Βαθμολογία Φεβρουαρίου 2010.
- [11/1/2010] ΠΡΟΣΟΧΗ: Έχει προγραμματιστεί διάλεξη αναπλήρωσης για την Τρίτη 12/1, ώρα 13:00 - 15:00, στην Αιθ. 02, του νέου κτηρίου Ηλεκτρολόγων.
- [8/1/2010] Έχει "ανοίξει" η ενότητα του grader για την υποβολή και την ηλεκτρονική αξιολόγηση της 5ης προγραμματιστικής εργασίας. Για την υποβολή ισχύει ότι και για τις προηγούμενες εργασίες. Η προθεσμία για την υποβολή της εργασίας λήγει την Δευτέρα 18/1 (τα μεσάνυκτα). Όσοι αντιμετωπίσουν προβλήματα με τον grader ή χρησιμοποιούν Java, θα ανεβάσουν τις απαντήσεις τους στο moodle και θα τις επιδείξουν στο Corelab (1.1.30), την Τρίτη 19/1, 16:00-18:00. Καλή επιτυχία!
- [7/1/2010] Στο moodle του μαθήματος, στην ενότητα Συζητήσεις, έχει ανακοινωθεί το link όπου υπάρχουν οι διαφάνειες του μαθήματος (powerpoint).
- [14/12/2009] ΠΡΟΣΟΧΗ: Χρειάστηκε γίνει μια (αρκετά σημαντική) διόρθωση στα προγράμματα ελέγχου υποβολής στον grader για τους αλγόριθμους Dijkstra και Bellman-Ford. Έτσι όσοι έχετε ήδη υποβάλλει λύσεις για αυτούς τους αλγόριθμους (ακόμη και αν οι λύσεις σας εμφανίζονται ως σωστές και "active"), πρέπει οπωσδήποτε να τις υποβάλλετε εκ νέου πριν την λήξη της προθεσμίας.
- [10/12/2009] Έχει "ανοίξει" η ενότητα του grader για την υποβολή και την ηλεκτρονική αξιολόγηση της 4ης προγραμματιστικής εργασίας. Για την υποβολή, θα χρησιμοποιήσετε τα login name και password που έχετε για το moodle του μαθήματος. Τα προγράμματά σας πρέπει να είναι σε C/C++, να διαβάζουν την είσοδο από το standard input, να τυπώνουν την έξοδο στο standard output, και να επιστρέφουν 0 όταν ολοκληρώνονται κανονικά. Για τα test cases υποβολής και αξιολόγησης, ισχύει ότι και για την 3η εργασία. Η προθεσμία για την υποβολή της εργασίας λήγει την Πέμπτη 17/12 (τα μεσάνυκτα). Όσοι αντιμετωπίσουν προβλήματα με τον grader ή χρησιμοποιούν Java, θα ανεβάσουν τις απαντήσεις τους στο moodle και θα τις επιδείξουν στο Corelab (1.1.30), την Παρασκευή 18/12, είτε 10:45-12:45 είτε 15:00-17:00. Καλή επιτυχία!
- [10/12/2009] Λόγω των κινητοποιήσεων που αποφάσισε ο Φοιτητικός Σύλλογος, δίνεται νέα παράταση στην προθεσμία για την παράδοση της 4ης γραπτής εργασίας μέχρι την Δευτέρα 14/12. Στο μάθημα της Δευτέρας 14/12 θα καθορίσουμε ημέρες και ώρες για την αναπλήρωση των μαθημάτων που χάθηκαν εξ' αιτίας των κινητοποιήσεων.
- [3/12/2009] Λόγω των κινητοποιήσεων που αποφάσισε ο Φοιτητικός Σύλλογος, δίνεται παράταση στην προθεσμία για την παράδοση της 4ης γραπτής εργασίας μέχρι την Πέμπτη 10/12. Επίσης, η επίδειξη της 3ης προγραμματιστικής εργασίας (μόνο για όσους αντιμετώπισαν προβλήματα με τον grader) θα γίνει στο Corelab (1.1.30), την Τρίτη 8/12, 16:00-18:00.
- [25/11/2009] Υπάρχει δυνατότητα ηλεκτρονικής αξιολόγησης των απαντήσεων για την 3η προγραμματιστική εργασία (αντί της επίδειξης στο Corelab). Για να αξιολογηθείτε ηλεκτρονικά, θα υποβάλετε το source code των απαντήσεων στον grader (θερμές ευχαριστίες στον κ. Παπασπύρου για την πολύτιμη βοήθειά του!). Για την υποβολή, θα χρησιμοποιήσετε τα login name και password που έχετε για το moodle του μαθήματος. Τα προγράμματά σας πρέπει να είναι σε C/C++, να διαβάζουν την είσοδο από το standard input και να τυπώνουν την έξοδο στο standard output. Μια υποβολή θεωρείται επιτυχής (και συνεχίζει στο στάδιο της αξιολόγησης) αν "περάσει" επιτυχώς 3 επιλεγμένα test cases για το αντίστοιχο ερώτημα. Η αξιολόγηση γίνεται με αντίστοιχα (κοινά για όλους, αλλά διαφορετικά από αυτά που ελέγχονται κατά την υποβολή) test cases, μετά την λήξη της προθεσμίας. Για την καλύτερη εξοικείωσή σας με το σύστημα, δίνεται παράταση στην προθεσμία υποβολής της 3ης προγραμματιστικής εργασίας μέχρι την Τετάρτη 2/12 (τα μεσάνυκτα). Όσοι αντιμετωπίσουν προβλήματα με τον grader ή χρησιμοποιούν Java, θα ανεβάσουν τις απαντήσεις τους στο moodle και θα τις επιδείξουν στο Corelab (1.1.30), την Παρασκευή 4/12, είτε 10:45-12:45 είτε 15:00-17:00. Καλή επιτυχία!
- [12/11/2009] Μπορείτε να πάρετε τις σημειώσεις του κ. Ζάχου από το Corelab (1.1.29, παλαιό κτ. ΗΜΜΥ) την Πέμπτη 12/11, ώρα 19:00-20:30, την Παρασκευή 13/11, ώρα 13:30-15:30, και την εβδομάδα 16-20/11, τις ημέρες και ώρες που εξετάζεται η 2η προγραμματιστική εργασία.
- [12/11/2009] Για την υποβολή των προγραμματιστικών εργασιών, το moodle θα παραμένει "ανοικτό" μέχρι τις πρώτες πρωινές ώρες της ημέρας που ακολουθεί την λήξη της προθεσμίας (συνήθως η προθεσμία θα λήγει Δευτέρα, έτσι αναφερόμαστε στις πρώτες πρωινές ώρες της Τρίτης που ακολουθεί).
- [5/11/2009] Κατά την υποβολή των προγραμματιστικών ασκήσεων στο moodle, πρέπει να "ανεβάζετε" τα αρχεία του κώδικα σας συμπιεσμένα (gzip, rar, zip, κλπ.). Αν τα αρχεία του κώδικα είναι text, κάποιοι χαρακτήρες αντικαθίστανται όταν "κατεβαίνουν" για την εξέταση στο εργαστήριο, με αποτέλεσμα ο κώδικας να μην μπορεί να μεταγλωττιστεί.
- [22/10/2009] Το moodle του μαθήματος είναι ενεργό. Πρέπει να γραφτείτε όλοι μέχρι το Σάββατο 31/10, ώστε να γίνει η απαραίτητη προετοιμασία και να "ανεβάσετε" την 1η προγραμματιστική άσκηση την Δευτέρα 2/11. Από τα στοιχεία που θα δηλώσετε στο moodle πρέπει να προκύπτουν με σαφήνεια το Ονοματεπώνυμό σας και ο Αριθμός Μητρώου σας.
- [20/10/2009] Αλλαγή αίθουσας: Από την Πέμπτη 22/10, οι διαλέξεις της Πέμπτης θα γίνονται στην αίθουσα 06, στο νέο κτήριο Ηλεκτρολόγων.
- [19/10/2009] Ανακοινώθηκαν οι βαθμοί του μαθήματος για την επαναληπτική εξέταση. Μπορείτε να δείτε τους βαθμούς σας εδώ.
- [23/09/2009] Η πρώτη διάλεξη του μαθήματος θα πραγματοποιηθεί την Πέμπτη 8 Οκτωβρίου στις 17:00 στο αμφιθέατρο Ηλεκτρολόγων.
- [13/10/2009] Στις διαλέξεις της Πέμπτης 15/10 και Δευτέρας 19/10 θα δηλωθούν οι ομάδες για την επίδειξη των εργαστηριακών ασκήσεων.
Υλικό
Διαφάνειες μαθήματος
- Διάλεξη 8/10/2009: Εισαγωγή και Διαδικαστικά, Σύντομη Εισαγωγή στη Θεωρία Γραφημάτων
- Διάλεξη 12/10/2009: Βασικές Έννοιες Θεωρίας Γραφημάτων (1η, 2η, και 3η σειρά διαφανειών). Εισαγωγικές Έννοιες.
- Διάλεξη 15/10/2009: Ασυμπτωτικός Συμβολισμός. Ουρές Προτεραιότητας, Σωρός.
- Διάλεξη 19/10/2009: Ουρές Προτεραιότητας: Σωρός. Heapsort. Κάτω Φράγμα στη Χρονική Πολυπλοκότητα Συγκριτικών Αλγόριθμων Ταξινόμησης.
- Διάλεξη 22/10/2009: Union - Find. Αλγόριθμοι Διαίρει-και-Βασίλευε: Merge-Sort, Master Theorem.
- Διάλεξη 26/10/2009: Διαίρει-και-Βασίλευε: Πολλαπλασιασμός μεγάλων αριθμών, αλγόριθμος Strassen για πολλαπλασιασμό πινάκων, ύψωση σε δύναμη. Αλγόριθμοι Αναζήτησης: Δυαδική Αναζήτηση, Αναζήτηση με Παρεμβολή.
- Διάλεξη 29/10/2009: Quicksort. Το πρόβλημα της επιλογής. Εύρεση μέγιστου και ελάχιστου.
- Διάλεξη 2/11/2009: Πιθανοτική και ντετερμινιστική επιλογή σε γραμμικό χρόνο.
- Διάλεξη 5/11/2009: Άπληστοι αλγόριθμοι.
- Διάλεξη 9/11/2009: Άπληστοι αλγόριθμοι. Δυναμικός Προγραμματισμός.
- Διάλεξη 12/11/2009: Δυναμικός Προγραμματισμός.
- Διάλεξη 19/11/2009: Δυναμικός Προγραμματισμός.
- Διάλεξη 23/11/2009: Εξερεύνηση Γραφημάτων: Αναζήτηση κατά Πλάτος, Αναζήτηση κατά Βάθος.
- Διάλεξη 26/11/2009: Ελάχιστο Συνδετικό Δέντρο.
- Διάλεξη 30/11/2009: Ελάχιστο Συνδετικό Δέντρο. Συντομότερες διαδρομές από μία αρχική κορυφή.
- Διάλεξη 3/12/2009: Συντομότερες διαδρομές από μία αρχική κορυφή: αλγόριθμος Bellman-Ford, αλγόριθμος Dijkstra.
- Διάλεξη 14/12/2009: Συντομότερες διαδρομές για όλα τα ζεύγη κορυφών: αλγόριθμος Floyd-Warshall.
- Διάλεξη 21/12/2009: Μέγιστη Ροή - Ελάχιστη Τομή.
- Διάλεξη 7/1/2010: Μέγιστη Ροή - Ελάχιστη Τομή. Backtracking, Δέντρα Παιχνιδιών, Δίκτυα Ταξινόμησης. Υπολογισιμότητα.
- Διάλεξη 11/1/2010: Μηχανές Turing και Υπολογισιμότητα. Υπολογιστική Πολυπλοκότητα.
- Διάλεξη 12/1/2010: Υπολογιστική Πολυπλοκότητα. Αναγωγές και Πληρότητα.
- Διάλεξη 14/1/2010: Μη Ντετερμινισμός και NP-πληρότητα.
- Διάλεξη 18/1/2010: Μη Ντετερμινισμός και NP-πληρότητα.
- Διάλεξη 21/1/2010: Χωρική Πολυπλοκότητα. Προσεγγιστικοί Αλγόριθμοι.
Σημειώσεις - Συμπληρωματικό Υλικό
- Σύντομη Εισαγωγή στη Θεωρία Γραφημάτων
- Κάποιες συμπληρωματικές σημειώσεις του Δ. Φωτάκη. Καλύπτουν μόνο ένα μέρος της ύλης του μαθήματος.
Ασκήσεις
Γραπτές ασκήσεις
Εκφώνηση | Ημερομηνία Παράδοσης | Ενδεικτικές Λύσεις |
---|---|---|
Πρώτη σειρά |
26/10/2009 |
Λύσεις 1ης σειράς |
Δεύτερη σειρά | 9/11/2009 |
Λύσεις 2ης σειράς |
Τρίτη σειρά | 23/11/2009 |
Λύσεις 3ης σειράς |
Τέταρτη σειρά | 14/12/2009 |
Λύσεις 4ης σειράς |
Πέμπτη σειρά | 12/2/2010 |
Λύσεις 5ης σειράς |
Προγραμματιστικές ασκήσεις
Εκφώνηση | Συμπληρωματικά Αρχεία | Ημερομηνία Παράδοσης |
---|---|---|
Πρώτη σειρά | lab01.zip |
2/11/2009 |
Δεύτερη σειρά | 16/11/2009 |
|
Τρίτη σειρά | lab03.zip + sols.zip |
2/12/2009 |
Τέταρτη σειρά | lab04.zip |
17/12/2009 |
Πέμπτη σειρά | lab05.zip |
18/1/2010 |
Παρατηρήσεις
- Στις γραπτές ασκήσεις να γράφετε ονοματεπώνυμο και αριθμό μητρώου. Τις παραδίδετε μόνο στην υπεύθυνη (Γεωργία Καούρη), κατά προτίμηση στο μάθημα της Δευτέρας. Η προθεσμία είναι αυστηρή και λήγει στις 18:00 της ημέρας παράδοσης. Εάν δοθεί παράταση θα ανακοινωθεί σε αυτή τη σελίδα και στο moodle.
- Δεν γίνεται δεκτή η παράδοση ασκήσεων μέσω e-mail.
- Συνεργασία επιτρέπεται και μάλιστα ενθαρρύνεται (εάν γίνεται σωστά), αλλά τελικά κάθε φοιτητής καλείται να διατυπώσει μόνος του τη λύση. Πανομοιότυπες διατυπώσεις θα εκλαμβάνονται ως αντιγραφή και δεν θα προσμετράται ο βαθμός τους, ενώ πιθανόν να υπάρξουν συνέπειες για όλες τις σειρές ασκήσεων.
- Για απορίες πάνω στις ασκήσεις και στη θεωρία μπορείτε να έρχεστε στο CoReLab (κτ. ΗΜΜΥ 1.1.30) στις ώρες γραφείου.