Αλγόριθμοι και Πολυπλοκότητα e-learning

Σοφία Καλογιαννίδη

Περιγραφή

Εισαγωγή στην έννοια της αλγοριθμικής πολυπλοκότητας,γράφοι,σωροί,Priority Queues,HashTables,αλγόριθμοι εύρεσης ελαχίστων μονοπατιών,δυναμικός προγραμματισμός,πρόβλημα K-βασιλισσών,κλάσεις P και NP, ασυμπτωτικός συμβολισμός,χρονική πολυπλοκότητα,DAGS, αλγόριθμοι Bellman-Ford, Dijkstra,Kruskal,Prim, ελάχιστα συνεκτικά δέντρα (Minimum Spanning Trees), αλγόριθμος Ford-Fulkerson για μέγιστη ροή, άπληστοι αλγόριθμοι, πρόβλημα 0/1 σακιδίου, αναδρομικοί αλγόριθμοι, Master Theorem & Εφαρμογές, προβλήματα απόφασης, προβλήματα NP-complete και NP-hard.

Προσδοκώμενα Μαθησιακά Αποτελέσματα

Μέσω αυτού του μαθήματος οι φοιτητές θα είναι σε θέση να:

  • Ορίζουν την έννοια της χρονικής πολυπλοκότητας.
  • Διακρίνουν τις διαφορές μεταξύ των ασυμπτωτικών συμβολισμών Ο,Ω,Θ.
  • Υπολογίζουν τη χρονική πολυπλοκότητα ενός αλγορίθμου με δομές επανάληψης.
  • Υλοποιούν προγραμματιστικά σωρό με τη βοήθεια μονοδιάστατου πίνακα.
  • Αναγνωρίζουν τις διαφορές μεταξύ ενός απλού και ενός δυαδικού δέντρου.
  • Ξεχωρίζουν ένα πλήρες δυαδικό δέντρο από ένα σχεδόν πλήρες.
  • Υπολογίζουν την πολυπλοκότητα αλγορίθμων εισαγωγής και διαγραφής στις δομές δέντρου και ουράς.
  • Εντοπίσουν τις συνεκτικές συνιστώσες ενός μη κατευθυνόμενου γραφήματος και τις ισχυρές συνεκτικές συνιστώσες ενός κατευθυνόμενου.
  • Κατανοήσουν ότι οι αλγόριθμοι αναζήτησης γράφων έχουν ευρεία εφαρμογή σε παιχνίδια με λαβύρινθους.
  • Κατασκευάσουν τη λύση ενός τέτοιου παιχνιδιού με τη βοήθεια των αλγορίθμων BFS και DFS.
  • Κατονομάζουν τουλάχιστον 2 διαφορές μεταξύ των αλγορίθμων BFS και DFS.
  • Κατανοήσουν τους αλγορίθμους Dijkstra,Kruskal,Prim,  τις ιδιότητες και τα χαρακτηριστικά των συνεκτικών δέντρων ελάχιστου κόστους 
  • Aναγνωρίσουν τη σημασία της απόδειξης ορθότητας, αλλά και του θεωρήματος βέλτιστου για συνεκτικά δέντρα με ελάχιστο κόστος (βάρος)
  • .
  • Eφαρμόζουν τον αλγόριθμο Dijkstra για την υλοποίηση του αλγορίθμου του συντομότερου μονοπατιού από τον κόμβο αφετηρίας ενός γράφου σε έναν άλλο κόμβο του ίδιου γράφου και τους αλγορίθμους Prim και Kruskal για την υλοποίηση του αλγορίθμου για το συνεκτικό δέντρο με ελάχιστο βάρος.
  • Κατανοήσουν την έννοια του Δυναμικού Προγραμματισμού,αλλά και το πως και το πότε εφαρμόζεται και να κατασκευάζουν έναν κατευθυνόμενο άκυκλο γράφο (DAG).
  • Υλοποιούν τους αλγορίθμους συντομότερου μονοπατιού για DAG,είτε αυτός είναι Bellman ford,όπου πρέπει να αναλογίζονται και τη περίπτωση να υπάρχουν αρνητικά βάρη στο γράφο, είτε αυτός γίνεται με τοπολογική ταξινόμηση .
  • Εφαρμόζουν τον αλγόριθμο Ford -Fulkerson σε γράφο.
  • Αναγνωρίζουν πότε η αρχική ροή σε ένα γράφο διατηρείται.
  • Εντοπίζουν το μονοπάτι μέγιστης ροής.
  • Υλοποιούν προγραμματιστικά τον αλγόριθμο Ford-Fulkerson.
  • Κατανοήσουν την έννοια, τις ιδιότητες και τα χαρακτηριστικά ενός άπληστου αλγορίθμου.
  • Κατασκευάζουν έναν άπληστο αλγόριθμο για όποιο πρόβλημα τους ζητείται.
  • Αναγνωρίζουν αν ένα πρόβλημα μπορεί να υλοποιηθεί μέσω ενός άπληστου αλγορίθμου.
  • Αποδεικνύουν αν ένας άπληστος αλγόριθμος είναι ορθός ή όχι.
  • Αναγνωρίζουν πότε μία τοποθέτηση βασιλισσών στη σκακιέρα αποτελεί λύση στο πρόβλημα των Κ-βασιλισσών.
  • Κατονομάζουν για ποιες τιμές του Κ , το πρόβλημα των Κ-βασιλισσών είναι αδύνατο.
  • Κατασκευάζουν πρόγραμμα σε Python για την εύρεση των Κ-βασιλισσών με την τεχνική του backtracking.
  • Εντοπίζουν ποια μέθοδος μεταξύ των backtracking και dynamic programming είναι προτιμότερη ανάλογα με τη φύση του προς λύση προβλήματος.
  • Λύνουν ένα πρόβλημα με τη μέθοδο Divide and Conquer.
  • Κατασκευάζουν μία αναδρομική συνάρτηση εντοπίζοντας το Base case και τον αναδρομικό τύπο.
  • Υπολογίζουν τη χρονική πολυπλοκότητα ενός αναδρομικού αλγορίθμου.
  • Επιλύουν το πρόβλημα των πύργων των Hanoi  τόσο σχεδιαστικά όσο και προγραμματιστικά.
  • Ταξινομούν έναν πίνακα με τη μέθοδο MergeSort.
  • Απαριθμούν τις συναντώμενες δυσκολίες κατά την εύρεση του base case αναδρομικού αλγορίθμου.
  • Εντοπίζουν σε ποια τάξη μεγέθους ανήκει καθεμία από τις δοθέντες συναρτήσεις.
  • Εφαρμόζουν το Master Theorem ανάλογα σε ποια από τις 3 περιπτώσεις βρίσκονται.
  • Μετατρέπουν μία μη εκθετική συνάρτηση σε εκθετική με τη βοήθεια των λογαρίθμων.
  •  
