Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Σχετικά έγγραφα
ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Εισαγωγή στην Επιστήμη των Υπολογιστών

Δομές Δεδομένων και Αλγόριθμοι

Αλγόριθμοι Γραφημάτων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Γράφοι: κατευθυνόμενοι και μη

Εισαγωγή στην Επιστήμη των Υπολογιστών

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αλγόριθµοι και Πολυπλοκότητα

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αλγόριθµοι και Πολυπλοκότητα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

ιδάσκοντες: Φ. Αφράτη,. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5

Εισαγωγή στους Αλγορίθμους Ενότητα 9η

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

Αλγόριθµοι και Πολυπλοκότητα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

Δομές Δεδομένων και Αλγόριθμοι

Ουρά Προτεραιότητας (priority queue)

Αλγόριθμοι Γραφημάτων

3η Σειρά Γραπτών Ασκήσεων

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

Ουρά Προτεραιότητας: Heap

Διδάσκων: Παναγιώτης Ανδρέου

Ελαφρύτατες διαδρομές

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Ελάχιστο Συνδετικό Δέντρο

Εισαγωγή στους Αλγορίθμους Ενότητα 9η

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

Ελάχιστο Συνδετικό Δέντρο

Θεωρία και Αλγόριθμοι Γράφων

Ελάχιστο Συνδετικό Δέντρο

Ελάχιστο Συνδετικό έντρο

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Αλγόριθμοι εύρεσης ελάχιστων γεννητικών δέντρων (MST)

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

Αναζήτηση Κατά Πλάτος

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

Αλγόριθμοι και πολυπλοκότητα Τα συντομότερα μονοπάτια(shortest Paths)

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Περιεχόμενα. Περιεχόμενα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ουρά Προτεραιότητας: Heap

Συντομότερες Διαδρομές

Ελάχιστο Συνδετικό έντρο

Συντομότερες ιαδρομές

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

Συντομότερες Διαδρομές

Τεχνολογία Πολυμέσων. Ενότητα # 9: Κωδικοποίηση εντροπίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Αναζήτηση Κατά Πλάτος

Ελάχιστα Γεννητορικά ένδρα

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

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

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

7ο ΕΡΓΑΣΤΗΡΙΟ AAAABBBBAAAAABBBBBBCCCCCCCCCCCCCCBBABAAAABBBBBBCCCCD

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Δομές Δεδομένων Ενότητα 6

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Minimum Spanning Tree: Prim's Algorithm

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

Συντομότερες ιαδρομές

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Αλγόριθµοι και Πολυπλοκότητα

Ουρά Προτεραιότητας: Heap

Πλήθος ισομερών του C k H 2k+2

Αλγόριθµοι Γραφηµάτων

Αναζήτηση Κατά Πλάτος

Στοιχεία Θεωρίας Γράφων (Graph Theory)

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Θεωρία και Αλγόριθμοι Γράφων

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Αλγόριθµοι και Πολυπλοκότητα

3η Σειρά Γραπτών Ασκήσεων

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Αναζήτηση Κατά Πλάτος

DOMES DEDOMENWN KAI ANALUSH ALGORIJMWN. ParousÐash 8: Huffman Encoding

Κατανεμημένα Συστήματα Ι

Επιχειρησιακή Έρευνα I

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΠΛΗ 20, 6 η ΟΣΣ: Δέντρα Εξετάσεις

Ουρά Προτεραιότητας (priority queue)

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

Επεξεργασία Πολυµέσων. Δρ. Μαρία Κοζύρη Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Transcript:

Σχεδίαση Αλγορίθμων Άπληστοι Αλγόριθμοι http://delab.csd.auth.gr/~gounaris/courses/ad 1

Άπληστοι αλγόριθμοι Προβλήματα βελτιστοποίησης ηςλύνονται με μια σειρά επιλογών που είναι: εφικτές τοπικά βέλτιστες αμετάκλητες ΔΕΝ λύνονται όλα τα προβλήματα βελτιστο- ποίησης με αυτόν τον τρόπο 2

Εφαρμογή της άπληστης στρατηγικής Βέλτιστες λύσεις: Υπολογισμός για ρέστα Ελάχιστα ζευγνύοντα δένδρα (MST) Ελάχιστα μονοπάτια (one-to-all) Απλά προβλήματα δρομολόγησης Κώδικες Huffman Προσεγγίσεις: Πρόβλημα περιοδεύοντας πωλητή (TSP) Πρόβλημα σάκου Άλλα προβλήματα συνδυαστικής βελτιστοποίησης 3

Υπολογισμός για ρέστα Έστω ότι υπάρχει «άπειρη διαθεσιμότητα»κερμάτων με αξία d 1 > > d m, και το ζητούμενο είναι να δώσουμε ρέστα αξίας n με το μικρότερο αριθμό κερμάτων. Παράδειγμα: d 1 = 25c, d 2 =10c, d 3 = 5c, d = 1c and n = 8c Άπληστη μέθοδος: Η άπληστη μέθοδος Είναι βέλτιστη για κάθε n και φυσιολογικές τιμές υποδιαρέσαιων. Στη γενική περίπτωση, δεν είναι βέλτιστη (παράδειγμα δυναμικού προγραμματισμού).

Ελάχιστα ζευγνύοντα δένδρα (MST) Ζευγνύον δένδρο ενός συνεκτικού γράφου G είναι ένας συνεκτικός ακυκλος υπογράφος του G που αποτελείται από όλες τις κορυφές του G Ελάχιστο ζευγνύον δένδρο ενός ζυγισμένου συνεκτικού γράφου G είναι το ζευγνύον δένδρο του G με το ελάχιστο συνολικό βάρος Παράδειγμα: 3 2 1 6 1 2 3 5

Αλγόριθμος του Prim Αρχικά το δένδρο αποτελείται από ένα κόμβο Το δένδρο μεγαλώνει κατά μια κορυφή/ακμή κάθε φορά για να προκύψει το MST Δημιουργείται μια σειρά μεγαλύτερων δένδρων T 1, T 2, Σε κάθε στάδιο το δένδρο T i+1 κατασκευάζεται από το T i: προστίθεται η ακμή με το ελάχιστο βάρος, η οποία συνδέει μια κορυφή του δένδρου T i με κάποια που δεν ανήκει στο T i Επιλέγουμε από τις ακμές του κρασπέδου (fringe) αυτό είναι το άπληστο βήμα Ο αλγόριθμος σταματά όταν έχουν επιλεγεί όλες οι κορυφές 6

Παραδείγματα: 2 1 3 6 2 3 1 a 5 1 6 2 b c 3 7 d e 7

Κώδικας αλγορίθμου Prim Algorithm Prim(G) V T {v 0 } E T {} for i 1 to V -1 do find a minimum i weight edge e*=(v*,u*) * *) among the edges (v,u) such that vєv T V T E T return E T V T {u*} E T {e*} and uє(v-v T ) 8

Σχετικά με τον αλγόριθμο του Prim Πρέπει να αποδειχθεί ότι πράγματι ο αλγόριθμος δίνει το MST Χρειάζεται μια ουρά προτεραιότητας για να βρούμε την ακμή με το ελάχιστο βάρος: χρησιμοποιούμε ένα min-heap Αποτελεσματικότητα: για γράφο με n κορυφές και m ακμές: (n 1+m) lognn number of stages (min-heap deletions) Συνεπώς: Θ(m log n) insertion/deletion from min-heap number of edges considered (min-heap insertions) Υποθέτουμε αναπαράσταση με λίστες γειτνίασης και χρήση σωρού. Aν δεν χρησιμοποιηθεί λίστα γειτνίασης και σωρός, αλλά απλός αδόμητος πίνακας: Θ(n 2 ) 9

Αλγόριθμος του Kruskal Αρχίζουμε με ένα κενό δάσος από δένδρα Μεγαλώνουμε το MST με μια ακμή κάθε φορά στα ενδιάμεσα στάδια συνήθως έχουμε ένα δάσος από δένδρα (μη συνδεδεμένα) ) Σε κάθε στάδιο προσθέτουμε μια ακμή με ελάχιστο βάρος από αυτές που δεν έχουν χρησιμοποιηθεί και δεν δημιουργούν κύκλο Αρχικά οι κορυφές ταξινομούνται κατά αύξον βάρος Σε κάθε στάδιο η ακμή μπορεί να: Να επεκτείνει ένα υπάρχον δένδρο Να συνδυάσει δυο δένδρα σε ένα Να δημιουργήσει ένα νέο δένδρο Χρειάζεται ένας αποτελεσματικός τρόπος διαπίστωσης κύκλων Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές 10

Παραδείγματα: 1 6 3 1 2 2 3 5 a b 1 6 2 c 3 7 d e 11

Κώδικας αλγορίθμου του 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 12

Σχετικά με τον αλγόριθμο του Kruskal Ο αλγόριθμος φαίνεται ευκολότερος από του Prim αλλά είναι: Δυσκολότερος στην υλοποίηση (έλεγχος κύκλων) ) Λιγότερο αποτελεσματικός Θ(m log m) Έλεγχος κύκλων: ένας κύκλος υφίσταται αν και μόνο αν μια ακμή συνδέει κορυφές της ίδιας συνιστώσας Αλγόριθμοι ένωσης-εύρεσης (union-find) 13

Συντομότερα μονοπάτια -Dijkstra Συντομότερα μονοπάτια (one-to-all) : Δεδομένου ενός ζυγισμένου γράφου G, να βρεθούν τα συντομότερα μονοπάτια από μια κορυφή προς όλες τις άλλες Δεν δουλεύει με αρνητικά βάρη Εφαρμόζεται σε κατευθυνόμενους και μη γράφους 1

