Τεχνολογίες Υλοποίησης Αλγορίθµων

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Τεχνολογίες Υλοποίησης Αλγορίθµων"

Transcript

1 Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών Ενότητα 5 / 46

2 Ενότητα 5 Γραφήµατα Γραφήµατα ϐασικές έννοιες Αναπαράσταση Γραφηµάτων Αναπαράσταση ικτύων Γραφήµατα στην LEDA Βασικοί Αλγόριθµοι Γραφηµάτων / 46

3 Γραφήµατα ϐασικές έννοιες Γράφηµα G = (V, E): σύνολο κόµβων/κορυφών (nodes/vertices) V σύνολο πλευρών/ακµών (edges/arcs) E V V σχέσεις µεταξύ κόµβων / 46

4 Γραφήµατα ϐασικές έννοιες Γράφηµα G = (V, E): σύνολο κόµβων/κορυφών (nodes/vertices) V σύνολο πλευρών/ακµών (edges/arcs) E V V σχέσεις µεταξύ κόµβων Μια ακµή e = (i, j) E «συσχετίζει» ή «συνδέει» τις κορυφές i και j / 46

5 Γραφήµατα ϐασικές έννοιες Κατευθυνόµενες ακµές κατευθυνόµενο γράφηµα Μη-κατευθυνόµενες ακµές µη κατευθυνόµενο γράφηµα 4 / 46

6 Γραφήµατα ϐασικές έννοιες Κατευθυνόµενες ακµές κατευθυνόµενο γράφηµα Μη-κατευθυνόµενες ακµές µη κατευθυνόµενο γράφηµα Κατευθυνόµενη ακµή e = (i, j) i: αρχική κορυφή (source/tail) j: τελική κορυφή (target/head) 4 / 46

7 Γραφήµατα ϐασικές έννοιες Κατευθυνόµενες ακµές κατευθυνόµενο γράφηµα Μη-κατευθυνόµενες ακµές µη κατευθυνόµενο γράφηµα Κατευθυνόµενη ακµή e = (i, j) i: αρχική κορυφή (source/tail) j: τελική κορυφή (target/head) Ακµή e = (i, j) E Η i είναι γειτονική (adjacent) της j Η e προσπίπτει (incident) στις i και j 4 / 46

8 Γραφήµατα ϐασικές έννοιες 3 Συµβολισµός n = V, m = E / 46

9 Γραφήµατα ϐασικές έννοιες 3 Συµβολισµός n = V, m = E Μη κατευθυνόµενα γραφήµατα, βαθµός (degree) κορυφής i: d i = # προσπιπτουσών ακµών της κορυφής i 5 / 46

10 Γραφήµατα ϐασικές έννοιες 3 Συµβολισµός n = V, m = E Μη κατευθυνόµενα γραφήµατα, βαθµός (degree) κορυφής i: d i = # προσπιπτουσών ακµών της κορυφής i Κατευθυνόµενα γραφήµατα βαθµός-εισόδου (in-degree) κορυφής i: = # προσπιπτουσών ακµών που έχουν την i ως τελική d in i βαθµός-εξόδου (out-degree) κορυφής i: = # προσπιπτουσών ακµών που έχουν την i ως αρχική d out i 5 / 46

11 Γραφήµατα ϐασικές έννοιες 3 Συµβολισµός n = V, m = E Μη κατευθυνόµενα γραφήµατα, βαθµός (degree) κορυφής i: d i = # προσπιπτουσών ακµών της κορυφής i Κατευθυνόµενα γραφήµατα βαθµός-εισόδου (in-degree) κορυφής i: = # προσπιπτουσών ακµών που έχουν την i ως τελική d in i βαθµός-εξόδου (out-degree) κορυφής i: = # προσπιπτουσών ακµών που έχουν την i ως αρχική d out i Θεώρηµα Euler (ι) n i= d i = m (ιι) n i= din i = n i= dout i = m 5 / 46

12 Γραφήµατα Αναπαράσταση Μητρώο Γειτνίασης (adjacency matrix) Λίστες Γειτνίασης (adjacency lists) Με χρήση πινάκων (Packed-Adjacency Lists) Με χρήση γραµµικών λιστών (Linked-Adjacency Lists) Εµµεση αναπαράσταση (LEDA) 6 / 46

