Σχεδίαση και Ανάλυση Αλγορίθμων Σταύρος Δ. Νικολόπουλος 016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Ενότητα 7.0 Αλγόριθμοι Γραφημάτων Διερεύνηση Γραφημάτων BFS & DFS Τοπολογική Ταξινόμηση Συνεκτικές και Ισχυρές Συνεκτικές Συνιστώσες
Διερεύνηση Γραφημάτων Γραφήματα - Δίκτυα
Γραφήματα - Δίκτυα Γραφήματα Πως ξεκίνησαν όλα!!! Leonhard Euler (1707-1783) 1736 Γέφυρες Konigsberg Σημερινό Ρωσικό Kaliningrad (στη Βαλτική μεταξύ Λιθουανίας και Πολωνίας)
Γραφήματα - Δίκτυα Γραφήματα Εξέλιξη!!! 1736 Euler, γέφυρες Koenigsburg 1847 Kirchoff, δένδρα, ηλεκτρικά δίκτυα 1847 Cayley, δένδρα, ισομερή υδρογονανθράκων C n H n+ 1850 Cayley - De Morgan - Moebius, 4 χρωματισμός 1859 Hamilton, δωδεκάεδρο 1936 ο πρώτο βιβλίο Σήμερα
Μοντελοποίηση Γραφήματα - Δίκτυα
Μοντελοποίηση Γραφήματα - Δίκτυα
Μοντελοποίηση Γραφήματα - Δίκτυα
Μοντελοποίηση Γραφήματα - Δίκτυα
Μοντελοποίηση Γραφήματα - Δίκτυα
Γραφήματα - Δίκτυα Εφαρμογές Συνδεσμικότητα Χάρτες Χρωματισμός B Α Διαδρομές Hamilton Συντομότερες διαδρομές GPS Navigation Επιπεδικότητα
Γραφήματα - Δίκτυα Εφαρμογές Κοινωνικά δίκτυα (small-world Phenomena) Ποιο δίκτυο διαδρομών είναι το ασφαλέστερο;
Μεγάλα Γραφήματα Δίκτυα!!! Γραφήματα - Δίκτυα
Γραφήματα - Δίκτυα Ορισμός 1 3 5 7 r s t z 4 6 8 p w x y Γράφημα (ή γράφος) : ένα ζεύγος (V, E), V ένα μη κενό σύνολο Ε διμελής σχέση πάνω στο V Μη-κατευθυνόμενο γράφημα : σχέση Ε συμμετρική V : κορυφές (vertices) ή κόμβοι (nodes) και Ε : ακμές (edges)
Γραφήματα - Δίκτυα Απεικόνιση 1 3 5 7 r s t z 4 6 8 p w x y Πίνακας Γειτνίασης
Γραφήματα - Δίκτυα Απεικόνιση 1 3 5 7 r s t z 4 6 8 p w x y Λίστα Γειτνίασης
Γραφήματα - Δίκτυα Τι θα θέλαμε Πρωτίστως!!! 1 3 5 7 r s t z 4 6 8 p w x y
Διερεύνηση Γραφημάτων Τι θα θέλαμε Πρωτίστως!!! 1 3 5 7 r s t z 4 6 8 p w x y Αλγορίθμους Διερεύνησης ή Διαπέρασης!!! Πρωτίστως θα θέλαμε μια διαδικασία αλγόριθμο που θα μας εξασφάλιζε ότι, ξεκινώντας από ένα κόμβο, θα «επισκεφθούμε» όλους (θα «περάσουμε» από όλους) τους κόμβος του γραφήματος!!!
Διερεύνηση Γραφημάτων Τι θα θέλαμε Πρωτίστως!!! 1 3 5 7 r s t z 4 6 8 p w x y Αλγορίθμους Διερεύνησης ή Διαπέρασης!!! Διερεύνηση Breadth-first Search (BFS) Διερεύνηση Depth-first Search (DFS)
Διερεύνηση Γραφημάτων Διερεύνηση Κατά Πλάτος - Διερεύνηση Κατά Βάθος Breadth-first Search (BFS) Depth-first Search (DFS)
BFS vs DFS Διερεύνηση Γραφημάτων
BFS vs DFS Διερεύνηση Γραφημάτων
Βασική Ιδέα BFS! Διερεύνηση Γραφημάτων
Διερεύνηση κατά Πλάτος - BFS Βασική Ιδέα BFS! Έστω G = (V, E) ένα γράφημα και s V ένας κόμβος εκκίνησης r s t z 1 0 3 1 3 p w x y d(x) : ελάχιστη απόσταση του κόμβου x V από τον s
Διερεύνηση κατά Πλάτος - BFS Βασική Ιδέα BFS! Ο κόμβος x διερευνάται πριν τον κόμβο y σε μια διερεύνηση BFS, εάν d(x) < d(y) από τον κόμβο εκκίνησης s V του G r s t z 1 0 3 1 3 p w x y O αλγόριθμος BFS διερευνά κάθε κόμβο x του G : s x
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s p w t x z y
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s p w t x z y
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s z t 0 p π(s)=nil w y x Q : s
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s 1 0 z t 1 p w s head(q) : π(s)=nil π(w)=s π(r)=s y x s w r
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t 1 0 1 w x p W head(q) : π(s)=nil π(w)=s π(r)=s π(t)=w π(x)=w z y s w r t x
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t 1 0 1 w x p r head(q) : π(s)=nil π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r z y s w r t x p
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t z 1 0 3 1 w x p π(s)=nil π(w)=s π(r)=s π(t)=w y t head(q) : s w r t x p z π(x)=w π(z)=t π(p)=r
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t z 1 0 3 1 3 w x y p π(s)=nil π(w)=s π(r)=s π(t)=w x head(q) : s w r t x p z y π(x)=w π(z)=t π(p)=r π(y)=x
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t z 1 0 3 1 3 p w x y π(s)=nil π(w)=s π(r)=s π(t)=w p head(q) : s w r t x p z y π(x)=w π(z)=t π(p)=r π(y)=x
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t z 1 0 3 1 3 w x y p π(s)=nil π(w)=s π(r)=s π(t)=w z head(q) : s w r t x p z y π(x)=w π(z)=t π(p)=r π(y)=x
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t z 1 0 3 1 3 w x y p π(s)=nil π(w)=s π(r)=s π(t)=w y head(q) : s w r t x p z y π(x)=w π(z)=t π(p)=r π(y)=x
Διερεύνηση κατά Πλάτος - BFS Παράδειγμα r s t z p w x y BFS = (s,w,r,t,x,p,z,y) π(s)=nil π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r π(z)=t π(y)=x
Διερεύνηση κατά Πλάτος - BFS Πολυπλοκότητα BFS Κάθε κόμβος v V εισέρχεται στην ουρά Q το πολύ 1 φορά και διαγράφεται από αυτή το πολύ 1. Κάθε Εισαγωγή /Διαγραφή απαιτεί O(1) χρόνο. Η λίστα γειτνίασης L(v) κάθε κόμβου v V διερευνάτε 1 μόνο φορά όταν ο κόμβος v διαγράφεται από την Q. Συνολικός χρόνος για όλες τις λειτουργίες της Q: O( V ) = O(n) Ισχύει: O( E ) = O(m) Άρα, πολυπλοκότητα BFS : O( V + Ε ) = O(n+m) χρόνος για διερεύνηση όλων των λιστών.
Διερεύνηση κατά Πλάτος - BFS BFS-δένδρο (δάσος) r s t z p w x y 1 0 3 1 3
Διερεύνηση κατά Πλάτος - BFS BFS-δένδρο (δάσος) r s t z p w x y 1 0 3 1 3
Διερεύνηση κατά Πλάτος - BFS BFS-δένδρο (δάσος) r s t z p w x y 1 0 3 1 3
Διερεύνηση κατά Πλάτος - BFS BFS-δένδρο (δάσος) r s t z p w x y r s t z p w x y
Διερεύνηση κατά Πλάτος - BFS BFS-δένδρο (δάσος) s r p w x t y z r s t z p w x y
Βασική Ιδέα DFS! Διερεύνηση Γραφημάτων
Διερεύνηση κατά Βάθος - DFS Βασική Ιδέα DFS! Η DFS διερευνά πρώτα κόμβους που βρίσκονται σε όσο δυνατόν μεγαλύτερη απόσταση από τον κόμβο εκκίνησης s V y z s t x w p r Εάν όλοι οι γείτονες του κόμβου v V έχουν διερευνηθεί, τότε ο DFS «επιστρέφει» στον u V : (u,v) E, και συνεχίζει σε αδιερεύνητους γείτονες του κόμβου u!
Διερεύνηση κατά Βάθος - DFS Βασική Ιδέα DFS! Ο αλγόριθμος DFS σταματά όταν διερευνηθούν όλοι οι κόμβοι x του γραφήματος G : s x y z s t x w p r Εάν κόμβοι που δεν έχουν διερευνηθεί, τότε επιλέγει ένα νέο μη-διερευνημένο s V και τον θέτει κόμβο εκκίνησης s s
Διερεύνηση κατά Βάθος - DFS Βασική Ιδέα DFS! Ο αλγόριθμος DFS σταματά όταν διερευνηθούν όλοι οι κόμβοι x του γραφήματος G : s x y z s t=s x w p r Εάν κόμβοι που δεν έχουν διερευνηθεί, τότε επιλέγει ένα νέο μη-διερευνημένο s V και τον θέτει κόμβο εκκίνησης s s
Διερεύνηση κατά Βάθος - DFS Βασική Ιδέα DFS! Ο αλγόριθμος DFS σταματά όταν διερευνηθούν όλοι οι κόμβοι x του γραφήματος G : s x y z s t=s a(x)/t(x) a(x) χρόνος αρχικής επίσκεψης, και t(x) χρόνος τελικής επίσκεψης του x x w p r Εάν κόμβοι που δεν έχουν διερευνηθεί, τότε επιλέγει ένα νέο μη-διερευνημένο s V και τον θέτει κόμβο εκκίνησης s s
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y x z w s p t r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z s t 1/ x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y x z s / 1/ w p t r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z s 3/ / 1/ x w p t r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z s 3/ / 1/ t 4/ x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z s 3/ / 1/ t 4/ 5 x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y 3/ 6 z s / 1/ t 4/ 5 x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z s 3/ 6 / 1/ 4/ 5 7/ x w p t r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z s 3/ 6 / 1/ 4/ 5 7/ 8 x w p t r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 4/ 5 7/ 8 x w s t 1/ p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 4/ 5 7/ 8 x w s t 1/ 10 p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 4/ 5 7/ 8 x w s 1/ 10 p t 11/ r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 4/ 5 7/ 8 x w s 1/ 10 t 11/ 1/ p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 1/ 10 4/ 5 7/ 8 1/ 13 x w s p t 11/ r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 1/ 10 11/ 4/ 5 7/ 8 1/ 13 14/ x w s p t r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 1/ 10 4/ 5 7/ 8 1/ 13 x w s p t 11/ 14/ 15 r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / 9 1/ 10 11/ 16 4/ 5 7/ 8 1/ 13 14/ 15 x w s p DFS = (x, y, w, z, s, p, r, t) t r
Διερεύνηση κατά Βάθος - DFS Πολυπλοκότητα DFS Τα βήματα 1 και 3 εκτελούνται σε χρόνο Ο(n) Τo βήμα σε O(1) Η διαδικασία DFS-VISI() καλείται 1 φορά για v V Η DFS-VISI(v) στο Βήμα 3 εκτελείται adj(v) φορές. Άρα, Σ v V adj(v) = O(m) Πολυπλοκότητα DFS : O(n + m) 1. Για κάθε κόμβο x V επανάλαβε Color(x) A και π(x) NIL. ime 0 3. Εφόσον η υπάρχουν Α κόμβοι στο G επανάλαβε επίλεξε ένα Α κόμβο εκκίνησης s V και κάλεσε την διαδικασία DFS-VISI(s) Διαδικασία DFS-VISI(u) 1. Color(u) Π. Α(u) ime ime+1 3. Για κάθε κόμβο x adj(u) επανάλαβε εάν Color(x) = A τότε π(x) u και DFS-VISI(x) 4. Color(u) Μ 5. Τ(u) ime ime+1
Διερεύνηση κατά Βάθος - DFS Κατηγορίες Ακμών κατά την DFS : Δεντρικές-ακμές (tree-edges) B : Oπισθο-ακμές ή ανιούσες (back-edges) F : Εμπρόσθιες-ακμές ή κατιούσες (forward-edges) C : Διασχίζουσες ή εγκάρσιες-ακμές (cross-edges)
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z s t 1/ x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z / x w s t 1/ p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y 3/ x z / w s t 1/ p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y 3/ z / s t 1/ 4/ x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ / s t 1/ B 4/ x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ / s t 1/ B 4/ 5 x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 / s t 1/ B 4/ 5 x w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x B / s t 1/ 7/ w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x / s t 1/ B C 7/ w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x / s t 1/ B C 7/ 8 w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x / 9 s t 1/ B C 7/ 8 w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s t 1/ F 7/ 8 w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s t 1/ 10 F 7/ 8 w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s 1/ 10 t 11/ F 7/ 8 w p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s 1/ 10 w 11/ F 7/ 8 t 1/ p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s F 7/ 8 w 1/ 10 11/ C C t 1/ p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s F 7/ 8 w 1/ 10 11/ C C t 1/ 13 p r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s F 7/ 8 w 1/ 10 11/ C C t 1/ 13 p 14/ r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s F 7/ 8 w 1/ 10 11/ C C t 1/ 13 p B C 14/ r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s F 7/ 8 w 1/ 10 11/ C C t 1/ 13 p B C 14/ 15 r
Διερεύνηση κατά Βάθος - DFS Παράδειγμα y z 3/ 6 4/ 5 x C / 9 B s F 7/ 8 1/ 10 1/ 13 w 11/ 16 C C t p & F : a(x) < t(y) < a(y) < t(x) B : a(y) < a(x) < t(y) < t(y) C : a(y) < t(y) < a(x) < t(x) B C 14/ 15 r
Διερεύνηση κατά Βάθος - DFS DFS-δένδρο (δάσος) y z s t x w p r y 3/ 6 z s t / 9 1/ 10 11/ 16 B F C B 4/ 5 C 7/ 8 C C 1/ 13 14/ 15 x w p r
Διερεύνηση κατά Βάθος - DFS DFS-δένδρο (δάσος) y z s t x w p r y 3/ 6 z s t / 9 1/ 10 11/ 16 4/ 5 x 7/ 8 w 1/ 13 14/ 15 p r
Διερεύνηση κατά Βάθος - DFS DFS-δένδρο (δάσος) y z s t x w p r y z s t x w p r
Διερεύνηση κατά Βάθος - DFS DFS-δένδρο (δάσος) s t z p r y w y z s t x x w p r
Διερεύνηση κατά Βάθος - DFS DFS-αναπαράσταση s t C B B z F p C r y w C C y z s t x x w p r
Διερεύνηση κατά Βάθος - DFS DFS-αναπαράσταση s t z p r y w y z s t x x w p r
BFS vs DFS Διερεύνηση Γραφημάτων
Εφαρμογές BFS & DFS E Τοποθέτηση Υπηρεσιών και Λαβύρινθοι
Εφαρμογές BFS & DFS E Τοποθέτηση Πυροσβεστικού Τμήματος
Εφαρμογές BFS & DFS E Τοποθέτηση Πυροσβεστικού Τμήματος
Εφαρμογές BFS & DFS E Τοποθέτηση Πυροσβεστικού Τμήματος Ελάχιστη Εκκεντρικότητα (min eccentricity)
Εφαρμογές BFS & DFS E Τοποθέτηση Πυροσβεστικού Τμήματος BFS-δένδρο
Εφαρμογές BFS & DFS E Ξετυλίγοντας τον Μίτο της Αριάδνης!
Εφαρμογές BFS & DFS E Ξετυλίγοντας τον Μίτο της Αριάδνης!
Εφαρμογές BFS & DFS E Ξετυλίγοντας τον Μίτο της Αριάδνης!
Εφαρμογές BFS & DFS E Ξετυλίγοντας τον Μίτο της Αριάδνης!
Εφαρμογές BFS & DFS E Ξετυλίγοντας τον Μίτο της Αριάδνης! s DFS-διερεύνηση s
Τοπολογική Ταξινόμηση Το Πρόβλημα της Τοπολογικής Ταξινόμησης A B C D E H F G
Τοπολογική Ταξινόμηση Κατευθυνόμενο Άκυκλο Γράφημα (DAG) : Ένα κατευθυνόμενο γράφημα G = (V, E) χωρίς κατευθυνόμενους κύκλους. 5 10 11 9 3 7 8
Τοπολογική Ταξινόμηση Κατευθυνόμενο Άκυκλο Γράφημα (DAG) : Ένα κατευθυνόμενο γράφημα G = (V, E) χωρίς κατευθυνόμενους κύκλους. 5 o γράφημα DAG έχει ένα τουλάχιστον κόμβο με in-degree = 0 και ένα τουλάχιστον με out-degree = 0!!! 10 11 3 9 7 8
Τοπολογική Ταξινόμηση Κατευθυνόμενο Άκυκλο Γράφημα (DAG) : Ένα κατευθυνόμενο γράφημα G = (V, E) χωρίς κατευθυνόμενους κύκλους. 5 o γράφημα DAG έχει ένα τουλάχιστον κόμβο με in-degree = 0 και ένα τουλάχιστον με out-degree = 0!!! 10 11 3 9 7 8
Τοπολογική Ταξινόμηση Κατευθυνόμενο Άκυκλο Γράφημα (DAG) : Ένα κατευθυνόμενο γράφημα G = (V, E) χωρίς κατευθυνόμενους κύκλους. 5 o γράφημα DAG έχει ένα τουλάχιστον κόμβο με in-degree = 0 και ένα τουλάχιστον με out-degree = 0!!! 10 11 3 Κάθε υπογράφημα G = (V, E ) ενός DAG είναι κατευθυνόμενο άκυκλο γράφημα!!! 9 7 8 Οι κόμβοι ενός κατευθυνόμενου άκυκλου γραφήματος G μπορούν να «τοποθετηθούν» σε μια σειρά, η οποία ονομάζεται Τοπολογική Ταξινόμηση των κόμβων του G, και η οποία έχει μια χαρακτηριστική και χρήσιμη ιδιότητα!!! 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Τοπολογική Ταξινόμηση ενός DAG : Μια διάταξη ops = (u1, u,, un) των κόμβων ενός DAG G τέτοια ώστε : ui, uj E(G) ο κόμβος ui προηγείται του κόμβου uj στην ops. D F G A B H E C C A D E H F G B
Τοπολογική Ταξινόμηση Τοπολογική Ταξινόμηση ενός DAG : Μια διάταξη ops = (u1, u,, un) των κόμβων ενός DAG G τέτοια ώστε : ui, uj E(G) ο κόμβος ui προηγείται του κόμβου uj στην ops. D F G A B H E C C A D E H F G B
Τοπολογική Ταξινόμηση Τοπολογική Ταξινόμηση ενός DAG : Μια διάταξη ops = (u1, u,, un) των κόμβων ενός DAG G τέτοια ώστε : ui, uj E(G) ο κόμβος ui προηγείται του κόμβου uj στην ops. D F G A B H E C C A D E H F G B
Τοπολογική Ταξινόμηση Τοπολογική Ταξινόμηση ενός DAG : Μια διάταξη ops = (u 1, u,, u n ) των κόμβων ενός DAG G τέτοια ώστε : u i, u j E(G) ο κόμβος u i προηγείται του κόμβου u j στην ops. H S ενός DAG είναι μοναδική?
Τοπολογική Ταξινόμηση Τοπολογική Ταξινόμηση ενός DAG : Μια διάταξη ops = (u1, u,, un) των κόμβων ενός DAG G τέτοια ώστε : ui, uj E(G) ο κόμβος ui προηγείται του κόμβου uj στην ops. H S ενός DAG είναι μοναδική? 7 3 8 5 11 10 9 Γενικά, η Τοπολογική Ταξινόμηση δεν είναι μοναδική : S1 = (3, 7, 8, 9, 5, 11,, 10), S = (7, 5, 3, 8, 11, 9, 10, ),, Sk = (5, 3, 7, 11, 8, 10,, 9)
Τοπολογική Ταξινόμηση Τοπολογική Ταξινόμηση ενός DAG : Μια διάταξη ops = (u 1, u,, u n ) των κόμβων ενός DAG G τέτοια ώστε : u i, u j E(G) ο κόμβος u i προηγείται του κόμβου u j στην ops. Υπολογισμός διάταξης S Μέθοδος In-degree Μέθοδος Out-degree Μέθοδος DFS
Τοπολογική Ταξινόμηση Μέθοδος In-degree 5 10 11 9 3 7 8 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) 11 9 3 7 8
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 7 7 8
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 7 από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 3 7 8 7
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 3 από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7 3
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 8 7 8 7 3
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 8 από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7 3 8
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 5 7 8 7 3 8
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 5 από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7 3 8 5
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 11 7 8 7 3 8 5
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 11 από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7 3 8 5 11
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 7 8 7 3 8 5 11
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7 3 8 5 11
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 10 7 8 7 3 8 5 11
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 10 από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7 3 8 5 11 10
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με In-degree = 0 11 9 3 Κόμβος 9 7 8 7 3 8 5 11 10
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 9 από το γράφημα, και Εισαγωγή του στο τέλος μια λίστας 11 7 9 8 3 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Indeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Τερματισμός Αλγόριθμου Ορθότητα Πολυπλοκότητα 11 9 3 7 8 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Μέθοδος Out-degree 5 10 11 9 3 7 8 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) 11 9 3 7 8 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) 11 9 3 7 8
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 9 7 8
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 9 από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 10 7 8 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 10 από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 7 8 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 11 7 8 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 11 από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 5 7 8 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 5 από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 8 7 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 8 από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 3 7 8 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 3 από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Επίλεξε ένα κόμβο με Out-degree = 0 11 9 3 Κόμβος 7 7 8 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Διαγραφή του κόμβου 7 από το γράφημα, και Εισαγωγή του στην αρχή μια λίστας 11 7 9 8 3 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-Outdeg(G) 5 10 Υπολογισμός μιας S του G=(V,E) Τερματισμός Αλγόριθμου 11 9 3 Ορθότητα Πολυπλοκότητα 7 8 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Μέθοδος DFS 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος S-DFS(G) 1/ 10 5/ 6 / 9 3/ 4 7/ 8 11/ 14 15/ 16 1/ 13 7 3 8 5 11 10 9 15/ 16 11/ 14 1/ 13 1/ 10 / 9 7/ 8 5/ 6 3/ 4
Τοπολογική Ταξινόμηση Αλγόριθμος S-DFS(G) 7 3 8 5 11 10 9
Τοπολογική Ταξινόμηση Ορθότητα Αλγορίθμου S-DFS(G) Θεώρημα Λευκής-διαδρομής (White-path theorem) : Έστω ένα DFS-δένδρο ενός (κατευθυνόμενου ή μη-κατευθυνόμενου) γραφήματος G. Ένας κόμβος v είναι απόγονος του κόμβου u στο DFS-δένδρo εάν-ν στον χρόνο πρώτης επίσκεψης d[u] του κόμβου u, υπάρχει διαδρομή u v στο G που αποτελείται μόνο από λευκούς κόμβους. u s u G: : v v d[u]
Τοπολογική Ταξινόμηση Ορθότητα Αλγορίθμου S-DFS(G) Θεώρημα 1: Ένα κατευθυνόμενο γράφημα G είναι άκυκλο εάν-ν μια DFS διέλευση του G δεν δημιουργεί οπισθο-ακμές (back-edges). Απόδειξη : ( ) Έστω ότι το γράφημα G είναι άκυκλο και y έστω (x, y) μια οπισθο-ακμή της DFS διέλευσής του. Τότε, ο κόμβος y είναι προκάτοχος του x στο DFS-δένδρο του G. Επομένως, υπάρχει διαδρομή y x στο G και άρα η οπισθο-ακμή (x, y) δημιουργεί κύκλο, άτοπο. G: χ
Τοπολογική Ταξινόμηση Ορθότητα Αλγορίθμου S-DFS(G) Θεώρημα : Ένα κατευθυνόμενο γράφημα G είναι άκυκλο εάν-ν μια DFS διέλευση του G δεν δημιουργεί οπισθο-ακμές (back-edges). Απόδειξη : ( ) Έστω το γράφημα G έχει ένα κύκλο C. Έστω y είναι ο πρώτος κόμβος του C στον οποίο γίνεται επίσκεψη κατά την DFS διέλευση του G και έστω (x, y) η ακμή του κύκλου C. Στον χρόνο d[y] υπάρχει διαδρομή y κόμβους. x από λευκούς Επομένως, ο κόμβος x γίνεται διάδοχος του y στο DFS-δένδρο. Άρα, (x,y) οπισθο-ακμή, άτοπο. QED y χ G:
Τοπολογική Ταξινόμηση Ιδιότητες ΟρθότηταΤοπολογικής ΑλγορίθμουΤαξινόμησης S-DFS(G) Θεώρημα 3: Δεδομένου ενός άκυκλου κατευθυνόμενου γραφήματος G, ο αλγόριθμος S-DFS(G) υπολογίζει μια τοπολογική ταξινόμηση των κόμβων του G. Απόδειξη : Εκτελούμε DFS στο γράφημα G και έστω f[u] είναι ο χρόνος τελευταίας επίσκεψης του κόμβου u του G, u V(G). Αρκεί να δείξουμε ότι για κάθε ζεύγος κόμβων (x, y), εάν (x, y) E(G) τότε f[y] < f[x]. Έστω (x, y) μια τυχαία ακμή η οποία «εξετάζεται» όταν η DFS διέλευση του G «βρίσκεται» στον κόμβο x. Τότε, ο y δεν μπορεί να είναι Πράσινος, διότι θα ήταν προκάτοχος του x στο DFS-δένδρο του G και επομένως η ακμή (x, y) θα ήταν οπισθο-ακμή, άτοπο. Άρα ο κόμβος y είναι Λευκός ή Μαύρος. y χ
Τοπολογική Ταξινόμηση Ορθότητα Αλγορίθμου S-DFS(G) Θεώρημα 3: Δεδομένου ενός άκυκλου κατευθυνόμενου γραφήματος G, ο αλγόριθμος S-DFS(G) υπολογίζει μια τοπολογική ταξινόμηση των κόμβων του G. Απόδειξη : Εκτελούμε DFS στο γράφημα G και έστω f[u] είναι ο χρόνος τελευταίας επίσκεψης του κόμβου u του G, u V(G). Αρκεί να δείξουμε ότι για κάθε ζεύγος κόμβων (x, y), εάν (x, y) E(G) τότε f[y] < f[x]. y (1) Κόμβος y = Λευκός: Τότε ο κόμβος y θα είναι διάδοχος του x στο DFS δένδρο και επομένως f[y] < f[x]. χ
Τοπολογική Ταξινόμηση Ορθότητα Αλγορίθμου S-DFS(G) Θεώρημα 3: Δεδομένου ενός άκυκλου κατευθυνόμενου γραφήματος G, ο αλγόριθμος S-DFS(G) υπολογίζει μια τοπολογική ταξινόμηση των κόμβων του G. Απόδειξη : Εκτελούμε DFS στο γράφημα G και έστω f[u] είναι ο χρόνος τελευταίας επίσκεψης του κόμβου u του G, u V(G). Αρκεί να δείξουμε ότι για κάθε ζεύγος κόμβων (x, y), εάν (x, y) E(G) τότε f[y] < f[x]. y () Κόμβος y = Μαύρος: Τότε, ισχύει f[y] < f[x]. Άρα, για κάθε ακμή (x, y) E(G) ισχύει f[y] < f[x]. QED χ
Τοπολογική Ταξινόμηση Ιδιότητες Τοπολογικής Ταξινόμησης Ένα κατευθυνόμενο γράφημα G είναι άκυκλο εάν-ν έχει μια τοπολογική ταξινόμηση των κόμβων του.
Τοπολογική Ταξινόμηση Ιδιότητες Τοπολογικής Ταξινόμησης Ένα κατευθυνόμενο γράφημα G είναι άκυκλο εάν-ν έχει μια τοπολογική ταξινόμηση των κόμβων του. Η μεταβατική κλειστότητας (transitive closure) ενός DAG G είναι ένα γράφημα H με max πλήθος ακμών που απεικονίζει την ίδια σχέση προσβασιμότητας (reachability relation). Το γράφημα Η έχει την ακμή u v εάν ο κόμβος u έχει πρόσβαση στον κόμβο v στο G.
Εφαρμογές Τοπολογική Ταξινόμηση E Πρωινό Ντύσιμο 17/ 18 κάλτσες 11/ 16 εσώρουχο 1/ 15 παντελόνι 6/ 7 παπούτσια 13/ 14 πουκάμισο 1/ 8 γραβάτα / 5 σακάκι 3/ 4 ζώνη ρολόι 9/ 10
Εφαρμογές Τοπολογική Ταξινόμηση E Πρωινό Ντύσιμο 17/ 18 κάλτσες ρολόι 11/ 16 1/ 15 εσώρουχο παπούτσια 13/ 14 παντελόνι 6/ 7 9/ 10 πουκάμισο 1/ 8 γραβάτα / 5 σακάκι 3/ 4 ζώνη κάλτσες εσώρουχο παντελόνι παπούτσια ρολόι πουκάμισο ζώνη γραβάτα σακάκι 17/ 18 11/ 16 1/ 15 13/ 14 9/ 10 1/ 8 6/ 7 / 5 3/ 4
Συνεκτικές Συνιστώσες Ισχυρά Συνεκτικές Συνιστώσες Συνεκτικότητα
Συνεκτικές Συνιστώσες Συνεκτικές Συνιστώσες Μη-κατευθυνόμενο Γράφημα 1 3 4 5 6 7 8 9
Συνεκτικές Συνιστώσες Συνεκτικές Συνιστώσες Μια συνεκτική συνιστώσα (CC) ενός μη-κατευθυνόμενου γραφήματος G είναι ένα μεγιστοτικό σύνολο κόμβων U V(G) τέτοιο ώστε: x, y U ισχύει x > y όπου, με x > y συμβολίζουμε την ύπαρξη στο G μιας διαδρομής (x, z1, z,, zk, y) από τον κόμβο x στον κόμβο y, k 0. 1 5 6 7 3 4 8 9
Συνεκτικές Συνιστώσες Παράδειγμα 1 5 6 7 3 4 8 9
Συνεκτικές Συνιστώσες Παράδειγμα 1 5 6 CC1 = {1,, 6, 9} 7 3 4 8 9
Συνεκτικές Συνιστώσες Παράδειγμα 1 5 6 CC1 = {1,, 6, 9} CC = {3, 5, 8} 7 3 4 8 9
Συνεκτικές Συνιστώσες Παράδειγμα 1 5 6 CC1 = {1,, 6, 9} CC = {3, 5, 8} CC3 = {4, 7} 7 3 4 8 9
Συνεκτικές Συνιστώσες Υπολογισμός CC 1 5 6 3 4 8 9 BFS DFS Εσωτερική Αναπαράσταση CC : 1 3 4 5 6 7 8 9 1 1 3 1 3 1 CC : 1 1 3 4 3 1 4 3 1 7
Ισχυρά Συνεκτικές Συνιστώσες Ισχυρά Συνεκτικές Συνιστώσες Κατευθυνόμενο Γράφημα 1 1 1 3 3 4
Ισχυρά Συνεκτικές Συνιστώσες Ισχυρές Συνεκτικές Συνιστώσες Μια ισχυρή συνεκτική συνιστώσα (SCC) ενός κατευθυνόμενου γραφήματος G είναι ένα μείζον σύνολο κόμβων S V(G) τέτοιο ώστε: x, y S ισχύει x > y και y > x όπου, με x > y συμβολίζουμε την ύπαρξη στο G μιας κατευθυνόμενης διαδρομής (x, z1, z,, zk, y) από τον κόμβο x στον κόμβο y, k 0. 1 1 1 3 3 4
Ισχυρά Συνεκτικές Συνιστώσες Ορισμός Αντίστροφου Γραφήματος Δοθέντος ενός κατευθυνόμενου γραφήματος G = (V, E), ορίζουμε το αντίστροφο γράφημα του G (transpose graph), το συμβολίζουμε G = (V, E), ως εξής: V = V G: και E = { a, b b, a E} G :
Ισχυρά Συνεκτικές Συνιστώσες Υπολογισμός SCC Δοθέντος ενός κατευθυνόμενου γραφήματος G θέλουμε να υπολογίσουμε όλες τις ισχυρές συνεκτικές συνιστώσες του G.
Ισχυρά Συνεκτικές Συνιστώσες Υπολογισμός SCC Αλγόριθμος SCC(G) 1. DFS(G) και υπολογισμός f[u], u V(G). Υπολογισμός του αντίστροφου γραφήματος G 3. DFS(G), παίρνοντας του κόμβους σε φθίνουσα τάξη ως προς f[u] 4. Υπολογισμός του DFS-δάσους (κάθε DFS-tree του DFS-δάσους ισοδυναμεί με ένα SCC του G) end.
Ισχυρά Συνεκτικές Συνιστώσες Παράδειγμα Εκτέλεσης του Αλγόριθμου SCC Έστω G ένα κατευθυνόμενο γράφημα
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 1: DFS διέλευση του G B 1/ 10 11/ 16 13/ 14 8/ 9 B B / 7 3/ 4 1/ 15 C 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 1: DFS διέλευση του G DFS-δάσος 13/ 14 11/ 16 1/ 10 8/ 9 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 1: DFS διέλευση του G DFS-δάσος 13/ 14 11/ 16 1/ 10 8/ 9 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα : Αρχικό γράφημα G
Ισχυρά Συνεκτικές Συνιστώσες Βήμα : Το αντίστροφο γράφημα G
Ισχυρά Συνεκτικές Συνιστώσες Βήμα : Το αντίστροφο γράφημα G 13/ 14 1/ 15 11/ 16 3/ 4 1/ 10 / 7 8/ 9 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα : Το αντίστροφο γράφημα G 13/ 14 1/ 15 11/ 16 3/ 4 1/ 10 / 7 8/ 9 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 1/ 15 11/ 16 3/ 4 1/ 10 / 7 8/ 9 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 11/ 16 1/ 10 8/ 9 1/ 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 / 1/ 15 11/ 16 1/ 10 8/ 9 1/ 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 / 11/ 16 1/ 10 8/ 9 1/ 3/ 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 / 11/ 16 1/ 10 8/ 9 1/ B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 / 11/ 16 1/ 10 8/ 9 1/ B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/ 10 8/ 9 1/ B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/ 10 8/ 9 1/6 B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 1/ 10 8/ 9 7/ B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 8/ 9 7/ 8/ B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7/ 8/ 9 8/9 B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B 11 / 3/4 1/ 15 3/ 4 / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B C 3/4 1/ 15 11 / 3/ 4 11 / / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B C C 3/4 1/ 15 C 11 / 11 / 3/ 4 B / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B C C 3/4 1/ 15 C 11 / 11 / 1 3/ 4 B / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B C C 3/4 1/ 15 C 11 / 13 11 / 1 3/ 4 B / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B C C C 3/4 1/ 15 C 11 / 13 11 / 1 3/ 4 B / 7 C 14 / 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 /5 11/ 16 1/6 C 1/ 10 B 7 / 10 8/ 9 8/9 B C C C 3/4 1/ 15 C 11 / 13 11 / 1 3/ 4 B / 7 C 14 / 15 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 3: DFS διέλευση του G 13/ 14 11/ 16 C 1/ 10 B 8/ 9 B C C C C 1/ 15 3/ 4 B C / 7 5/ 6
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 4: Υπολογισμός του DFS-δάσους B C B C C C C B C
Ισχυρά Συνεκτικές Συνιστώσες Βήμα 4: Υπολογισμός του DFS-δάσους
Ισχυρά Συνεκτικές Συνιστώσες SCC του γραφήματος G Οι Ισχυρές Συνεκτικές Συνιστώσες του γραφήματος G
Ισχυρά Συνεκτικές Συνιστώσες SCC του γραφήματος G 1 1 1 3 3 4 Οι Ισχυρές Συνεκτικές Συνιστώσες του γραφήματος G
Ισχυρά Συνεκτικές Συνιστώσες SCC του γραφήματος G 1 1 1 3 3 4 Οι Ισχυρές Συνεκτικές Συνιστώσες του γραφήματος G
Ισχυρά Συνεκτικές Συνιστώσες Γράφημα Ισχυρών Συνιστωσών Η(G) 1 1 1 3 3 4 Οι Ισχυρές Συνεκτικές Συνιστώσες του γραφήματος G
Ισχυρά Συνεκτικές Συνιστώσες Γράφημα Ισχυρών Συνιστωσών Η(G) 1 1 v v1 1 3 Κατασκευή γραφήματος H(G) v3 3 4v 4
Ισχυρά Συνεκτικές Συνιστώσες Γράφημα Ισχυρών Συνιστωσών Η(G) 1 1 v v1 1 3 Κατασκευή γραφήματος H(G) v3 3 4v 4
Ισχυρά Συνεκτικές Συνιστώσες Γράφημα Ισχυρών Συνιστωσών Η(G) v v1 v3 Γραφήματος H(G) Άκυκλο Κατευθυνόμενο Γράφημα 4v 4
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης H εταιρία MS-Social με κύρια δραστηριότητα σε υπηρεσίες «κοινωνικής δικτύωσης», διαθέτει το λογισμικό κοινωνικής δικτύωσης Net-book στο οποίο έχουν εγγραφεί n 1 χρήστες (users) Χ1, Χ,, Χn Οι χρήστες συνδέονται μεταξύ του με άμεση ή έμμεση σχέση γνωριμίας, την οποία σχέση έχουν γνωστοποιήσει στο Net-book.
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης Ορισμοί O χρήστης Χi συνδέεται με «άμεση σχέση γνωριμίας» με τον χρήστη Χj εάν: ο χρήστη Χi γνωρίζει άμεσα τον Χj χωρίς αυτό να σημαίνει ότι κατ ανάγκη και ο Χj γνωρίζει τον Χi, 1 i, j n. Η άμεση σχέση γνωριμίας συμβολίζεται Χi, Χj. Χj Χq Χi Χp
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης Ορισμοί O χρήστης Χi συνδέεται με «έμμεση σχέση γνωριμίας» με τον χρήστη Χj εάν: ο χρήστη Χi γνωρίζει τον Χj μέσω κάποιου άλλου χρήστη Χk δηλ. εάν υπάρχει μια ακολουθία από χρήστες (Χi, Χk1, Χk,, Χkp, Χj) τέτοια ώστε: Χi, Χk1, Χ k1, Χ k,, Χ kp, Χj, kp 1. Χj Χq Χi Χp
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης Ορισμοί Μια ομάδα χρηστών S του Net-book ονομάζεται «ομάδα γνωριμίας» εάν: ζεύγος χρηστών Χi και Χj της S ο χρήστης Χi γνωρίζει άμεσα ή έμμεσα τον χρήστη Χj και ο χρήστης Χj γνωρίζει άμεσα ή έμμεσα τον χρήστη Χi, 1 i, j S. S1 S Χj Χq S3 Χi Χp Χm
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης Ορισμοί Μία ομάδα γνωριμίας Si του Net-book ονομάζεται «Πολύ-δημοφιλής» εάν όλοι οι χρήστες του δικτύου γνωρίζουν τα μέλη της Si, δηλ. κάθε χρήστης του Net-book έχει άμεση ή έμμεση σχέση γνωριμίας με οποιοδήποτε μέλος της ομάδας Si, 1 i k. S1 S Χj Χq S3 Χi Χp Χm
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης Ορισμοί Μία ομάδα γνωριμίας Si του Net-book ονομάζεται «Ελάχιστα-δημοφιλής» εάν όλοι οι χρήστης του δικτύου εκτός ομάδας δεν γνωρίζουν τα μέλη της Si, δηλ. δεν υπάρχει χρήστης του Net-book εκτός της ομάδας Si που να έχει άμεση ή έμμεση σχέση γνωριμίας με κάποιο μέλος της Si, 1 i k. S1 S Χj Χq S3 Χi Χp Χm
Εφαρμογές Συνεκτικότητας E Σύστημα Κοινωνικής Δικτύωσης Η εταιρία MS-Social θέλει για δική της χρήση, μέσω του συστήματός της, να γνωρίζει όλες της ομάδες γνωριμίας S1, S,, Sk (1 k n) του δικτύου της Net-book. Επιπλέον, η MS-Social θέλει να δημιουργήσει και να προσφέρει νέες υπηρεσίες στο σύστημα Net-book, όπως: (1) να απαντάει σε σταθερό χρόνο στον χρήστη Xi σε ποια από τις k ομάδες γνωριμίας ανήκει (1 i n), εμφανίζοντας id της ομάδας του, () να εμφανίζει όλα τα μέλη της ομάδα γνωριμίας του χρήστη Xi (1 i n), σε χρόνο γραμμικό ως προς το πλήθος των μελών της ομάδας, και (3) να υπολογίζει όλες τις πολύ-δημοφιλείς και ελάχιστα-δημοφιλείς ομάδες γνωριμίας του δικτύου Net-book και για κάθε τέτοια ομάδα να εμφανίζει τα μέλη της.
Εφαρμογές Συνεκτικότητας E Η Εταιρεία Net-book MS-Social
Εφαρμογές Συνεκτικότητας E Πρόβλημα
Εφαρμογές Συνεκτικότητας E Μοντελοποίηση
Εφαρμογές Συνεκτικότητας E Μοντελοποίηση Κατευθυνόμενο Γράφημα 5 4 8 9 7 3 1 6 10
Εφαρμογές Συνεκτικότητας E Επίλυση Ισχυρά Συνεκτικές Συνιστώσες S 4 5 4 8 9 S 3 S 1 7 3 1 6 10 S
Εφαρμογές Συνεκτικότητας E Επίλυση Ισχυρά Συνεκτικές Συνιστώσες S4 5 4 9 S3 8 S1 3 7 6 1 10 S A: 1 3 4 5 6 7 8 9 10 1 3 1 3 3 4 3
Εφαρμογές Συνεκτικότητας E Ερωτήσεις Συστήματος Επίλυση Ερώτηση 1: Οι χρήστες Xi και Xj ανήκουν στην ίδια ομάδα γνωριμίας? A: 1 3 4 5 6 7 8 9 10 1 3 1 3 3 4 3 If A[i] = A[j] then NAI, ανήκουν στην ίδια ομάδα γνωριμίας Sk, όπου k = A[i] = A[j]. else OXI, δεν ανήκουν στην ίδια ομάδα γνωριμίας!!!
Εφαρμογές Συνεκτικότητας E Ερωτήσεις Συστήματος Επίλυση Ερώτηση : Ποιοι είναι οι χρήστες Xi1, Xi,, Xip που ανήκουν στην ίδια ομάδα γνωριμίας Si? 1 3 4 4 1 6 3 5 9 7 10
Εφαρμογές Συνεκτικότητας E Ερωτήσεις Συστήματος Επίλυση Ερώτηση 3: Ποιες είναι οι πολύ-δημοφιλείς και ελάχιστα-δημοφιλείς ομάδες γνωριμίας του δικτύου? S4 5 4 9 S3 8 S1 7 4 1 3 3 6 1 10 S
Εφαρμογές Συνεκτικότητας E Ερωτήσεις Συστήματος Επίλυση Ερώτηση 3: Ποιες είναι οι πολύ-δημοφιλείς και ελάχιστα-δημοφιλείς ομάδες γνωριμίας του δικτύου? S4 5 4 9 S3 8 S1 7 4 1 3 3 6 1 10 S
Εφαρμογές Συνεκτικότητας E Πολυπλοκότητα Συστήματος 1) DFS Διέλευση Γραφήματος ) Αντίστροφο Γράφημα 3) Βαθμοί Κόμβων Γραφήματος Πολυπλοκότητα Αλγορίθμων Συστήματος Τ(n) = Ο(n+m)
Ευχαριστώ για τη Συμμετοχή σας!!! Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros