Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab
TSP με Διακλάδωση και Περιορισμό 25 1 2 4 3 30 6 5 15 23 20 16 24 22 13 11 18 26 12 21 14 Τεχνική branch & bound 25 18 12 22 30 15 14 21 11 23 26 24 20 13 16 Data Engineering Lab
Βρίσκουμε κάτω όριο = 173/2 = 86,5 TSP με Διακλάδωση και Περιορισμό (2) Πρέπει να βρεθεί ένα κάτω όριο για το μήκος του Hamiltonian κύκλου Θεωρούμε ανά κορυφή τις 2 ακμές με το μικρότερο βάρος (με τη μία μπαίνουμε στην κορυφή, με την άλλη βγαίνουμε) 25 18 12 22 30 15 14 21 11 23 26 24 20 13 16 12 18 11 14 15 13 16 20 30 25 33 36 24 173 Βρίσκουμε κάτω όριο = 173/2 = 86,5 Τι θα προκύψει αν θεωρήσουμε τις στήλες του πίνακα γειτνίασης? Data Engineering Lab
Βρίσκουμε κάτω όριο = 191/2 = 95,5 TSP με Διακλάδωση και Περιορισμό (3) Θεωρούμε ότι αφετηρία είναι η κορυφή 1. Ποιό είναι το όριο στην περίπτωση αυτή αν από την κορυφή 1 πάμε στην κορυφή 2? 25 18 12 22 30 15 14 21 11 23 26 24 20 13 16 12 25 37 11 36 15 18 33 13 16 20 24 191 Βρίσκουμε κάτω όριο = 191/2 = 95,5 Data Engineering Lab
TSP με Διακλάδωση και Περιορισμό (4) Αν από την κορυφή 1 πάμε στη 2, το όριο είναι 95,5 Αν από την κορυφή 1 πάμε στη 3, το όριο είναι 96,5 Αν από την κορυφή 1 πάμε στη 4, το όριο είναι 86,5 Αν από την κορυφή 1 πάμε στη 5, το όριο είναι 89,5 Αν από την κορυφή 1 πάμε στη 6, το όριο είναι 101 Τα όρια αυτά εισάγονται διαδοχικά σε ένα σωρό ελαχίστων. Εξάγεται το 86,5 ως περισσότερο υποσχόμενο και με βάση το μονοπάτι <1,4> θεωρούνται μονοπάτια μεγαλύτερου μήκους. Data Engineering Lab
TSP με Διακλάδωση και Περιορισμό (5) Δημιουργούμε ένα δένδρο με ρίζα την κορυφή 1 και 5 παιδιά. Μέσα στο κόμβο τίθεται και το αντίστοιχο όριο. Η διαδικασία συνεχίζεται με τον περισσότερο υποσχόμενο κόμβο του δένδρου Τα παιδιά του δημιουργούν νέα όρια που εισάγονται στο σωρό ελαχίστων Data Engineering Lab
TSP με Διακλάδωση και Περιορισμό (6) Με ποιά σειρά κτίζονται οι κόμβοι του διπλανού τελικού δένδρου? Ποιά είναι η διαδοχική μορφή του σωρού ελαχίστων? Ποιό είναι το βέλτιστο μονοπάτι και ποιό το μήκος του? Γιατί η μέθοδος λέγεται «διακλάδωση και περιορισμός» ? Data Engineering Lab
TSP με Δυναμικό Προγραμματισμό (1) Έστω ότι ο κύκλος αρχίζει και τελειώνει στην κορυφή 1 Κάθε κύκλος αποτελείται από την ακμή <1,k> για κάποιο kV–{1} και ένα μονοπάτι από την κορυφή k στην κορυφή 1. Το μονοπάτι αυτό περνάει από κάθε κορυφή του συνόλου V–{1,k} μία φορά ακριβώς Έστω ότι g(i,S) είναι το μήκος του μικρότερου μονοπατιού που αρχίζει από την κορυφή i, περνάει από όλες τις κορυφές του συνόλου S και καταλήγει στην κορυφή 1 g(1,V-{1}) είναι το μήκος του βέλτιστου κύκλου Με βάση την αρχή της βελτιστότητας προκύπτει ότι: g(1,V–{1}) = min {c1k + g(k,V-{1,k})} (1) 2≤k≤n Data Engineering Lab
TSP με Δυναμικό Προγραμματισμό (2) Γενικεύοντας τον προηγούμενο τύπο (1) προκύπτει g(i,S) = minjS {cij + g(j,S-{j})} (2) Ο τύπος (2) μπορεί να επιλυθεί αν γνωρίζουμε όλα τα επί μέρους του τύπου (1), δηλαδή υπολογίζουμε το g(1,V-{1}) αν γνωρίζουμε το g(k,V-{1,k}) για κάθε k Προφανώς ισχύει g(i,)=ci,1, για 1≤i≤n Στη συνέχεια μπορούμε να χρησιμοποιήσουμε το αποτέλεσμα αυτό για τον υπολογισμό του g(i,S) για κάθε S μεγέθους 1, μετά μεγέθους 2, 3 κοκ Όταν |S|<n–1, οι τιμές των i και S για τον υπολογισμό του g(i,S) πρέπει να είναι i1, 1S και iS Data Engineering Lab
TSP με Δυναμικό Προγραμματισμό (3) Παράδειγμα: έστω ο κατευθυνόμενος ζυγισμένος γράφος με αναπαράσταση Ισχύει κατά σειρά g(2,) = c21 = 5 g(3,) = c31 = 6 g(4,) = c41 = 8 Στη συνέχεια g(2,{3}) = c23+g(3,) = 9+6 = 15 g(2,{4}) = c24+g(4,) = 10+8 = 18 g(3,{2}) = c32+g(2,) = 13+5 = 18 g(3,{4}) = c34+g(4,) = 12+8 = 20 g(4,{2}) = c42+g(2,) = 8+5 = 13 g(4,{3}) = c43+g(3,) = 9+6 =15 10 15 20 5 9 6 13 12 8 Data Engineering Lab
TSP με Δυναμικό Προγραμματισμό (4) Στη συνέχεια υπολογίζουμε το g(i,S) για |S|=2, όπου i1; 1S και iS g(2,{3,4}) = min {c23+g(3,{4}), c24+g(4,{3})} = 25 g(3,{2,4}) = min {c32+g(2,{4}), c34+g(4,{2})} = 25 g(4,{2,3}) = min {c42+g(2,{3}), c43+g(3,{2})} = 23 Τελικά λαμβάνουμε g(1,{2,3,4}) = min {c12+g(2,{3, 4}), c13+g(3,{2,4}), c14+g(4,{2,3})} = min {35,40,43} = 35 Η διαδρομή με αυτό το ελάχιστο μήκος μπορεί να βρεθεί αν για κάθε g(i,S) κρατούμε την τιμή του j που ελαχιστοποιεί αυτή την τιμή. Έστω ότι J(i, S) είναι αυτή η τιμή J(1,{2,3,4})=2. Αυτό σημαίνει ότι η διαδορμή ξεκινά από την κορυφή 1 και πάει στην κορυφή 2. Η υπολειπόμενη διαδρομή μπορεί να βρεθεί από το g(2,{3,4}). Ισχύει J(2,{3,4})=4. Επομένως η απόμενη ακμή είναι <2,4>. Η υπολειπόμενη διαδρομή είναι g(4,{3}). Ισχύει J(4,{3})=3. Συνεπώς η βέλτιστη διαδρομή είναι <1,2,4,3,1> Data Engineering Lab
TSP με Δυναμικό Προγραμματισμό (5) Έστω N το πλήθος των g(i,S) που πρέπει να υπολογίσουμε πριν τον τύπο (1) για τον υπολογισμό του g(1,V–{1}) Για κάθε τιμή του |S| υπάρχουν n–1 επιλογές για το i. Το πλήθος των διακριτών συνόλων S μεγέθους k, που δεν περιέχουν τα 1 και i είναι C(k, n -2) n-2 Ισχύει N = (n-1) C(k,n-2) = (n-1) 2n-2 k=0 Ο τελικός υπολογισμός του τύπου (2) είναι n φορές οι προηγούμενοι υπολογισμοί. Συνεπώς απαιτείται χρόνος O(n22n) Προφανώς είναι πολύ καλύτερα από την εξαντλητική απαρίθμιση Μειονέκτημα της μεθόδου είναι ότι απαιτείται χώρος τάξης O(n2n) Data Engineering Lab
Είδη κεντρικότητας Στη Θεωρία Γράφων και στην Ανάλυση Δικτύων υπάρχουν μέτρα για τη μέτρηση της κεντρικότητας μίας κορυφής Μετρούν τη σχετική σπουδαιότητα ενός κόμβου μέσα στο γράφο Μερικά τέτοια μέτρα είναι: κεντρικότητα βαθμού (degree centrality) ενδιάμεση κεντρικότητα (betweenness centrality) ενδιάμεση κεντρικότητα ακμών (edge betweenness centrality) κεντρικότητα εγγύτητας (closeness centrality) και άλλα ... Data Engineering Lab
Κεντρικότητα βαθμού Ορίζεται ως το πλήθος των εισερχόμενων ακμών (βαθμός) Δηλώνει τη δυνατότητα ενός κόμβου να «πιάσει» οτιδήποτε κινείται στο δίκτυο (πληροφορία, ιός κλπ). Η κεντρικότητα βαθμού των μπλε κόμβων είναι μεγαλύτερη Για λόγους κανονικοποίησης διαιρείται ο βαθμός του κόμβου δια (n-1) Data Engineering Lab
Ενδιάμεση Κεντρικότητα Ορίζεται ως εξής όπου σuw είναι το συνολικό πλήθος συντομότερων μονοπατιών μεταξύ των κόμβων u και w, ενώ σuw(v) είναι το πλήθος των συντομότερων μονοπατιών μεταξύ των κόμβων u και w, τα οποία παιρνούν από τον κόμβο v Κόμβοι που βρίσκονται σε πολλά μονοπάτια έχουν μεγαλύτερη κεντρικότητα από άλλους κόμβους Data Engineering Lab
Ενδιάμεση Κεντρικότητα (2) Υπολογισμός του BC(c) σuw σuw(v) σuw/σuw(v) (a,b) 1 0 0 (a,d) 1 1 1 (a,e) 1 1 1 (a,f) 1 1 1 (b,d) 1 1 1 (b,e) 1 1 1 (b,f) 1 1 1 (d,e) 1 0 0 (d,f) 1 0 0 (e,f) 1 0 0 a c d b f e BC(c)=6 BC(a)=0 Data Engineering Lab
Ενδιάμεση Κεντρικότητα (3) Οι κόμβοι μεγάλης κεντρικότητας είναι σημαντικοί για την επικοινωνία Αν μπλοκαριστούν, τότε η επικοινωνία γίνεται δυσκολότερη. Αν η χωρητικότητά του μεγαλώσει, τότε η επικοινωνία γίνεται αποτε- λεσματικότερη Ομοίως ορίζεται η ενδιάμεση κεντρικότητα ακμών Από το κόκκινο προς το μπλε αυξάνει η κεντρικότητα Data Engineering Lab
Κεντρικότητα εγγύτητας Για ένα κόμβο ορίζεται ως το αντίστροφο του αθροίσματος των μηκών των γεωδεσικών μονοπατιών προς όλες τις άλλες κορυφές Για λόγους κανονικοποίησης πολλαπλασιάζουμε επί n–1. Η κεντρικότητα αυτή μπορεί να θεωρηθεί ως η ικανότητα ενός κόμβου να διαδίδει προς τους άλλους κόμβους Data Engineering Lab
Παραδείγματα Θα δούμε τα μέτρα κεντρικότητας για τους επόμενους γράφους Data Engineering Lab
Παράδειγμα: Κεντρικότητα βαθμού Και κανονικοποίηση ... Data Engineering Lab
Παράδειγμα: Κεντρικότητα βαθμού (2) Είναι τοπικό μέτρο Και κανονικοποίηση ... Data Engineering Lab
Παράδειγμα: Κεντρικότητα εγγύτητας distance closeness normalized 0 1 1 1 1 1 1 1 .143 1.00 1 0 2 2 2 2 2 2 .077 .538 1 2 0 2 2 2 2 2 .077 .538 1 2 2 0 2 2 2 2 .077 .538 1 2 2 2 0 2 2 2 .077 .538 1 2 2 2 2 0 2 2 .077 .538 1 2 2 2 2 2 0 2 .077 .538 1 2 2 2 2 2 2 0 .077 .538 distance closeness normalized 0 1 2 3 4 4 3 2 1 .05 .40 1 0 1 2 3 4 4 3 2 .05 .40 2 1 0 1 2 3 4 4 3 .05 .40 3 2 1 0 1 2 3 4 4 .05 .40 4 3 2 1 0 1 2 3 4 .05 .40 4 4 3 2 1 0 1 2 3 .05 .40 3 4 4 3 2 1 0 1 2 .05 .40 2 3 4 4 3 2 1 0 1 .05 .40 1 2 3 4 4 3 2 1 0 .05 .40 Data Engineering Lab
Παράδειγμα: Κεντρικότητα εγγύτητας (2) distance closeness normalized 0 1 2 3 4 5 6 .048 .286 1 0 1 2 3 4 5 .063 .375 2 1 0 1 2 3 4 .077 .462 3 2 1 0 1 2 3 .083 .500 4 3 2 1 0 1 2 .077 .462 5 4 3 2 1 0 1 .063 .375 6 5 4 3 2 1 0 .048 .286 Data Engineering Lab
Παράδειγμα: Κεντρικότητα εγγύτητας (3) distance closeness normalized 0 1 1 2 3 4 4 5 5 6 5 5 6 .021 .255 1 0 1 1 2 3 3 4 4 5 4 4 5 .027 .324 1 1 0 1 2 3 3 4 4 5 4 4 5 .027 .324 2 1 1 0 1 2 2 3 3 4 3 3 4 .034 .414 3 2 2 1 0 1 1 2 2 3 2 2 3 .042 .500 4 3 3 2 1 0 2 3 3 4 1 1 2 .034 .414 4 3 3 2 1 2 0 1 1 2 3 3 4 .034 .414 5 4 4 3 2 3 1 0 1 1 4 4 5 .027 .324 5 4 4 3 2 3 1 1 0 1 4 4 5 .027 .324 6 5 5 4 3 4 2 1 1 0 5 5 6 .021 .255 5 4 4 3 2 1 3 4 4 5 0 1 1 .027 .324 5 4 4 3 2 1 3 4 4 5 1 0 1 .027 .324 6 5 5 4 3 2 4 5 5 6 1 1 0 .021 .255 Data Engineering Lab
Παράδειγμα: ενδιάμεση κεντρικότητα Data Engineering Lab
Παράδειγμα: ενδιάμεση κεντρικότητα Data Engineering Lab
Συντομότερα μονοπάτια: Dijkstra "Computer Science is no more about computers than astronomy is about telescopes" http://www.cs.utexas.edu/~EWD/ Data Engineering Lab
Edger Wybe Dijkstra Μάιος11, 1930 – Αύγουστος 6, 2002 Έλαβε το Turing Award το 1972 Schlumberger Centennial Chair of Computer Sciences στο University of Texas at Austin από το 1984 μέχρι το 2000 Δημοσίευσε εναντίον της χρήσης της εντολής GOTO στις γλώσσες προγραμματισμού και συντέλεσε ατην απαξίωσή της Συνέγραψε πολλές εργασίες σχετικά με τον προγραμματισμό Data Engineering Lab
Ο αλγόριθμος του Dijkstra Προσέγγιση: Άπληστη Είσοδος: ζυγισμένος γράφος G={E,V} και κορυφή v∈V, με μη αρνητικά βάρη Έξοδος: τα συντομότερα μονοπάτια (ή τα ίδια τα συντομότερα μονοπάτια) από την κορυφή v∈V προς όλες τις άλλες κορυφές (1 to all) Data Engineering Lab
Ο αλγόριθμος του Dijkstra - ψευδοκώδικας dist[s] ← (distance to source vertex is zero) for all v ∈ V–{s} do dist[v] (set all other distances to infinity) S←∅ (S, the set of visited vertices is initially empty) Q←V (Q, the queue initially contains all vertices) while Q≠∅ (while the queue is not empty) do u←mindistance(Q,dist)(select the element of Q with the min. distance) S←S∪{u} (add u to list of visited vertices) for all v ∈ neighbors[u] do if dist[v] > dist[u]+w(u, v) (if new shortest path found) then d[v]←d[u]+w(u, v) (set new value of shortest path) (if desired, add traceback code) return dist Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Ο αλγόριθμος του Dijkstra - animation Data Engineering Lab
Dijkstra – υλοποίηση και πολυπλοκότητα H αρχική υλοποίηση του Dijkstra δεν χρησιμοποιούσε ουρά προτεραιότητας. Με σειριακή αναζήτηση πίνακες ή συνδεδεμένες λίστες προκύπτει πολυπλοκότητα O(|V|2) Για αραιούς γράφους με χρήση συνδεδεμένων λιστών και δυαδικό σωρό προκύπτει O((|E|+|V|) log|V|) σωρό Fibonacci προκύπτει O(|E| + |V|log|V|) Data Engineering Lab