13 Γραφήµατα Αναπαράσταση Μητρώου Γειτνίασης Μητρώο A διαστάσεων n n: { αν (i, j) E A(i, j) = 0 αλλιώς / 46

14 Γραφήµατα Αναπαράσταση Μητρώου Γειτνίασης Μητρώο A διαστάσεων n n: { αν (i, j) E A(i, j) = 0 αλλιώς Χώρος: O(n ) bytes ή bits 7 / 46

15 Γραφήµατα Αναπαράσταση Μητρώου Γειτνίασης Μητρώο A διαστάσεων n n: { αν (i, j) E A(i, j) = 0 αλλιώς Χώρος: O(n ) bytes ή bits Χρόνος προσδιορισµού ϐαθµού κορυφής: Θ(n) 7 / 46

16 Γραφήµατα Αναπαράσταση Μητρώου Γειτνίασης Μητρώο A διαστάσεων n n: { αν (i, j) E A(i, j) = 0 αλλιώς Χώρος: O(n ) bytes ή bits Χρόνος προσδιορισµού ϐαθµού κορυφής: Θ(n) Χρόνος εισαγωγής/διαγραφής ακµής: O() 7 / 46

17 Γραφήµατα Αναπαράσταση µε χρήση πινάκων h[] h[] h[3] h[4] h[5] h[6] l l h[] h[] h[3] h[4] h[5] h[6] Μονοδιάστατοι πίνακες h[..n + ] και l[0..m], όπου M = m (M = m ) αν G είναι κατευθυνόµενο (µη κατευθυνόµενο) 8 / 46

18 Γραφήµατα Αναπαράσταση µε χρήση πινάκων h[] h[] h[3] h[4] h[5] h[6] l l h[] h[] h[3] h[4] h[5] h[6] Μονοδιάστατοι πίνακες h[..n + ] και l[0..m], όπου M = m (M = m ) αν G είναι κατευθυνόµενο (µη κατευθυνόµενο) Οργάνωση πίνακα l[0..m]: οι πρώτες d (d out ) ϑέσεις περιέχουν όλες τις κορυφές που είναι (εξερχόµενες) γειτονικές στην κορυφή, οι επόµενες d (d out ) ϑέσεις περιέχουν όλες τις κορυφές που είναι (εξερχόµενες) γειτονικές στην κορυφή, κοκ 8 / 46

19 Γραφήµατα Αναπαράσταση µε χρήση πινάκων h[] h[] h[3] h[4] h[5] h[6] l l h[] h[] h[3] h[4] h[5] h[6] Μονοδιάστατοι πίνακες h[..n + ] και l[0..m], όπου M = m (M = m ) αν G είναι κατευθυνόµενο (µη κατευθυνόµενο) Οργάνωση πίνακα l[0..m]: οι πρώτες d (d out ) ϑέσεις περιέχουν όλες τις κορυφές που είναι (εξερχόµενες) γειτονικές στην κορυφή, οι επόµενες d (d out ) ϑέσεις περιέχουν όλες τις κορυφές που είναι (εξερχόµενες) γειτονικές στην κορυφή, κοκ Οργάνωση πίνακα h[..n + ]: οι γειτονικές κορυφές της κορυφής i ϐρίσκονται στις ϑέσεις l[h[i]], l[h[i] + ],..., l[h[i + ] ], όπου h[i] < h[i + ] 8 / 46

20 Γραφήµατα Αναπαράσταση µε χρήση πινάκων h[] h[] h[3] h[4] h[5] h[6] l l h[] h[] h[3] h[4] h[5] h[6] Χώρος: (n + ) log(m + ) + m log n = O((n + m) log n) bits = O(n + m) bytes 9 / 46

21 Γραφήµατα Αναπαράσταση µε χρήση πινάκων h[] h[] h[3] h[4] h[5] h[6] l l h[] h[] h[3] h[4] h[5] h[6] Χώρος: (n + ) log(m + ) + m log n = O((n + m) log n) bits = O(n + m) bytes Χρόνος προσδιορισµού ϐαθµού κορυφής: O() 9 / 46

22 Γραφήµατα Αναπαράσταση µε χρήση πινάκων h[] h[] h[3] h[4] h[5] h[6] l l h[] h[] h[3] h[4] h[5] h[6] Χώρος: (n + ) log(m + ) + m log n = O((n + m) log n) bits = O(n + m) bytes Χρόνος προσδιορισµού ϐαθµού κορυφής: O() Χρόνος εισαγωγής/διαγραφής ακµής: O(n + m) 9 / 46

23 Γραφήµατα Αναπαράσταση µε χρήση γραµµικών λιστών 0 / 46

24 Γραφήµατα Αναπαράσταση µε χρήση γραµµικών λιστών Κάθε σύνολο γειτονικών κορυφών γραµµική λίστα 0 / 46

25 Γραφήµατα Αναπαράσταση µε χρήση γραµµικών λιστών Κάθε σύνολο γειτονικών κορυφών γραµµική λίστα Κορυφή i αποθηκεύεται στη ϑέση h[i] ενός πίνακα h h[i] γραµµική λίστα κορυφής i 0 / 46

26 Γραφήµατα Αναπαράσταση µε χρήση γραµµικών λιστών Χώρος: (n + )sizeof(pointer) + m log n = O((n + m) log n) bits = O(n + m) bytes / 46

27 Γραφήµατα Αναπαράσταση µε χρήση γραµµικών λιστών Χώρος: (n + )sizeof(pointer) + m log n = O((n + m) log n) bits = O(n + m) bytes Χρόνος προσδιορισµού ϐαθµού κορυφής: O(d out i ) / 46

28 Γραφήµατα Αναπαράσταση µε χρήση γραµµικών λιστών Χώρος: (n + )sizeof(pointer) + m log n = O((n + m) log n) bits = O(n + m) bytes Χρόνος προσδιορισµού ϐαθµού κορυφής: O(d out i ) Χρόνος εισαγωγής/διαγραφής ακµής: O() / O(d out i ) / 46

29 Αναπαράσταση ικτύων / 46

30 Αναπαράσταση ικτύων ίκτυο: γράφηµα του οποίου οι κορυφές/ακµές συσχετίζονται µε κάποια τιµή / 46

31 Αναπαράσταση ικτύων ίκτυο: γράφηµα του οποίου οι κορυφές/ακµές συσχετίζονται µε κάποια τιµή Μητρώο Γειτνίασης: πιο γενικό µητρώο W, τέτοιο ώστε { weight(i, j) αν (i, j) E W(i, j) = NoEdge αλλιώς όπου NoEdge ισούται µε κάποια προεπιλεγµένη τιµή (π.χ. 0 ή ) / 46

32 Αναπαράσταση ικτύων ίκτυο: γράφηµα του οποίου οι κορυφές/ακµές συσχετίζονται µε κάποια τιµή Μητρώο Γειτνίασης: πιο γενικό µητρώο W, τέτοιο ώστε { weight(i, j) αν (i, j) E W(i, j) = NoEdge αλλιώς όπου NoEdge ισούται µε κάποια προεπιλεγµένη τιµή (π.χ. 0 ή ) Λίστες Γειτνίασης - χρήση πινάκων: κάθε στοιχείο του πίνακα l περιέχει ένα Ϲεύγος (κορυφή, τιµή) / 46

33 Αναπαράσταση ικτύων ίκτυο: γράφηµα του οποίου οι κορυφές/ακµές συσχετίζονται µε κάποια τιµή Μητρώο Γειτνίασης: πιο γενικό µητρώο W, τέτοιο ώστε { weight(i, j) αν (i, j) E W(i, j) = NoEdge αλλιώς όπου NoEdge ισούται µε κάποια προεπιλεγµένη τιµή (π.χ. 0 ή ) Λίστες Γειτνίασης - χρήση πινάκων: κάθε στοιχείο του πίνακα l περιέχει ένα Ϲεύγος (κορυφή, τιµή) Λίστες Γειτνίασης - χρήση γραµµικών λιστών: κάθε στοιχείο µιας λίστας περιέχει ένα επιπρόσθετο πεδίο το οποίο αποθηκεύει την τιµή της ακµής / 46

34 Γραφήµατα στην LEDA 3 / 46

35 Γραφήµατα στην LEDA Κατευθυνόµενα γραφήµατα: graph, GRAPH<vtype,etype> 3 / 46

36 Γραφήµατα στην LEDA Κατευθυνόµενα γραφήµατα: graph, GRAPH<vtype,etype> Μη κατευθυνόµενα γραφήµατα: ugraph, UGRAPH<vtype,etype> 3 / 46

37 Γραφήµατα στην LEDA Κατευθυνόµενα γραφήµατα: graph, GRAPH<vtype,etype> Μη κατευθυνόµενα γραφήµατα: ugraph, UGRAPH<vtype,etype> Υλοποίηση των τύπων γραφηµάτων στην LEDA: αναπαράσταση λιστών γειτνίασης µε χρήση γραµµικών λιστών (χρησιµοποιούνται διπλά διασυνδεδεµένες λίστες κορυφών και ακµών) 3 / 46

38 Γραφήµατα στην LEDA Κατευθυνόµενα γραφήµατα: graph, GRAPH<vtype,etype> Μη κατευθυνόµενα γραφήµατα: ugraph, UGRAPH<vtype,etype> Υλοποίηση των τύπων γραφηµάτων στην LEDA: αναπαράσταση λιστών γειτνίασης µε χρήση γραµµικών λιστών (χρησιµοποιούνται διπλά διασυνδεδεµένες λίστες κορυφών και ακµών) Απαιτήσεις χώρου για τον τύπο graph: O() + 44m + 5n bytes 3 / 46

39 Γραφήµατα στην LEDA Κατευθυνόµενα γραφήµατα: graph, GRAPH<vtype,etype> Μη κατευθυνόµενα γραφήµατα: ugraph, UGRAPH<vtype,etype> Υλοποίηση των τύπων γραφηµάτων στην LEDA: αναπαράσταση λιστών γειτνίασης µε χρήση γραµµικών λιστών (χρησιµοποιούνται διπλά διασυνδεδεµένες λίστες κορυφών και ακµών) Απαιτήσεις χώρου για τον τύπο graph: O() + 44m + 5n bytes Απαιτήσεις χώρου για τον τύπο GRAPH<T,T>: O() + 44m + 5n + sizeof(t)n + sizeof(t)m bytes 3 / 46

40 Γραφήµατα στην LEDA Ορισµός γραφηµάτων, κορυφών και ακµών graph G; node v,w; edge e,f; // G is initialized to the empty graph // initial values are unspecified for // nodes and edges, however... node u=nil; // we can initialize a node or edge to the // special value nil. // nil is not a node or edge of any graph. 4 / 46

41 Γραφήµατα στην LEDA 5 / 46

42 Γραφήµατα στην LEDA Επαναλήπτες Γραφηµάτων forall_nodes(v,g) { } forall_edges(e,g) { } // iterates over all edges e out of v, // i.e., source(e)=v forall_out_edges(e,v) { } forall_adj_edges(e,v) { } // iterates over all nodes of G // iterates over all edges of G // iterates over all edges e incident to v, // i.e., target(e)=v forall_in_edges(e,v) { } // iterates over all edges e incident to and from v forall_inout_edges(e,v) { } 5 / 46

43 Γραφήµατα στην LEDA Επαναλήπτες Γραφηµάτων forall_nodes(v,g) { } forall_edges(e,g) { } // iterates over all edges e out of v, // i.e., source(e)=v forall_out_edges(e,v) { } forall_adj_edges(e,v) { } // iterates over all nodes of G // iterates over all edges of G // iterates over all edges e incident to v, // i.e., target(e)=v forall_in_edges(e,v) { } // iterates over all edges e incident to and from v forall_inout_edges(e,v) { } επίσης κλάσεις τύπου Iterator, µε χρήση του γνωστού σχεδιαστικού προτύπου Iterator δείτε το εγχειρίδιο της LEDA 5 / 46

44 Γραφήµατα στην LEDA Χρήση Επαναληπτών int m = 0; forall_edges(e,g) m++; // counts the number of edges in G // this number is also available as // G.number_of_edges() 6 / 46

45 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Πίνακες Κορυφών και Ακµών (Node and Edge arrays) 7 / 46

46 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Πίνακες Κορυφών και Ακµών (Node and Edge arrays) Επιτρέπουν την συσχέτιση πληροφορίας (π.χ. κόστος, id) µε κορυφές και ακµές 7 / 46

47 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Πίνακες Κορυφών και Ακµών (Node and Edge arrays) Επιτρέπουν την συσχέτιση πληροφορίας (π.χ. κόστος, id) µε κορυφές και ακµές // Name is indexed by the nodes of G; each entry // of Name is initialized to the empty string. node_array<string> Name(G); // Length is indexed by the edges of G; each entry // of Length is initialized with the value. edge_array<int> Length(G,); //... Name[v] = "Patra"; Length[e] = 37; 7 / 46

48 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Παράδειγµα: ανάθεση αριθµών από 0 µέχρι n στις κορυφές του G 8 / 46

49 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Παράδειγµα: ανάθεση αριθµών από 0 µέχρι n στις κορυφές του G node_array<int> Number(G); int count = 0; forall_nodes(v,g) Number[v] = count++; 8 / 46

50 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Παραµετρικά Γραφήµατα 9 / 46

51 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Παραµετρικά Γραφήµατα Εναλλακτική µέθοδος στους πίνακες κορυφών και ακµών 9 / 46

52 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Παραµετρικά Γραφήµατα Εναλλακτική µέθοδος στους πίνακες κορυφών και ακµών GRAPH<string,int> H; H[v] = "Patra"; H[e] = 37; // v must be a node of H // e must be an edge of H 9 / 46

53 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Πίνακες Κορυφών/Ακµών και Παραµετρικά Γραφήµατα 0 / 46

54 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Πίνακες Κορυφών/Ακµών και Παραµετρικά Γραφήµατα Οι πίνακες κορυφών και ακµών χρησιµοποιούνται µόνο για στατικά γραφήµατα, δηλ. µία νέα κορυφή (ακµή) δεν ϑα έχει ένα αντίστοιχο στοιχείο στον πίνακα κορυφών (ακµών) 0 / 46

55 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Πίνακες Κορυφών/Ακµών και Παραµετρικά Γραφήµατα Οι πίνακες κορυφών και ακµών χρησιµοποιούνται µόνο για στατικά γραφήµατα, δηλ. µία νέα κορυφή (ακµή) δεν ϑα έχει ένα αντίστοιχο στοιχείο στον πίνακα κορυφών (ακµών) Τα παραµετρικά γραφήµατα είναι πλήρως δυναµικά 0 / 46

56 Γραφήµατα στην LEDA Συσχετισµός Πληροφορίας µε Κορυφές/Ακµές Πίνακες Κορυφών/Ακµών και Παραµετρικά Γραφήµατα Οι πίνακες κορυφών και ακµών χρησιµοποιούνται µόνο για στατικά γραφήµατα, δηλ. µία νέα κορυφή (ακµή) δεν ϑα έχει ένα αντίστοιχο στοιχείο στον πίνακα κορυφών (ακµών) Τα παραµετρικά γραφήµατα είναι πλήρως δυναµικά Ενας οποιοσδήποτε αριθµός πινάκων κορυφών και ακµών µπορούν να ορισθούν για ένα γράφηµα 0 / 46

57 Γραφήµατα στην LEDA ηµιουργία / 46

58 Γραφήµατα στην LEDA ηµιουργία Γράφηµα µε δύο κορυφές και καθόλου ακµές / 46

59 Γραφήµατα στην LEDA ηµιουργία Γράφηµα µε δύο κορυφές και καθόλου ακµές graph G; G.new_node(); G.new_node(); node v; forall_nodes(v,g) //... do something / 46

60 Γραφήµατα στην LEDA ηµιουργία / 46

61 Γραφήµατα στην LEDA ηµιουργία ηµιουργία ακµής απαιτεί προσδιορισµό αρχικής και τελικής κορυφής node w = G.first_node(); G.new_edge(w, G.succ_node(w)); / 46

62 Γραφήµατα στην LEDA ηµιουργία ηµιουργία ακµής απαιτεί προσδιορισµό αρχικής και τελικής κορυφής node w = G.first_node(); G.new_edge(w, G.succ_node(w)); Παρατήρηση: Η LEDA διατάσσει εσωτερικά τις κορυφές (ακµές) ενός γραφήµατος G σύµφωνα µε την σειρά που αυτές προστέθηκαν στο G. / 46

63 Γραφήµατα στην LEDA ηµιουργία Ενας καλύτερος τρόπος δηµιουργίας ακµών 3 / 46

64 Γραφήµατα στην LEDA ηµιουργία Ενας καλύτερος τρόπος δηµιουργίας ακµών Η µέθοδος G.new_node() όχι µόνο προσθέτει µια νέα κορυφή στο G, αλλά και την επιστρέφει // creation of our example digraph graph G; node v = G.new_node(); node v = G.new_node(); node v3 = G.new_node(); node v4 = G.new_node(); node v5 = G.new_node(); G.new_edge(v,v); G.new_edge(v,v3); G.new_edge(v3,v4); G.new_edge(v4,v3); G.new_edge(v3,v5); G.new_edge(v5,v4); / 46

65 Γραφήµατα στην LEDA ηµιουργία Ενας καλύτερος τρόπος δηµιουργίας ακµών Η µέθοδος G.new_node() όχι µόνο προσθέτει µια νέα κορυφή στο G, αλλά και την επιστρέφει // creation of our example digraph graph G; node v = G.new_node(); node v = G.new_node(); node v3 = G.new_node(); node v4 = G.new_node(); node v5 = G.new_node(); G.new_edge(v,v); G.new_edge(v,v3); G.new_edge(v3,v4); G.new_edge(v4,v3); G.new_edge(v3,v5); G.new_edge(v5,v4); Αποθήκευση γραφήµατος σε αρχείο G.write("graph.gw"); / 46

66 Γραφήµατα στην LEDA ηµιουργία Ενας καλύτερος τρόπος δηµιουργίας ακµών 4 / 46

67 Γραφήµατα στην LEDA ηµιουργία Ενας καλύτερος τρόπος δηµιουργίας ακµών Αν το G είναι παραµετρικό, τότε µπορούµε να συσχετίσουµε πληροφορία µε τις κορυφές και τις ακµές κατά τη διάρκεια της δηµιουργίας του 3 // creation of our example digraph // with info on nodes and edges GRAPH<int,int> G; node v = G.new_node(); node v = G.new_node(); node v3 = G.new_node(3); node v4 = G.new_node(4); node v5 = G.new_node(5); G.new_edge(v,v,0); G.new_edge(v,v3,5); G.new_edge(v3,v4,5); G.new_edge(v4,v3,7); G.new_edge(v3,v5,0); G.new_edge(v5,v4,37); 4 / 46

68 Γραφήµατα στην LEDA δηµιουργία ισοµορφικού αντίγραφου 5 / 46

69 Γραφήµατα στην LEDA δηµιουργία ισοµορφικού αντίγραφου ηµιουργία ενός ισοµορφικού αντιγράφου H ενός γραφήµατος G, έτσι ώστε κάθε κορυφή και ακµή του H να γνωρίζει την αυθεντική της στο G 5 / 46

70 Γραφήµατα στην LEDA δηµιουργία ισοµορφικού αντίγραφου v copy_in_h[v] w G H[w] H 6 / 46

71 Γραφήµατα στην LEDA δηµιουργία ισοµορφικού αντίγραφου v copy_in_h[v] w G H[w] H Χρήση παραµετρικού γραφήµατος για το H και πίνακα κορυφών για το G 6 / 46

72 Γραφήµατα στην LEDA δηµιουργία ισοµορφικού αντίγραφου v copy_in_h[v] w G H[w] H Χρήση παραµετρικού γραφήµατος για το H και πίνακα κορυφών για το G v G : H[copy_in_H[v]]=v w H : copy_in_h[h[w]]=w 6 / 46

73 Γραφήµατα στην LEDA δηµιουργία ισοµορφικού αντίγραφου #include <iostream> #include <LEDA/graph.h> void CopyGraph(GRAPH<node,edge>& H, const graph& G) { node v; edge e; H.clear(); // reset H to the empty graph node_array<node> copy_in_h(g); // associates nodes of G with // their copies in H forall_nodes(v,g) copy_in_h[v] = H.new_node(v); forall_edges(e,g) H.new_edge(copy_in_H[source(e)],copy_in_H[target(e)],e); } 7 / 46

74 Γραφήµατα στην LEDA δηµιουργία ισοµορφικού αντίγραφου int main() { graph G; G.read("graph.gw"); GRAPH<node,edge> H; } CopyGraph(H,G); cout << endl; cout << "n_g = " << G.number_of_nodes() << endl; cout << "n_h = " << H.number_of_nodes() << endl; cout << "m_g = " << G.number_of_edges() << endl; cout << "m_g = " << H.number_of_edges() << endl; return 0; 8 / 46

75 Γραφήµατα στην LEDA Πίνακες Κορυφών/Ακµών 9 / 46

76 Γραφήµατα στην LEDA Πίνακες Κορυφών/Ακµών Υλοποιούνται µε τους συνήθεις πίνακες χρόνος αρχικοποίησης # κορυφών/ακµών 9 / 46

77 Γραφήµατα στην LEDA Πίνακες Κορυφών/Ακµών Υλοποιούνται µε τους συνήθεις πίνακες χρόνος αρχικοποίησης # κορυφών/ακµών Κορυφές/Ακµές ενός γραφήµατος αριθµούνται σύµφωνα µε τη σειρά δηµιουργίας τους, αρχίζοντας από το 0 [αριθµός = index] 9 / 46

78 Γραφήµατα στην LEDA Πίνακες Κορυφών/Ακµών Υλοποιούνται µε τους συνήθεις πίνακες χρόνος αρχικοποίησης # κορυφών/ακµών Κορυφές/Ακµές ενός γραφήµατος αριθµούνται σύµφωνα µε τη σειρά δηµιουργίας τους, αρχίζοντας από το 0 [αριθµός = index] Η αρίθµηση µιας κορυφής (ακµής) v (e) είναι διαθέσιµη ως index(v) (index(e)) 9 / 46

79 Γραφήµατα στην LEDA Πίνακες Κορυφών/Ακµών Υλοποιούνται µε τους συνήθεις πίνακες χρόνος αρχικοποίησης # κορυφών/ακµών Κορυφές/Ακµές ενός γραφήµατος αριθµούνται σύµφωνα µε τη σειρά δηµιουργίας τους, αρχίζοντας από το 0 [αριθµός = index] Η αρίθµηση µιας κορυφής (ακµής) v (e) είναι διαθέσιµη ως index(v) (index(e)) Προσπέλαση στοιχείου A[v] = Προσπέλαση της δοµής αναπαράστασης της κορυφής v για τον προσδιορισµό του index(v) Προσπέλαση του στοιχείου A[index(v)] 9 / 46

80 Γραφήµατα στην LEDA Node/Edge maps 30 / 46

81 Γραφήµατα στην LEDA Node/Edge maps Παρόµοια µε node/edge arrays 30 / 46

82 Γραφήµατα στην LEDA Node/Edge maps Παρόµοια µε node/edge arrays Υλοποιούνται µε χρήση κατακερµατισµού 30 / 46

83 Γραφήµατα στην LEDA Node/Edge maps Παρόµοια µε node/edge arrays Υλοποιούνται µε χρήση κατακερµατισµού Αρχικοποίηση σε O() χρόνο 30 / 46

84 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος 3 / 46

85 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος void dfs(node s, node_array<bool>& reached, list<node>& L) { L.append(s); reached[s] = true; node v; forall_adj_nodes(v,s) if (!reached[v] ) dfs(v,reached,l); } list<node> DFS(node v, node_array<bool>& reached) { list<node> L; dfs(v,reached,l); return L; } 3 / 46

86 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος Κατηγοριοποίηση ακµών 33 / 46

87 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος Κατηγοριοποίηση ακµών ιατήρηση δύο αριθµών για κάθε κορυφή v: dfsnum[v]: χρόνος (πρώτης) ανακάλυψης compnum[v]: χρόνος εγκατάλειψης 33 / 46

88 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος Κατηγοριοποίηση ακµών ιατήρηση δύο αριθµών για κάθε κορυφή v: dfsnum[v]: χρόνος (πρώτης) ανακάλυψης compnum[v]: χρόνος εγκατάλειψης e = (v, w): καλείται ακµή δένδρου αν η dfs(w,...) καλείται όταν η e εξετάζεται στην dfs(v,...) 33 / 46

89 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος Κατηγοριοποίηση ακµών ιατήρηση δύο αριθµών για κάθε κορυφή v: dfsnum[v]: χρόνος (πρώτης) ανακάλυψης compnum[v]: χρόνος εγκατάλειψης e = (v, w): καλείται ακµή δένδρου αν η dfs(w,...) καλείται όταν η e εξετάζεται στην dfs(v,...) Μια ακµή (v, w) είναι 33 / 46

90 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος Κατηγοριοποίηση ακµών ιατήρηση δύο αριθµών για κάθε κορυφή v: dfsnum[v]: χρόνος (πρώτης) ανακάλυψης compnum[v]: χρόνος εγκατάλειψης e = (v, w): καλείται ακµή δένδρου αν η dfs(w,...) καλείται όταν η e εξετάζεται στην dfs(v,...) Μια ακµή (v, w) είναι ακµή δένδρου ή εµπρός ακµή ανν dfsnum[v] < dfsnum[w] και compnum[v] > compnum[w] 33 / 46

91 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος Κατηγοριοποίηση ακµών ιατήρηση δύο αριθµών για κάθε κορυφή v: dfsnum[v]: χρόνος (πρώτης) ανακάλυψης compnum[v]: χρόνος εγκατάλειψης e = (v, w): καλείται ακµή δένδρου αν η dfs(w,...) καλείται όταν η e εξετάζεται στην dfs(v,...) Μια ακµή (v, w) είναι ακµή δένδρου ή εµπρός ακµή ανν dfsnum[v] < dfsnum[w] και compnum[v] > compnum[w] πίσω ακµή ανν dfsnum[v] > dfsnum[w] και compnum[v] < compnum[w] 33 / 46

92 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος Κατηγοριοποίηση ακµών ιατήρηση δύο αριθµών για κάθε κορυφή v: dfsnum[v]: χρόνος (πρώτης) ανακάλυψης compnum[v]: χρόνος εγκατάλειψης e = (v, w): καλείται ακµή δένδρου αν η dfs(w,...) καλείται όταν η e εξετάζεται στην dfs(v,...) Μια ακµή (v, w) είναι ακµή δένδρου ή εµπρός ακµή ανν dfsnum[v] < dfsnum[w] και compnum[v] > compnum[w] πίσω ακµή ανν dfsnum[v] > dfsnum[w] και compnum[v] < compnum[w] διασυνδετική ακµή ανν dfsnum[v] > dfsnum[w] και compnum[v] > compnum[w] 33 / 46

93 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος list<edge> DFS_NUM(const graph& G, node_array<int>& dfsnum, node_array<int>& compnum) { list<edge> T; dfsnum_counter = compnum_counter = 0; dfsnum.init(g,-); // declares all nodes unreached node v; forall_nodes(v,g) if (dfsnum[v] == -) dfs(v,dfsnum,compnum,t); } return T; 34 / 46

94 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Βάθος static int dfsnum_counter; static int compnum_counter; static void dfs(node v, node_array<int>& dfsnum, node_array<int>& compnum, list<edge>& T) { dfsnum[v] = ++dfsnum_counter; edge e; forall_adj_edges(e,v) { node w = target(e); if (dfsnum[w] == -) { T.append(e); dfs(w,dfsnum,compnum,t); } } } compnum[v] = ++compnum_counter; 35 / 46

95 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Πλάτος s / 46

96 Γραφήµατα στην LEDA Αναζήτηση Πρώτα κατά Πλάτος void BFS(const graph& G, node s, node_array<int>& dist) { queue<node> Q; node v,w; forall_nodes(w,g) dist[w] = -; } dist[s] = 0; Q.append(s); while (!Q.empty() ) { v = Q.pop; forall_adj_nodes(w,v) if (dist[w] < 0) { Q.append(w); dist[w] = dist[v]+; } } 37 / 46

97 Γραφήµατα στην LEDA Τοπολογική ιάταξη 38 / 46

98 Γραφήµατα στην LEDA Τοπολογική ιάταξη Ελεγχος εάν ένα δεδοµένο κατευθυνόµενο γράφηµα G = (V, E) είναι άκυκλο 38 / 46

99 Γραφήµατα στην LEDA Τοπολογική ιάταξη Ελεγχος εάν ένα δεδοµένο κατευθυνόµενο γράφηµα G = (V, E) είναι άκυκλο Αν ναι, υπολογισµός της τοπολογικής διάταξης ή ταξινόµησης: εύρεση αρίθµησης l : V IN τέτοια ώστε (x, y) E, l(x) < l(y) 38 / 46

100 Γραφήµατα στην LEDA Τοπολογική ιάταξη 39 / 46

101 Γραφήµατα στην LEDA Τοπολογική ιάταξη Αλγόριθµος: επαναληπτική διαδικασία Σε κάθε επανάληψη, επιλογή κορυφής v µε µηδενικό ϐαθµό-εισόδου Ανάθεση στην v της επόµενης τιµής στην αρίθµηση, και διαγραφή της µαζί µε τις εξερχόµενες ακµές της Αν σε κάποια επανάληψη δεν υπάρχουν κορυφές µηδενικού ϐαθµού-εισόδου, τότε η επαναληπτική διαδικασία τερµατίζει αλλιώς, συνεχίζει Αν στον τερµατισµό το G είναι το κενό γράφηµα, τότε είναι άκυκλο αλλιώς, περιέχει κύκλο 39 / 46

102 Γραφήµατα στην LEDA Τοπολογική ιάταξη Αλγόριθµος: επαναληπτική διαδικασία Σε κάθε επανάληψη, επιλογή κορυφής v µε µηδενικό ϐαθµό-εισόδου Ανάθεση στην v της επόµενης τιµής στην αρίθµηση, και διαγραφή της µαζί µε τις εξερχόµενες ακµές της Αν σε κάποια επανάληψη δεν υπάρχουν κορυφές µηδενικού ϐαθµού-εισόδου, τότε η επαναληπτική διαδικασία τερµατίζει αλλιώς, συνεχίζει Αν στον τερµατισµό το G είναι το κενό γράφηµα, τότε είναι άκυκλο αλλιώς, περιέχει κύκλο Χρόνος εκτέλεσης: O(n + m) - γιατί ; 39 / 46

103 Γραφήµατα στην LEDA Τοπολογική ιάταξη 40 / 46

104 Γραφήµατα στην LEDA Τοπολογική ιάταξη Ζητείται συνάρτηση bool TOPSORT(const graph& G, node_array<int>& ord); η οποία επιστρέφει true αν το G είναι άκυκλο, αλλιώς false. Στην πρώτη περίπτωση επιστρέφει επίσης την τοπολογική διάταξη των κορυφών του G στον πίνακα ord 40 / 46

105 Γραφήµατα στην LEDA Τοπολογική ιάταξη Ζητείται συνάρτηση bool TOPSORT(const graph& G, node_array<int>& ord); η οποία επιστρέφει true αν το G είναι άκυκλο, αλλιώς false. Στην πρώτη περίπτωση επιστρέφει επίσης την τοπολογική διάταξη των κορυφών του G στον πίνακα ord Πώς υλοποιείται ο αλγόριθµος χωρίς διαγραφή του γραφήµατος ; 40 / 46

106 Γραφήµατα στην LEDA Τοπολογική ιάταξη bool TOPSORT(const graph& G,node_array<int>& ord) { // initialization node_array<int> INDEG(G); queue<node> ZEROINDEG; node v,w; forall_nodes(v,g) if ( (INDEG[v] = G.indeg(v)) == 0 ) ZEROINDEG.append(v); // removing nodes of indegree zero int count = 0; ord.init(g); while (!ZEROINDEG.empty()) { v = ZEROINDEG.pop(); ord[v] = ++count; forall_out_edges(e,v) { node w = G.target(e); if ( --INDEG[w] == 0 ) ZEROINDEG.append(w); } } return (count == G.number_of_nodes()); } 4 / 46

107 Γραφήµατα στην LEDA Γεννήτριες Γραφηµάτων 4 / 46

108 Γραφήµατα στην LEDA Γεννήτριες Γραφηµάτων ηµιουργία γραφηµάτων µε ακολουθίες λειτουργιών new_node και new_edge είναι αρκετά κουραστική (και ϐαρετή) 4 / 46

109 Γραφήµατα στην LEDA Γεννήτριες Γραφηµάτων ηµιουργία γραφηµάτων µε ακολουθίες λειτουργιών new_node και new_edge είναι αρκετά κουραστική (και ϐαρετή) Η LEDA παρέχει µια αρκετά µεγάλη συλλογή από γεννήτριες γραφηµάτων ηµιουργία πλήρους γραφήµατος G µε n κορυφές: v, w G, η ακµή (v, w) ανήκει στο G complete_graph(graph& G, int n); ηµιουγία τυχαίου γραφήµατος µε n κορυφές και m ακµές random_graph(graph& G, int n, int m); διάφορες άλλες γεννήτριες οι οποίες κατασκευάζουν ειδικά γραφήµατα, π.χ. επίπεδα (planar), πλέγµατα (grids), διµερή (bipartite), κλπ 4 / 46

110 Γραφήµατα στην LEDA δηµιουργία τυχαίων γραφηµάτων 43 / 46

111 Γραφήµατα στην LEDA δηµιουργία τυχαίων γραφηµάτων Η κλήση random_graph(graph& G, int n, int m, bool no_anti_parallel_edges, bool loopfree, bool no_parallel_edges); δηµιουργεί ένα τυχαίο γράφηµα G µε n κορυφές και m ακµές σύµφωνα µε το µοντέλο G n,m 43 / 46

112 Γραφήµατα στην LEDA δηµιουργία τυχαίων γραφηµάτων Η κλήση random_graph(graph& G, int n, int m, bool no_anti_parallel_edges, bool loopfree, bool no_parallel_edges); δηµιουργεί ένα τυχαίο γράφηµα G µε n κορυφές και m ακµές σύµφωνα µε το µοντέλο G n,m Μια τυχαία ακµή επιλέγεται από ένα σύνολο C που ορίζεται ως εξής Το C αρχικοποιείται µε το σύνολο όλων των n Ϲευγών των κορυφών, αν loopfree = false, ή µε το σύνολο όλων των n(n ) Ϲευγών διαφορετικών κορυφών, αν loopfree = true Η επιλογή ενός Ϲεύγους (v, w) από το C συνεπάγεται τη διαγραφή του από το C αν no_parallel_edges = true, και το αντίθετο Ϲεύγος (w, v) διαγράφεται από το C αν no_anti_parallel_edges = true 43 / 46

113 Γραφήµατα στην LEDA δηµιουργία τυχαίων γραφηµάτων Ειδικές περιπτώσεις της random_graph // The following pairs of calls are equivalent random_graph(g,n,m); random_graph(g,n,m,false,false,false); random_simple_graph(g,n,m); random_graph(g,n,m,false,false,true); random_simple_loopfree_graph(g,n,m); random_graph(g,n,m,false,true,true); random_simple_undirected_graph(g,n,m); random_graph(g,n,m,true,true,true); 44 / 46

114 Γραφήµατα στην LEDA δηµιουργία γραφηµάτων 45 / 46

115 Γραφήµατα στην LEDA δηµιουργία γραφηµάτων Η συνάρτηση void test_graph(graph& G) δηµιουργεί διαλογικά ένα γράφηµα που ορίζεται από τον χρήστη 45 / 46

116 Ερωτήσεις ; 46 / 46

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 5 1 / 52 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 6 1 / 35 Ενότητα 6 - Συντοµότερες

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 8 Μέγιστη Ροή & Αριθµητική Ορθότητα Αλγορίθµων 1

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 6 1 / 41 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00 Χρήστος. Ζαρολιάγκης Τεχνολογίες Υλοποίησης Αλγορίθµων : Άσκηση 1 1 Ασκηση 1 [16.03.2016] Παράδοση : Τετάρτη 13.04.2016, 13:00 Η παρούσα άσκηση αφορά στον έλεγχο διµερότητας ενός γραφήµατος. Σκοπός της

Διαβάστε περισσότερα

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 8 1 / 44 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &

Διαβάστε περισσότερα

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

Διαβάστε περισσότερα

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1 Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Διάσχιση Γράφων Τοπολογική Ταξινόµηση ΕΠΛ 23 Δοµές Δεδοµένων και Αλγόριθµοι - Γράφοι Η πιο γενική µορφή δοµής

Διαβάστε περισσότερα

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Τοπολογική Ταξινόµηση ιάσχιση Γράφων ΕΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 26 - Γράφοι Ηπιο

Διαβάστε περισσότερα

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Εισαγωγή στους Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Γράφοι - ορισμοί και υλοποίηση Διάσχιση Γράφων Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 7 1 / 42 Ενότητα 7 - Συντοµότερες ιαδροµές ΙΙ Αλγόριθµοι

Διαβάστε περισσότερα

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 5 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V Γράφοι Ορολογία γράφος ή γράφηµα (graph) Ορισµός: G = (V, E) όπου V:ένα σύνολο E:µια διµελής σχέση στο V Ορολογία (συνέχεια) κάθε v V ονοµάζεται κορυφή (vertex) ή κόµβος (node) κάθε (v 1, v 2 ) Ε ονοµάζεται

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 9 Απριλίου 2009 1 / 0 Παραδείγµατα γράφων

Διαβάστε περισσότερα

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή Εργαστήριο 10 Γράφηµα (Graph) Εισαγωγή Στην πληροφορική γράφηµα ονοµάζεται µια δοµή δεδοµένων, που αποτελείται από ένα σύνολο κορυφών ( vertices) (ή κόµβων ( nodes» και ένα σύνολο ακµών ( edges). Ενας

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 3 1 / 25 Ενότητα 3 οκιµή Προγραµµάτων (Program Testing)

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 3

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 3 Εισαγωγή στους Αλγορίθμους Φροντιστήριο 3 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 7 1 / 48 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

6η Διάλεξη Διάσχιση Γράφων και Δέντρων ΘΕΩΡΙΑ ΓΡΑΦΩΝ 6 η Διάλεξη Διάσχιση Γράφων και Δέντρων Αλγόριθμος αναζήτησης σε Βαθος Αλγόριθμος αναζήτησης κατά Πλάτος Αλγόριθμοι για Δένδρα Εύρεση ελαχίστων Γεννητορικών (Επικαλύπτοντα) Δένδρων Διάσχιση

Διαβάστε περισσότερα

Γράφοι: κατευθυνόμενοι και μη

Γράφοι: κατευθυνόμενοι και μη Γράφοι: κατευθυνόμενοι και μη (V,E ) (V,E ) Γράφος (ή γράφημα): ζεύγος (V,E), V ένα μη κενό σύνολο, Ε διμελής σχέση πάνω στο V Μη κατευθυνόμενος γράφος: σχέση Ε συμμετρική V: κορυφές (vertices), κόμβοι

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 4 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Γραφήματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Γραφήματα Κατευθυνόμενο Γράφημα Ένα κατευθυνόμενο γράφημα G είναι ένα ζευγάρι (V, E) όπου V είναι ένα

Διαβάστε περισσότερα

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων Εισαγωγή στην Επιστήμη των Υπολογιστών ο εξάμηνο ΣΗΜΜΥ Ενότητα : Αλγόριθμοι γράφων και δικτύων Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών

Διαβάστε περισσότερα

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 1 2 3 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 10β: Αλγόριθμοι Γραφημάτων-Γραφήματα- Αναπαράσταση Γραφημάτων- Διερεύνηση Πρώτα σε Πλάτος (BFS) Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το

Διαβάστε περισσότερα

Σχέσεις, Ιδιότητες, Κλειστότητες

Σχέσεις, Ιδιότητες, Κλειστότητες Σχέσεις, Ιδιότητες, Κλειστότητες Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Σχέσεις 1 / 26 Εισαγωγή & Ορισµοί ιµελής Σχέση R από

Διαβάστε περισσότερα

Μάθημα 21: Ουρές (Queues)

Μάθημα 21: Ουρές (Queues) Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

HY150a Φροντιστήριο 3 24/11/2017

HY150a Φροντιστήριο 3 24/11/2017 HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος Επιµέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γραφήµατα Μοντελοποίηση πολλών σηµαντικών προβληµάτων (π.χ. δίκτυα

Διαβάστε περισσότερα

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Περίληψη Αλγόριθµοι Τύπου Μείωσης Προβλήµατος ( Decrease and Conquer ) Μείωση κατά µια σταθερά (decrease by a constant) Μείωση κατά ένα ποσοστό (decrease by a constant

Διαβάστε περισσότερα

Αλγόριθµοι Γραφηµάτων

Αλγόριθµοι Γραφηµάτων Αλγόριθµοι Γραφηµάτων Παύλος Σπυράκης Πανεπιστήµιο Πατρών Τοµέας Θεµελιώσεων και Εφαρµογών της Επιστήµης των Υπολογιστών Ερευνητικό Ακαδηµαϊκό Ινστιτούτο Τεχνολογίας Υπολογιστών Γραφήµατα Μοντελοποίηση

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 7

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 7 Εισαγωγή στους Αλγορίθμους Φροντιστήριο 7 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 3 Γραφήµατα v1.0 (2010-05-25) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 3.1 Βασικοί Ορισµοί και Εφαρµογές γραφήµατα γράφηµα G: ένας τρόπος κωδικοποίησης των σχέσεων

Διαβάστε περισσότερα

Αλγόριθμοι Γραφημάτων

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων. Γραφήματα. Αναπαράσταση Γραφημάτων 3. Διερεύνηση σε Πρώτα σε Πλάτος (BFS) Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Γράφημα Ορισμός: Ένα γράφημα G είναι το διατεταγμένο ζεύγος

Διαβάστε περισσότερα

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Τοπολογική Ταξινόμηση - Εφαρμογές, Παραδείγματα, Αλγόριθμοι

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 3η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Απλοί Αλγόριθμοι & Δομές Δεδομένων Δύο Απλές

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γραφήματα Μοντελοποίηση πολλών σημαντικών προβλημάτων (π.χ. δίκτυα

Διαβάστε περισσότερα

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems Ημερομηνία Παράδοσης: 0/1/017 την ώρα του μαθήματος ή με email: mkarabin@csd.uoc.gr Γενικές Οδηγίες α) Επιτρέπεται η αναζήτηση στο Internet και στην βιβλιοθήκη

Διαβάστε περισσότερα

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ 2 Η ΔΙΑΛΕΞΗ Βασικές Έννοιες Γράφων - Ορισμοί (συνέχεια) - Ισομορφισμοί-Ομοιομορφισμοί Γράφων - Πράξεις - Αναπαράσταση Γράφων (Πίνακες

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 9 Μέγιστη Ροή ΙΙ Αλγόριθµος Προροής-Προώθησης &

Διαβάστε περισσότερα

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 13-1 Περιεχόμενο

Διαβάστε περισσότερα

Στοιχεία Θεωρίας Γραφηµάτων (1)

Στοιχεία Θεωρίας Γραφηµάτων (1) Στοιχεία Θεωρίας Γραφηµάτων (1) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Γραφηµάτων (1) 1 / 23 Μη κατευθυνόµενα γραφήµατα

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 9 1 / 46 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες Κατευθυνόμενο γράφημα Συνάρτηση χωρητικότητας 12 16 2 Ροή δικτύου Συνάρτηση αφετηρίακός κόμβος 13 1 με τις ακόλουθες ιδιότητες 4 14 9 7 4 τερματικός κόμβος Περιορισμός χωρητικότητας: Αντισυμμετρία: Διατήρηση

Διαβάστε περισσότερα

Κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Πολυγραφήµατα (Multigraphs)

Κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Πολυγραφήµατα (Multigraphs) Μη κατευθυνόµενα γραφήµατα Στοιχεία Θεωρίας Γραφηµάτων (1) Απλό µη κατευθυνόµενο γράφηµα G είναι διατεταγµένο Ϲεύγος (V, E) µε σύνολο κορυφών/κόµβων V Ορέστης Τελέλης tllis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων,

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 3 1 / 32 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Σχεδίαση Αλγορίθμων Μείωσε και Βασίλευε http://delab.csd.auth.gr/~gounaris/courses/ad auth gounaris/courses/ad Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Μείωσε και Βασίλευε 1. Μειώνουμε

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8 Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης)

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης) Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου Γκόγκος Χρήστος 04/12/2014 Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης) Στην εργασία αυτή παρουσιάζεται

Διαβάστε περισσότερα

ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ 2

ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ 2 Version 1.5 (16/03/2017) Σχολή Τεχνολογικών Εφαρμογών (ΣΤΕΦ) Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διδάσκων: Γκόγκος Χρήστος Μάθημα: Τεχνητή Νοημοσύνη (εργαστήριο Δ εξαμήνου) Ακαδημαϊκό έτος 2016-2017 εαρινό

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων)

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων) Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων & Τροφίμων

Διαβάστε περισσότερα

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4 Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γραφήματα Μοντελοποίηση πολλών σημαντικών προβλημάτων (π.χ. δίκτυα συνεκτικότητα,

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 26 Ιουνίου 201 1 / Απληστοι (Greedy) Αλγόριθµοι

Διαβάστε περισσότερα

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βασιλική

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βασιλική Graph Algorithms Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βασιλική Περιεχόμενα minimum weight spanning tree connected components transitive closure shortest paths

Διαβάστε περισσότερα

Κεφάλαιο 3. Γραφήµατα v1.1 (2012-01-12) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 3. Γραφήµατα v1.1 (2012-01-12) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 3 Γραφήµατα v1.1 (2012-01-12) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 3.1 Βασικοί Ορισµοί και Εφαρµογές γραφήµατα γράφηµα G: ένας τρόπος κωδικοποίησης των σχέσεων

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Μαΐου 201 1 / Απληστοι (Greedy) Αλγόριθµοι

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 7η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Αλγόριθμοι Γραφημάτων Τοπολογική Διάταξη

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 10γ: Αλγόριθμοι Γραφημάτων- Διερεύνηση Πρώτα σε Βάθος (DFS)- Τοπολογική Ταξινόμηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 3 Γραφήματα ver. 21/12/2014 Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 3.1 Βασικοί Ορισμοί και Εφαρμογές γραφήματα γράφημα G: ένας τρόπος κωδικοποίησης των σχέσεων ανά

Διαβάστε περισσότερα

Ενότητα 10 Γράφοι (ή Γραφήµατα)

Ενότητα 10 Γράφοι (ή Γραφήµατα) Ενότητα 10 Γράφοι (ή γραφήµατα) ΗΥ240 - Παναγιώτα Φατούρου 1 Γράφοι (ή Γραφήµατα) Ένας γράφος αποτελείται από ένα σύνολο από σηµεία (που λέγονται κόµβοι) και ένα σύνολο από γραµµές (που λέγονται ακµές)

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Δοµικά στοιχεία Πίνακες Το κόσκινο του Ερατοσθένη Αντιγραφή πινάκων

Διαβάστε περισσότερα

Αλγόριθμοι Γραφημάτων

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων 1. Διερεύνηση Πρώτα σε Βάθος (DFS) 2. Τοπολογική Ταξινόμηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Depth-First Search Πρώτα σε Βάθος διερεύνηση (Depth-First Search) είναι

Διαβάστε περισσότερα

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Άσκηση 1 (α) Ο αλγόριθµος χρησιµοποιεί τη διαδικασία DFS(v) η οποία, ως γνωστό, επισκέπτεται όλους τους κόµβους που είναι συνδεδεµένοι µε τον κόµβο v. Για να µετρήσουµε

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος Αναζήτηση Κατά Πλάτος ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι. Κατανεμημένα Συστήματα Ι 1 Περίληψη Φροντιστηρίου 2 Το Περιβάλλον DAP Φροντιστήριο Ένα παράδειγμα υλοποίησης στο DAP Δευτέρα 14 Νοεμβρίου 2005 Γιάννης Κρομμύδας Το περιβάλλον DAP Τι είναι Το περιβάλλον

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΑΣΚΗΣΗ 4 Σωροί, Γράφοι Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής: 05/04/2013 Ημερομηνία

Διαβάστε περισσότερα

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Cuckoo Hashing Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο β Πολυτεχνείο Πρόβλημα (ADT) Λεξικού υναμικά μεταβαλλόμενη συλλογή αντικειμένων που αναγνωρίζονται με «κλειδί» (π.χ.

Διαβάστε περισσότερα

Διάλεξη 18: Γράφοι I - Εισαγωγή

Διάλεξη 18: Γράφοι I - Εισαγωγή ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 18: Γράφοι I - Εισαγωγή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Γράφοι - ορισμοί και υλοποίηση - Διάσχιση Γράφων Εισαγωγή στους Γράφους

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 24: Ειδικές Περιπτώσεις του Προβλήματος Ροής Ελαχίστου Κόστους Σαμαράς Νικόλαος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων Προγραμματισμός Η/Υ Ενότητα 8: Ειδικά Θέματα Αλγορίθμων Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση

Διαβάστε περισσότερα

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Άσκηση 1 Χρησιμοποιούμε τις δομές: struct hashtable { struct node array[maxsize]; int maxsize; int size; struct node{ int data; int status; Στο πεδίο status σημειώνουμε

Διαβάστε περισσότερα

Αντισταθμιστική ανάλυση

Αντισταθμιστική ανάλυση Αντισταθμιστική ανάλυση Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Παράδειγμα: Θυμηθείτε το πρόβλημα

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5 Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Πίνακες & Δείκτες ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πίνακες Πίνακες Τα στοιχεία

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους Ενότητα 7η

Εισαγωγή στους Αλγορίθμους Ενότητα 7η Εισαγωγή στους Αλγορίθμους Ενότητα 7η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Αλγόριθμοι Eλάχιστα μονοπάτια

Αλγόριθμοι Eλάχιστα μονοπάτια Αλγόριθμοι Eλάχιστα μονοπάτια Μάρθα Σιδέρη Προτεινόμενη βιβλιογραφία: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani «Αλγόριθμοι» Κλειδάριθμος 009 Κεφάλαιο. http://www.cs.berkeley.edu/~vazirani/algorithms/chap.pdf

Διαβάστε περισσότερα

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΟΔΗΓΙΕΣ: ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ - ΠΛΗ10 ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ - 14 ΙΟΥΝΙΟΥ 2015 Τα θέματα που έχετε στα χέρια σας είναι σε τρεις (3) σελίδες. Επιβεβαιώστε το και αν λείπει κάποια σελίδα

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 3 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα

Διαβάστε περισσότερα

Πίνακες (Arrays) Εισαγωγή στη C++

Πίνακες (Arrays) Εισαγωγή στη C++ Πίνακες (Arrays) Εισαγωγή στη C++ Γενικά Στη C++, όπως και σε όλες τις γλώσσες προγραμματισμού, υπάρχει η δυνατότητα ομαδοποίησης δεδομένων ίδιου τύπου. Ο τρόπος με τον οποίο επιτυγχάνεται αυτό είναι με

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 19: ΓράφοιII -ΤοπολογικήΤαξινόμηση Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Τοπολογική Ταξινόμηση - Εφαρμογές, Παραδείγματα, Αλγόριθμοι Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231 Δομές

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2017 - I. ΜΗΛΗΣ AΛΓΟΡΙΘΜΟΙ ΓΡΑΦΩΝ Ι ΕΞΕΡΕΥΝΗΣΗ 1 Graphs Ανά ζεύγη (pairwise) σχέσεις μεταξύ των στοιχείων ενός συνόλου 2 Graphs Εφαρμογές Χάρτες,

Διαβάστε περισσότερα

Κεφάλαιο 4 Γραφήματα και Δένδρα

Κεφάλαιο 4 Γραφήματα και Δένδρα Κεφάλαιο 4 Γραφήματα και Δένδρα Περιεχόμενα 4.1 Γραφήματα... 60 4.2 Δομές δεδομένων για την αναπαράσταση γραφημάτων... 64 4.2.1 Υλοποίηση σε Java... 66 4.3 Διερεύνηση γραφήματος... 69 4.4 Δένδρα... 86

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 20: Τοπολογική Ταξινόμηση Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ολοκλήρωση Αλγορίθμων Διάσχισης Γράφων (Από Διάλεξη 19) Τοπολογική Ταξινόμηση Εφαρμογές, Παραδείγματα, Αλγόριθμοι

Διαβάστε περισσότερα

Φροντιςτήριο. Linked-List

Φροντιςτήριο. Linked-List Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ

Διαβάστε περισσότερα

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,

Διαβάστε περισσότερα

Γράφοι. Αλγόριθμοι και πολυπλοκότητα. Στάθης Ζάχος, Δημήτρης Φωτάκης

Γράφοι. Αλγόριθμοι και πολυπλοκότητα. Στάθης Ζάχος, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Αλγόριθμοι και πολυπλοκότητα Στάθης Ζάχος, Δημήτρης Φωτάκης Γράφοι Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 9: Γράφοι Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Γράφοι - ορισμοί και υλοποίηση - Διάσχιση Γράφων Διδάσκων: Παναγιώτης νδρέου ΕΠΛ035 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ.

Διαβάστε περισσότερα