Τρόπος διδασκαλίας

Μικτή διδασκαλία

Στοιχεία μαθήματος
  • Αριθμός Εκπαιδευόμενων: 50
  • Αριθμός Μαθημάτων: 13
  • Χρόνος Μαθήματος: 2
  • Χρόνος στο σπίτι: 2
  • Συνολικός χρόνος: 52

Ενότητες

Περιεχόμενο : Ασυμπτωτικοί συμβολισμοί Ο,Ω,Θ, Ιδιότητες στις τάξεις μεγέθους,Ιδιότητες Πραγματικών Αριθμών,Ασυμπτωτικές συγκρίσεις

Περιεχόμενο: Ουρές Προτεραιότητας,Πλήρη και Σχεδόν πλήρη δυαδικά δέντρα,Σωροί,Υλοποίηση Σωρού με πίνακα, Εισαγωγή στοιχείου σε σωρό και πολυπλοκότητα,,Διαγραφή ρίζας από σωρό και πολυπλοκότητα

Περιεχόμενο : Τρόποι αναπαράστασης γράφου,Γράφοι με βάρη,Κατευθυνόμενοι γράφοι,Μη κατευθυνόμενοι Γράφοι,Αναζήτηση γράφου κατά βάθος,Αναζήτηση Γράφου κατά πλάτος,Συνεκτικές Συνιστώσες, Ισχυρές συνεκτικές συνιστώσες

 

Περιεχόμενο: Συνεκτικά δέντρα με μέγιστο και ελάχιστο κόστος (Minimum Spanning Tree-MST) , Θεώρημα βέλτιστου για συνεκτικά δέντρα με ελάχιστο κόστος, Αλγόριθμος Dijkstra , Αλγόριθμος Prim (nearest neighbour), δομές αλγορίθμου Prim, πολυπλοκότητες αλγορίθμων Dijkstra,Kruskal,Prim, συνεκτικότητα, δάσος επικάλυψης, παραδείγματα αλγορίθμων Dijkstra,Kruskal,Prim (εύρεση συντομότερου μονοπατιού, ελάχιστο συνεκτικό δέντρο) 

 

