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

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

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

Transcript

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

2 Ενότητα 9 - Μέγιστη Ροή ΙΙ Ευρετικές Βελτιώσεις του Αλγορίθµου Προροής-Προώθησης Πειραµατική Αξιολόγηση Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής 2 / 40

3 Πολυπλοκότητα Χειρότερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης Επιλογή ενεργών κορυφών 3 / 40

4 Πολυπλοκότητα Χειρότερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης Επιλογή ενεργών κορυφών Αυθαίρετη: O(n 2 m) 3 / 40

5 Πολυπλοκότητα Χειρότερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης Επιλογή ενεργών κορυφών Αυθαίρετη: O(n 2 m) FIFO: O(n 3 ) 3 / 40

6 Πολυπλοκότητα Χειρότερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης Επιλογή ενεργών κορυφών Αυθαίρετη: O(n 2 m) FIFO: O(n 3 ) Υψηλότερου Επιπέδου: O(n 2 m) 3 / 40

7 Πολυπλοκότητα Καλύτερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης; 4 / 40

8 Πολυπλοκότητα Καλύτερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης; Κόστος Ενηµέρωσης Ετικετών: Ω(n 2 ), αν Ω(n) κορυφές πρέπει να ανυψωθούν πάνω από το επίπεδο n v 0 v 1 v 2 v n 3 v n 2 v n / 40

9 Πολυπλοκότητα Καλύτερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης; Κόστος Ενηµέρωσης Ετικετών: Ω(n 2 ), αν Ω(n) κορυφές πρέπει να ανυψωθούν πάνω από το επίπεδο n v 0 v 1 v 2 v n 3 v n 2 v n Πολυπλοκότητα Καλύτερης Περίπτωσης των άλλων τµηµάτων: O(m) 4 / 40

10 Πολυπλοκότητα Καλύτερης Περίπτωσης Αλγορίθµου Προροής-Προώθησης; Κόστος Ενηµέρωσης Ετικετών: Ω(n 2 ), αν Ω(n) κορυφές πρέπει να ανυψωθούν πάνω από το επίπεδο n v 0 v 1 v 2 v n 3 v n 2 v n Πολυπλοκότητα Καλύτερης Περίπτωσης των άλλων τµηµάτων: O(m) Μπορεί να ϐελτιωθεί ο χρόνος ενηµέρωσης/ανανέωσης ετικετών ; 4 / 40

11 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων 5 / 40

