7ο εξάμηνο Σ.Η.Μ.Μ.Υ. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 4η εβδομάδα: Εύρεση k-οστού Μικρότερου Στοιχείου, Master Theorem, Τεχνική Greedy: Knapsack, Minimum Spanning Tree, Shortest Paths ιδάσκοντες: 1
Εύρεση Μικρότερου-Μεγαλύτερου Χώρισε σε 2 υποακολουθίες Βρες μεγαλύτερο και μικρότερο Σύγκρινε μεγαλύτερα και μικρότερα 2
Εύρεση k-οστού Μικρότερου Πολυπλοκότητα: Ο(n 2 ) χειρότερη, Ο(n) μέση 3
Βελτίωση Πολυπλοκότητας Με επιλογή κατάλληλου σημείου partition Χωρισμός σε n/5 ακολουθίες 5 στοιχείων Ταξινόμηση 5άδων και σχηματισμός Μ από τα μεσαία στοιχεία: O(n) Εύρεση του μεσαίου m της M: Τ(n/5) Τουλάχιστον ¼ στοιχεία μεγαλύτερα του m και ¼ στοιχεία μικρότερα του m 4
Η μέθοδος σχηματικά 5
Πολυπλοκότητα Βελτίωσης 6
Το Κύριο Θεώρημα (Master Theorem) 7
Υπενθύμιση: απλή εκδοχή του Master Theorem 8
ΗΤεχνικήGreedy (Άπληστη) 9
Πρόβλημα Σακιδίου (Knapsack) Είσοδος: σακίδιο χωρητικότητας Μ και n συνεχή αντικείμενα βάρους w i και αξίας p i. Αποδεκτή λύση: καθορισμός κλάσματος x i για κάθε αντικείμενο ώστε να χωράνε στο σακίδιο. Στόχος: μεγιστοποίηση της αξίας των αντικειμένων που μπήκαν στο σακίδιο. 10
Άπληστος Αλγόριθμος για το Πρόβλημα Σακιδίου Αν το άθροισμα όλων των βαρών είναι μικρότερο από Μ, θέσε x i :=1 για όλα. Αλλιώς, διάτρεξε τα αντικείμενα κατά φθίνουσα σειρά p i /w i, παίρνοντας τη μέγιστη δυνατή ποσότητα. Πολυπλοκότητα: O(nlogn) 11
Συνδετικό ένδρο Ελαχίστου Κόστους (Minimum Cost Spanning Tree) 7 12
ύο μέθοδοι Κριτήριο Prim: επιλογή πλευράς ελαχίστου κόστους ώστε ο υπογράφος να παραμένει δέντρο Κριτήριο Kruskal: επιλογή πλευράς ελαχίστου κόστους ώστε ο υπογράφος να παραμένει ακυκλικός 13
Άπληστος Αλγόριθμος με Κριτήριο Prim 14
Παράδειγμα (με Prim) 7 7 7 7 7 7 15
Άπληστος Αλγόριθμος με Κριτήριο Kruskal 16
Παράδειγμα (με Kruskal) 7 7 7 7 7 7 17
Πολυπλοκότητα - Βελτιστότητα Έστω n= V, e= E Prim: O(n 2 ) Kruskal: O(elogn) Συνεκτικοί γράφοι: n-1 <= e <= n(n-1)/2 Ο αλγόριθμος Kruskal καλύτερος σε αραιούς (dense) γράφους Θεώρημα: ο Kruskal δίνει βέλτιστη λύση 18
Ορθότητα Kruskal 19
Ορθότητα Kruskal (συν.) 20
Ορθότητα Kruskal (συν.) 21
Πρόβλημα Συντομότερων Μονοπατιών (Single Source Shortest Paths) 22
Αλγόριθμος του Dijkstra ημιουργεί δέντρο ελαχίστων αποστάσεων από τον κόμβο 1 επαναλαμβάνοντας τα παρακάτω βήματα n-1 φορές: Σε κάθε επανάληψη επιλέγεται ο κόμβος w με την ελάχιστη απόσταση από τον κόμβο 1 (θεωρώντας μόνο διαδρομές που περνούν από κόμβους του ήδη σχηματισμένου δέντρου) και προστίθεται στο δέντρο. Ενημερώνονται οι αποστάσεις που επηρεάζονται λόγω της προσθήκης του w. 23
Αλγόριθμος του Dijkstra 24
Αλγόριθμος του Dijkstra 10 10 30 25
Αλγόριθμος του Dijkstra Επιλογή πλησιέστερου κόμβου 10 10 30 26
Αλγόριθμος του Dijkstra Ενημέρωση αποστάσεων 10 10 80 30 27
Αλγόριθμος του Dijkstra 10 10 80 30 28
Αλγόριθμος του Dijkstra 10 10 80 60 30 29
Αλγόριθμος του Dijkstra 10 10 80 60 30 30
Αλγόριθμος του Dijkstra 10 10 80 60 50 30 31
Αλγόριθμος του Dijkstra 10 10 80 50 30 32
Αλγόριθμος του Dijkstra 10 10 60 50 30 33
Αλγόριθμος του Dijkstra 10 10 60 50 30 34
Αλγόριθμος Dijkstra (συν.) 35
Παράδειγμα Εκτέλεσης Dijkstra (με πίνακα) 36
Αλγόριθμος Bellman-Ford 37
Πρόβλημα Μέγιστης Ροής (max flow) ίνεται ένα δίκτυο (network): κατευθυνόμενος γράφος με βάρη που αντιπροσωπεύουν χωρητικότητες, καιδύοκόμβοιτουs και t. Ζητείται να βρεθεί ποια είναι η μέγιστη ροή που μπορεί να δρομολογηθεί από τον s στον t. 38
Αλγόριθμος Ford-Fulkerson Επιλογή ενός μονοπατιού από s σε t. ρομολόγηση όσο το δυνατόν μεγαλύτερης ροής στο μονοπάτι (ελάχιστη ακμή). Κατασκευή εναπομείναντος δικτύου (residual network). Επανάληψη διαδικασίας εάν υπάρχει ακόμη μονοπάτι από s σε t. 39
Αλγόριθμος Ford-Fulkerson (συν.) Κατασκευή εναπομείναντος δικτύου (residual network): Αφαίρεση ροής από χωρητικότητες ακμών (διαγραφή ακμής αν χωρητικότητα = 0). Αύξηση της χωρητικότητας στην αντίθετη κατεύθυνση κατά την ίδια ποσότητα (δημιουργία ακμής αν δεν υπάρχει). 40
Αλγόριθμος Ford-Fulkerson 41
Θεώρημα Max Flow Min Cut Η μέγιστη ροή ισούται με την ελάχιστης χωρητικότητας τομή (σύνολο ακμών) που διαχωρίζει τον κόμβο s από τον κόμβο t. Ο αλγόριθμος Ford-Fulkerson επιτυγχάνει τη μέγιστη ροή. 42