Περιεχόμενο: Δυναμικός Προγραμματισμός (ορισμός, βασικές αρχές), Κατευθυνόμενος Άκυκλος Γράφος (Directed Acyclic Graph-DAG), αλγόριθμος συντομότερου μονοπατιού για DAG (τοπολογική ταξινόμηση), αλγόριθμος Bellman-ford (συντομότερου μονοπατιού για DAG)-αρνητικά βάρη

 

Περιεχόμενο: Μέγιστη ροή σε γράφο, Διατήρηση της ροής, Διαχείριση της ροής,Αλγόριθμος Ford-Fulkerson

Περιεχόμενο: Χαρακτηριστικά (πλεονεκτήματα, μειονεκτήματα, άπληστη στρατηγική, άπληστη επιλογή, επιλογή δραστηριοτήτων, δρομολόγηση εργασιών), υπολογισμός βέλτιστης λύσης, ορθότητα, υλοποίηση άπληστου αλγορίθμου, απόδειξη ορθότητας για βέλτιστη λύση και άπληστη ορθότητα, χρωματισμός διαστημάτων, πρόβλημα του περιπτερά, κλασματικό (0/1) πρόβλημα σακιδίου (εκτενέστερη αναφορά στην επόμενη ενότητα), διαχείριση πόρων-αλγόριθμος διαχείρισης ενός πόρου- απόδειξη βελτιστότητας, μεγιστοποίηση ολικής διάρκειας, μοντελοποίηση με γράφους

 

Περιεχόμενο: Διακριτό πρόβλημα σακιδίου,Δυναμικός προγραμματισμός 0/1 Σακίδιο,Πολυπλοκότητα 0/1 Σακιδίου,Πλήρης Αναζήτηση ,Πρόβλημα Κ Βασιλισσών

Διαφάνειες: Έγγραφα, φάκελος: Εβδομάδα 8

Περιεχόμενο:Αναδρομή, Αλγόριθμος Divide and Conquer, Αλγόριθμοι Merge sort,Πύργοι Hanoi

Διαφάνειες: Έγγραφα, φάκελος: Εβδομάδα 9

Περιεχόμενο: Σύγκριση συναρτήσεων με κυριαρχία της εκθετικής,Σύγκριση συναρτήσεων ίδιας τάξης μεγέθους,Σύγκριση συναρτήσεων με κυριαρχία της μη εκθετικής,Παραδείγματα,Υπενθύμιση λογαριθμικών ιδιοτήτων

Περιεχόμενο: Προβλήματα απόφασης (Decision problems), εύκολα και δύσκολα προβλήματα, θεωρία πολυπλοκότητας, προβλήματα συνδυαστικής βελτιστοποίησης

Περιεχόμενο: Είδη προβλημάτων (στιγμιότυπο, πλανώδιος πωλητής (TSP), εικασίας fermat, υπολογισμός π, subset sum), κλάση P (προβλήματα RELPRIME, CSG), κλάση NP (Κύκλος Hamilton, μονοπάτι Hamilton, πιστοποιητικό), NP προβλήματα ικανοποίησης περιορισμών (SAT, λογική μεταβλητή, άρνηση λογικής μεταβλητής, όρος), άλλα προβλήματα NP κλάσης (Κλίκα, Node Cover, Edge Cover, KNAPSACK, 3Δ‐MATCHING,  Independent Set, 2‐MACHINE SCHEDULING, 3COLORING, CHROMATIC NUMBER, πρόβλημα 3SAT και παραλλαγές του (1in3SAT, ΝΑΕ3SAT), 0 ‐ 1 integer integer programming, Υ/Ν TSP (πρόβλημα περιοδεύοντος πωλητή πρόβλημα περιοδεύοντος πωλητή ΠΠΠ), φράση και Κανονική Συζευκτική Μορφή (ΚΣΜ), αληθεύσιμη πρόταση,  MAX CUT,  SET (EXACT) COVER, PARTITION, BIN PACKING).

Περιεχόμενο: Ορισμός προβλημάτων NP-complete και NP-hard, πλήρης απόδειξη NP- πληρότητας (και για το 3SAT πρόβλημα,) θεώρημα NP- πληρότητας για το πρόβλημα Κλίκα και το υποσύνολο  κορυφών S του γράφου G = (V, E) (ανεξάρτητο σύνολο), προβλήματα αγνώστου κατάστασης,αναγωγές

Ημερολόγιο