12 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων { υψηλή αν d(v) n κορυφή v : χαµηλή αλλιώς 5 / 40

13 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων { υψηλή αν d(v) n κορυφή v : χαµηλή αλλιώς Τι διαφοροποιεί τις υψηλές από τις χαµηλές κορυφές ; 5 / 40

14 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων { υψηλή αν d(v) n κορυφή v : χαµηλή αλλιώς Τι διαφοροποιεί τις υψηλές από τις χαµηλές κορυφές ; Ενεργή υψηλή κορυφή v: v-t διαδροµή κατάλληλων ακµών στο G(f) πλεόνασµα των ενεργών υψηλών κορυφών πρέπει να σταλει πίσω στην s 5 / 40

15 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων { υψηλή αν d(v) n κορυφή v : χαµηλή αλλιώς Τι διαφοροποιεί τις υψηλές από τις χαµηλές κορυφές ; Ενεργή υψηλή κορυφή v: v-t διαδροµή κατάλληλων ακµών στο G(f) πλεόνασµα των ενεργών υψηλών κορυφών πρέπει να σταλει πίσω στην s Ενεργή χαµηλή κορυφή u: κάποιο πλεόνασµα της u µπορεί να προωθηθεί στην t και κάποιο πρέπει να σταλεί πίσω στην s 5 / 40

16 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων 6 / 40

17 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων Πλεόνασµα: ϕτάνει σε ενεργές υψηλές κορυφές µέσω ακµών e E µε f(e) > 0 = Ροή µπορεί να σταλεί πίσω µέσω αυτών των ακµών 6 / 40

18 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων Πλεόνασµα: ϕτάνει σε ενεργές υψηλές κορυφές µέσω ακµών e E µε f(e) > 0 = Ροή µπορεί να σταλεί πίσω µέσω αυτών των ακµών E (f) = {e = (y, x) : e = (x, y) E και f(e) > 0} 6 / 40

19 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων Πλεόνασµα: ϕτάνει σε ενεργές υψηλές κορυφές µέσω ακµών e E µε f(e) > 0 = Ροή µπορεί να σταλεί πίσω µέσω αυτών των ακµών E (f) = {e = (y, x) : e = (x, y) E και f(e) > 0} Χρήση µόνο ακµών του E (f) όταν προωθούµε ϱοή από ενεργές υψηλές κορυφές 6 / 40

20 Ευρετική Μέθοδος 1 - Ετικέτες Μεγάλων Αποστάσεων Τροποποιηµένος Αλγόριθµος Προροής-Προώθησης /* αρχικοποίηση */ Θέσε f(e) = cap(e) για όλες τις ακµές µε source(e) = s; Θέσε f(e) = 0 για όλες τις υπόλοιπες ακµές ; Θέσε d(s) = n και d(v) = 0 για όλες τις κορυφές ; /* κύριος ϐρόχος */ while ενεργή κορυφή { έστω v µια ενεργή κορυφή; if d(v) < n και κατάλληλη ακµή e = (v, w) E(f) ή d(v) n και κατάλληλη ακµη e = (v, w) E (f) then { προώθησε δ = min{excess(v), r(e)} µονάδες ϱοής στην e; } else { αύξησε το d(v); } } 7 / 40

21 Ευρετική Μέθοδος 1 Ετικέτες Μεγάλων Αποστάσεων Τροποποιηµένος Κύριος Βρόχος // MF_LH: main loop for(;;) { node v = U.del(); if (v == nil) break; if (v == t) continue; NT ev = excess[v]; // excess of v int dv = dist[v]; // level of v edge e; if ( dist[v] < n ) { // MF_BASIC: push across edges out of v } if ( ev > 0 ) { // MF_BASIC: push across edges into v } excess[v] = ev; if (ev > 0) { dist[v]++; num_relabels++; U.insert(v,dist[v]); } } 8 / 40

22 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών 9 / 40

23 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Ανανέωση ετικέτας της v (οποτεδήποτε χρειαστεί): d(v) = 1 + min{d(w) : (v, w) G(f)} 9 / 40

24 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Ανανέωση ετικέτας της v (οποτεδήποτε χρειαστεί): d(v) = 1 + min{d(w) : (v, w) G(f)} Τοπική Ανανέωση Ετικετών Οταν η ετικέτα της v ανανεώνεται, συνέχισε την ανανέωση έως ότου κατάλληλη εξερχόµενη ακµή από την v 9 / 40

25 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Ανανέωση ετικέτας της v (οποτεδήποτε χρειαστεί): d(v) = 1 + min{d(w) : (v, w) G(f)} Τοπική Ανανέωση Ετικετών Οταν η ετικέτα της v ανανεώνεται, συνέχισε την ανανέωση έως ότου κατάλληλη εξερχόµενη ακµή από την v ιατήρηση µεταβλητής dmin, αρχικοποιηµένη σε MAXINT 9 / 40

26 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Ανανέωση ετικέτας της v (οποτεδήποτε χρειαστεί): d(v) = 1 + min{d(w) : (v, w) G(f)} Τοπική Ανανέωση Ετικετών Οταν η ετικέτα της v ανανεώνεται, συνέχισε την ανανέωση έως ότου κατάλληλη εξερχόµενη ακµή από την v ιατήρηση µεταβλητής dmin, αρχικοποιηµένη σε MAXINT Αν e = (v, w) G(f) είναι κατάλληλη (d(w) < d(v)), τότε προώθησε ϱοή από την v 9 / 40

27 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Ανανέωση ετικέτας της v (οποτεδήποτε χρειαστεί): d(v) = 1 + min{d(w) : (v, w) G(f)} Τοπική Ανανέωση Ετικετών Οταν η ετικέτα της v ανανεώνεται, συνέχισε την ανανέωση έως ότου κατάλληλη εξερχόµενη ακµή από την v ιατήρηση µεταβλητής dmin, αρχικοποιηµένη σε MAXINT Αν e = (v, w) G(f) είναι κατάλληλη (d(w) < d(v)), τότε προώθησε ϱοή από την v Αν e = (v, w) G(f) δεν ειναι κατάλληλη (d(w) d(v)), τότε dmin = min{dmin, d(w)} 9 / 40

28 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Ανανέωση ετικέτας της v (οποτεδήποτε χρειαστεί): d(v) = 1 + min{d(w) : (v, w) G(f)} Τοπική Ανανέωση Ετικετών Οταν η ετικέτα της v ανανεώνεται, συνέχισε την ανανέωση έως ότου κατάλληλη εξερχόµενη ακµή από την v ιατήρηση µεταβλητής dmin, αρχικοποιηµένη σε MAXINT Αν e = (v, w) G(f) είναι κατάλληλη (d(w) < d(v)), τότε προώθησε ϱοή από την v Αν e = (v, w) G(f) δεν ειναι κατάλληλη (d(w) d(v)), τότε dmin = min{dmin, d(w)} Αν η v είναι ακόµη ενεργή µετά την εξέταση όλων των γειτονικών υπολειπόµενων ακµών της, τότε d(v) = 1 + dmin 9 / 40

29 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Τροποποιηµένος Κύριος Βρόχος // MF_LRH: main loop for(;;) { node v = U.del(); if (v == nil) break; if (v == t) continue; NT ev = excess[v]; // excess of v int dv = dist[v]; // level of v int dmin = MAXINT; // for local relabeling heuristic edge e; if ( dist[v] < n ) { // MF_LRH: push across edges out of v } if ( ev > 0 ) { // MF_LRH: push across edges into v } } excess[v] = ev; if (ev > 0) { dist[v] = 1 + dmin; num_relabels++; U.insert(v,dist[v]); } 10 / 40

30 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Τροποποιηµένος Κώδικας // MF_LRH: push across edges out of v for (e = G.first_adj_edge(v); e; e = G.adj_succ(e)) { num_edge_inspections++; NT& fe = flow[e]; NT rc = cap[e] - fe; if (rc == 0) continue; node w = target(e); int dw = dist[w]; if ( dw < dv ) // equivalent to ( dw == dv - 1 ) { num_pushes++; NT& ew = excess[w]; if (ew == 0) U.insert0(w,dw); if (ev <= rc) { ew += ev; fe += ev; ev = 0; // stop: excess[v] exhausted } break; } else { ew += rc; fe += rc; ev -= rc; } } else { if ( dw < dmin ) dmin = dw; } 11 / 40

31 Ευρετική Μέθοδος 2 Τοπική Ανανέωση Ετικετών Τροποποιηµένος Κώδικας // MF_LRH: push across edges into v for (e = G.first_in_edge(v); e; e = G.in_succ(e)) { num_edge_inspections++; NT& fe = flow[e]; if (fe == 0) continue; node w = source(e); int dw = dist[w]; if ( dw < dv ) // equivalent to ( dw == dv - 1 ) { num_pushes++; NT& ew = excess[w]; if (ew == 0) U.insert0(w,dw); if (ev <= fe) { fe -= ev; ew += ev; ev = 0; // stop: excess[v] exhausted } break; } else { ew += fe; ev -= fe; fe = 0; } } else { if ( dw < dmin ) dmin = dw; } 12 / 40

32 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών 13 / 40

33 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Ενηµερώνει τις τιµές d( ) όλων των κορυφών δ(v, t) αν v-t διαδροµή στο G(f) n + δ d(v) = (v, s) αν v-s διαδροµή στο G (f) και v-t διαδροµή στο G(f) 2n 1 αλλιώς 13 / 40

34 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Ενηµερώνει τις τιµές d( ) όλων των κορυφών δ(v, t) αν v-t διαδροµή στο G(f) n + δ d(v) = (v, s) αν v-s διαδροµή στο G (f) και v-t διαδροµή στο G(f) 2n 1 αλλιώς δ(v, t) := µήκος (αριθµός ακµών) συντοµότερης v-t διαδροµής στο G(f) δ (v, s) := µήκος (αριθµός ακµών) συντοµότερης v-s διαδροµής στο G (f) 13 / 40

35 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών 14 / 40

36 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά 14 / 40

37 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά ΚΑΕ εφαρµόζεται (µετά από) κάθε h m επιθεωρήσεις ακµών (h κατάλληλη σταθερά) 14 / 40

38 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά ΚΑΕ εφαρµόζεται (µετά από) κάθε h m επιθεωρήσεις ακµών (h κατάλληλη σταθερά) Πολυπλοκότητα χειρότερης περίπτωσης αυξάνεται µόνο κατά ένα σταθερό παράγοντα 14 / 40

39 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά ΚΑΕ εφαρµόζεται (µετά από) κάθε h m επιθεωρήσεις ακµών (h κατάλληλη σταθερά) Πολυπλοκότητα χειρότερης περίπτωσης αυξάνεται µόνο κατά ένα σταθερό παράγοντα Πολυπλοκότητα καλύτερης περίπτωσης µπορεί να ϐελτιωθεί σηµαντικά v 0 v 1 v 2 v n 3 v n 2 v n / 40

40 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά ΚΑΕ εφαρµόζεται (µετά από) κάθε h m επιθεωρήσεις ακµών (h κατάλληλη σταθερά) Πολυπλοκότητα χειρότερης περίπτωσης αυξάνεται µόνο κατά ένα σταθερό παράγοντα Πολυπλοκότητα καλύτερης περίπτωσης µπορεί να ϐελτιωθεί σηµαντικά v 0 v 1 v 2 v n 3 v n 2 v n ΚΑΕ εφαρµόζεται µετά από τον κορεσµό της (v n 2, v n 1 ) 14 / 40

41 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά ΚΑΕ εφαρµόζεται (µετά από) κάθε h m επιθεωρήσεις ακµών (h κατάλληλη σταθερά) Πολυπλοκότητα χειρότερης περίπτωσης αυξάνεται µόνο κατά ένα σταθερό παράγοντα Πολυπλοκότητα καλύτερης περίπτωσης µπορεί να ϐελτιωθεί σηµαντικά v 0 v 1 v 2 v n 3 v n 2 v n ΚΑΕ εφαρµόζεται µετά από τον κορεσµό της (v n 2, v n 1 ) Τοποθετεί την κορυφή v i στο επίπεδο n + i, i, 1 i n 2 14 / 40

42 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά ΚΑΕ εφαρµόζεται (µετά από) κάθε h m επιθεωρήσεις ακµών (h κατάλληλη σταθερά) Πολυπλοκότητα χειρότερης περίπτωσης αυξάνεται µόνο κατά ένα σταθερό παράγοντα Πολυπλοκότητα καλύτερης περίπτωσης µπορεί να ϐελτιωθεί σηµαντικά v 0 v 1 v 2 v n 3 v n 2 v n ΚΑΕ εφαρµόζεται µετά από τον κορεσµό της (v n 2, v n 1 ) Τοποθετεί την κορυφή v i στο επίπεδο n + i, i, 1 i n 2 Πλεόνασµα κορυφής v n 2 ϑα σταλεί πίσω στην s µετά από µια σειρά n προωθήσεων 14 / 40

43 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Καθολική Ανανέωση Ετικετών: υλοποίηση µε ΑΠΠ = O(m) χρόνο δεν ϑα πρέπει να εφαρµόζεται πολύ συχνά ΚΑΕ εφαρµόζεται (µετά από) κάθε h m επιθεωρήσεις ακµών (h κατάλληλη σταθερά) Πολυπλοκότητα χειρότερης περίπτωσης αυξάνεται µόνο κατά ένα σταθερό παράγοντα Πολυπλοκότητα καλύτερης περίπτωσης µπορεί να ϐελτιωθεί σηµαντικά v 0 v 1 v 2 v n 3 v n 2 v n ΚΑΕ εφαρµόζεται µετά από τον κορεσµό της (v n 2, v n 1 ) Τοποθετεί την κορυφή v i στο επίπεδο n + i, i, 1 i n 2 Πλεόνασµα κορυφής v n 2 ϑα σταλεί πίσω στην s µετά από µια σειρά n προωθήσεων εν χρειάζεται ανανέωση ετικετών = Μείωση χρόνου από Ω(n 2 ) σε O(n) 14 / 40

44 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) 15 / 40

45 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: 15 / 40

46 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης 15 / 40

47 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) 15 / 40

48 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: 15 / 40

49 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: dist[v] = 2n 1, κορυφή v που δεν µπορεί να προσπελάσει την t στο G(f) πρίν από µία κλήση της συνάρτησης 15 / 40

50 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: dist[v] = 2n 1, κορυφή v που δεν µπορεί να προσπελάσει την t στο G(f) πρίν από µία κλήση της συνάρτησης dist[v] < n, κορυφή v που µπορεί να προσπελάσει την t στο G(f) 15 / 40

51 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: dist[v] = 2n 1, κορυφή v που δεν µπορεί να προσπελάσει την t στο G(f) πρίν από µία κλήση της συνάρτησης dist[v] < n, κορυφή v που µπορεί να προσπελάσει την t στο G(f) «ανάδροµη» ΑΠΠ στο G (f) 15 / 40

52 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: dist[v] = 2n 1, κορυφή v που δεν µπορεί να προσπελάσει την t στο G(f) πρίν από µία κλήση της συνάρτησης dist[v] < n, κορυφή v που µπορεί να προσπελάσει την t στο G(f) «ανάδροµη» ΑΠΠ στο G (f) Ολες οι ενεργές κορυφές u τοποθετούνται στην U µε τις καινούριες dist[u] 15 / 40

53 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: dist[v] = 2n 1, κορυφή v που δεν µπορεί να προσπελάσει την t στο G(f) πρίν από µία κλήση της συνάρτησης dist[v] < n, κορυφή v που µπορεί να προσπελάσει την t στο G(f) «ανάδροµη» ΑΠΠ στο G (f) Ολες οι ενεργές κορυφές u τοποθετούνται στην U µε τις καινούριες dist[u] U = πριν την κλήση της compute_dist_t, και η U περιέχει όλες τις ενεργές κορυφές που προσπελάζουν την t στο G(f) πριν την κλήση της compute_dist_s 15 / 40

54 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: dist[v] = 2n 1, κορυφή v που δεν µπορεί να προσπελάσει την t στο G(f) πρίν από µία κλήση της συνάρτησης dist[v] < n, κορυφή v που µπορεί να προσπελάσει την t στο G(f) «ανάδροµη» ΑΠΠ στο G (f) Ολες οι ενεργές κορυφές u τοποθετούνται στην U µε τις καινούριες dist[u] U = πριν την κλήση της compute_dist_t, και η U περιέχει όλες τις ενεργές κορυφές που προσπελάζουν την t στο G(f) πριν την κλήση της compute_dist_s «ανάδροµη» ΑΠΠ = η (αναγκαία) ουρά Q περνά σαν παράµετρος (η Q είναι άδεια πριν από κάθε κλήση, και µένει άδεια µετά από κάθε κλήση) 15 / 40

55 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών Συναρτήσεις compute_dist_t και compute_dist_s (αποστάσεις προς t & s) compute_dist_t: dist[v] n, κορυφή v πριν από µία κλήση της συνάρτησης «ανάδροµη» ΑΠΠ στο G(f) compute_dist_s: dist[v] = 2n 1, κορυφή v που δεν µπορεί να προσπελάσει την t στο G(f) πρίν από µία κλήση της συνάρτησης dist[v] < n, κορυφή v που µπορεί να προσπελάσει την t στο G(f) «ανάδροµη» ΑΠΠ στο G (f) Ολες οι ενεργές κορυφές u τοποθετούνται στην U µε τις καινούριες dist[u] U = πριν την κλήση της compute_dist_t, και η U περιέχει όλες τις ενεργές κορυφές που προσπελάζουν την t στο G(f) πριν την κλήση της compute_dist_s «ανάδροµη» ΑΠΠ = η (αναγκαία) ουρά Q περνά σαν παράµετρος (η Q είναι άδεια πριν από κάθε κλήση, και µένει άδεια µετά από κάθε κλήση) compute_dist_t: υπολογισµός count[d] = {v dist[v] = d, 0 d < n} 15 / 40

56 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών template<class NT, class SET> void compute_dist_t(const graph& G, node t, const edge_array<nt>& flow, const edge_array<nt>& cap, const node_array<nt>& excess, node_array<int>& dist, SET& U, b_queue<node>& Q, array<int>& count) { int n = G.number_of_nodes(); Q.append(t); dist[t] = 0; count.init(0); count[0] = 1; while (!Q.empty() ) { node v = Q.pop(); int d = dist[v] + 1; edge e; for(e = G.first_adj_edge(v); e; e = G.adj_succ(e)) { if ( flow[e] == 0 ) continue; node u = target(e); int& du = dist[u]; if ( du >= n ) { du = d; Q.append(u); count[d]++; if ( excess[u] > 0 ) U.insert(u,d); } } for(e = G.first_in_edge(v); e; e = G.in_succ(e)) { if ( cap[e] == flow[e] ) continue; node u = source(e); int& du = dist[u]; if ( du >= n ) { du = d; Q.append(u); count[d]++; if (excess[u] > 0) U.insert(u,d); } } } } 16 / 40

57 Ευρετική Μέθοδος 3 Καθολική Ανανέωση Ετικετών template<class NT, class SET> void compute_dist_s(const graph& G, node s, const edge_array<nt>& flow, const node_array<nt>& excess, node_array<int>& dist, SET& U, b_queue<node>& Q) { int n = G.number_of_nodes(); int max_level = 2*n - 1; Q.append(s); dist[s] = n; while (!Q.empty() ) { node v = Q.pop(); int d = dist[v] + 1; edge e; for(e = G.first_adj_edge(v); e; e = G.adj_succ(e)) { if ( flow[e] == 0 ) continue; node u = target(e); int& du = dist[u]; if ( du == max_level ) { du = d; if (excess[u] > 0) U.insert(u,d); Q.append(u); } } } } 17 / 40

58 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων 18 / 40

59 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Φάση 1 18 / 40

60 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Φάση 1 προώθησε ϱοή µόνο από τις κορυφές v µε d(v) < n 18 / 40

61 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Φάση 1 προώθησε ϱοή µόνο από τις κορυφές v µε d(v) < n τερµάτισε όταν ενεργή κορυφή v µε d(v) < n = µέγιστη προροή, αφού v-t διαδροµή στο G(f) 18 / 40

62 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Φάση 1 προώθησε ϱοή µόνο από τις κορυφές v µε d(v) < n τερµάτισε όταν ενεργή κορυφή v µε d(v) < n = µέγιστη προροή, αφού v-t διαδροµή στο G(f) Φάση 2 18 / 40

63 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Φάση 1 προώθησε ϱοή µόνο από τις κορυφές v µε d(v) < n τερµάτισε όταν ενεργή κορυφή v µε d(v) < n = µέγιστη προροή, αφού v-t διαδροµή στο G(f) Φάση 2 προώθησε ϱοή µόνο από τις κορυφές v µε d(v) n 18 / 40

64 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Φάση 1 προώθησε ϱοή µόνο από τις κορυφές v µε d(v) < n τερµάτισε όταν ενεργή κορυφή v µε d(v) < n = µέγιστη προροή, αφού v-t διαδροµή στο G(f) Φάση 2 προώθησε ϱοή µόνο από τις κορυφές v µε d(v) n τερµάτισε όταν καµία ενεργή κορυφή 18 / 40

65 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων // MF_GRH: initialization // initialize flow and excess and saturate edges out of s, as in MF_BASIC // MF_GRH: additional data structures b_queue<node> Q(n); int phase_number = 1; array<int> count(n); list<node> S; int heuristic = (int) (h*m); int limit_heur = heuristic; // MF_GRH: initialize dist and U for first phase node_array<int> dist(g); dist.init(g,n); compute_dist_t(g,t,flow,cap,excess,dist,u,q,count); // MF_GRH: initialize counters num_relabels = num_pushes = num_edge_inspections = 0; num_global_relabels = 0; // MF_GRH: main loop 19 / 40

66 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων // MF_GRH: main loop for(;;) { // MF_GRH: extract v from queue } NT ev = excess[v]; // excess of v int dv = dist[v]; // level of v int dmin = MAXINT; edge e; if ( dist[v] < n ) { // push across edges out of v } if ( ev > 0 ) { // push across edges into v } excess[v] = ev; if (ev > 0) { // MF_GRH: update distance label(s) } 20 / 40

67 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Πώς επιλέγουµε κορυφές από την U; // MF_GRH: extract v from queue node v = U.del(); if (v == nil) { if ( phase_number == 2 ) break; // done dist.init(g,n); compute_dist_t(g,t,flow,cap,excess,dist,u,q,count); node u; forall_nodes(u,g) { if (dist[u] == n) { S.append(u); // S collects all nodes that cannot reach t dist[u] = max_level; } } phase_number = 2; compute_dist_s(g,s,flow,excess,dist,u,q); continue; } if (v == t) continue; 21 / 40

68 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Πώς ενηµερώνουµε τις ετικέτες αποστάσεων ; 22 / 40

69 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Πώς ενηµερώνουµε τις ετικέτες αποστάσεων ; Ακέραιες µεταβλητές limit_heur και heuristic 22 / 40

70 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Πώς ενηµερώνουµε τις ετικέτες αποστάσεων ; Ακέραιες µεταβλητές limit_heur και heuristic Αρχικοποίησε την heuristic σε h m, αύξησε την limit_heur κατά heuristic οποτεδήποτε εφαρµόζεται η ΚΑΕ, και εφάρµοσε την ΚΑΕ όποτε ο αριθµός επιθεωρήσεων των ακµών υπερβαίνει το limit_heur 22 / 40

71 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Πώς ενηµερώνουµε τις ετικέτες αποστάσεων ; Ακέραιες µεταβλητές limit_heur και heuristic Αρχικοποίησε την heuristic σε h m, αύξησε την limit_heur κατά heuristic οποτεδήποτε εφαρµόζεται η ΚΑΕ, και εφάρµοσε την ΚΑΕ όποτε ο αριθµός επιθεωρήσεων των ακµών υπερβαίνει το limit_heur // MF_GRH: update distance label(s) if (num_edge_inspections <= limit_heur) { // MF_GRH: update the distance label of v } else { limit_heur += heuristic; num_global_relabels++; // MF_GRH: global relabel } 22 / 40

72 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων 23 / 40

73 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Αν phase = 1 και dmin n, τότε dist[v] = n και δεν εισάγεται η v στην U, αφού η v δεν µπορεί να προσπελάσει πλέον την t στο G(f) 23 / 40

74 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Αν phase = 1 και dmin n, τότε dist[v] = n και δεν εισάγεται η v στην U, αφού η v δεν µπορεί να προσπελάσει πλέον την t στο G(f) // MF_GRH: update the distance label of v dmin++; num_relabels++; if ( phase_number == 1 && dmin >= n) dist[v] = n; else { dist[v] = dmin; U.insert(v,dmin); } 23 / 40

75 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Καθολική Ανανέωση Ετικετών 24 / 40

76 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Καθολική Ανανέωση Ετικετών Φάση 1: v, υπολογισµός της v-t απόστασης στο G(f) κορυφές που δεν µπορούν να προσπελάσουν την t λαµβάνουν απόσταση n 24 / 40

77 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Καθολική Ανανέωση Ετικετών Φάση 1: v, υπολογισµός της v-t απόστασης στο G(f) κορυφές που δεν µπορούν να προσπελάσουν την t λαµβάνουν απόσταση n Αν ενεργή κορυφή που να προσπελάζει την t, η Φάση 1 τελειώνει το S περιέχει όλες τις κορυφές που δεν µπορούν να προσπελάσουν την t 24 / 40

78 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων Καθολική Ανανέωση Ετικετών Φάση 1: v, υπολογισµός της v-t απόστασης στο G(f) κορυφές που δεν µπορούν να προσπελάσουν την t λαµβάνουν απόσταση n Αν ενεργή κορυφή που να προσπελάζει την t, η Φάση 1 τελειώνει το S περιέχει όλες τις κορυφές που δεν µπορούν να προσπελάσουν την t Φάση 2: (επανα)υπολόγισε την απόσταση v-s, v S οι κορυφές στο V S προσπελαύνουν την t στο G(f) και άρα είναι άνευ σηµασίας για τη Φάση 2 24 / 40

79 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων // MF_GRH: global relabel U.clear(); if (phase_number == 1) { dist.init(g,n); compute_dist_t(g,t,flow,cap,excess,dist,u,q,count); if ( U.empty() ) { node u; forall_nodes(u,g) { if (dist[u] == n) { S.append(u); dist[u] = max_level; } } phase_number = 2; compute_dist_s(g,s,flow,excess,dist,u,q); } } else { node u; forall(u,s) dist[u] = max_level; compute_dist_s(g,s,flow,excess,dist,u,q); } 25 / 40

80 Ευρετική Μέθοδος 4 Καθολική Ανανέωση Ετικετών: µέθοδος δύο ϕάσεων template<class NT, class SET> NT MAX_FLOW_GRH_T(const graph& G, node s, node t, const edge_array<nt>& cap, edge_array<nt>& flow, SET& U, int& num_pushes, int& num_edge_inspections, int& num_relabels, int& num_global_relabels, float h) { if (s == t) error_handler(1,"maxflow: source == sink"); // MF_GRH: initialization // MF_GRH: main loop #ifdef TEST assert(check_max_flow_t(g,s,t,cap,flow)); #endif } return excess[t]; 26 / 40

81 Ευρετική Μέθοδος 5 - GAP (Χάσµα) 27 / 40

82 Ευρετική Μέθοδος 5 - GAP (Χάσµα) Αν η ανανέωση ετικετών της v (ϕάση 1) αφήνει το επίπεδο κορυφών d(v) κενό, τότε η v (και όλες οι κορυφές που µπορεί να προσπελάσει η v) δεν µπορούν να προσπελάσουν την t στο G(f) 27 / 40

83 Ευρετική Μέθοδος 5 - GAP (Χάσµα) Αν η ανανέωση ετικετών της v (ϕάση 1) αφήνει το επίπεδο κορυφών d(v) κενό, τότε η v (και όλες οι κορυφές που µπορεί να προσπελάσει η v) δεν µπορούν να προσπελάσουν την t στο G(f) Ευρετική Μέθοδος Gap: µετακίνησε την v και όλες τις προσπελάσιµες από την v κορυφές στο επίπεδο n, οποτεδήποτε το επίπεδο της v µείνει κενό κορυφών µετά από µια ανανέωση ετικέτας της v 27 / 40

84 Ευρετική Μέθοδος 5 - GAP (Χάσµα) 28 / 40

85 Ευρετική Μέθοδος 5 - GAP (Χάσµα) ιατήρηση πίνακα count[d], 0 d < n 28 / 40

86 Ευρετική Μέθοδος 5 - GAP (Χάσµα) ιατήρηση πίνακα count[d], 0 d < n Επανυπολογισµός count στην compute_dist_t και ενηµέρωσή του όταν ανανεώνεται η ετικέτα µιας κορυφής 28 / 40

87 Ευρετική Μέθοδος 5 - GAP (Χάσµα) ιατήρηση πίνακα count[d], 0 d < n Επανυπολογισµός count στην compute_dist_t και ενηµέρωσή του όταν ανανεώνεται η ετικέτα µιας κορυφής Οταν µία κορυφή v µετακινείται από ένα επίπεδο d(v) στο επίπεδο dmin, µειώνεται το count[d(v)] και αυξάνεται το count[dmin] (αν d(v) ή dmin είναι µικρότερες του n) 28 / 40

88 Ευρετική Μέθοδος 5 - GAP (Χάσµα) ιατήρηση πίνακα count[d], 0 d < n Επανυπολογισµός count στην compute_dist_t και ενηµέρωσή του όταν ανανεώνεται η ετικέτα µιας κορυφής Οταν µία κορυφή v µετακινείται από ένα επίπεδο d(v) στο επίπεδο dmin, µειώνεται το count[d(v)] και αυξάνεται το count[dmin] (αν d(v) ή dmin είναι µικρότερες του n) Οταν count[d(v)] = 0, µετακίνηση της v και όλων των προσπελάσιµων κορυφών της στο G(f) στο επίπεδο n 28 / 40

89 Ευρετική Μέθοδος 5 - GAP (Χάσµα) ιατήρηση πίνακα count[d], 0 d < n Επανυπολογισµός count στην compute_dist_t και ενηµέρωσή του όταν ανανεώνεται η ετικέτα µιας κορυφής Οταν µία κορυφή v µετακινείται από ένα επίπεδο d(v) στο επίπεδο dmin, µειώνεται το count[d(v)] και αυξάνεται το count[dmin] (αν d(v) ή dmin είναι µικρότερες του n) Οταν count[d(v)] = 0, µετακίνηση της v και όλων των προσπελάσιµων κορυφών της στο G(f) στο επίπεδο n Οι προσπελάσιµες από την v κορυφές στο G(f) υπολογίζονται µε χρήση ΑΠΠ και ανακύκλωση της ουράς Q 28 / 40

90 Ευρετική Μέθοδος 5 - GAP (Χάσµα) // MF_GAP: update the distance label of v num_relabels++; if (phase_number == 1) { if ( --count[dv] == 0 dmin >= n - 1) { // v cannot reach t anymore // move all vertices reachable from v to level n } else { dist[v] = ++dmin; count[dmin]++; U.insert(v,dmin); } } else // phase_number == 2 { dist[v] = ++dmin; U.insert(v,dmin); } 29 / 40

91 Ευρετική Μέθοδος 5 - GAP (Χάσµα) // move all vertices reachable from v to level n dist[v] = n; if ( dmin < n ) { Q.append(v); node w,z; while (!Q.empty() ) { edge e; w = Q.pop(); num_gaps++; forall_out_edges(e,w) { if ( flow[e] < cap[e] && dist[z = G.target(e)] < n) { Q.append(z); count[dist[z]]--; dist[z] = n; } } forall_in_edges(e,w) { if ( flow[e] > 0 && dist[z = G.source(e)] < n) { Q.append(z); count[dist[z]]--; dist[z] = n; } } } } 30 / 40

92 Ευρετική Μέθοδος 5 - GAP (Χάσµα) 31 / 40

93 Ευρετική Μέθοδος 5 - GAP (Χάσµα) Κύριος ϐρόχος: απαιτείται µόνο µία αλλαγή 31 / 40

94 Ευρετική Μέθοδος 5 - GAP (Χάσµα) Κύριος ϐρόχος: απαιτείται µόνο µία αλλαγή Οταν η ευρετική µέθοδος GAP µετακινεί µία κορυφή στο επίπεδο n, δεν την αφαιρεί από το σύνολο των ενεργών κορυφών (παρόλο που ϑα έπρεπε για την Φάση 1) 31 / 40

95 Ευρετική Μέθοδος 5 - GAP (Χάσµα) Κύριος ϐρόχος: απαιτείται µόνο µία αλλαγή Οταν η ευρετική µέθοδος GAP µετακινεί µία κορυφή στο επίπεδο n, δεν την αφαιρεί από το σύνολο των ενεργών κορυφών (παρόλο που ϑα έπρεπε για την Φάση 1) Λύση: όταν µια κορυφή στο επίπεδο n αφαιρείται από το σύνολο των ενεργών κορυφών στη Φάση 1, αγνοούµε την κορυφή και συνεχίζουµε στην επόµενη επανάληψη 31 / 40

96 Ευρετική Μέθοδος 5 - GAP (Χάσµα) // MF_GAP: main loop for(;;) { // MF_GRH: extract v from queue if (dist[v] == n && phase_number == 1) continue; NT ev = excess[v]; // excess of v int dv = dist[v]; // level of v int dmin = MAXINT; edge e; if ( dist[v] < n ) { // push across edges out of v } if ( ev > 0 ) { // push across edges into v } excess[v] = ev; if (ev > 0) // MF_GAP: update distance label(s) { if (num_edge_inspections <= limit_heur) { // MF_GAP: update the distance label of v } else { limit_heur += heuristic; num_global_relabels++; // MF_GRH: global relabel } } } 32 / 40

97 Ευρετική Μέθοδος 5 - GAP (Χάσµα) template<class NT, class SET> NT MAX_FLOW_GAP_T(const graph& G, node s, node t, const edge_array<nt>& cap, edge_array<nt>& flow, SET& U, int& num_pushes, int& num_edge_inspections, int& num_relabels, int& num_global_relabels, int& num_gaps, float h) { if (s == t) error_handler(1,"maxflow: source == sink"); // MF_GRH: initialization num_gaps = 0; // number of nodes moved by the GAP heuristic // MF_GAP: main loop #ifdef TEST assert(check_max_flow_t(g,s,t,cap,flow)); #endif } return excess[t]; 33 / 40

98 Ευρετικές Μέθοδοι Πειραµατική Μελέτη 34 / 40

99 Ευρετικές Μέθοδοι Πειραµατική Μελέτη Σύνολα δεδοµένων: 1 τυχαίο (rand) και 3 συνθετικά (CG1, CG2, AMO) δίκτυα 34 / 40

100 Ευρετικές Μέθοδοι Πειραµατική Μελέτη Σύνολα δεδοµένων: 1 τυχαίο (rand) και 3 συνθετικά (CG1, CG2, AMO) δίκτυα 34 / 40

101 Ευρετικές Μέθοδοι Πειραµατική Μελέτη 35 / 40

102 Ευρετικές Μέθοδοι Πειραµατική Μελέτη ιαφορετικές ευρετικές µέθοδοι vs 3 κανόνες επιλογής: n {1000, 2000} 35 / 40

103 Ευρετικές Μέθοδοι Πειραµατική Μελέτη ιαφορετικές ευρετικές µέθοδοι vs 3 κανόνες επιλογής: n {1000, 2000} 35 / 40

104 Ευρετικές Μέθοδοι Πειραµατική Μελέτη 36 / 40

105 Ευρετικές Μέθοδοι Πειραµατική Μελέτη ΚΑΕ (GRH) και GAP vs 3 κανόνες επιλογής: n = i, i = 0, 1, 2 36 / 40

106 Ευρετικές Μέθοδοι Πειραµατική Μελέτη ΚΑΕ (GRH) και GAP vs 3 κανόνες επιλογής: n = i, i = 0, 1, 2 36 / 40

107 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής 37 / 40

108 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Αριθµητικά σφάλµατα στρογγυλοποίησης (π.χ., αριθµητική κινητής υποδιαστολής) ; 37 / 40

109 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Αριθµητικά σφάλµατα στρογγυλοποίησης (π.χ., αριθµητική κινητής υποδιαστολής) ; 0.27 s 0.32 v t / 40

110 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Αριθµητικά σφάλµατα στρογγυλοποίησης (π.χ., αριθµητική κινητής υποδιαστολής) ; 0.27 s 0.32 v t 0.71 Υπόθεση: αριθµητικό σύστηµα κινητής υποδιαστολής µε 2-ψήφιο δεκαδικό µέρος και στρογγυλοποίηση µε αποκοπή 37 / 40

111 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Αριθµητικά σφάλµατα στρογγυλοποίησης (π.χ., αριθµητική κινητής υποδιαστολής) ; 0.27 s 0.32 v t 0.71 Υπόθεση: αριθµητικό σύστηµα κινητής υποδιαστολής µε 2-ψήφιο δεκαδικό µέρος και στρογγυλοποίηση µε αποκοπή Μετά την αρχικοποίηση: excess(v) = = 1.3 σωστό απαλοιφή ψηφίου στην πράξη 37 / 40

112 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Αριθµητικά σφάλµατα στρογγυλοποίησης (π.χ., αριθµητική κινητής υποδιαστολής) ; 0.27 s 0.32 v t 0.71 Υπόθεση: αριθµητικό σύστηµα κινητής υποδιαστολής µε 2-ψήφιο δεκαδικό µέρος και στρογγυλοποίηση µε αποκοπή Μετά την αρχικοποίηση: excess(v) = = 1.3 σωστό απαλοιφή ψηφίου στην πράξη Αποστολή ροής πίσω στην s: άνω (v, s): = = µεσαία (v, s): = 0.8 κάτω (v, s): = 0.1 το τελευταιο ψηφίο απαλοίφεται όταν τα αθροίσµατα ευθυγραµµίζονται για την πράξη 37 / 40

113 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Αριθµητικά σφάλµατα στρογγυλοποίησης (π.χ., αριθµητική κινητής υποδιαστολής) ; 0.27 s 0.32 v t 0.71 Υπόθεση: αριθµητικό σύστηµα κινητής υποδιαστολής µε 2-ψήφιο δεκαδικό µέρος και στρογγυλοποίηση µε αποκοπή Μετά την αρχικοποίηση: excess(v) = = 1.3 σωστό απαλοιφή ψηφίου στην πράξη Αποστολή ροής πίσω στην s: άνω (v, s): = = µεσαία (v, s): = 0.8 κάτω (v, s): = 0.1 το τελευταιο ψηφίο απαλοίφεται όταν τα αθροίσµατα ευθυγραµµίζονται για την πράξη Πρόβληµα: excess(v) = 0.1, ακµή εξερχόµενη της v = µπορεί να ϑέσει το πρόγραµµα σε ατέρµονα ϐρόχο 37 / 40

114 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής 38 / 40

115 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής D = (s,v) E cap(s, v) χρησιµοποιούµενος αριθµητικός τύπος: double 38 / 40

116 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής D = (s,v) E cap(s, v) χρησιµοποιούµενος αριθµητικός τύπος: double Αν όλες οι χωρητικότητες των ακµών είναι ακέραιες = υπερχείληση όσο D < / 40

117 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής D = (s,v) E cap(s, v) χρησιµοποιούµενος αριθµητικός τύπος: double Αν όλες οι χωρητικότητες των ακµών είναι ακέραιες = υπερχείληση όσο D < 2 53 Αν οι χωρητικότητες των ακµών δεν είναι ακέραιες, τότε cap1[e] = sign(cap[e]) cap[e] S /S, S: µεγαλύτερη δύναµη του δύο έτσι ώστε S < 2 53 /D 38 / 40

118 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής D = (s,v) E cap(s, v) χρησιµοποιούµενος αριθµητικός τύπος: double Αν όλες οι χωρητικότητες των ακµών είναι ακέραιες = υπερχείληση όσο D < 2 53 Αν οι χωρητικότητες των ακµών δεν είναι ακέραιες, τότε cap1[e] = sign(cap[e]) cap[e] S /S, S: µεγαλύτερη δύναµη του δύο έτσι ώστε S < 2 53 /D σφάλµα στρογγυλοποίησης σε σχέση µε τις cap1 απόλυτο σφάλµα στην τιµή της µέγιστης ϱοής m D / 40

119 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής D = (s,v) E cap(s, v) χρησιµοποιούµενος αριθµητικός τύπος: double Αν όλες οι χωρητικότητες των ακµών είναι ακέραιες = υπερχείληση όσο D < 2 53 Αν οι χωρητικότητες των ακµών δεν είναι ακέραιες, τότε cap1[e] = sign(cap[e]) cap[e] S /S, S: µεγαλύτερη δύναµη του δύο έτσι ώστε S < 2 53 /D σφάλµα στρογγυλοποίησης σε σχέση µε τις cap1 απόλυτο σφάλµα στην τιµή της µέγιστης ϱοής m D 2 52 Τι συµβαίνει µε το σχετικό σφάλµα ; 38 / 40

120 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Ενας πιο εκλεπτισµένος τρόπος για να φράξουµε το σχετικό σφάλµα 39 / 40

121 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Ενας πιο εκλεπτισµένος τρόπος για να φράξουµε το σχετικό σφάλµα Αρχισε µε τις cap1 και υπολόγισε µια µέγιστη ϱοή f έστω f opt η µέγιστη ϱοή σε σχέση µε τις cap 39 / 40

122 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Ενας πιο εκλεπτισµένος τρόπος για να φράξουµε το σχετικό σφάλµα Αρχισε µε τις cap1 και υπολόγισε µια µέγιστη ϱοή f έστω f opt η µέγιστη ϱοή σε σχέση µε τις cap f opt f m D / 40

123 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Ενας πιο εκλεπτισµένος τρόπος για να φράξουµε το σχετικό σφάλµα Αρχισε µε τις cap1 και υπολόγισε µια µέγιστη ϱοή f έστω f opt η µέγιστη ϱοή σε σχέση µε τις cap f opt f m D 2 52 Αν m D 2 52 f, τότε το σχετικό σφάλµα fopt f f είναι µικρό 39 / 40

124 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Ενας πιο εκλεπτισµένος τρόπος για να φράξουµε το σχετικό σφάλµα Αρχισε µε τις cap1 και υπολόγισε µια µέγιστη ϱοή f έστω f opt η µέγιστη ϱοή σε σχέση µε τις cap f opt f m D 2 52 Αν m D 2 52 f, τότε το σχετικό σφάλµα fopt f f είναι µικρό Αλλιώς, έστω B = f + m D 2 52 = f opt B 39 / 40

125 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Ενας πιο εκλεπτισµένος τρόπος για να φράξουµε το σχετικό σφάλµα Αρχισε µε τις cap1 και υπολόγισε µια µέγιστη ϱοή f έστω f opt η µέγιστη ϱοή σε σχέση µε τις cap f opt f m D 2 52 Αν m D 2 52 f, τότε το σχετικό σφάλµα fopt f f είναι µικρό Αλλιώς, έστω B = f + m D 2 52 = f opt B Οποιοδήποτε cap[e] > B µπορεί να µειωθεί σε B χωρίς να αλλάξει η µέγιστη ϱοή 39 / 40

126 Ροή ικτύου & Αριθµητική Κινητής Υποδιαστολής Ενας πιο εκλεπτισµένος τρόπος για να φράξουµε το σχετικό σφάλµα Αρχισε µε τις cap1 και υπολόγισε µια µέγιστη ϱοή f έστω f opt η µέγιστη ϱοή σε σχέση µε τις cap f opt f m D 2 52 Αν m D 2 52 f, τότε το σχετικό σφάλµα fopt f f είναι µικρό Αλλιώς, έστω B = f + m D 2 52 = f opt B Οποιοδήποτε cap[e] > B µπορεί να µειωθεί σε B χωρίς να αλλάξει η µέγιστη ϱοή Επαναυπολογισµός των D και S, και επανάληψη της διαδικασίας µέχρι το σχετικό σφάλµα να γίνει µικρό 39 / 40

127 Ερωτήσεις ; 40 / 40

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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

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

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

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

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 7 η : Περιοχές: Εναλλακτική Μέθοδος Ανάλυσης Ροής Δεδομένων Περιοχές (Regions) Σε κάποιες περιπτώσεις βρόχων η ανάλυση ροής δεδομένων με τον επαναληπτικό αλγόριθμο συγκλίνει αργά

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Έλεγχος ροής Δομή επιλογής (if, switch) Δομές επανάληψης (while, do-while, for) Διακλάδωση

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;.. Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

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

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 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 18 Dijkstra s Shortest Path Algorithm 1 / 12 Ο αλγόριθμος εύρεσης της συντομότερης διαδρομής του Dijkstra

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Συνέχεια για το for: ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Nested for-loops (for μέσα σε for): π.χ. int k; for (int i=0; i

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

Υπολογισμός - Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

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

Δομές ελέγχου & επανάληψης

Δομές ελέγχου & επανάληψης 3 Δομές ελέγχου & επανάληψης Τι θα δούμε σε αυτό το μάθημα 1. δομές ελέγχου 1. η δομή if 2. η δομή switch 2. δομές επανάληψης 1. η δομή while 2. η δομή do...while 3. η δομή for 3. break και continue 4.

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

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

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

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

ΑΛΓΟΡΙΘΜΙΚΕΣ ΜΕΘΟΔΟΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ

ΑΛΓΟΡΙΘΜΙΚΕΣ ΜΕΘΟΔΟΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ ΑΛΓΟΡΙΘΜΙΚΕΣ ΜΕΘΟΔΟΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ ΚΟΥΛΙΝΑΣ ΓΕΩΡΓΙΟΣ Δρ. Μηχανικός Παραγωγής & Διοίκησης ΔΠΘ ΑΛΓΟΡΙΘΜΙΚΕΣ ΜΕΘΟΔΟΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ o ΔΙΑΛΕΞΕΙΣ ΜΑΘΗΜΑΤΟΣ ΔΕΥΤΕΡΑ 16.00-19.00 (Εργ. Υπ. Μαθ. Τμ. ΜΠΔ) oτρόπος

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

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Περίληψη Επίλυση προβληµάτων χρησιµοποιώντας Greedy Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης

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

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

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

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

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

Σχεδίαση & Ανάλυση Αλγορίθμων

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 4.2 Διαδρομές σε Γραφήματα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Πρόβλημα Οδικό Δίκτυο

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

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

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

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

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική

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

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 2A Σκελετοί Λύσεων

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 2A Σκελετοί Λύσεων ΕΠΛ 232: λγόριθµοι και Πολυπλοκότητα Κατ οίκον Εργασία 2A Σκελετοί Λύσεων 1. ια τη σαφή διατύπωση του αλγόριθµου απαιτούνται τα εξής: ιατήρηση της ροής που κτίζεται από τον αλγόριθµο. ιατήρηση της περίσσειας

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

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

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 3η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών 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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 5ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 Η ΕΝΤΟΛΗ for Με την εντολή for δημιουργούμε βρόχους επανάληψης σε

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Συλλογές, Στοίβες και Ουρές

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

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

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI 20 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ Με εξαίρεση το 3ο θέμα, στα 2 πρώτα, υποβλήθηκαν περισσότερες από μία βέλτιστες λύσεις (100% σημείων επιτυχίας). Από αυτές τελείως

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y» ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y» Σάββατο, 31 Οκτωβρίου 2015 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 150 ΛΕΠΤΑ ΘΕΜΑ 1.

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

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

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

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

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,

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 5 Δομές Ελέγχου Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Ελέγχου Οι Boehm και Jacopini απέδειξαν ότι οποιοσδήποτε αλγόριθμος

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

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

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

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

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Αυτό-αξιολόγηση 1η: 08/02/2006 1

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

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

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

Διαδικαστικός Προγραμματισμός

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

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

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

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

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

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

Κεφάλαιο : Επαναλήψεις (for, do-while) Κεφάλαιο 5.4-5.11: Επαναλήψεις (for, do-while) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήµερα while(){ τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές Παραδείγµατα Σήµερα for(){ Η εντολές break/continue;

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ: ΣΕΠΤΕΜΒΡΙΟΥ 6 Ι ΑΣΚΩΝ: Ε. ΚΟΦΙ ΗΣ Όλα τα ερωτήµατα είναι ισοδύναµα. Καλή επιτυχία! ΘΕΜΑ ο a) Βρείτε την αναπαράσταση

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες. 58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Μέγιστη Ροή Ελάχιστη Τομή

Μέγιστη Ροή Ελάχιστη Τομή Μέγιστη Ροή Ελάχιστη Τομή Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Δίκτυα και Ροές Δίκτυο : κατευθυνόμενο γράφημα G(V, E). Πηγή,

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Ταξινόμηση Πίνακα Αναζήτηση σε Ταξινομημένο Πίνακα Πρόβλημα Δίνεται πίνακας t από Ν ακεραίους. Ζητούμενο: να ταξινομηθούν τα περιεχόμενα του πίνακα σε αύξουσα αριθμητική

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Dijkstra Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Dijkstra

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

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

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

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Κ Σ Ι Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Παναγιώτα Παναγοπούλου Άσκηση 1. Υποθέστε ότι οι διεργασίες ενός σύγχρονου κατανεμημένου συστήματος έχουν μοναδικές ταυτότητες (UIDs), γνωρίζουν ότι είναι συνδεδεμένες

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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