Αλγόριθμοι και Πολυπλοκότητα (ΣΗΜΜΥ)
χειμερινό εξάμηνο 2010-2011
Γενικά
Διδάσκοντες
- Στάθης Ζάχος, Καθηγητής ()
- Δημήτρης Φωτάκης, Λέκτορας ()
Βοηθοί Διδασκαλίας
- Γεωργία Καούρη, Υ.Δ. ()
- Αριστοτέλης-Εμμανουήλ Θάνος-Φίλης, Υ.Δ. ()
Βοηθοί Εργαστηρίου
- Θεόδωρος Λυκούρης
- Πέτρος Πανταβός
- Πάρης Συμινελάκης
- Χρήστος Τζάμος
- Κωνσταντίνος Ψύχας
Βοηθοί Γραπτών Ασκήσεων
- Θανάσης Λιανέας
- Χάρης Αγγελιδάκης
- Ιωάννης Γεωργιάδης
Διαλέξεις
- κάθε Δευτέρα 15:00-17:00 (Αμφιθέατρο 2, νέο κτήριο Ηλεκτρολόγων)
- κάθε Πέμπτη 17:00-19:00 (Αμφιθέατρο 4, νέο κτήριο Ηλεκτρολόγων)
Ώρες Γραφείου
- κάθε Δευτέρα 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.
Ανακοινώσεις
- [15/3/2011] Βαθμολογία εξεταστικής περιόδου Φεβρουαρίου. Μπορείτε να δείτε τα γραπτά σας την Τρίτη 22 Μαρτίου, ώρα 17:00 - 19:00, στο Corelab (1.1.30).
- [20/1/2011] Μπορείτε να πάρετε τις σημειώσεις του κ. Ζάχου από το Corelab (1.1.29, παλαιό κτ. ΗΜΜΥ) κάθε Δευτέρα, ώρες 13:00-14:00 και 17:00 - 18:00, και κάθε Πέμπτη, ώρες 15:00 - 16:00 και 19:00 - 20:00.
- [18/11/2010] Αναπληρώσεις μαθημάτων: Τις Τρίτη 30/11, Τρίτη 7/12, Τρίτη 21/12, Τρίτη 11/1, και Τρίτη 18/1, ώρα 12:30 - 14:30, αίθουσα 02, θα γίνουν διαλέξεις αναπλήρωσης.
- [25/10/2010] Αλλαγή αίθουσας: Από την Δευτέρα 25/10, οι διαλέξεις της Δευτέρας θα γίνονται στο Αμφιθέατρο 2, στο νέο κτήριο Ηλεκτρολόγων.
- [11/10/2010] Το moodle του μαθήματος είναι ενεργό. Πρέπει να γραφτείτε όλοι μέχρι την Κυριακή 17/10, ώστε να γίνει η απαραίτητη προετοιμασία για την ανακοίνωση της 1ης προγραμματιστικής άσκησης την Δευτέρα 18/10. Από τα στοιχεία που θα δηλώσετε στο moodle πρέπει να προκύπτουν με σαφήνεια το Ονοματεπώνυμό σας και ο Αριθμός Μητρώου σας. Τα login name και password που θα δηλώσετε στο moodle θα χρησιμοποιούνται και για την πρόσβαση / υποβολή των προγραμματιστικών ασκήσεων στον grader.
- [29/09/2010] Η πρώτη διάλεξη θα γίνει την Πέμπτη 7 Οκτωβρίου στις 17:00.
Υλικό
Διαφάνειες Μαθήματος
- Διάλεξη 7/10/2010: Εισαγωγή και Διαδικαστικά, Σύντομη Εισαγωγή στη Θεωρία Γραφημάτων (Για τις βασικές έννοιες της Θεωρίας Γραφημάτων δείτε ακόμη: 1η, 2η, και 3η σειρά διαφανειών).
- Διάλεξη 11/10/2010: Εισαγωγικές Έννοιες. Ασυμπτωτικός Συμβολισμός.
- Διάλεξη 18/10/2010: Ουρές Προτεραιότητας: Σωρός. Κάτω Φράγμα στη Χρονική Πολυπλοκότητα Συγκριτικών Αλγόριθμων Ταξινόμησης.
- Διάλεξη 25/10/2010: Union - Find. Αλγόριθμοι Διαίρει-και-Βασίλευε: Merge-Sort.
- Διάλεξη 1/11/2010: Αλγόριθμοι Διαίρει-και-Βασίλευε: master theorem, πολλαπλασιασμός αριθμών και πινάκων, ύψωση σε δύναμη. Quicksort.
- Διάλεξη 4/11/2010: Quicksort. Το πρόβλημα της επιλογής: Πιθανοτική και ντετερμινιστική Quickselect.
- Διάλεξη 11/11/2010: Δυαδική Αναζήτηση και Αναζήτηση με Παρεμβολή. Άπληστοι αλγόριθμοι.
- Διάλεξη 18/11/2010: Άπληστοι αλγόριθμοι.
- Διάλεξη 22/11/2010: Άπληστοι αλγόριθμοι και δυναμικός προγραμματισμός.
- Διάλεξη 29/11/2010: Δυναμικός προγραμματισμός.
- Διάλεξη 30/11/2010: Δυναμικός προγραμματισμός.
- Διάλεξη 7/12/2010: Δυναμικός προγραμματισμός. Εξερεύνηση Γραφημάτων: Αναζήτηση κατά Πλάτος.
- Διάλεξη 9/12/2010: Αναζήτηση κατά Πλάτος. Αναζήτηση κατά Βάθος.
- Διάλεξη 16/12/2010: Ελάχιστο Συνδετικό Δέντρο.
- Διάλεξη 20/12/2010: Συντομότερες διαδρομές από μία αρχική κορυφή: αλγόριθμος Bellman-Ford, αλγόριθμος Dijkstra.
- Διάλεξη 21/12/2010: Συντομότερες διαδρομές για όλα τα ζεύγη κορυφών: αλγόριθμος Floyd-Warshall, αλγόριθμος Johnson.
- Διάλεξη 10/1/2011: Μέγιστη Ροή - Ελάχιστη Τομή.
- Διάλεξη 11/1/2011: Μηχανές Turing και Υπολογισιμότητα. Υπολογιστική Πολυπλοκότητα.
- Διάλεξη 17/1/2011: Υπολογιστική Πολυπλοκότητα.
- Διάλεξη 18/1/2011: Μη Ντετερμινισμός. Η Κλάση NP.
- Διάλεξη 20/1/2011: Η Κλάση NP. NP-Πληρότητα.
- Διάλεξη 24/1/2011: NP-Πλήρη προβλήματα. Παραδείγματα αναγωγών.
- Διάλεξη 27/1/2011: NP-Πλήρη προβλήματα. Παραδείγματα αναγωγών.
- Διάλεξη 31/1/2011: Χωρική Πολυπλοκότητα. Πιθανοτικοί και Προσεγγιστικοί Αλγόριθμοι.
- Διάλεξη 3/2/2011: Επανάληψη - Ασκήσεις.
Σημειώσεις - Συμπληρωματικό Υλικό
- Κάποιες συμπληρωματικές ασκήσεις.
- Σύντομη Εισαγωγή στη Θεωρία Γραφημάτων
- Συμπληρωματικές σημειώσεις του Δ. Φωτάκη. Καλύπτουν μόνο ένα μέρος της ύλης του μαθήματος.
Ασκήσεις
Γραπτές Ασκήσεις
Εκφώνηση | Ημερομηνία Παράδοσης | Ενδεικτικές Λύσεις |
---|---|---|
Πρώτη σειρά |
25/10/2010 |
Λύσεις 1ης σειράς |
Δεύτερη σειρά | 11/11/2010 |
Λύσεις 2ης σειράς |
Τρίτη σειρά | 16/12/2010 |
Λύσεις 3ης σειράς |
Τέταρτη σειρά | 10/1/2011 |
Λύσεις 4ης σειράς |
Πέμπτη σειρά | 3/2/2011 |
Λύσεις 5ης σειράς |
Προγραμματιστικές Ασκήσεις
Εκφώνηση | Συμπληρωματικά Αρχεία | Ημερομηνία Παράδοσης |
---|---|---|
Πρώτη σειρά | lab01.zip |
4/11/2010 |
Δεύτερη σειρά | lab02.zip |
13/12/2010 |
Τρίτη σειρά | lab03.zip |
5/1/2011 |
Τέταρτη σειρά | lab04.zip |
17/1/2011 |
Πέμπτη σειρά | lab05.zip |
6/2/2011 |
Παρατηρήσεις
- Οι προγραμματιστικές ασκήσεις υποβάλλονται (source code) στον grader, και αξιολογούνται ηλεκτρονικά. Η προθεσμία υποβολής λήγει τα μεσάνυχτα της ημέρας παράδοσης. Για την υποβολή, θα χρησιμοποιήσετε τα login name και password που έχετε για το moodle του μαθήματος. Τα προγράμματά σας πρέπει να είναι σε C/C++, να διαβάζουν την είσοδο από το standard input, και να τυπώνουν την έξοδο στο standard output. Μια υποβολή θεωρείται επιτυχής (και συνεχίζει στο στάδιο της αξιολόγησης) αν "περάσει" επιτυχώς 3 επιλεγμένα test cases για το αντίστοιχο ερώτημα. Η αξιολόγηση γίνεται με αντίστοιχα (κοινά για όλους, αλλά διαφορετικά από αυτά που ελέγχονται κατά την υποβολή) test cases, μετά την λήξη της προθεσμίας. Με κάθε άσκηση, θα δίνεται και ένας αριθμός test cases (με τις απαντήσεις τους), που μπορείτε να χρησιμοποιήσετε για προκαταρκτικό έλεγχο των λύσεων σας.
- Στις γραπτές ασκήσεις να γράφετε ονοματεπώνυμο και αριθμό μητρώου. Είτε τις παραδίδετε στην υπεύθυνη (Γεωργία Καούρη), κατά προτίμηση στο μάθημα της Δευτέρας, είτε τις αναρτάτε στο moodle. Η προθεσμία λήγει στις 19:00 της ημέρας παράδοσης. Εάν δοθεί παράταση θα ανακοινωθεί σε αυτή τη σελίδα και στο moodle.
- Δεν γίνεται δεκτή η παράδοση ασκήσεων με e-mail.
- Συνεργασία επιτρέπεται και μάλιστα ενθαρρύνεται (εάν γίνεται σωστά), αλλά τελικά κάθε φοιτητής πρέπει να διατυπώσει μόνος του τη λύση. Πανομοιότυπες διατυπώσεις θα εκλαμβάνονται ως αντιγραφή και δεν θα προσμετράται ο βαθμός τους, ενώ πιθανόν να υπάρξουν συνέπειες για όλες τις σειρές ασκήσεων.
- Για απορίες πάνω στις ασκήσεις και στη θεωρία μπορείτε να έρχεστε στο CoReLab (κτ. ΗΜΜΥ 1.1.30) στις ώρες γραφείου.