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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

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

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

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

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

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

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

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

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

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

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

Μη κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Υπογραφήµατα.

Γράφοι (συνέχεια) Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler

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

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

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

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

Τομές Γραφήματος. Γράφημα (μη κατευθυνόμενο) Συνάρτηση βάρους ακμών. Τομή : Διαμέριση του συνόλου των κόμβων σε δύο μη κενά σύνολα

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

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

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

Transcript:

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

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

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

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

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

Ο αλγόριθμός του Prim Αρχικά το δένδρο περιέχει ακριβώς μία κορυφή, η οποία επιλέγεται τυχαία. ια να κτίσουμε το δένδρο, σε κάθε βήμα συνδέουμε ακόμα μια κορυφή στο παρόν δένδρο με την επιλογή και εισαγωγή μιας καινούριας ακμής (από τις ακμές του γράφου). Πως μπορούμε να επιλέξουμε την κατάλληλη ακμή; Στην περίπτωση αυτού του αλγόριθμου, αν S είναι το σύνολο των κορυφών του παρόντος δένδρου, επιλέγουμε. Την ακμή με το μικρότερο βάρος,. Την ακμή η οποία μπορεί να μεγαλώσει το δένδρο κατά ένα κόμβο 3. Την ακμή η οποία δεν θα δημιουργήσει κάποιο κύκλο Ο αλγόριθμος του Prim είναι ένας Άπληστος Αλγόριθμος (Greedy lgorithm). Σε κάθε βήμα κάνει την κίνηση που ικανοποιεί όλες τις συνθήκες και έχει το πιο λίγο κόστος. ΠΛ 035 ομές εδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -6

Παράδειγμα κτέλεσης ράφος G 6 Ξεκινούμε διαλέγοντας τυχαία μια κορυφή Κορυφή : Α Β : 7, : 7 : Α : 7 Β : 5, :, : 3: Α : Β : 5, : :, : Κόστος Μετάβασης στην γειτονική κορυφή ΠΛ 035 ομές εδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -7

Παράδειγμα κτέλεσης (συν.) 4: Β : 5, : 7 7 : 5: Β : 5 : 6 6: 6 λάχιστο εννητορικό ένδρο () Ο Αρχικός ράφος -8

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

Υλοποίηση Αλγόριθμου Prim Μέτα την εισαγωγή του Α στο ένδρο visited: closest: distance: Β 0 0 0 0 0 0 Α 0 0 0 7 6 Μέτα την εισαγωγή του Β στο ένδρο visited: closest: distance: Β 0 0 0 0 0 Α Β Β Προσπαθούμε να μεγαλώσουμε το δένδρο με άπληστο τρόπο (διατηρώντας το συνδεδεμένο) -0

Υλοποίηση Αλγόριθμου Prim Μέτα την εισαγωγή του στο ένδρο visited: closest: distance: Β 0 0 0 0 Α Β Β Β 6 υο τρόποι να πάμε στο, διατηρούμε τον ένα. ΠΛ 035 ομές εδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. -

Η Υλοποίηση του Αλγόριθμου Prim Prim(graph G){ int visited[n]={}; // Κορυφές που προστέθηκαν στο δένδρο (Αρχικά όλα 0 ) int closest[n]={}; // «Πιο Κοντινός είτονας» για κάθε i: Αρχικά κανένας int distance[n]=, // Απόσταση από «Κοντιν. είτονα» για κάθε i: Αρχικά άπειρο Tree = {}; // Το που θέλουμε να κτίσουμε (περιέχει ακμές (α,β)) // επιλογή αρχικής κορυφής ιάλεξε τυχαία κορυφή v; visited[v] = ; // Τώρα το v ανήκει στο δένδρο weight(a,b) : βάρος ακμής a-b για κάθε κορυφή 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)}; //προσθήκη ακμής } ΠΛ 035 ομές εδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 6 -

Η βοηθητική συνάρτηση 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: Β 0 0 0 0 0 Α Β Β πόμενη πιλογή -3

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