Αλγόριθμοι Επανάληψη για πρόοδο Προτεινόμενη βιβλιογραφία: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani «Αλγόριθμοι» Κλειδάριθμος 2009 Κεφάλαια 0,3,4,5. http://www.cs.berkeley.edu/~vazirani/algorithms/chap0.pdf htt // b k l d / i i/ l ith / h 0 df http://www.cs.berkeley.edu/~vazirani/algorithms/chap3.pdf http://www.cs.berkeley.edu/~vazirani/algorithms/chap4.pdf http://www.cs.berkeley.edu/~vazirani/algorithms/chap5.pdf ] epl333 2011 διάλεξη 10 ∆είτε στο e-class 1 Ύλη προόδων και τελικών εξετάσεων Επιτρέπεται σκονάκι στην πρόοδο Αύριο ώρα 5-7, Αίθουσες: A, X, ∆οικ, ∆11, ∆21, ∆22,, A31 Προτεινόμενη βιβλιογραφία: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani «Αλγόριθμοι» Κλειδάριθμος 2009 Κεφάλαια 2 0,3,4,5.(section 5.1). 1 Ύλη έως τώρα Ασυμπτωτικό συμβολισμό Αλ ό θ Αλγόριθμους γραφημάτων: ά π.χ. ∆ίδεται γράφημα (με κατεύθυνση) •είναι ο κόμβος y προσιτός από τον x? •έχει κύκλο? •βρες τις ισχυρά συνεκτικές συνιστώσες. Αλγόριθμους βελτιστοποίησης : π.χ. πχ ∆ίδεται γράφημα με βάρη •ποιο είναι το μικρότερο μονοπάτι από τον x προς όλους τους κόμβους? epl333 2011 διάλεξη 10 3 Ο ασυμπτωτικός συμβολισμός είναι τρόπος να συγκρίνουμε (..χοντροειδώς) συναρτήσεις για να δούμε ποία έχει μεγαλύτερες τιμές. Τι χρειάζεται? Ο χρόνος (υπολογιστικά βήματα) αλγορίθμου είναι συνάρτηση του μήκους της εισόδου. Αν υπολογίσουμε τα βήματα ενός αλγορίθμου είναι πολύπλοκη συνάρτηση, χρειάζεται να την συγκρίνουμε με μια πιο απλή. epl333 2011 διάλεξη 10 4 2 Τα ελάχιστα που πρέπει να θυμάστε είναι: 1. Για να δούμε πόσο γρήγορος είναι ένας αλγόριθμος: • • • Μετράμε βήματα Παραλείπουμε σταθερές Από τα πολυώνυμα κρατάμε τον όρο με το μεγαλύτερο βαθμό 2. Οι κύριες ομάδες αλγορίθμων είναι: πολυωνυμικοί, γρήγοροι (n a ), n 1 ( a n ) : a 1 εκθετικοί 3. Ιεραρχία συναρτήσεων log n n n 2 ... an epl333 2011 διάλεξη 10 5 Σχέση μεταξύ , O, epl333 2011 διάλεξη 10 6 3 Μερικοί ακόμα κανόνες, που χρησιμεύουν συχνά: Κάθε λογάριθμος γ ρ μ ς αυξάνεται ξ αργότερα ργ ρ από κάθε πολυώνυμο ανεξάρτητα βάσης και εκθέτη b 0, x 0: logb n O(nx ) Εκθέτες μικρότεροι θετικοί μικρότεροι από 1 Γιατί? n epl333 2011 διάλεξη 10 7 Μερικοί ακόμα κανόνες, που χρησιμεύουν συχνά: Κάθε εκθετική συνάρτηση αυξάνεται γρηγορότερα από κάθε πολυωνυμική, ανεξάρτητα εκθέτη και βάσης r 1, d 0 : n d O ( r n ) epl333 2011 διάλεξη 10 8 4 Μερικοί ακόμα κανόνες, που χρησιμεύουν συχνά: Όσο μεγαλύτερη είναι η βάση της εκθετικής συνάρτησης, τόσο γρηγορότερα αυξάνεται r s 1: s n O ( r n ) s n ( r n ) epl333 2011 διάλεξη 10 n n2 ( ) n! n 2 9 n Προσέγγιση Stirling n! n 1 2 n ( ) n (1 ( )) e n epl333 2011 διάλεξη 10 10 5 Σχετικά ερωτήματα από παλιά θέματα: Σωστή Σύντομη αιτιολογία Λάθος (n a n b ) (n ab ) : a, b Θετικές ακέραιες σταθερές n ! O(n n ) n log n O ( n log n) n n 1 22 O(22 ) epl333 2011 διάλεξη 10 11 Στο μάθημα των Αλγορίθμων μάθατε(???): Αλγόριθμους γραφημάτων: π.χ. ∆ίδεται γράφημα (με κατεύθυνση) •είναι ο κόμβος y προσιτός από τον x? •έχει κύκλο? •βρες τις ισχυρά συνεκτικές συνιστώσες. συνιστώσες epl333 2011 διάλεξη 10 12 6 DFS Tree edges (δενδρικές ακμές, ακμές δένδρου) Back edges (ανιούσες ακμές) Forward edges (κατιούσες ακμές) Cross edges (εγκάρσιες ακμές) epl333 2011 διάλεξη 10 13 Σχετικά ερωτήματα από παλιά θέματα: Κατά την αναζήτηση σε βάθος (Depth First Search) ενός γραφήματος με κατεύθυνση είναι δυνατόν να έχουμε μια ακμή (u,v) μεταξύ δύο κόμβων u και v τέτοια που pre(u )=5, post( u )=10, pre( v )=15, post( v )=20. Σωστή Λάθος Αιτιολογία epl333 2011 διάλεξη 10 14 7 Έλεγχος κύκλων και γραφήματα δίχως κύκλους • Ενα γράφημα έχει κύκλο αν και μόνο αν κατα την εξερεύνηση σε βάθος βρεθούν ανιούσες ακμές (back)?? • Αν: εύκολο • Μόνο αν: έστω ότι υπάρχει κύκλος, v ο κόμβος του κύκλου με το μικρότερο p post. Υπάρχει (v, u) και post(v)<post(u). Αρα (v, u) back. Τα γραφήματα με κατεύθυνση που δεν έχουν κύκλους λέγονται DAGs: Directed Acyclic Graphs epl333 2011 διάλεξη 10 15 Ναι! 1 2 Έχει κύκλο??? 3 4 5 epl333 2011 διάλεξη 10 16 8 Αλγόριθμος τοπολογικής ταξινόμησης • Αν κατά την εκτέλεση του DFS δεν παρουσιαστούν ανιούσες ακμές (Back), τοπολογική ταξινόμηση είναι η σειρά των κόμβων κατά φθίνουσα σειρά αριθμού post. epl333 2011 διάλεξη 10 17 Αποσύνθεση γραφημάτων ∆ίχως κατεύθυνση: Συνεκτικές συνιστώσες Με κατεύθυνση : Ισχυρά συνεκτικές συνιστώσες epl333 2011 διάλεξη 10 18 9 Stronlgy connected components(G=(V, E): graph) 1. Υπολόγισε το ανάστροφο γράφημα GT. (Tο GT περιλαμβάνει την ακμή (u, v) ανν το G περιλαμβάνει την (v, u)) 2. Κάνε DFS στο GT 3. ∆ιάταξε τους κόμβους του G κατά φθίνουσα σειρά post από το βήμα 2. 4. Κάνε DFS στο G. Οι κόμβοι εξετάζονται με τη σειρά, ά η οποία ί καθορίστηκε θ ί στο βήμα βή 3. 3 Κάθε φορά που καλείται η explore() από το DFS γράψε: «νέα ισχυρά συνεκτική συνιστώσα». Κάθε φορά που καλείται η previsit για κάποιο κόμβο v γράψε: «κόμβος» v. epl333 2011 διάλεξη 10 19 Αλγόριθμος για ισχυρά συνεκτικές συνιστώσες: απόδειξη ορθότητας • Κάθε άθε DAG G έχει τουλάχιστον μια καταβόθρα αταβόθρα (s (sink). ). • Αν η explore() κληθεί για οποιοδήποτε κόμβο μιας ισχυρά συνεκτικής συνιστώσας που είναι καταβόθρα, θα εξερευνήσει αναδρομικά όλους τους κόμβους της συνιστώσας και θα επιστρέψει. 1 procedure explore(v: vertex) 2 {previsit(v); 3 for each edge (v, w) out of v do 4 {if not visited(w) then explore(w);} 5 postvisit(v);} epl333 2011 διάλεξη 10 20 10 Σχετικά ερωτήματα από παλιά θέματα: Μετά την εκτέλεση του DFS, ο κόμβος με το μικρότερο αριθμό post (ο κόμβος δηλαδή που βγήκε πρώτος από τη στοίβα) ανήκει αναγκαστικά σε συνεκτική συνιστώσα που είναι καταβόθρα (sink). Σωστή Λάθος!! Αιτιολογία epl333 2011 διάλεξη 10 K 21 A,B,D, E C,F G,H,I,J L epl333 2011 διάλεξη 10 22 11 algorithm Dijkstra(G=(V, E) γράφημα με θετικά βάρη, s: κόμβος) {H: ουρά προτεραιότητας με κλειδί το πεδίο dist; for each v in V do n {dist(v) = ; prev(v) = nil;} di t( ) 0; dist(s)=0; n φορές insert H= makequeue(V); while H nonempty do n φορές deletemin {v=deletemin(H); for each edge (v, w) out of v do if dist(w) > dist(v) + length(v, w) then {dist(w) = dist(v) + length(v, w); prev(w) p ( ) = v;; e φορές decreasekey decreasekey(w, H);} } } n n insert n deletemin e decreasekey n (n e) insert n deletemin epl333 2011 διάλεξη 10 23 Πολυπλοκότητα αλγορίθμου Dijkstra n.deletemin()+(e+n).insert(), όπου n=|V|, e=|E| • Υλοποίηση heap deletemin insert n .deletemin deletemin + (e+n).insert (e+n) insert • συνδ. λίστα, πίνακας O(n) • σωρός: binary heap O(logn) • d-αδική d αδική heap O(dlogn/logd) O(logn/logd) O((nd+e).(logn/logd)) O((nd+e) (logn/logd)) • Fibonacci heap O(logn) 1 O(logn) O(1) epl333 2011 διάλεξη 10 O(n2) O((e+n).logn) O(nlogn +e) 24 12 Πολυπλοκότητα αλγορίθμου Dijkstra n.deletemin()+(e+n).insert(), όπου n=|V|, e=|E| • Υλοποίηση heap • d αδική heap d-αδική deletemin insert n .deletemin + (e+v).insert O(dlogn/logd) O(logn/logd) O((nd+e) O((nd+e).(logn/logd)) (logn/logd)) Έστω ότι παίρνουμε τη μέση πυκνότητα d=e/n του γραφήματος και δίνουμε τιμή στο d. Έχουμε τα καλύτερα αποτελέσματα!! Για πυκνά γραφήματα: n2 Για αραιά γραφήματα n log n Για ενδιάμεσα γραφήματα e epl333 2011 διάλεξη 10 25 Σχετικά ερωτήματα από παλιά θέματα: Έστω ότι T είναι το δένδρο ελάχιστων μονοπατιών που υπολογίζει ο αλγόριθμος Dijkstra. Αν προσθέσουμε τη σταθερά c > 0 σε κάθε ακμή του γραφήματος, το T εξακολουθεί να είναι το δένδρο ελάχιστων μονοπατιών του τροποποιημένου γραφήματος. γραφήματος Σωστή Λάθος Αιτιολογία Ο αλγόριθμος Dijktra μπορεί να εφαρμοστεί και σε γραφήματα, στα οποία μερικές ακμές έχουν αρνητικά βάρη. ή Λάθοςς Σωστή Αιτιολογία epl333 2011 διάλεξη 10 26 13 Ελάχιστα μονοπάτια από ένα κόμβο σε γραφήματα με θετικά ή αρνητικά βάρη στις ακμές • procedure update((v, w): edge) {if dist(w) > dist(v) + length(v, w) then {dist(w) = dist(v) + length(v, w); prev(w) = v;} } • Update (v, w), Relax (v, w, weight), • Χαλάρωση (v, w, weight) epl333 2011 διάλεξη 10 27 Αλγόριθμος Bellman-Ford Είσοδος : Graph(V,E), κόμβος s {for each v in V do {dist(v) = inf ; prev(v) = nil;} dist(s)= 0; for ii=11 to |V| |V|-11 do } for each edge (v, w) in E do update(v, w); epl333 2011 διάλεξη 10 28 14 Άπληστοι (κοντόφθαλμοι) αλγόριθμοι Greedy • Εργάζονται σε στάδια και σε κάθε στάδιο κάνουν την επιλογή που φαίνεται καλύτερη εκείνη τη στιγμή. • Με άπληστες τοπικές επιλογές φτάνουν σε σφαιρικά βέλτιστη λύση. epl333 2011 διάλεξη 10 29 Είναι ορθός ο αλγόριθμος Kruskal? Βρίσκει πάντα το ελάχιστο δενδρο? Γιατί? Για ΤΟΝ Ι∆ΙΟ ΛΟΓΟ που είναι ορθοί όλοι oι αλγόριθμοι συνδετικών δένδρων που ...θα πούμε! Επειδή όλοι εφαρμόζουν ..με με μικρές παραλλαγές το θεώρημα της τομής epl333 2011 διάλεξη 10 30 15 Ιδιότητα της τομής (Cut Property) C ∆ένδρο ημιτελές! Αποτελείται από 9 κομμάτια..... ∆ιαλέγω ένα κομμάτι , έστω το C Βρίσκω τη μικρότερη ακμή e στην τομή C, V-C Η e ανήκει σίγουρα στο ελάχιστο συνδετικό δένδρο. epl333 2011 διάλεξη 10 31 Γενικός αλγόριθμος • Algorithm min spanning tree(G tree(G=(V (V, E): γράφημα με βάρη) • {/* Χ οι ακμές του δένδρου που κατασκευάζουμε*/; • Χ: σύνολο ακμών αρχικά κενό • repeat • *** {διάλεξε μια συνεκτική συνιστώσα S του (V, X); • έστω [u, v] η ακμή με το μικρότερο βάρος που • συνδέει το S με το V-S; • πρόσθεσε την [u, v] στο Χ;} • until |X|=|V|-1; • } epl333 2011 διάλεξη 10 32 • 16 Ποια συνεκτική συνιστώσα διαλέγουμε για να προσθέσουμε την επόμενη ακμή στο δένδρο που κατασκευάζουμε. Ποιο κομμάτι του ημιτελούς δένδρου? Αλγόριθμος Prim…αρχίζει από τον κόμβο που παίρνει ως παράμετρο...και συνεχώς επεκτείνει την ίδια συνιστώσα. Αλγόριθμος θ Kruskal...δεν k l παίρνει ως παράμετρο τον κόμβο αρχή.. διαλέγει αυτόν από τον οποίο φεύγει η μικρότερη ακμή epl333 2011 διάλεξη 10 33 Prim’s run [12] [3] [] b 12 4 3 [0] a 7 1 3 10 [2] [7] [] Total cost 10 2 4 e [] [3] [4] [1] c [] f 1 d [] [1] epl333 2011 διάλεξη 10 34 17 Υλοποίηση heap deletemin insert n . deletemin + e.insert συνδ. λίστα, πίνακας O(n) O(1) O(n2 ) σωρός: ρ ς binary heap O(logn) ( g ) O(logn) ( g ) O(e.logn) ( g ) d-αδική heap d=e/n, O(dlogn/logd) O(logn/logd) O(nd+e). (logn/logd) O(logn) O(1) O(nlogn +e) πυκνά: n2, αραιά: nlogn, ενδιάμεσα 1 δ): ((e=n1+δ ) e Fibonacci heap epl333 2011 διάλεξη 10 35 Κλασσικό παράδειγμα άπληστου (κοντόφθαλμου) αλγορίθμου Kruskal’s run b 12 4 3 a 7 Total cost 1 f 3 10 c 10 2 4 e 1 d epl333 2011 διάλεξη 10 36 18 Πολυπλοκότητα αλγορίθμου Kruskal • Kruskal: O(e.logn + e.FIND +n.UNION), όπου n=|V| και e=|E| • Worst case FIND: O (log n ) Η UNION εξαρτάται μόνο από τη FIND (επειδή το LINK απαιτείί σταθερό θ ό αριθμό θ ό β βημάτων) ά ) Άρα ο Kruskal: O (e log n ) epl333 lect9 2011 37 Αλγόριθμος Kruskal για ελαφρύτατα συνδετικά δένδρα. Είναι ένας απλός άπληστος (g (greedy) y) αλγόριθμος Χρησιμοποιεί μια δομή UNION FIND για να ελέγχει αν κάποια ακμή μπορεί να προστεθεί στο δένδρο (αν δεν κάνει κύκλο). Η πολυπλοκότητα του Κruskal εξαρτάται από την υλοποίηση της δομής ως εξής O(e logn + e. FIND + n. UNION), Είδαμε διάφορα Εί ά ενδιαφέροντα έ κόλπα ό στην υλοποίηση ί της δομής που τελικά κάνουν τον Kruskal O(e log n e log * n) Sorting ακμών epl333 lect9 2011 Υπόλοιπη δουλειά 38 19 Στη δομή Union-Find όταν χρησιμοποιoούται και οι δύο ευριστικοί κανόνες Συμπίεση Μονοπατιού (path compression) και Ένωση ανάλογα με το Βαθμό (union by rank) όλες οι λειτουργίες έχουν στη χειρότερη περίπτωση χρόνο O(log*n). Σωστή Λάθος Αιτιολογία Στη δομή Union-Find όταν δεν χρησιμοποιείται ο ευριστικός κανόνας Συμπίεση Μονοπατιού (path compression) --αλλά χρησιμοποιείται ο κανόνας Ένωση ανάλογα με το Βαθμό (union by rank)—όλες οι λειτουργίες έχουν στη χειρότερη περίπτωση χρόνο O(log n). Σωστή Λάθος epl333 2011 διάλεξη 10 39 20
© Copyright 2024 Paperzz