Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 5 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο
Γράφοι: κατευθυνόμενοι και μη 1 3 5 (V 1,E 1 ) (V 2,E 2 ) 2 4 6 Γράφος (ή γράφημα): ζεύγος (V,E), V ένα μη κενό σύνολο, Ε διμελής σχέση πάνω στο V Μη κατευθυνόμενος γράφος: σχέση Ε συμμετρική V: κορυφές (vertices), κόμβοι (nodes) Ε: ακμές (edges) Ε 1 = {{1,2}, {1,3}, {2,3}, {3,4}, {3,5}, {4,6}} Ε 2 = {(1,3), (2,1), (2,4), (3,2), (3,4), (3,5), (4,2), (4,6), (5,6), (6,3)} Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 2
Γράφοι: ορολογία 1 3 5 (V 1,E 1 ) (V 2,E 2 ) 2 4 6 Γειτονικές (adjacent) κορυφές: συνδέονται με ακμή, π.χ. 4 και 6 Άκρα (endpoints) ακμής Προσπίπτουσα (incident) ακμή (σε κόμβο) Γειτονικές ακμές Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 3
Γράφοι: ορολογία 2-κανονικός γράφος Βαθμός (degree, valence) κορυφής v: οαριθμόςτων ακμών που προσπίπτουν στην v, deg(v) Ένας (μη κατευθυνόμενος) γράφος όπου deg(v) = k για κάθε κορυφή v, λέγεται k-κανονικός (k-regular) Σημαντική ιδιότητα: Σ deg(v) = 2 E Σε κατευθυνόμενο γράφο: in-deg(v), out-deg(v) Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 4
Διαδρομές σε γράφους 1 3 5 2 4 6 κορυφές-ακμές Δρόμος: έγκυρη ακολουθία από Μονοπάτι: δρόμος χωρίς επαναλήψεις ακμών Απλό μονοπάτι: μονοπάτι χωρίς επαναλήψεις κορυφών Κύκλος: κλειστό μονοπάτι Απλός κύκλος: απλό κλειστό μονοπάτι του Μήκος δρόμου: το πλήθος των ακμών Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 5
Αναπαράσταση γράφων με πίνακα γειτνίασης: Αν έχουμε βάρη, Μη-κατευθυνόμενος: συμμετρικός πίνακας Χώρος: Θ(n 2 ) Προσπέλαση γειτόνων: Θ(n) Άμεσος έλεγχος ύπαρξης ακμής: Ο(1) 1 3 5 2 4 6 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 6
Αναπαράσταση γράφων με πίνακα γειτνίασης: Αν έχουμε βάρη, Κατευθυνόμενος: μη-συμμετρικός πίνακας Χώρος: Θ(n 2 ) Προσπέλαση γειτόνων: Θ(n) Άμεσος έλεγχος ύπαρξης ακμής: Ο(1) Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 7
Αναπαράσταση γράφων με λίστες γειτνίασης: γειτονικές κορυφές σε λίστες Αν έχουμε βάρη, τα αποθηκεύουμε στους κόμβους Χώρος: Θ(m) Προσπέλαση γειτόνων: Θ(deg(u)) Έλεγχος ύπαρξης ακμής: Ο(deg(u)) 1 2 3 / 2 1 3 / 1 3 5 3 1 2 4 5 / 4 3 6 / 2 4 6 5 6 3 / 4 / Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 8
Αναπαράσταση γράφων με λίστες γειτνίασης: γειτονικές κορυφές σε λίστες Αν έχουμε βάρη, τα αποθηκεύουμε στους κόμβους Χώρος: Θ(m) Προσπέλαση γειτόνων: Θ(deg(u)) Έλεγχος ύπαρξης ακμής: Ο(deg(u)) Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 9
Γράφοι: συνεκτικοί και μη Ένας μη κατευθυνόμενος γράφος λέγεται συνεκτικός (connected) αν υπάρχει δρόμος μεταξύ οποιωνδήποτε δύο κορυφών του Σε συνεκτικό γράφο ισχύει: Ένας κατευθυνόμενος γράφος λέγεται ισχυρά συνεκτικός (strongly connected) αν υπάρχει δρόμος μεταξύ οποιωνδήποτε δύο κορυφών του ακολουθώντας τις κατευθύνσεις των ακμών ασθενώς συνεκτικός (weakly connected) αν υπάρχει δρόμος μεταξύ οποιωνδήποτε δύο κορυφών του αγνοώντας τιςκατευθύνσειςτωνακμών Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 10
Άλλες έννοιες Παράγων υπογράφος (spanning subgraph) Παραγόμενος υπογράφος (induced subgraph) Συνεκτικές συνιστώσες (connected components) Πλήρης γράφος (Κn), διμερής γράφος (πλήρης Kn,m) Επίπεδος γράφος: αν δεν περιέχει ως υπογράφους τα Κ5, Κ3,3 - ούτε γράφους που προκύπτουν από αυτά με υποδιαιρέσεις των ακμών τους Δένδρο (tree): συνεκτικός γράφος χωρίς κύκλους Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 11
Κλάσεις πολυπλοκότητας P: προβλήματα απόφασης επιλύσιμα σε πολυωνυμικό χρόνο ΝP: προβλήματα απόφασης με πιστοποιητικά επαληθεύσιμα σε πολυωνυμικό χρόνο Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 12
Προβλήματα Γράφων στην Κλάση P Κύκλος Euler Προσβασιμότητα (reachability) + Διάσχιση (traversal): DFS, BFS,... Συνεκτικές συνιστώσες (connected components) Συντομότερα μονοπάτια (shortest paths) Ελάχιστο συνδετικό δένδρο (minimum spanning tree) Μέγιστη ροή (maximum flow) Τέλειο ταίριασμα (perfect matching) Χρωματισμός ακμών διμερούς γράφου (bipartite edge ( coloring Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 13
Διάσχιση δένδρων Προδιατ/νη: καταγραφή κόμβου την 1 η φορά που τον συναντάμε Ενδοδιατ/νη: καταγραφή κόμβου την τελευταία φορά Μεταδιατ/νη: φύλλα 1 η φορά, λοιποί κόμβοι την 2 η Προδιατεταγμένη (preorder): 1 2 4 5 3 6 Ενδοδιατεταγμένη (inorder): 4 2 5 1 6 3 Μεταδιατεταγμένη (postorder): 4 5 2 6 3 1 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 14
Αναζήτηση Κατά Βάθος (DFS) Πολυπλοκότητα O( V + E ): σε κάθε κόμβο Ο(deg(v)) έλεγχοι και κλήσεις της dfs (με ποια αναπαράσταση;) Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 15
Παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 16
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 17
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 18
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 19
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 20
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 21
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 22
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 23
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 24
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 25
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 26
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 27
2 ο παράδειγμα DFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 28
Αναζήτηση Κατά Πλάτος (BFS) Πολυπλοκότητα O( V + E ): σε κάθε κόμβο v, Ο(deg(v)) έλεγχοι και εισαγωγές στην ουρά Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 29
Παράδειγμα BFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 30
2 ο παράδειγμα BFS s Q 1 5 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 31
2 ο παράδειγμα BFS s Q 15 54 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 32
2 ο παράδειγμα BFS s Q 15 4 54 7 8 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 33
2 ο παράδειγμα BFS s Q 7 8 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 34
2 ο παράδειγμα BFS s Q 8 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 35
2 ο παράδειγμα BFS s Q 3 9 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 36
2 ο παράδειγμα BFS s Q 6 Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 37
2 ο παράδειγμα BFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 38
2 ο παράδειγμα BFS Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 39
Συντομότερα Μονοπάτια (Dijkstra) Πολυπλ/τα O( V 2 ): σε κάθε επανάληψη Ο( V ) για εύρεση ελαχίστου, Ο( V ) για ενημέρωση αποστάσεων Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 40
Παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 41
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 42
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 43
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 44
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 45
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 46
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 47
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 48
2 ο παράδειγμα Dijkstra Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 49
Ελάχιστο Συνδετικό Δένδρο (MST) Κριτήριο Prim: Διαλέγουμε κάθε φορά την ακμή ελαχίστου κόστους έτσι ώστε ο νέος υπογράφος να παραμένει δένδρο Κριτήριο Kruskal: Διαλέγουμε κάθε φορά την ακμή ελαχίστου κόστους έτσι ώστε ο νέος υπογράφος να μην έχει κύκλους Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 50
Αλγόριθμος Prim Επιλέγεται ένας αρχικός κόμβος, π.χ. ο κόμβοςv. Η απόσταση του αρχικού κόμβου τίθεται στο 0, ενώ των υπόλοιπων κόμβων στο. Κάθε φορά επιλέγεται ο κόμβος, έστω w, με την ελάχιστη απόστασηαπότομέχριστιγμήςκατασκευασμένοδένδρο, και προστίθεται στο δένδρο. Ενημερώνονται οι αποστάσεις των υπόλοιπων κόμβων από το δένδρο με βάση το κόστος των ακμών (w,u i ): if cost(w,u i )<dist(u i ) then dist(u i ):=cost(w,u i ) Πολυπλοκότητα: O( V 2 ) Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 51
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 52
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 53
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 54
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 55
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 56
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 57
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 58
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 59
Αλγόριθμος Prim Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 60
Αλγόριθμος Kruskal Οι ακμές ταξινομούνται σε αύξουσα σειρά κόστους. Κάθε φορά επιλέγεται η ακμή ελαχίστου κόστους και αν δε δημιουργεί κύκλο στο μέχρι στιγμής δάσος προστίθεται σε αυτό, αλλιώς απορρίπτεται. Για αποδοτική υλοποίηση, η ύπαρξηκύκλουελέγχεταιμε χρήση πράξεων συνόλων (UNION-FIND). Πολυπλοκότητα: O( E log E ) Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 61
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 62
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 63
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 64
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 65
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 66
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 67
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 68
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 69
Αλγόριθμος Kruskal Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 70
NP-πλήρη Προβλήματα Γράφων VERTEX COVER CLIQUE HAMILTON CIRCUIT (HC) TRAVELING SALESMAN (TSP) 3-COLORABILITY SUBGRAPH ISOMORPHISM 3-DIMENSIONAL MATCHING (3DM) Εισαγωγή στην Επιστήμη των Υπολογιστών Γράφοι: Προβλήματα και Αλγόριθμοι 71