Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 4.1 Βασικοί Αλγόριθμοι Γραφημάτων Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros
Αλγοριθμική Θεωρία Γραφημάτων Αλγόριθμοι Θεωρία Γραφημάτων 2
Ιστορικά 1736 Euler, γέφυρες Koenigsburg 1847 Kirchoff, δένδρα, ηλεκτρικά δίκτυα 1847 Cayley, δένδρα, ισομερή υδρογονανθράκων C n H 2n+2 1850 Cayley - De Morgan - Moebius, χρωματισμός με 4 χρώματα 1859 Hamilton, δωδεκάεδρο 1936 Koenig, το πρώτο βιβλίο 2015??? 3
Ιστορικά Γέφυρες Konigsberg Leonhard Euler (1707-1783) Μεγάλος μαθηματικός σε όλα τα πεδία 73 τόμοι δημοσιεύσεων 4
Ιστορικά Γέφυρες Konigsberg Σημερινό Ρωσικό Kaliningrad (στη Βαλτική μεταξύ Λιθουανίας και Πολωνίας) 5
Ιστορικά Γέφυρες Konigsberg Μπορούμε να ξεκινήσουμε από ένα σημείο Α και να επιστρέψουμε στο Α, έχοντας περάσει από κάθε γέφυρα μία και μόνο-μία φορά? 6
Ιστορικά Γέφυρες Konigsberg 7 Γέφυρες 7
Μοντελοποίηση Προβλήματος Παρατήρηση!!! Το γράφημα έχει τρεις (3) κόμβους περιττού βαθμού!!! 8
Γραφήματα Euler 9
Γραφήματα Euler 10
Γραφήματα Euler Χωρίς να το υπολογίσεις, βρες αν το παρακάτω γράφημα έχει διαδρομή Euler 11
Γραφήματα Euler Γράφημα έχει μόνο δύο (2) κόμβους περιττού βαθμού, επομένως ΝΑΙ έχει διαδρομή Euler 12
Μοντελοποίηση 13
Πρόβλημα - Γράφημα 14
Γράφημα - Αλγόριθμος 15
Εφαρμογές Γραφημάτων Έστω ότι έχουμε C 1, C 2,, C n φάρμακα, και έστω [x i, x i ] είναι η θερμοκρασία συντήρησης του φαρμάκου C i, 1 i n; Θέλουμε η θερμοκρασία Τ του ψυγείου για την συντήρηση max πλήθος φαρμάκων Έστω ότι στο πλανήτη Γη έχουν εμφανιστεί έως σήμερα Π 1, Π 2,, Π n πολιτισμοί, και έστω [t i, t i ] είναι η χρονική περίοδος εμφάνισης του πολιτισμού Π i, 1 i n; Θέλουμε το έτος E στο οποίο εμφανίστηκε max πλήθος πολιτισμών πάνω στη Γη
Εφαρμογές Γραφημάτων και. πολλές άλλες!!!
Εφαρμογές Γραφημάτων 1 Συνδεσμικότητα A B Μπορώ να πετάξω από την πόλη Α στην πόλη Β με την εταιρεία X; Υπάρχει μονοπάτι από την πόλη Α στην πόλη Β στο δίκτυο της; 18
Εφαρμογές Γραφημάτων Λειτουργία δικτύων 2 A B A B C D C D Μπορώ να πάω από κάθε κόμβο σε κάθε άλλον; Βλάβη 19
Εφαρμογές Γραφημάτων 3 Συντομότερη διαδρομή Ποια είναι η συντομότερη διαδρομή από την πόλη Α στην πόλη Β με την εταιρεία X; Ποια διαδρομή από την πόλη Α στην πόλη Β έχει το μικρότερο βάρος; 20
Εφαρμογές Γραφημάτων 4 GPS Navigation Εύρεση Ελαχίστων Διαδρομών 21
Εφαρμογές Γραφημάτων 5 Επιπεδικότητα ΔΕΗ ΟΤΕ ΔΕΥΑΙ Σύνδεσε όλα τα σπίτια με τις παροχές χωρίς να διασταυρωθούν οι συνδέσεις! 22
Εφαρμογές Γραφημάτων 5 Επιπεδικότητα? Σπίτι 2 με ΟΤΕ;? 23
Εφαρμογές Γραφημάτων 5 Επιπεδικότητα Μπορεί ένα κύκλωμα να σχεδιασθεί ώστε να μην υπάρχουν τεμνόμενες ακμές; 24
Εφαρμογές Γραφημάτων 6 Ελάχιστα Γενετικά (Συνδετικά) Δένδρα Ποιο δίκτυο διαδρομών είναι το ασφαλέστερο; (κίνδυνος από μεγάλες διαδρομές στη θάλασσα) 25
Εφαρμογές Γραφημάτων 6 Ελάχιστα Γενετικά (Συνδετικά) Δένδρα G 10 D A 4 3 B 3 2 1 10 4 6 6 C 9 2 2 3 E 5 2 7 3 6 12 F 1 26
Εφαρμογές Γραφημάτων 6 Ελάχιστα Γενετικά (Συνδετικά) Δένδρα G D A 1 2 1 C B 2 2 2 F E 27
Εφαρμογές Γραφημάτων 7 Περίπατος του Ιππότη/Αλόγου (διαδρομή Hamilton) 28
Εφαρμογές Γραφημάτων 8 Χάρτες (χρωματισμός) Πως μπορώ να χρωματίσω κάθε χώρα (νομό) ώστε γειτονικοί νομοί να μην έχουν ίδιο χρώμα; Πόσα χρώματα χρειάζονται στο ελάχιστο; 29
Εφαρμογές Γραφημάτων 9 Κοινωνικά δίκτυα (small-world Phenomena) 30
Εφαρμογές Γραφημάτων και. πολλές πολλές άλλες!!! 31
Γραφήματα Ορισμός: Μη κατευθυνόμενο γράφημα Ως μαθηματική έκφραση, ο ορισμός του μη κατευθυνόμενου γράφου έχει ως εξής: Ένα γράφημα G είναι ένα διατεταγμένο ζεύγος G=(V(G), E(G)) όπου: V(G) = {v 1,v 2,..., v n } το σύνολο των κορυφών, E(G) = {e 1,e 2,..., e m } το σύνολο των ακμών. Κάθε ακμή είναι ένα διμελές σύνολο αποτελούμενο από δύο κορυφές, οι οποίες αποκαλούνται κόμβοι και δεν είναι απαραίτητα διαφορετικές μεταξύ τους.
Γραφήματα Ορισμός: Κατευθυνόμενο γράφημα Ένα γράφημα G είναι ένα διατεταγμένο ζεύγος G=(V(G), E(G)) όπου: V(G) = {v 1,v 2,..., v n } E(G) = {e 1,e 2,..., e m } το σύνολο των κορυφών, το σύνολο των ακμών. Εδώ κάθε ακμή είναι ένα διατεταγμένο ζεύγος αποτελούμενο από δύο κορυφές, οι οποίες αποκαλούνται κόμβοι και δεν είναι απαραίτητα διαφορετικές μεταξύ τους. Η διαφορά ανάμεσα σε έναν μη κατευθυνόμενο και έναν κατευθυνόμενο γράφημα είναι ότι στην πρώτη περίπτωση έχουμε διμελές σύνολο, ενώ στη δεύτερη διατεταγμένο ζεύγος.
Γραφήματα Παράδειγμα d c e b f a h g V = {a, b, c, d, e, f, g, h} E = {(ab), (ac), (ah), (bc), (cd), (ce), (ch),, (hg)}
Γραφήματα Παράδειγμα d c e b f a V = {a, b, c, d, e, f, g, h} h g E = { ac, ba, cb, cd,, hg }
Γραφήματα Αποθήκευση 2 3 1 4 5 1 2 3 4 5 2 1 1 1 3 3 3 2 3 4 4 4 5 5 1 2 3 4 5 1 2 3 4 5 0 1 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0
Γραφήματα κεκτημένη γνώση!!! Γράφημα - Απεικόνιση 37
Μη κατευθυνόμενα Γραφήματα Μη-κατευθυνόμενα 2 2 1 1 3 3 4 4 G = (V, E) V = {1, 2, 3, 4} E = {(1,2), (1,4), (2,3), (2,4)}
Μη κατευθυνόμενα Γραφήματα Μη-κατευθυνόμενα 1 2 1 3 4 3 4 2 G = (V, E) V = {1, 2, 3, 4} E = {(1,2), (2,3), (3,4), (1,4)}
Κατευθυνόμενα Γραφήματα Κατευθυνόμενα 2 2 1 3 1 3 4 4 G = (V, E) V = {1, 2, 3, 4} E = {(1,2), (2,3), (2,4), (4,1), (4,2)}
Έμβαρα Γραφήματα (weighted) Γραφήματα με Ακμικά Βάρη 1.2 2 0.5 4 2 2 1 2.1 4 0.2 3 1 8 6 4 9 3 Έμβαρα και όχι Ζυγισμένα
Σχεδίαση & Ανάλυση Αλγορίθμων Διερεύνηση Γραφημάτων BFS & DFS
Διερεύνηση Γραφημάτων Τι θα θέλαμε? Διερεύνηση Breadth-first Search (BFS) Διερεύνηση Depth-first Search (DFS)
Διερεύνηση Γραφημάτων Διερεύνηση DFS Διερεύνηση BFS
Διερεύνηση BFS (Breadth-first Search) Βασική Ιδέα! Έστω G=(V, E) και s V ένας κόμβος εκκίνησης. d(x) είναι η ελάχιστη απόσταση του κόμβου x V από τον κόμβο εκκίνησης s. r 1 s t z 0 2 3 2 p 1 w 2 x 3 y
Διερεύνηση BFS (Breadth-first Search) Βασική Ιδέα! Ο κόμβος x διερευνάται πριν τον κόμβο y σε μια BFS, εάν d(x) < d(y) r 1 s t z 0 2 3 2 p 1 w 2 x H BFS διερευνά κάθε κόμβο x του G για τον οποίο υπάρχει διαδρομή από τον s x στο G. 3 y
Διερεύνηση BFS Κατά την εκτέλεση του αλγορίθμου BFS, οι κόμβοι του γραφήματος βρίσκονται σε 3 κατηγορίες ή καταστάσεις: Α : άσπροι κόμβοι Π : πράσινοι κόμβοι Μ : μαύροι κόμβοι Τις κατηγορίες αυτές ονομάζουμε χρωματικές κατηγορίες ή χρώματα των κόμβων
Διερεύνηση BFS Αρχικά όλοι οι κόμβου βρίσκονται στην ίδια κατηγορία, έστω A (άσπροι), καθώς κανένας κόμβος του G δεν έχει ακόμα διερευνηθεί. r s t z p w x y
Διερεύνηση BFS Στο τέλος του αλγόριθμου BFS, όλοι οι κόμβοι βρίσκονται στην ίδια κατηγορία, έστω M (μαύροι), καθώς όλοι οι κόμβοι έχουν διερευνηθεί. r s t z p w x y
Διερεύνηση BFS Σε ένα ενδιάμεσο βήμα του αλγόριθμου BFS, κάποιοι κόμβοι είναι M (έχουν διερευνηθεί), κάποιοι είναι A (δεν έχουν ακόμα διερευνηθεί), r s t z p w x y και κάποιοι είναι Π (υποψήφιοι για διερεύνηση).
Διερεύνηση BFS Σε ένα ενδιάμεσο βήμα του αλγόριθμου BFS, εάν (u,v) E(G) και ο κόμβος u είναι M, τότε ο κόμβος v είναι είτε Μ είτε Π. r s t z p w x y
Διερεύνηση BFS Αλγόριθμος BFS 1. Για κάθε κόμβο x V επανέλαβε Color(x) A, d(x) και π(x) NIL s t z r p w x y
Διερεύνηση BFS Αλγόριθμος BFS 2. Επίλεξε τον κόμβο εκκίνησης s V και θέσε Color(s) Π, d(s) 0 και ENQUEUE(Q, s) s t z r 0 p w x y Q : s
Διερεύνηση BFS Αλγόριθμος BFS 3. Εφόσον η ουρά Q επανέλαβε x head(q) και DEQUEUE(Q, x) για κάθε y adj(x) εκτέλεσε εάν Color(y) = Α τότε Color(y) Π d(y) d(x) + 1 π(y) x ENQUEUE(Q, y) Color(x) M
Διερεύνηση BFS Παράδειγμα r s t z p w x y
Διερεύνηση BFS Παράδειγμα r s t z p w x y
Διερεύνηση BFS Παράδειγμα r s t z 0 p w x y π(s)=nil Q : s
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 1 p w x y s head(q) π(s)=nil Q : s w r π(w)=s π(r)=s
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 2 p 1 w 2 x y w head(q) π(s)=nil Q : s w r t x π(w)=s π(r)=s π(t)=w π(x)=w
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 2 2 p 1 w 2 x y r head(q) π(s)=nil Q : s w r t x p π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 2 3 2 p 1 w 2 x y t head(q) π(s)=nil Q : s w r t x p z π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r π(z)=t
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 2 3 2 p 1 w 2 x 3 y x head(q) π(s)=nil Q : s w r t x p z y π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r π(z)=t π(y)=x
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 2 3 2 p 1 w 2 x 3 y p head(q) π(s)=nil Q : s w r t x p z y π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r π(z)=t π(y)=x
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 2 3 2 p 1 w 2 x 3 y z head(q) π(s)=nil Q : s w r t x p z y π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r π(z)=t π(y)=x
Διερεύνηση BFS Παράδειγμα r 1 s t z 0 2 3 2 p 1 w 2 x 3 y y head(q) π(s)=nil Q : s w r t x p z y π(w)=s π(r)=s π(t)=w π(x)=w π(p)=r π(z)=t π(y)=x
Διερεύνηση BFS
Διερεύνηση BFS
Διερεύνηση BFS BFS-δένδρο (δάσος) s t z r 1 0 2 3 2 p 1 w 2 x 3 y r s t z p w x y
Διερεύνηση BFS BFS-δένδρο (δάσος) s t z r 1 0 2 3 2 p 1 w 2 x 3 y r s t z p w x y
Διερεύνηση BFS BFS-δένδρο (δάσος) s t z r 1 0 2 3 s 2 p 1 w 2 x 3 y r w p x y t z
Διερεύνηση DFS (Depth-first Search) Βασική Ιδέα! Έστω G=(V, E) και s V ένας κόμβος εκκίνησης. Η στρατηγική της DFS βασίζεται στην διερεύνηση κόμβων που βρίσκονται σε όσο γίνεται μεγαλύτερη απόσταση από τον κόμβο εκκίνησης s V Εάν όλοι οι γείτονες ενός κόμβου v V έχουν διερευνηθεί, τότε η διερεύνηση «επιστρέφει» στον κόμβο u V, για τον οποίο (u,v) E, και διερευνά γείτονες του κόμβου u που δεν έχουν διερευνηθεί
Διερεύνηση DFS Βασική Ιδέα! Η διερεύνηση σταματά όταν διερευνηθούν όλοι οι κόμβοι για τους οποίους υπάρχει διαδρομή από τον κόμβο εκκίνησης s V Εάν υπάρχουν κόμβοι που δεν έχουν διερευνηθεί (Α κόμβοι), τότε επιλέγουμε ένα νέο κόμβο s V, από τους μη-διερευνημένους (A κόμβους), και τον θέτουμε κόμβο εκκίνησης s s.
Διερεύνηση DFS Ορίζουμε δύο «χρονικές» συναρτήσεις για κάθε κόμβο u V του γραφήματος: a(u) : t(u) : Χρόνος Πρώτης (Αρχικής) επίσκεψης του κόμβου u V Χρόνος Τελευταίας επίσκεψης του κόμβου u V Ισχύει : a(u) < t(u) u V
Διερεύνηση DFS Αλγόριθμος DFS 1. Για κάθε κόμβο x V επανέλαβε Color(x) A και π(x) NIL y z s t x w p r 2. ime 0
Διερεύνηση DFS Αλγόριθμος DFS 3. Εφόσον η υπάρχουν Α κόμβοι στο G επανέλαβε επίλεξε ένα Α κόμβο εκκίνησης s V και κάλεσε την διαδικασία DFS-VISI(s) y z s t x w p r
Διερεύνηση DFS Αλγόριθμος DFS 1. 2. Για κάθε κόμβο x V επανέλαβε Color(x) A και π(x) NIL ime 0 3. Εφόσον η υπάρχουν Α κόμβοι στο G επανέλαβε επίλεξε ένα Α κόμβο εκκίνησης s V και κάλεσε την διαδικασία DFS-VISI(s)
Διερεύνηση DFS Αλγόριθμος DFS Διαδικασία DFS-VISI(u) 1. 2. 3. 4. 5. Color(u) Π a(u) ime ime+1 για κάθε κόμβο x adj(u) επανέλαβε εάν Color(x) = A τότε π(x) u και DFS-VISI(x) Color(u) Μ t(u) ime ime+1
Διερεύνηση DFS Παράδειγμα y z s t x w p r
Διερεύνηση DFS Παράδειγμα y z s t 1/ x w p r
Διερεύνηση DFS Παράδειγμα y z s 2/ 1/ t x w p r
Διερεύνηση DFS Παράδειγμα y 3/ z s 2/ 1/ t x w p r
Διερεύνηση DFS Παράδειγμα y 3/ z s 2/ 1/ t 4/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ z s 2/ 1/ t 4/ 5 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 1/ t 4/ 5 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 1/ t 4/ 5 7/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 1/ t 4/ 5 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 9 1/ t 4/ 5 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 9 1/ 10 t 4/ 5 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ 4/ 5 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ 4/ 5 7/ 8 12/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ 4/ 5 7/ 8 12/ 13 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ 4/ 5 x 7/ 8 w 12/ 13 14/ p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ 4/ 5 x 7/ 8 w 12/ 13 14/ 15 p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ 16 4/ 5 x 7/ 8 w 12/ 13 14/ 15 p r
Διερεύνηση DFS Πολυπλοκότητα DFS Τα βήματα 1 και 3 εκτελούνται σε χρόνο Ο(n) Τo βήμα 2 σε O(1) 1. 2. Για κάθε κόμβο x V επανέλαβε Color(x) A και π(x) NIL ime 0 3. Εφόσον η υπάρχουν Α κόμβοι στο G επανέλαβε επίλεξε ένα Α κόμβο εκκίνησης s V και κάλεσε την διαδικασία DFS-VISI(s) Η διαδικασία DFS-VISI() καλείται μία φορά για κάθε κόμβο v V.
Διερεύνηση DFS Πολυπλοκότητα DFS Η διαδικασία DFS-VISI(v) στο Βήμα 3 εκτελείται adj(v) φορές. Άρα Διαδικασία DFS-VISI(u) 1. 2. 3. Color(u) Π Α(u) ime ime+1 Για κάθε κόμβο x adj(u) επανέλαβε εάν Color(x) = A τότε π(x) u και DFS-VISI(x) Σ v V adj(v) = O(m) 4. 5. Color(u) Μ Τ(u) ime ime+1 Επομένως ο Αλγόριθμος DFS έχει πολυπλοκότητα χρόνου O(n + m)
Διερεύνηση 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 s 2/ 1/ t x w p r
Διερεύνηση DFS Παράδειγμα y 3/ z s 2/ 1/ t x w p r
Διερεύνηση DFS Παράδειγμα y 3/ z s 2/ 1/ t 4/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ z s 2/ 1/ t B 4/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ z s 2/ 1/ t B 4/ 5 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 1/ t B 4/ 5 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 1/ t B 4/ 5 7/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 1/ t B 4/ 5 C 7/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 1/ t B 4/ 5 C 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 9 1/ t B 4/ 5 C 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 9 1/ t B F 4/ 5 C 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s 2/ 9 1/ 10 t B F 4/ 5 C 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ B F 4/ 5 C 7/ 8 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ B F 4/ 5 C 7/ 8 12/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ B F C 4/ 5 C 7/ 8 C 12/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ B F C 4/ 5 C 7/ 8 C 12/ 13 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ B F C 4/ 5 C 7/ 8 C 12/ 13 14/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ B F C B 4/ 5 C 7/ 8 C C 12/ 13 14/ x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ B F C B 4/ 5 C 7/ 8 C C 12/ 13 14/ 15 x w p r
Διερεύνηση DFS Παράδειγμα y 3/ 6 z s t 2/ 9 1/ 10 11/ 16 B F C B 4/ 5 C 7/ 8 C C 12/ 13 14/ 15 x w p r & 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)
Διερεύνηση DFS DFS-δένδρο (δάσος) y z s t x w p r y 3/ 6 z s t 2/ 9 1/ 10 11/ 16 B F C B 4/ 5 C 7/ 8 C C 12/ 13 14/ 15 x w p r
Διερεύνηση DFS DFS-δένδρο (δάσος) y z s t x w p r y 3/ 6 z s t 2/ 9 1/ 10 11/ 16 4/ 5 x 7/ 8 w 12/ 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
Εφαρμογή DFS Θησέας Ξετυλίγοντας τον Μίτο της Αριάδνης!
Εφαρμογή DFS Θησέας Ξετυλίγοντας τον Μίτο της Αριάδνης!
Εφαρμογή DFS Θησέας Ξετυλίγοντας τον Μίτο της Αριάδνης!
Εφαρμογή DFS Θησέας Ξετυλίγοντας τον Μίτο της Αριάδνης! s
Σχεδίαση & Ανάλυση Αλγορίθμων Τοπολογική Ταξινόμηση
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο εσώρουχο κάλτσες παπούτσια ρολόι παντελόνι ζώνη πουκάμισο γραβάτα σακάκι
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο εσώρουχο κάλτσες παπούτσια ρολόι παντελόνι ζώνη πουκάμισο γραβάτα σακάκι κάλτσες εσώρουχο παντελόνι παπούτσια ρολόι πουκάμισο ζώνη γραβάτα σακάκι
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο εσώρουχο κάλτσες παπούτσια ρολόι παντελόνι πουκάμισο ζώνη γραβάτα σακάκι κάλτσες εσώρουχο παντελόνι παπούτσια ρολόι πουκάμισο ζώνη γραβάτα σακάκι
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο εσώρουχο κάλτσες παπούτσια ρολόι παντελόνι ζώνη πουκάμισο γραβάτα σακάκι κάλτσες εσώρουχο παντελόνι παπούτσια ρολόι πουκάμισο ζώνη γραβάτα σακάκι
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο εσώρουχο κάλτσες παπούτσια ρολόι παντελόνι πουκάμισο ζώνη γραβάτα σακάκι κάλτσες εσώρουχο παντελόνι παπούτσια ρολόι πουκάμισο ζώνη γραβάτα σακάκι
Τοπολογική Ταξινόμηση Μη-κυκλικό Κατευθυνόμενο Γράφημα (DAG) ονομάζετε το γράφημα G=(V, E) το οποίο δεν έχει κατευθυνόμενους κύκλους.
Τοπολογική Ταξινόμηση Μια Τοπολογική Ταξινόμηση του γραφήματος G=(V, E) είναι μια ακολουθία S=(u 1, u 2,, u n ) των κόμβων του G τέτοια ώστε: Για κάθε ζεύγος κόμβων u i, u j V(G), εάν u i, u j E(G) τότε ο κόμβος u i προηγείται του κόμβου u j στην ακολουθία S. Ισοδύναμος Ορισμός: Ο υπολογισμός μιας αμφι-μονοσήμαντης (1-1 και Επί) συνάρτησης f : V(G) {u 1, u 2,, u n } τέτοια ώστε: u i, u j E(G) f (u i ) < f (u j ).
Τοπολογική Ταξινόμηση Δοθέντος ενός μη-κυκλικού κατευθυνόμενου γραφήματος G=(V, E), θέλουμε να υπολογίσουμε μια Τοπολογική Ταξινόμηση των κόμβων αυτού. In-degree DFS
Τοπολογική Ταξινόμηση In-degree 3 7 8 5 11 2 10 9
Τοπολογική Ταξινόμηση In-degree 3 7 8 5 11 2 10 9
Τοπολογική Ταξινόμηση DFS 1/ 10 5/ 6 2/ 9 3/ 4 7/ 8 11/ 14 15/ 16 12/ 13 7 3 8 5 11 2 10 9 15/ 16 11/ 14 12/ 13 1/ 10 2/ 9 7/ 8 5/ 6 3/ 4
Τοπολογική Ταξινόμηση DFS 7 3 8 5 11 2 10 9
Τοπολογική Ταξινόμηση Αλγόριθμος opological-sort 1. Εκτέλεσε DFS στο G Όταν υπολογίζεται ο χρόνος τελευταίας επίσκεψης t(u) του κόμβου u V εισήγαγε ένα αντίγραφο του κόμβου στην αρχή μιας συνδεδεμένης λίστας L 2. Επίστρεψε την λίστα L Η λίστα L περιέχει τους κόμβους του G σε φθίνουσα τάξη ως προς τους χρόνους τελευταίας επίσκεψης των κόμβων που δίδει η εκτέλεση της DFS του Βήματος 1.
Τοπολογική Ταξινόμηση Παράδειγμα 1/ 10 5/ 6 2/ 9 3/ 4 7/ 8 11/ 14 15/ 16 12/ 13 7 3 8 5 11 2 10 9 15/ 16 11/ 14 12/ 13 1/ 10 2/ 9 7/ 8 5/ 6 3/ 4
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο 17/ 18 11/ 16 εσώρουχο κάλτσες παπούτσια ρολόι 9/ 10 12/ 15 παντελόνι 13/ 14 6/ 7 ζώνη πουκάμισο γραβάτα 1/ 8 2/ 5 σακάκι 3/ 4
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο 17/ 18 11/ 16 εσώρουχο κάλτσες παπούτσια ρολόι 9/ 10 12/ 15 παντελόνι 13/ 14 6/ 7 ζώνη πουκάμισο γραβάτα 1/ 8 2/ 5 σακάκι 3/ 4
Τοπολογική Ταξινόμηση 17/ 18 11/ 16 Πρωινό Ντύσιμο εσώρουχο κάλτσες παπούτσια ρολόι 9/ 10 12/ 15 παντελόνι 13/ 14 6/ 7 ζώνη πουκάμισο γραβάτα 1/ 8 2/ 5 σακάκι 3/ 4 κάλτσες εσώρουχο παντελόνι παπούτσια ρολόι πουκάμισο ζώνη γραβάτα σακάκι 17/ 18 11/ 16 12/ 15 13/ 14 9/ 10 1/ 8 6/ 7 2/ 5 3/ 4
Τοπολογική Ταξινόμηση Πρωινό Ντύσιμο κάλτσες εσώρουχο παντελόνι παπούτσια ρολόι πουκάμισο ζώνη γραβάτα σακάκι 17/ 18 11/ 16 12/ 15 13/ 14 9/ 10 1/ 8 6/ 7 2/ 5 3/ 4
Τοπολογική Ταξινόμηση
Τοπολογική Ταξινόμηση
Τοπολογική Ταξινόμηση
Τοπολογική Ταξινόμηση
Τοπολογική Ταξινόμηση Ενότητα Τοπολογική Ταξινόμηση
Σχεδίαση & Ανάλυση Αλγορίθμων Συνεκτικές Συνιστώσες
Συνεκτικές Συνιστώσες Ορισμός Μια Συνεκτική Συνιστώσα ενός μη-κατευθυνόμενου γραφήματος G=(V,E) είναι ένα μείζονα σύνολο κόμβων U V τέτοιο ώστε: x, y U ισχύει x y
Συνεκτικές Συνιστώσες Παράδειγμα 1 2 3 4 5 6 7 8 9
Συνεκτικές Συνιστώσες Παράδειγμα 1 2 3 4 5 6 7 8 9 CC 1 = {1, 2, 6, 9}
Συνεκτικές Συνιστώσες Παράδειγμα 1 2 3 4 5 6 7 8 9 CC 1 = {1, 2, 6, 9} CC 2 = {3, 5, 8}
Συνεκτικές Συνιστώσες Παράδειγμα 1 2 3 4 5 6 7 8 9 CC 1 = {1, 2, 6, 9} CC 2 = {3, 5, 8} CC 3 = {4, 7}
Συνεκτικές Συνιστώσες Υπολογισμός 1 2 3 4 BFS DFS 5 6 7 8 9 Εσωτερική Αναπαράσταση CC : 1 2 3 4 5 6 7 8 9 1 1 2 3 2 1 3 2 1 CC : 1 1 3 4 3 1 4 3 1
Ισχυρές Συνεκτικές Συνιστώσες Ορισμός SCC Μια ισχυρή συνεκτική συνιστώσα (SCC) ενός κατευθυνόμενου γραφήματος G=(V,E) είναι ένα μείζον σύνολο κόμβων S V τέτοιο ώστε: x, y S, ισχύει x y και y x όπου, με x y συμβολίζουμε την ύπαρξη στο G κατευθυνόμενης διαδρομής (x, z 1, z 2,, z k, y) από τον κόμβο x στον κόμβο y, k 0.
Ισχυρές Συνεκτικές Συνιστώσες Ορισμός Αντίστροφου Γραφήματος Δοθέντος ενός κατευθυνόμενου γραφήματος G=(V,E), ορίζουμε το αντίστροφο γράφημα του G (transpose graph), το συμβολίζουμε G = (V, E ), ως εξής: V = V και E = { a, b b, a E} G G
Ισχυρές Συνεκτικές Συνιστώσες Υπολογισμός SCC(G) Δοθέντος ενός κατευθυνόμενου γραφήματος G θέλουμε να υπολογίσουμε όλες τις ισχυρές συνεκτικές συνιστώσες του G.
Ισχυρές Συνεκτικές Συνιστώσες Αλγόριθμος SCC(G) 1. DFS(G) και υπολογισμός f[u], u V(G); 2. Υπολογισμός του αντίστροφου γραφήματος G ; 3. DFS(G ), παίρνοντας του κόμβους σε φθίνουσα τάξη ως προς f[u]; 4. Επέστρεψε τα DFS-trees (κάθε DFS-tree ισοδυναμεί με ένα SCC του G). end.
Ισχυρές Συνεκτικές Συνιστώσες Παράδειγμα
Ισχυρές Συνεκτικές Συνιστώσες DFS(G) B 13/ 14 11/ 16 1/ 10 8/ 9 B B 12/ 15 3/ 4 2/ 7 5/ 6 C
Ισχυρές Συνεκτικές Συνιστώσες DFS-trees 13/ 14 11/ 16 1/ 10 8/ 9 12/ 15 3/ 4 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες DFS-trees 13/ 14 11/ 16 1/ 10 8/ 9 12/ 15 3/ 4 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες Αρχικό Γράφημα G
Ισχυρές Συνεκτικές Συνιστώσες Το Αντίστροφο Γράφημα G Τ
Ισχυρές Συνεκτικές Συνιστώσες Το Αντίστροφο Γράφημα G Τ 13/ 14 11/ 16 1/ 10 8/ 9 12/ 15 3/ 4 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες Το Αντίστροφο Γράφημα G Τ 13/ 14 11/ 16 1/ 10 8/ 9 12/ 15 3/ 4 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες DFS(G Τ ) 13/ 14 11/ 16 1/ 10 8/ 9 2/ 5 1/ 6 B 3/ 4 12/ 15 3/ 4 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες DFS(G Τ ) 13/ 14 11/ 16 1/ 10 B 8/ 9 C 2/ 5 1/ 6 7/ 10 8/ 9 B 3/ 4 12/ 15 3/ 4 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες DFS(G Τ ) 13/ 14 11/ 16 1/ 10 8/ 9 C 2/ 5 1/ 6 7/ 10 8/ 9 B C C 3/ 4 12/ 13 11/ 14 C 12/ 15 3/ 4 B 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες DFS(G Τ ) 13/ 14 11/ 16 1/ 10 8/ 9 C 2/ 5 1/ 6 7/ 10 8/ 9 B C C C C 3/ 4 12/ 13 11/ 14 15/ 16 C 12/ 15 3/ 4 B 2/ 7 5/ 6
Ισχυρές Συνεκτικές Συνιστώσες DFS(G Τ ) C B C C C C C B
Ισχυρές Συνεκτικές Συνιστώσες DFS-trees C B C C C C C B
Ισχυρές Συνεκτικές Συνιστώσες DFS-trees
Ισχυρές Συνεκτικές Συνιστώσες SCC(G) Οι Ισχυρές Συνεκτικές Συνιστώσες του Γραφήματος G
Ισχυρές Συνεκτικές Συνιστώσες SCC(G) 1 1 2 2 1 3 3 4 Οι Ισχυρές Συνεκτικές Συνιστώσες του Γραφήματος G
Ισχυρές Συνεκτικές Συνιστώσες SCC(G) 1 1 2 2 1 3 3 4 Οι Ισχυρές Συνεκτικές Συνιστώσες του Γραφήματος G
Τέλος Ενότητας Ευχαριστώ για τη Συμμετοχή σας!!! Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros