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

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

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

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

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

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

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

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου

ηδάζθωλ: εµήηξεο Εεϊλαιηπνύξ

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα

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

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

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

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

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

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

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

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

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

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων)

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

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

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

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

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

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

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

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

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

ΑΝΤΙΣΤΟΙΧΗΣΕΙΣ ΟΡΩΝ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙOΥΝΤΑΙ ΣΤΟΥΣ ΤΟΜΟΥΣ Α ΚΑΙ Β ΤΗΣ ΘΕ «ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ» Ένα γράφημα αποτελείται από ένα σύνολο 94.

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

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

u v 4 w G 2 G 1 u v w x y z 4

Θεωρία Γράφων Αλγόριθμοι BFS, Prim, Dijkstra, Bellman-Ford

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

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

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

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

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

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

Κινητός και ιάχυτος Υπολογισµός (Mobile & Pervasive Computing) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

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

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

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

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Διάλεξη 18: B-Δένδρα

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

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

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

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

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

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

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

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

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

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

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

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

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

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

Minimum Spanning Tree: Prim's Algorithm

Θεωρία Γραφημάτων 5η Διάλεξη

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

Αλγόριθμος Kruskal Δέντρα Επικάλυψης Ελάχιστου Κόστους

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο 2: Πίνακες

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Αλγόριθµοι Οπισθοδρόµησης

Μετασχηματισμοί, Αναπαράσταση και Ισομορφισμός Γραφημάτων

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

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

Transcript:

Διάλεξη 3: Ελάχιστα Γεννητορικά Δέντρα Ο λγόριθμος Prim Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ελάχιστα Γεννητορικά Δένδρα (ΕΓΔ) Minimum Spanning Trees -Ο αλγόριθμος του Primγια εύρεση ΕΓΔ σε γράφους Διδάσκων: Παναγιώτης νδρέου ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Ελάχιστα Γεννητορικά Δένδρα (ΕΓΔ) - Το πρόβλημα Υποθέστε ότι έχουμε το weightedγράφο G(V,), ο οποίος εκφράζει τις συνδέσεις σε ένα δίκτυο (το βάρος κάθε ακμής εκφράζει κάποιο κόστος π.χ. καθυστέρηση μετάδοσης). Επίσης υποθέστε ότι θέλουμε να στείλουμε από ένα κόμβο (server) ένα video stream στις υπόλοιπες τερματικές κορυφές του γράφου. Ένας τρόπος θα ήταν να στείλουμε ένα video stream ανά κορυφήπαραλήπτη (unicast) Όμως αυτό θα ήταν πολύ ακριβό. Ιδανικά θα θέλαμε να φτιάξουμε ένα μονοπάτι (δένδρο) προς όλους τους τερματικούς κόμβους έτσι ώστε το συνολικό άθροισμα των ακμών να είναι ελάχιστο. Ένα τέτοιο δένδρο θα μας επέτρεπε να στείλουμε την ταινία προς όλους με το ελάχιστο κόστος. Σήμερα θα μελετήσουμε τέτοια Ελάχιστα Γεννητορικά Δένδρα ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Ελάχιστα Γεννητορικά Δένδρα (ΕΓΔ) Έστω ένας μη-κατευθυνόμενοςγράφος με βάρη, G(V,). Γεννητορικό δένδρο (spanningtree, ΓΔ)του Gονομάζουμε κάθε δένδρο Tπου περιέχει όλους τους κόμβους του Gκαι κάθε ακμή του οποίου είναι και ακμή του G. Σε ένα ΓΔ, όλες οι κορυφές καλύπτονται, γι αυτό το δένδρο ονομάζεται και δένδρο σκελετός (spanningtree: the tree spans all the vertices) Ένα γεννητορικό δένδρο γράφου με nκορυφές έχει n-ακμές. Βάρος ενός ΓΔείναι το άθροισμα των βαρών όλων των ακμών του Ελάχιστο ΓΔ (ΕΓΔ) είναι το ΓΔ με το μικρότερο βάρος. Ένας γράφος δυνατό να έχει περισσότερα από ένα ΕΓΔ. (Εάν ο γράφος δεν είχε βάρη τότε οποιονδήποτε δένδρο που ενώνει όλες τις ακμές = ΕΓΔ) Το πρόβλημα εύρεσης ενός ΓΔ μπορεί να εκφραστεί και για κατευθυνόμενους γράφους αλλά είναι κάπως δυσκολότερη η υλοποίηση ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3

Παραδείγματα Γεννητορικών Δένδρων Γράφος G Γ -: Βάρος= Γ -: Βάρος= Κατ ακρίβεια αυτό το δένδρο είναι ένα Ελάχιστο ΓΔ (όπως θα δούμε στην συνέχεια) Υπάρχουν άλλα; ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 4