Αλγόριθμος του Dijkstra Ο αλγόριθμος του Dijkstra είναι παρόμοιος με του Prim, με την εξής διαφορά: Αρχικά το δένδρο έχει μια κορυφή Το δένδρο μεγαλώνει με μια κορυφή/ακμή κάθε φορά Κρατούμε το συντομότερο μονοπάτι από την πηγή προς τις κορυφές του δένδρου T i Σε κάθε στάδιο κατασκευάζουμε το T i+1 από το T i : προσθέτουμε την ακμή (v,w v,w) με το ελάχιστο d(s,v)+ )+d(v,w v,w), όπου vєτ i, αλλά δεν ισχύει wєv i Επιλέγουμε από τις ακμές του κρασπέδου (fringe) αυτό είναι το άπληστο βήμα Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές 15

Παράδειγμα a 3 7 b 2 5 d c 6 e Tree vertices Remaining vertices a(-,0) b(a,3) c(-, ) d(a,7) e(-, ) b c 3 6 2 5 a d e 7 b(a,3) c(b,3+) d(b,3+2) e(-, ) a 3 b c 2 5 d 7 6 e d(b,5) c(b,7) e(d,5+) b c 3 6 2 5 a d 7 e c(b,7) e(d,9) e(d,9) a 3 b c 2 5 d 7 6 e

Παράδειγμα: 5 a b 1 6 2 c 3 7 d e 17

Κώδικας αλγορίθμου του Dijkstra Algorithm Dijkstra(G,s) Initialize(Q) //Q: priority queue for every vertex v Є V do d v ; p v null; //p: προτελευταία κορυφή στο μονοπάτι προς v 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)<du)<d u d u d u +w(u*,u); p u u*; Decrease(Q,u,d u ) Αποτελεσματικότητα; α; Παρόμοια με αυτή του Prim 18

Πρόβλημα Κωδικοποίησης Κωδικές Λέξεις: ακολουθία ορισμένων bits για κάθε χαρακτήρα του αλφαβήτου Δύο τύποι κωδικοποίησης: Σταθερού μήκους (fixed-length encoding) (π.χ.,., ASCII) Μεταβλητού μήκους (variable-length length encoding) (π.χ. π.χ., κώδικας Morse) Prefix-free free codes -Κώδικες προθέματος (κανονικά πρέπει να λέγονται κώδικες άνευ προθέματος): καμία κωδική λέξη δεν είναι πρόθεμα μιας άλλης Πρόβλημα: Αν είναι γνωστές οι συχνότητες της εμφάνισης των χαρακτήρων, ποιος είναι ο βέλτιστος δυαδικός κώδικας προθέματος; 19

Κώδικας Huffman Κάθε δυαδικό δένδρο με ετικέτες στις ακμές με ) και 1 δίνει ένα κώδικα προθέματος για τους χαρακτήρες στα φύλλα. Ένα βέλτιστο δυαδικό δένδρο που ελαχιστοποιεί το σταθμισμένο μήκος μίας κωδικής λέξης παράγεται από τον αλγόριθμο Huffman. Αλγόριθμος Huffman Αρχικοποίησε κάθε χαρακτήρα ως δένδρα μίας κορυφής Η ρίζα κάθε δένδρου έχει αποθηκευμένη τη συχνότητα του χαρακτήρα (βάρος δένδρου) Επανέλαβε n 1 φορές: Σύνδεσε τα δύο δένδρα με το μικρότερο βάρος σε ένα δένδρο (ως αριστερό και δεξί υποδένδρο αντίστοιχα). Το νέο βάρος είναι το άθροισμα των βαρών των δύο αρχικών δένδρων. δ Βάλε ετικέτες στις ακμές για τα αριστερά και τα δεφιά υποδένδρα 0 και 1 αντίστοιχα. 20

Παράδειγμα 0.1 B 0.15 _ 0.2 C 0.2 D 0.35 A Χαρακτήρας A B C D _ Συχνότητα 0.35 0.1 0.2 0.2 0.15 0.2 C 0.2 D 0.1 B 0.25 0.15 _ 0.35 A Κωδ. λέξεις 11 100 00 01 101 0.1 0.25 0.35 A 0.15 0.2 0. 0.2 B _ C D Μέσο πλήθος bits/χαρακτήρα /χαρακτήρα: 2.25 Κωδ/ση σταθερού μήκους: 3 Λόγος συμπίεσης: (3-2.25)/3*100% = 25% 2.25 0 0. 06 0.6 0.2 C 0.2 D 0.25 0.35 A 0.1 B 0.15 _ 1.0 0 1 0. 0.6 0 1 0 1 0.2 C 0.2 D 0.25 0 1 0.35 A 0.1 B 0.15 _ 21