1Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΓΡΑΦΟΙ (GRAPHS) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Νίκος Παπασπύρου.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Γραφήματα & Επίπεδα Γραφήματα
Advertisements

Ε. ΠετράκηςΛίστες1  Λίστα: πεπερασμένη σειρά στοιχείων ίδιου τύπου  Οι πράξεις εξαρτώνται από τον τύπο της λίστας και όχι από τον τύπο δεδομένων  Λίστα:
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Δυναμικοί πίνακες Πολλές δομές δεδομένων υλοποιούνται με χρήση πινάκων
Ανασκόπηση σε Δείκτες, Ουρές, Στοίβες, Συνδεδεμένες Λίστες
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
Διακριτά Μαθηματικά ΙI Δέντρα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Γράφοι: Προβλήματα και Αλγόριθμοι
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Graphs (Εισαγωγή)
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Διάσχιση.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Eξάμηνο 4ο1 Μείωσε και Βασίλευε Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος ( ) Νίκος Παπασπύρου
6-1 ΜΑΘΗΜΑ 6 ο Ανασκόπηση σε Δείκτες, Συνδεδεμένες Λίστες, Ουρές, Στοίβες.
ΗΜΜΥ 111 ΔΟΜΗΜΕΝΟΣΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΩΣΤΑΣ ΚΟΝΤΟΓΙΑΝΝΗΣ Αναπληρωτής Καθηγητής Τμήμα ΗΜΜΥ Πολυτεχνείο Κρήτης.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη C Ακέραιοι.
ΗΥ150 – Προγραμματισμός Ξ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Δομές Δεδομένων.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Αναζήτηση Κατά Βάθος Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
Γράφημα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Συνδυαστικό αντικείμενο που αποτελείται από.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΤΕΙ Αθήνας: Σχολή ΤΕΦ: Τμήμα Ναυπηγικής Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ NA0703C39 Εξάμηνο Ζ’ Διδάσκων Κωνσταντίνος Β. Κώστας Παρουσίαση.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ. 2 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα –Αναζήτηση κατά βάθος (Depth-first search – DFS) –Αναζήτηση κατά πλάτος (Breadth-first.
Γράφημα είναι μία διμελής σχέση επί ενός συνόλου την οποία παριστάνουμε με γραφικό τρόπο.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Διερεύνηση γραφήματος
ΓΡΑΦΟΙ (GRAPHS).
Στοιχεία Θεωρίας Γραφημάτων
EPL231 – Data Structures and Algorithms
EPL231 – Data Structures and Algorithms
Μεταγράφημα παρουσίασης:

1Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΓΡΑΦΟΙ (GRAPHS) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Νίκος Παπασπύρου Βασίλης Βεσκούκης Πέτρος Στεφανέας

2Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΟΡΙΣΜΟΙ (1) Γράφοι: G = (V,E), όπου V σύνολο και E διμελής σχέση πάνω στο V. Τα στοιχεία του V: κορυφές ή κόμβοι. Τα στοιχεία του Ε: τόξα ή ακμές Όταν τα στοιχεία του Ε είναι διατεταγμένα ζεύγη ο γράφος ονομάζεται κατευθυνόμενος Δύο κορυφές χ,ψ ονομάζονται γειτονικές εάν (χ,ψ) στοιχείο του Ε. Ο βαθμός μιας κορυφής χ είναι ίσος με τον αριθμό των γειτονικών κορυφών της

3Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΟΡΙΣΜΟΙ (2) Μονοπάτι: ακολουθία ακμών που δεν χρησιμοποιεί την ίδια ακμή περισσότερες από μια φορές. v 1,…,v k κύκλος αν και μόνο εάν v 1 = v k Όταν ο γράφος δεν περιέχει κύκλο λέγεται άκυκλος Ο γράφος ονομάζεται συνδεδεμένος ή συνεκτικός εάν για κάθε δύο κορυφές του υπάρχει τουλάχιστον ένα μονοπάτι ανάμεσά τους

4Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΠΑΡΑΔΕΙΓΜΑΤΑ ΓΡΑΦΩΝ G1G1 G3G3

5Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΛΕΙΤΟΥΡΓΙΕΣ ΓΡΑΦΩΝ Join: σύνδεση δύο κορυφών μέσω μιας ακμής Remove: αποσύνδεση δύο κορυφών Adjacent: έλεγχος εάν δύο κορυφές είναι διπλανές

6Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΑΝΑΠΑΡΑΣΤΑΣΕΙΣ ΓΡΑΦΩΝ ΠΙΝΑΚΑΣ ΔΙΠΛΑΝΩΝ ΚΟΡΥΦΩΝ (ADJACENCY MATRIX) ΛΙΣΤΑ ΔΙΠΛΑΝΩΝ ΚΟΡΥΦΩΝ

7Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΠΙΝΑΚΑΣ ΔΙΠΛΑΝΩΝ ΚΟΡΥΦΩΝ Σε κάθε γράφο G = (V, E) αντιστοιχεί ένας πίνακας (διπλανών κορυφών) Α(G) = [a ij ] ως εξής: a ij = 1 αν και μόνο εάν (v i, v j ) ανήκει στο Ε και a ij = 0, διαφορετικά.

8Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΠΙΝΑΚΕΣ ΔΙΠΛΑΝΩΝ ΚΟΡΥΦΩΝ G1G G3G3

9Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΠΙΝΑΚΑΣ ΔΙΠΛΑΝΩΝ ΚΟΡΥΦΩΝ typedef bool graph[N][N]; void join (graph * g, int node1, int node2) { (*g)[node1][node2] = true; } void remove (graph * g, int node1, int node2) { (*g)[node1][node2] = false; }

10Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΛΙΣΤΕΣ ΔΙΠΛΑΝΩΝ ΚΟΡΥΦΩΝ (1) typedef struct node_tag { int vertex; struct node_tag * link; } * graph[N]; void join (graph * g, int node1, int node2) { /* Assume: the graph is directed */ struct node_tag * temp = (*g)[node1]; struct node_tag * new = (struct node_tag *) malloc(sizeof(struct node_tag)); if (new == NULL) { fprintf(stderr, "Out of memory\n"); exit(1); } new->link = temp; temp = new; }

11Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΛΙΣΤΕΣ ΔΙΠΛΑΝΩΝ ΚΟΡΥΦΩΝ (2) void remove (graph * g, int node1, int node2) { (*g)[node1][node2] = false; }

12Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΜΕΘΟΔΟΙ ΔΙΑΣΧΙΣΗΣ ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΒΑΘΟΥΣ ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΠΛΑΤΟΥΣ

13Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΒΑΘΟΥΣ  2  4  8  5  6  3  7

14Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΒΑΘΟΥΣ (1) typedef struct node_tag { int vertex; struct node_tag * link; } * graph[N]; void traverseDFS (graph g) { bool visited[N]; int i; for (i=0; i<N; i++) visited[i] = false; traverseDFS_aux(g, visited, 0); }

15Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΒΑΘΟΥΣ (2) void traverseDFS_aux (graph g, bool visited[N], int current) { struct node_tag * adj; printf("Vertex %d\n", current); visited[current] = true; for (adj = g[current]; adj != NULL; adj = adj->link) if (!visited[adj->vertex]) traverseDFS_aux(g, visited, adj->vertex); }

16Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΠΛΑΤΟΥΣ  2  3  4  5  6  7  8

17Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΠΛΑΤΟΥΣ (1) typedef struct node_tag { int vertex; struct node_tag * link; } * graph[N]; void traverseBFS (graph g) { struct node_tag * adj; bool visited[N]; queue q; int current, i; for (i=0; i<N; i++) visited[i] = false;

18Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΠΛΑΤΟΥΣ (2) q = queueEmpty; queueInsert(&q, 0); while (!queueIsEmpty(q)) { int current = queueRemove(&q); printf("Vertex %d\n", current); visited[current] = true; for (adj = g[current]; adj != NULL; adj = adj->link) if (!visited[adj->vertex]) queueInsert(&q, adj->vertex); } }

19Πέτρος ΣτεφανέαςΠρογραμματιστικές Τεχνικές ΤΟ ΠΡΟΒΛΗΜΑ ΤΟΥ ΣΥΝΤΟΜΟΤΕΡΟΥ ΜΟΝΟΠΑΤΙΟΥ Αν υπάρχουν πολλά μονοπάτια από την κορυφή I στην κορυφή J ζητάμε το συντομότερο μονοπάτι ανάμεσα στις κορυφές