Τεχνολογίες Υλοποίησης Αλγορίθµων
|
|
- Θεόφιλος Βλαχόπουλος
- 6 χρόνια πριν
- Προβολές:
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 1 Ασκηση 1 [16.03.2016] Παράδοση : Τετάρτη 13.04.2016, 13:00 Η παρούσα άσκηση αφορά στον έλεγχο διµερότητας ενός γραφήµατος. Σκοπός της
Διαβάστε περισσότεραΑλγόριθμοι και Πολυπλοκότητα
Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι 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 Ο τελεστής παράστασης συνθήκης 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
Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 18 Dijkstra s Shortest Path Algorithm 1 / 12 Ο αλγόριθμος εύρεσης της συντομότερης διαδρομής του Dijkstra
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 6
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 6 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΕισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Διαβάστε περισσότεραΜάθημα 21: Ουρές (Queues)
Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.
Διαβάστε περισσότεραΔομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Γραφήματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Γραφήματα Κατευθυνόμενο Γράφημα Ένα κατευθυνόμενο γράφημα G είναι ένα ζευγάρι (V, E) όπου V είναι ένα
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι 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η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα
Διαβάστε περισσότεραΔομές ελέγχου & επανάληψης
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 Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 10
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 10 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων
Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΣχεδίαση & Ανάλυση Αλγορίθμων
Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 4.2 Διαδρομές σε Γραφήματα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Πρόβλημα Οδικό Δίκτυο
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 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 Σκελετοί Λύσεων 1. ια τη σαφή διατύπωση του αλγόριθµου απαιτούνται τα εξής: ιατήρηση της ροής που κτίζεται από τον αλγόριθµο. ιατήρηση της περίσσειας
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους
Εισαγωγή στους Αλγορίθμους Ενότητα 3η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Απλοί Αλγόριθμοι & Δομές Δεδομένων Δύο Απλές
Διαβάστε περισσότεραΑλγόριθμοι 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 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Διαβάστε περισσότεραΔιάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,
Διαβάστε περισσότεραΣυλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI
20 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ Με εξαίρεση το 3ο θέμα, στα 2 πρώτα, υποβλήθηκαν περισσότερες από μία βέλτιστες λύσεις (100% σημείων επιτυχίας). Από αυτές τελείως
Διαβάστε περισσότεραΔιάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 13-1 Περιεχόμενο
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Ενότητα 11η
Εισαγωγή στους Αλγορίθμους Ενότητα 11η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Δυναμικός Προγραμματισμός Σταθμισμένος Χρονοπρογραμματισμός
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Διαβάστε περισσότεραI (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.
I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y» Σάββατο, 31 Οκτωβρίου 2015 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 150 ΛΕΠΤΑ ΘΕΜΑ 1.
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία
Διαβάστε περισσότεραfor for for for( . */
Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται
Διαβάστε περισσότεραΗ βασική συνάρτηση προγράμματος main()
Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες
Διαβάστε περισσότεραΔιάλεξη 05: Αφηρημένοι Τύποι Δεδομένων
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Ενότητα 9η
Εισαγωγή στους Αλγορίθμους Ενότητα 9η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Ελάχιστα Γεννητικά Δένδρα Ελάχιστο Γεννητικό
Διαβάστε περισσότεραΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα
Διαβάστε περισσότεραΠρογραµµατιστικές Τεχνικές
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης
Διαβάστε περισσότερα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. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Ενότητα 5 Δομές Ελέγχου Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Ελέγχου Οι Boehm και Jacopini απέδειξαν ότι οποιοσδήποτε αλγόριθμος
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
- Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται
Διαβάστε περισσότεραΜεταγλωττιστές Βελτιστοποίηση
Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Αυτό-αξιολόγηση 1η: 08/02/2006 1
Διαβάστε περισσότεραΔιάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες
Διαβάστε περισσότεραlab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή
ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε
Διαβάστε περισσότεραΠροηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων
Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 3
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 3 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΜεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή
Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές
Διαβάστε περισσότεραΠεριεχόμενα. Πρόλογος... 17
Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για
Διαβάστε περισσότεραΔιαδικαστικός Προγραμματισμός
Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,
Διαβάστε περισσότεραιαφάνειες παρουσίασης #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 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31
Διαβάστε περισσότεραΕισαγωγή στην Επιστήμη των Υπολογιστών
Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 4 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών
Διαβάστε περισσότεραΠαρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.
Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΕισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος
ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:
Διαβάστε περισσότεραΚεφάλαιο : Επαναλήψεις (for, do-while)
Κεφάλαιο 5.4-5.11: Επαναλήψεις (for, do-while) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήµερα while(){ τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές Παραδείγµατα Σήµερα for(){ Η εντολές break/continue;
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ
ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ: ΣΕΠΤΕΜΒΡΙΟΥ 6 Ι ΑΣΚΩΝ: Ε. ΚΟΦΙ ΗΣ Όλα τα ερωτήµατα είναι ισοδύναµα. Καλή επιτυχία! ΘΕΜΑ ο a) Βρείτε την αναπαράσταση
Διαβάστε περισσότεραΣε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.
58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 6 Μαΐου 2015 1 / 42 Εύρεση Ελάχιστου Μονοπατιού
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης
Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΚλάσεις και αντικείμενα #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
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΜέγιστη Ροή Ελάχιστη Τομή
Μέγιστη Ροή Ελάχιστη Τομή Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Δίκτυα και Ροές Δίκτυο : κατευθυνόμενο γράφημα G(V, E). Πηγή,
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Ταξινόμηση Πίνακα Αναζήτηση σε Ταξινομημένο Πίνακα Πρόβλημα Δίνεται πίνακας t από Ν ακεραίους. Ζητούμενο: να ταξινομηθούν τα περιεχόμενα του πίνακα σε αύξουσα αριθμητική
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011
Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include
Διαβάστε περισσότεραΔιάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Dijkstra Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Dijkstra
Διαβάστε περισσότεραΔομές ελέγχου ροής προγράμματος
Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής
Διαβάστε περισσότεραΕνδεικτικές Λύσεις 1ου Σετ Ασκήσεων
Κ Σ Ι Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Παναγιώτα Παναγοπούλου Άσκηση 1. Υποθέστε ότι οι διεργασίες ενός σύγχρονου κατανεμημένου συστήματος έχουν μοναδικές ταυτότητες (UIDs), γνωρίζουν ότι είναι συνδεδεμένες
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή
Διαβάστε περισσότερα