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

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

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

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

Διάλεξη 18: Γράφοι I - Εισαγωγή

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

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

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

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

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

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

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

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

Διάλεξη 18: Γράφοι I Εισαγωγή

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

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

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

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

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

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

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

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

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

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

Βασικές Δομές Δεδομένων

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

Διάλεξη 20: Γράφοι I - Εισαγωγή

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

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

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

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

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

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

Αλγόριθμοι Ισχυρά συνεκτικές συνιστώσες Εφαρμογές, BFS

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

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ

Αναζήτηση Κατά Βάθος. Επιµέλεια διαφανειών:. Φωτάκης διαφάνειες για SCC: A. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Βασικές οµές εδοµένων

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

Ενότητα 10 Γράφοι (ή Γραφήµατα)

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

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

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

Δομές Δεδομένων (Data Structures)

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

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

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 2A Σκελετοί Λύσεων

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

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

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

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

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

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

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Διαπεράσεις Μη Κατευθυνόμενων Γραφημάτων

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

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

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

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

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Αναζήτηση στους γράφους. - Αναζήτηση η κατά βάθος Συνεκτικές Συνιστώσες - Αλγόριθμος εύρεσης συνεκτικών συνιστωσών

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

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Γράφοι. κόµβοι) και ένα σύνολο από γραµµές (που λέγονται ακµές) οι οποίες

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

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

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

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

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

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

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

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

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

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

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

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

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

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

Βασικές Έννοιες Δοµών Δεδοµένων

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

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

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

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

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

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

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

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

Προγραµµατισµός Η/Υ. Μέρος2

Γράφοι. Αλγόριθμοι και πολυπλοκότητα. Στάθης Ζάχος, Δημήτρης Φωτάκης

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

Transcript:

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Τοπολογική Ταξινόμηση - Εφαρμογές, Παραδείγματα, Αλγόριθμοι

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Τοπολογική Ταξινόμηση (Topological Sort) Δίνεται ένα σύνολο εργασιών και θέλουμε να ορίσουμε τη σειρά με την οποία πρέπει να εκτελέσει τις εργασίες ένας επεξεργαστής, δεδομένης της ύπαρξης περιορισμών ως προς την προτεραιότητά τους. Κάθε εργασία έχει ένα σύνολο προαπαιτούμενων εργασιών, δηλαδή δεν μπορεί να εκτελεσθεί προτού συμπληρωθεί κάθε μια από τις προαπαιτούμενες. Μπορούμε να παραστήσουμε το πρόβλημα ως έναν κατευθυνόμενο γράφο: Οι κορυφές του γράφου αντιστοιχούν σε κάθε μια από τις εργασίες, και η ύπαρξη ακμής από την κορυφή Α στην κορυφή Β δηλώνει ότι η εργασία Α πρέπει να εκτελεστεί πριν από τη Β. Τοπολογική ταξινόμηση του γράφου είναι μια σειρά των κορυφών του, v 1,, v n,, ώστε αν (v i, v j ) είναι ακμή του γράφου τότε i εκτελείται πριν το j (δηλαδή i<j). Α Β

Η διαδικασία της τοπολογικής ταξινόμησης στην ουσία μας λέει την σειρά με την οποία μπορούμε να βάλουμε τους κόμβους σε μια σειρά έτσι ώστε καμία ακμή να μη δείχνει προς τα πίσω ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 3

Παράδειγμα Τοπολογικών Ταξινομήσεων ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4 V2 V1 V3 Τοπολογικές Ταξινομήσεις του γράφου: 1. V1, V2, V4, V3, V5, V6, V7 V4 V5 2. V1, V2, V3, V5, V4, V6, V7 3. V1, V3, V2, V5, V4, V6, V7 V6 4. V7

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5 Αλγόριθμος για Τοπολογική Ταξινόμηση Βαθμός εισόδου (in-degree): ενός κόμβου είναι ο αριθμός των ακμών που καταλήγουν στον κόμβο. (Στο πρόβλημα μας, ο αριθμός των προαπαιτούμενων εργασιών) Για κάθε κορυφή u έστω I[u] ο βαθμός εισόδου (αριθμός γονέων) της u. ΠΑΡΑΔΕΙΓΜΑ ΑΛΓΟΡΙΘΜΟΣ Επαναλαμβάνουμε τα εξής βήματα: 1. διαλέγουμε κορυφή Α με I[Α]=0, 2. τυπώνουμε την Α, 3. για όλες τις κορυφές Β, όπου υπάρχει η ακμή (Α,Β) μειώνουμε την τιμή Ι[Β] κατά 1. ΑΠΟΤΕΛΕΣΜΑTA(Υπάρχουν αρκετές τοπολογικές ταξινομήσεις) 7,5,3,11,8,2,9,10 7,5,11,2,3,10,8,9..

