Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεAlexei Spanos Τροποποιήθηκε πριν 9 χρόνια
1
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών που είναι: b b εφικτές b b τοπικά βέλτιστες b b αμετάκλητες ΔΕΝ λύνονται όλα τα προβλήματα βελτιστο- ποίησης με αυτόν τον τρόπο
2
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο2 Εφαρμογή της άπληστης στρατηγικής b Βέλτιστες λύσεις: Υπολογισμός για ρέστα Ελάχιστα ζευγνύοντα δένδρα (MST) Ελάχιστα μονοπάτια (one-to-all) Απλά προβλήματα δρομολόγησης Κώδικες Huffman b Προσεγγίσεις: Πρόβλημα περιοδεύοντας πωλητή (TSP) Πρόβλημα σάκου Άλλα προβλήματα συνδυαστικής βελτιστοποίησης
3
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο3 Ελάχιστα ζευγνύοντα δένδρα (MST) b Ζευγνύον δένδρο b Ζευγνύον δένδρο ενός συνεκτικού γράφου G είναι ένας συνεκτικός ακυκλος υπογράφος του G που αποτελείται από όλες τις κορυφές του G b Ελάχιστο ζευγνύον δένδρο b Ελάχιστο ζευγνύον δένδρο ενός ζυγισμένου συνεκτικού γράφου G είναι το ζευγνύον δένδρο του G με το ελάχιστο συνολικό βάρος b b Παράδειγμα: 3 4 2 1 4 2 6 1 3
4
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο4 Αλγόριθμος του Prim b b Αρχικά το δένδρο αποτελείται από ένα κόμβο b b Το δένδρο μεγαλώνει κατά μια κορυφή/ακμή κάθε φορά για να προκύψει το MST Δημιουργείται μια σειρά μεγαλύτερων δένδρων T 1, T 2, … b b Σε κάθε στάδιο το δένδρο T i+1 κατασκευάζεται από το T i : προστίθεται η ακμή με το ελάχιστο βάρος, η οποία συνδέει μια κορυφή του δένδρου T i με κάποια που δεν ανήκει στο T i αυτό είναι το άπληστο βήμαΕπιλέγουμε από τις ακμές του κρασπέδου (fringe) – αυτό είναι το άπληστο βήμα b b Ο αλγόριθμος σταματά όταν έχουν επιλεγεί όλες οι κορυφές
5
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο5 Παραδείγματα: 3 4 2 1 4 2 6 1 3 a edc b 1 5 2 4 6 3 7
6
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο6 Κώδικας αλγορίθμου Prim Algorithm Prim(G) V T {v 0 } E T {} for i 1 to |V|-1 do find a minimum weight edge e*=(v*,u*) among the edges (v,u) such that vЄV T and uЄ(V-V T ) V T V T ∪ {u*} E T E T ∪ {e*} return E T
7
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο7 Σχετικά με τον αλγόριθμο του Prim b b Πρέπει να αποδειχθεί ότι πράγματι ο αλγόριθμος δίνει το MST b b Χρειάζεται μια ουρά προτεραιότητας για να βρούμε την ακμή με το ελάχιστο βάρος: χρησιμοποιούμε ένα min-heap b b Αποτελεσματικότητα: για γράφο με n κορυφές και m ακμές: (n–1+m) log n b b Συνεπώς: Θ(m log n) number of stages (min-heap deletions) number of edges considered (min-heap insertions) insertion/deletion from min-heap
8
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο8 Αλγόριθμος του Kruskal b b Αρχίζουμε με ένα κενό δάσος από δένδρα b b Μεγαλώνουμε το MST με μια ακμή κάθε φορά στα ενδιάμεσα στάδια συνήθως έχουμε ένα δάσος από δένδρα (μη συνδεδεμένα) b b Σε κάθε στάδιο προσθέτουμε μια ακμή με ελάχιστο βάρος από αυτές που δεν έχουν χρησιμοποιηθεί και δεν δημιουργούν κύκλο Αρχικά οι κορυφές ταξινομούνται κατά αύξον βάρος Σε κάθε στάδιο η ακμή μπορεί να: – –Να επεκτείνει ένα υπάρχον δένδρο – –Να συνδυάσει δυο δένδρα σε ένα – –Να δημιουργήσει ένα νέο δένδρο Χρειάζεται ένας αποτελεσματικός τρόπος διαπίστωσης κύκλων b b Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές
9
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο9 Παραδείγματα: 3 4 2 1 4 2 6 1 3 a edc b 1 5 2 4 6 3 7
10
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο10 Κώδικας αλγορίθμου του Kruskal Algorithm Kruskal(G) Sort E in nondecreasing order of the weights E T { }; k 0; ecounter 0 while ecounter < |V|-1 k k+1 if E T ∪ {e ik } is acyclic E T E T ∪ {e ik } ecounter ecounter+1 return E T
11
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο11 b b Ο αλγόριθμος φαίνεται ευκολότερος από του Prim αλλά είναι: Δυσκολότερος στην υλοποίηση (έλεγχος κύκλων) Λιγότερο αποτελεσματικός Θ(m log m) b Έλεγχος κύκλων b Έλεγχος κύκλων: ένας κύκλος υφίσταται αν και μόνο αν μια ακμή συνδέει κορυφές της ίδιας συνιστώσας b ένωσης-εύρεσης b Αλγόριθμοι ένωσης-εύρεσης (union-find) Σχετικά με τον αλγόριθμο του Kruskal
12
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο12 Συντομότερα μονοπάτια - Dijkstra b b Συντομότερα μονοπάτια (one-to-all) : Δεδομένου ενός ζυγισμένου γράφου G, να βρεθούν τα συντομότερα μονοπάτια από μια κορυφή προς όλες τις άλλες b b Δεν δουλεύει με αρνητικά βάρη b b Εφαρμόζεται σε κατευθυνόμενους και μη γράφους
13
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο13 Ο αλγόριθμος του Dijkstra είναι παρόμοιος με του Prim, με την εξής διαφορά: Αρχικά το δένδρο έχει μια κορυφή Το δένδρο μεγαλώνει με μια κορυφή/ακμή κάθε φορά Κρατούμε το συντομότερο μονοπάτι από την πηγή προς τις κορυφές του δένδρου T i προσθέ- τουμε την ακμή (v,w) με το ελάχιστο d(s,v)+d(v,w), όπου vЄΤ i, αλλά δεν ισχύει wЄV iΣε κάθε στάδιο κατασκευάζουμε το T i+1 από το T i : προσθέ- τουμε την ακμή (v,w) με το ελάχιστο d(s,v)+d(v,w), όπου vЄΤ i, αλλά δεν ισχύει wЄV i Επιλέγουμε από τις ακμές του κρασπέδου (fringe) – αυτό είναι το άπληστο βήμα Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές Αλγόριθμος του Dijkstra
14
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο14 Παράδειγμα: a edc b 1 5 2 4 6 3 7
15
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο15 Κώδικας αλγορίθμου του Dijkstra Algorithm Dijkstra(G,s) Initialize(Q) for every vertex v Є V do d v ∞; p v null; Insert(Q,v, d v ) d s 0; Decrease(Q,s,d s ); V T 0 for i 0 to |V|-1 do u* DeleteMin(Q); V T V T ∪ {u*} for every vertex u in V-V T that is adjacent to u* do if d u* +w(u*,u)<d u d u d u +w(u*,u); p u u*; Decrease(Q,u,d u ) b b Αποτελεσματικότητα
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.