Αλγοριθμική Επίλυση Προβλημάτων

Εξάμηνο:
8ο
Τύπος Μαθήματος:
Προαιρετικό (ΠΜ)
Κατεύθυνση:
CS (Computer Science)
Κωδικός:
ΘΠ24
ECTS:
6
Διδακτικές Ώρες
Ώρες Θεωρίας:
4
Ώρες Φροντιστηρίου:
-
Ώρες Εργαστηρίου:
-
Μάθημα στις Ειδικεύσεις
Θεμελιώσεις Πληροφορικής (S1):
-
Διαχείριση Δεδομένων και Γνώσης (S2):
-
Λογισμικό (S3):
-
Υλικό και Αρχιτεκτονική (S4):
-
Επικοινωνίες και Δικτύωση (S5):
-
Επεξεργασία Σήματος και Πληροφορίας (S6):
-
Σχετικά Μαθήματα
Σύντομη περιγραφή Μαθήματος

Επίλυση Προβλημάτων και Σχεδιασμός Αλγορίθμων με στόχο την αποδοτική υλοποίηση σε C/C++. Θα δοθεί έμφαση στην απλοποιημένη υλοποίηση πολύπλοκων αλγορίθμων και λογικών με τη χρήση βιβλιοθηκών. Θα χρησιμοποιηθούν υλοποιήσεις μέσω της βιβλιοθήκης STL καθώς και έτοιμοι επιλυτές (solvers) για γραμμικά προγράμματα και προβλήματα ικανοποιησιμότητας. Θα καλυφθούν μεγάλο εύρος αλγορίθμων και τεχνικών όπως: Αλγόριθμοι αναζήτησης και ταξινόμησης,  Άπληστοι Αλγόριθμοι / Εξαντλητικοί αλγόριθμοι με Αναδρομή, Αποδοτική κωδικοποίηση σε bits, Δομές δεδομένων (Δέντρα, Στοίβες, Ουρές, Σωροί, Ερωτημάτων Εύρους), Δυναμικός Προγραμματισμό, Αλγόριθμοι Γραφημάτων (Συνεκτικότητας, Εύρεσης Συντομότερης Διαδρομής, Μέγιστης Ροής), Γραμμικός Προγραμματισμός

Θα γίνει ανάλυση της βέλτιστης υπολογιστικής πολυπλοκότητας προβλημάτων μέσω της θεωρίας NP-πληρότητας και λεπτομερούς πολυπλοκότητας (fine-grained complexity)

Η γνώση του μαθήματος των Αλγορίθμων συνιστάται αλλά δεν είναι υποχρεωτική. Το μάθημα θα έχει διαδραστικό χαρακτήρα με συνδυασμό θεωρίας και υλοποίησης/εξάσκησης στην τάξη.

Βιβλιογραφία

Laaksonen, A. (2020). Guide to competitive programming: Learning and Improving Algorithms Through Contests, Springer Second Edition