Κατευθυνόμενοι Μη-Κυκλικοί Γράφοι Ωστόσο η τοπολογική ταξινόμηση δουλεύει μόνο για μια ειδική κλάση γράφων η οποία ονομάζεται DAGs DAG: Directed Acyclic Graphs (Κατευθυνόμενοι Μη-Κυκλικοί Γράφοι): Ένας γράφος στο οποίο κανένα μονοπάτι δεν ξεκινά και τελειώνει στον ίδιο κόμβο. Directed Acyclic Graph Directed Cyclic Graph To γεγονός ότι δουλεύει μόνο για DAGs είναι αναμενόμενο διότι αν υπήρχαν κυκλικά μονοπάτια τότε δεν θα υπήρχε κάποια σειρά (ordering) μεταξύ των στοιχείων (αφού δεν θα ξέραμε ποια είναι η αρχή) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 6

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 7 (Ψευδό)-Υλοποίηση 1 topsort1( graph G ){ // αρχικοποίηση πίνακα μεγέθους V int I[ V ] = {}; // μέτρηση in-degree για κάθε κόμβο for each vertex u for each edge (u,v) O( V + E ) I[v]++; // προσπέλαση του γράφου for (i=1; i <= V ; i++){ v = FindVertexOfIndegree0; Ο( V ) if (v == NULL) {// δεν υπάρχει κόμβος //με in-degree=0 Error( Graph has a cycle ); return; } print v; // εκτύπωση κόμβου for each edge (v,w) // μείωση in-degree I[w]--; // για κάθε παιδί } Χρόνος Εκτέλεσης: Ο( V 2 +Ε) Ο( V 2 + E ) O( Ε )

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 8 (Ψευδό)-Υλοποίηση 2 (Με Χρήση Ουράς) topologicalsort( graph G ){ Queue Q; // ορισμός βοηθητικής ουράς // αρχικοποίηση πίνακα μεγέθους V int I[ V ] = {}; // μέτρηση indegree για κάθε κόμβο for each vertex u for each edge (u,v) I[v]++; Θ( V + E ) // τοποθέτησε κάθε στοιχείο με indegree=0 σε μια ουρά for each vertex u if (I[u]==0) Enqueue(u, Q); Θ( V ) Χρόνος Εκτέλεσης: Θ( V + E ) while (! IsEmpty(Q)){ u = Dequeue(Q); output u; number_of_outputs++; for each (u,v) { I[v]--; Θ( V + E ) if (I[v]==0) Enqueue (v, Q); } } // Εάν δεν εκτυπώθηκαν όλοι οι κόμβοι τότε είχε κύκλο o γράφος γιατί κάποιοι κόμβοι δεν πήραν ποτέ indegree = 0; if (number_of_outputs!= V ) Error( Graph has a cycle );

Αλγόριθμος 3 DFS + Stack! ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 9

Παράδειγμα με DFS ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 10

Σύνοψη Ο χρόνος εκτέλεσης της TopologicalSort είναι Για υλοποίηση με λίστες γειτνίασης: Ο( V + Ε ) Για υλοποίηση με πίνακες γειτνίασης: Ο( V 2 ) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 11 Για αραιούς γράφους όπου Ε Ο( V ) η πολυπλοκότητα αυτή μεταφράζεται σε: Ο( V ), για υλοποίηση με λίστες γειτνίασης, ενώ για υλοποίηση με πίνακες γειτνίασης παραμένει Ο( V 2 ). Για πυκνούς γράφους όπου Ε Ο( V 2 ) η πολυπλοκότητα αυτή μεταφράζεται σε: Ο( V 2 ), για υλοποίηση με λίστες γειτνίασης, και για υλοποίηση με πίνακες γειτνίασης παραμένει Ο( V 2 ).

Γράφοι: Ασκήσεις Με δεδομένο εισόδου τον πιο κάτω κατευθυνόμενο γράφο, ποια επιλογή ΔΕΝ αποτελεί το αποτέλεσμα της τοπολογικής ταξινόμησης; V2 V4 V1 V6 V7 V3 V5 Α. B. Γ. Δ. V1, V2, V4, V3, V5, V6, V7 V1, V2, V3, V5, V6, V4, V7 V1, V2, V3, V5, V4, V6, V7 V1, V3, V2, V5, V4, V6, V7 ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 12

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 13 Παράδειγμα 1: Εφαρμογή Γράφων Η εταιρεία τηλεπικοινωνιών EPL-NET έχει ένα δίκτυο από σταθμούς που ενώνονται μεταξύ τους από n επικοινωνιακές γραμμές υψηλής ταχύτητας. Το τηλέφωνο του κάθε συνδρομητή της εταιρείας συνδέεται με το σταθμό της περιοχής του. Κάθε σταθμός συνδέεται με άλλους χρήστες αλλά και με άλλους σταθμούς. Οι ερευνητές της εταιρείας έχουν ανακαλύψει μία νέα τεχνολογία που επιτρέπει σε δύο χρήστες να βλέπουν και τρισδιάστατη εικόνα κατά τη διάρκεια της τηλεφωνικής τους επικοινωνίας. Για να είναι όμως η ποιότητα της εικόνας ικανοποιητική, πρέπει ο αριθμός των γραμμών που χρησιμοποιούνται για τη σύνδεση ανάμεσά στους δύο χρήστες (και ενδιάμεσους σταθμούς) να μην ξεπερνά τις 4 συνδέσεις. Να σχεδιάσετε ένα αποδοτικό αλγόριθμο (ψευδοκώδικα) ο οποίος με δεδομένο εισόδου την ταυτότητα κάποιου χρήστη u, να επιστρέφει (εκτύπωση) τη λίστα με όλους τους χρήστες που μπορεί να χρησιμοποιήσουν την καινούρια τεχνολογία με τον u.

Παράδειγμα 1: Εφαρμογή Γράφων Το πρόβλημα μπορεί να μετατραπεί σε πρόβλημα διερεύνησης κατά πλάτος σε γράφο αρχίζοντας από τον χρήστη (κορυφή) u και μετά εκτελώντας την διερεύνηση μέχρι το βάθος 4. ΒFS(vertex u, graph G){ } visited[ V ]; queue Q; Q=MakeEmptyQueue(); for each v in G visited[v]=false; visited[u]= True; Enqueue(u,Q, 0); while (!IsEmpty(Q)){ } (w, h) = Dequeue(Q); print(w); if(h+1>4) continue; for each v adjacent to w if (Visited[v]==False){ Visited[v]=True; Enqueue(v,Q, h+1); ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 14