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

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

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

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

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

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

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Εργαστήριο Σημασιολογικού Ιστού

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

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

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

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

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Βιοπληροφορική. Ενότητα 6: Σύγκριση αλληλουχιών Part I

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

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

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

Transcript:

Διάλεξη 20: Τοπολογική Ταξινόμηση Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ολοκλήρωση Αλγορίθμων Διάσχισης Γράφων (Από Διάλεξη 19) Τοπολογική Ταξινόμηση Εφαρμογές, Παραδείγματα, Αλγόριθμοι Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 20-1

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

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

Αλγόριθμος για Τοπολογική Ταξινόμηση Βαθμός εισόδου (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 3,7,8,5,11,10,9,2.. ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 20-4

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

topsort1( graph G ){ (Ψευδό)-Υλοποίηση 1 // αρχικοποίηση πίνακα μεγέθους V int I[ V ] = {; // μέτρηση in-degree για κάθε κόμβο for each vertex u for each edge (u,v) I[v]++; O( V + E ) Χρόνος Εκτέλεσης: Ο( V 2 +Ε) // προσπέλαση του γράφου 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 O( Ε ) I[w]--; // για κάθε παιδί Ο( V 2 + E ) ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 20-6

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