Ιδιότητες ΕΓΔ Υποθέτουμε στην συνέχεια ότι οι γράφοι που μελετάμε είναι συνεκτικοί(δηλαδή υπάρχει τουλάχιστο μια διαδρομή μεταξύ όλων των κορυφών). Δεν κάνει νόημα να βρούμε ένα ΕΓΔ ενός μη-συνεκτικού γράφου γιατί ο ορισμός του ΕΓΔ προϋποθέτει ότι το δένδρο καλύπτει όλες τις κορυφές. Η εύρεση ΕΓΔ είναι γνωστό και βαθιά μελετημένο πρόβλημα στην επεξεργασία γράφων. Έχει ποικίλες εφαρμογές. ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Ο αλγόριθμός του Prim ρχικά το δένδρο περιέχει ακριβώς μία κορυφή, η οποία επιλέγεται τυχαία. Για να κτίσουμε το δένδρο, σε κάθε βήμα συνδέουμε ακόμα μια κορυφή στο παρόν δένδρο με την επιλογή και εισαγωγή μιας καινούριας ακμής (από τις ακμές του γράφου). Πως μπορούμε να επιλέξουμε την κατάλληλη ακμή; Στην περίπτωση αυτού του αλγόριθμου,αν Sείναι το σύνολο των κορυφών του παρόντος δένδρου, επιλέγουμε Την ακμή με το μικρότερο βάρος,. Την ακμή η οποία μπορεί να μεγαλώσει το δένδρο κατά ένα κόμβο. Την ακμή η οποία δεν θα δημιουργήσει κάποιο κύκλο Ο αλγόριθμος του Prim είναι ένας Άπληστος λγόριθμος (Greedy Algorithm).Σε κάθε βήμα κάνει την κίνηση που ικανοποιεί όλες τις συνθήκες και έχει το πιο λίγο κόστος. ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Παράδειγμα Εκτέλεσης ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. Γράφος G Ξεκινούµε διαλέγοντας τυχαία µια κορυφή 3

Παράδειγμα Εκτέλεσης(συν.) ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8 Γράφος G 4

Υλοποίηση λγόριθμου Prim Για να υλοποιήσουμε τον αλγόριθμο Prim θα χρησιμοποιήσουμε παράλληλους πίνακες ) visited[n] : Κορυφές από τις οποίες περάσαμε. ) closest[n] : Η κοντινότερη κορυφή κάθε κόμβου στο δένδρο (μια δεδομένη στιγμή) ) distance[n]: Η απόσταση του κάθε επί μέρους κόμβου στο (Β) ρχικοποίηση visited: closest: distance: A Β 0 0 0 0 0 0 0 0 0 0 0 0 ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Υλοποίηση λγόριθμου Prim (συν.) Μέτα την εισαγωγή του στο Δένδρο visited: closest: distance: A Β 0 0 0 0 0 0 A 0 A 0 0 Μέτα την εισαγωγή του Βστο Δένδρο visited: closest: distance: A Β 0 0 0 0 0 A A Προσπαθούμε να μεγαλώσουμε το δένδρο με άπληστο τρόπο (διατηρώντας το συνδεδεμένο) ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 0

Υλοποίηση λγόριθμου Prim (συν.) Μέτα την εισαγωγή του στο Δένδρο visited: closest: distance: A Β 0 0 0 0 A Δυο τρόποι να πάμε στο, διατηρούμε τον ένα. ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Υλοποίηση λγόριθμου Prim (συν.) Μέτα την εισαγωγή του στο Δένδρο visited: closest: distance: A Β 0 0 0 A ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Η Υλοποίηση του λγόριθμου Prim Prim(graph G){ int visited[n]={}; // Κορυφές που προστέθηκαν στο δένδρο (ρχικά όλα 0 ) int closest[n]={}; // «Πιο Κοντινός Γείτονας» για κάθε i: ρχικά κανένας int distance[n]=, // πόσταση από «Κοντιν. Γείτονα» για κάθε i: ρχικά άπειρο Tree = {}; // Το ΕΓ που θέλουµε να κτίσουµε (περιέχει ακµές (α,β)) // επιλογή αρχικής κορυφής ιάλεξε τυχαία κορυφή v; visited[v] = ; // Τώρα το v ανήκει στο δένδρο για κάθε κορυφή v { // ενηµέρωση πινάκων distance & closest για κάθε w γείτονα του v { if (weight(v,w) < distance[w]) { distance[w] = weight(v,w); // απόσταση κοντινότερου closest[w] = v; // ταυτότητα κοντινότερου } } // εύρεση επόµενης κορυφής µε µικρότερη απόσταση) v = minvertex(visited, distance); visited[v]=; // επιλογή κόµβου Tree = Tree {(closest[v],v)}; //προσθήκη ακµής } } weight(a,b) : βάρος ακμής a-b ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3

Η βοηθητική συνάρτηση minvertex H βοηθητική διαδικασία minvertexβρίσκει μεταξύ όλων των κορυφών που δεν προστέθηκαν στο MST (Minimum Spanning Tree) την πιο κοντινή κορυφή. Δηλαδή: vertex minvertex(int visited[], int distance[]){ min = ; for (i=0; i< V ; i++) { } if (visited[i] == ) continue; // skip nodes already in MST if (distance[i] < distance[min]) min = i; return min; // Return the minimum among all distances } visited: closest: distance: A Β 0 0 0 0 0 0 0 A A ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 4

νάλυση Χρόνου Εκτέλεσης Η διαδικασία minvertexαπαιτεί χρόνο Ο( V ), όπου V είναι ο αριθμός των κορυφών του γράφου. Ο χρόνος εκτέλεσης του βρόχου της εντολής whileστον αλγόριθμο Prim είναι και αυτός Ο( V ). (Και για υλοποίηση με πίνακα γειτνίασης και για υλοποίηση με λίστα γειτνίασης.) Άρα ο ολικός χρόνος εκτέλεσης είναι Θ( V ²). Μπορούμε να βελτιώσουμε τον αλγόριθμο; Ναι με την χρήση σωρών Με την χρήση σωρών ο αλγόριθμος μπορεί να υλοποιηθεί σε Ο( Ε log ), όπου οι ακμές του γράφου. Ωστόσο δεν θα μελετήσουμε αυτή την υλοποίηση ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.