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

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

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

Transcript

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

2 Ενότητα 8 Μέγιστη Ροή & Αριθµητική Ορθότητα Αλγορίθµων Μέγιστη Ροή Γενικά Ελεγκτής Ορθότητας Αλγόριθµος Προροής-Προώθησης Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Γραφηµάτων & ικτύων 2 / 38

3 Μέγιστη Ροή Γενικά 3 / 38

4 Μέγιστη Ροή Γενικά Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση χωρητικότητας cap : E IR 0 και δύο διακεκριµένες κορυφές s και t 3 / 38

5 Μέγιστη Ροή Γενικά Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση χωρητικότητας cap : E IR 0 και δύο διακεκριµένες κορυφές s και t In(v) = {e : target(e) = v}, Out(v) = {e : source(e) = v}, v V 3 / 38

6 Μέγιστη Ροή Γενικά Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση χωρητικότητας cap : E IR 0 και δύο διακεκριµένες κορυφές s και t In(v) = {e : target(e) = v}, Out(v) = {e : source(e) = v}, v V (s, t)-ϱοή (ή απλά ϱοή): συνάρτηση f : E IR 0 για την οποία: (1) 0 f(e) cap(e) e E (2) excess(v) = f(e) f(e) = 0 v V {s, t} e In(v) e Out(v) 3 / 38

7 Μέγιστη Ροή Γενικά Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση χωρητικότητας cap : E IR 0 και δύο διακεκριµένες κορυφές s και t In(v) = {e : target(e) = v}, Out(v) = {e : source(e) = v}, v V (s, t)-ϱοή (ή απλά ϱοή): συνάρτηση f : E IR 0 για την οποία: (1) 0 f(e) cap(e) e E (2) excess(v) = f(e) f(e) = 0 v V {s, t} e In(v) e Out(v) Τιµή ϱοής f = excess(t) 3 / 38

8 Μέγιστη Ροή Γενικά Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση χωρητικότητας cap : E IR 0 και δύο διακεκριµένες κορυφές s και t In(v) = {e : target(e) = v}, Out(v) = {e : source(e) = v}, v V (s, t)-ϱοή (ή απλά ϱοή): συνάρτηση f : E IR 0 για την οποία: (1) 0 f(e) cap(e) e E (2) excess(v) = f(e) f(e) = 0 v V {s, t} e In(v) e Out(v) Τιµή ϱοής f = excess(t) Μέγιστη Ροή: ϱοή f που µεγιστοποιεί την f 3 / 38

9 Μέγιστη Ροή Γενικά 4 / 38

10 Μέγιστη Ροή Γενικά (s, t)-αποκοπή (ή απλά αποκοπή): σύνολο S κορυφών µε s S και t T = V S Εστω (S, T) = {e : source(e) S, target(e) T} 4 / 38

11 Μέγιστη Ροή Γενικά (s, t)-αποκοπή (ή απλά αποκοπή): σύνολο S κορυφών µε s S και t T = V S Εστω (S, T) = {e : source(e) S, target(e) T} Χωρητικότητα αποκοπής: cap(s) = cap(e) e (S,T) 4 / 38

12 Μέγιστη Ροή Γενικά (s, t)-αποκοπή (ή απλά αποκοπή): σύνολο S κορυφών µε s S και t T = V S Εστω (S, T) = {e : source(e) S, target(e) T} Χωρητικότητα αποκοπής: cap(s) = cap(e) e (S,T) Κορεσµένη αποκοπή : αποκοπή S για την οποία f(e) = cap(e), e (S, T) και f(e) = 0, e (T, S) 4 / 38

13 Μέγιστη Ροή Γενικά (s, t)-αποκοπή (ή απλά αποκοπή): σύνολο S κορυφών µε s S και t T = V S Εστω (S, T) = {e : source(e) S, target(e) T} Χωρητικότητα αποκοπής: cap(s) = cap(e) e (S,T) Κορεσµένη αποκοπή : αποκοπή S για την οποία f(e) = cap(e), e (S, T) και f(e) = 0, e (T, S) Εστω f οποιαδήποτε ϱοή και έστω S οποιαδήποτε αποκοπή. Τότε, f cap(s) 4 / 38

14 Μέγιστη Ροή Γενικά (s, t)-αποκοπή (ή απλά αποκοπή): σύνολο S κορυφών µε s S και t T = V S Εστω (S, T) = {e : source(e) S, target(e) T} Χωρητικότητα αποκοπής: cap(s) = cap(e) e (S,T) Κορεσµένη αποκοπή : αποκοπή S για την οποία f(e) = cap(e), e (S, T) και f(e) = 0, e (T, S) Εστω f οποιαδήποτε ϱοή και έστω S οποιαδήποτε αποκοπή. Τότε, f cap(s) Ελάχιστη αποκοπή: αποκοπή S που ελαχιστοποιεί την cap(s) 4 / 38

15 Μέγιστη Ροή Γενικά 5 / 38

16 Μέγιστη Ροή Γενικά Υπόθεση: e E = e E 5 / 38

17 Μέγιστη Ροή Γενικά Υπόθεση: e E = e E Υπολειπόµενη χωρητικότητα ακµής e = (u, v): r(e) = cap(e) f(e) + f(e ), όπου e = (v, u) 5 / 38

18 Μέγιστη Ροή Γενικά Υπόθεση: e E = e E Υπολειπόµενη χωρητικότητα ακµής e = (u, v): r(e) = cap(e) f(e) + f(e ), όπου e = (v, u) Υπολειπόµενο δίκτυο G f = (V, E f ), όπου E f = {e E : r(e) > 0} 5 / 38

19 Μέγιστη Ροή Γενικά 6 / 38

20 Μέγιστη Ροή Γενικά Υπολειπόµενη χωρητικότητα (u, v): r(u, v) = cap(u, v) f(u, v) + f(v, u) 6 / 38

21 Μέγιστη Ροή Γενικά Υπολειπόµενη χωρητικότητα (u, v): r(u, v) = cap(u, v) f(u, v) + f(v, u) Υπολειπόµενο δίκτυο G f = (V, E f ), όπου E f = {e E : r(e) > 0} v (f(v,w),cap(v,w)) w 2 (0,3) 4 G (1,4) (2,3) s 1 (1,1) (2,2) 6 t (3,3) (2,4) 3 (2,3) 5 v r(v,w) w G(f) s t / 38

22 Μέγιστη Ροή Γενικά 7 / 38

23 Μέγιστη Ροή Γενικά Υπολειπόµενη χωρητικότητα µια συµπληρωµατική εικόνα Εστω e G Αν f(e) < cap(e), τότε e G(f) µε r(e) = cap(e) f(e) Αν f(e) > 0, τότε e G(f) µε r(e ) = f(e) 7 / 38

24 Μέγιστη Ροή Γενικά Υπολειπόµενη χωρητικότητα µια συµπληρωµατική εικόνα Εστω e G Αν f(e) < cap(e), τότε e G(f) µε r(e) = cap(e) f(e) Αν f(e) > 0, τότε e G(f) µε r(e ) = f(e) Εστω f µια ϱοή και έστω S το σύνολο των κορυφών που είναι προσπελάσιµες από την s στο G(f) (α) Αν t S, τότε η f δεν είναι µέγιστη (ϐ) Αν t S, τότε η f είναι µέγιστη και το S αποτελεί µια κορεσµένη αποκοπή 7 / 38

25 Μέγιστη Ροή Γενικά Υπολειπόµενη χωρητικότητα µια συµπληρωµατική εικόνα Εστω e G Αν f(e) < cap(e), τότε e G(f) µε r(e) = cap(e) f(e) Αν f(e) > 0, τότε e G(f) µε r(e ) = f(e) Εστω f µια ϱοή και έστω S το σύνολο των κορυφών που είναι προσπελάσιµες από την s στο G(f) (α) Αν t S, τότε η f δεν είναι µέγιστη (ϐ) Αν t S, τότε η f είναι µέγιστη και το S αποτελεί µια κορεσµένη αποκοπή Θεώρηµα Μέγιστης-Ροής Ελάχιστης-Αποκοπής: Η τιµή της µέγιστης ϱοής ισούται µε την χωρητικότητα της ελάχιστης αποκοπής 7 / 38

26 Μέγιστη Ροή Ελεγκτής Ορθότητας 8 / 38

27 Μέγιστη Ροή Ελεγκτής Ορθότητας bool CHECK_MAX_FLOW_T(const graph& G, node s, node t const edge_array<nt>& cap, const edge_array<nt>& f) ελέγχει αν η f είναι µια µέγιστη (s, t)-ϱοή και επιστρέφει true αν όντως είναι, αλλιώς false 8 / 38

28 Μέγιστη Ροή Ελεγκτής Ορθότητας bool CHECK_MAX_FLOW_T(const graph& G, node s, node t const edge_array<nt>& cap, const edge_array<nt>& f) ελέγχει αν η f είναι µια µέγιστη (s, t)-ϱοή και επιστρέφει true αν όντως είναι, αλλιώς false Ιδέα ελεγκτή: Ελεγχος της συνθήκης χωρητικότητας κάθε ακµής Υπολογισµός πλεονάσµατος (excess) κάθε κορυφής: όλες οι κορυφές, εκτός από τις s και t, πρέπει να έχουν πλεόνασµα µηδέν Υπολογισµός των προσπελάσιµων από την s κορυφών στο G(f) µε χρήση ΑΠΠ: η t δεν πρέπει να είναι προσπελάσιµη 8 / 38

29 Μέγιστη Ροή Ελεγκτής Ορθότητας template <class NT> bool CHECK_MAX_FLOW_T(const graph& G, node s, node t, const edge_array<nt>& cap, const edge_array<nt>& f) { node v; edge e; string loc = "CHECK_MAX_FLOW_T: "; bool res = true; forall_edges(e,g) res = res && leda_assert(f[e] >= 0 && f[e] <= cap[e], loc + "illegal flow value"); node_array<nt> excess(g,0); forall_edges(e,g) { node v = G.source(e); node w = G.target(e); excess[v] -= f[e]; excess[w] += f[e]; } forall_nodes(v,g) res = res && leda_assert(v == s v == t excess[v] == 0,loc + "node with non-zero excess"); // Compute nodes reachable from s using BFS } 9 / 38

30 Μέγιστη Ροή Ελεγκτής Ορθότητας // Compute nodes reachable from s using BFS node_array<bool> reached(g,false); queue<node> Q; Q.append(s); reached[s] = true; while (!Q.empty() ) { node v = Q.pop(); forall_out_edges(e,v) { node w = G.target(e); if ( f[e] < cap[e] &&!reached[w] ) { reached[w] = true; Q.append(w); } } forall_in_edges(e,v) { node w = G.source(e); if ( f[e] > 0 &&!reached[w] ) { reached[w] = true; Q.append(w); } } } res = res && leda_assert(!reached[t], "t is reachable in G_f"); return res; 10 / 38

31 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης 11 / 38

32 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Προροή : συνάρτηση f : E IR 0 για την οποία: (1) 0 f(e) cap(e) e E (2) excess(v) 0 v V + = V {s, t} 11 / 38

33 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Προροή : συνάρτηση f : E IR 0 για την οποία: (1) 0 f(e) cap(e) e E (2) excess(v) 0 v V + = V {s, t} Ενεργή κορυφή : v V + και excess(v) > 0 11 / 38

34 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Προροή : συνάρτηση f : E IR 0 για την οποία: (1) 0 f(e) cap(e) e E (2) excess(v) 0 v V + = V {s, t} Ενεργή κορυφή : v V + και excess(v) > 0 Προώθηση : έστω v ενεργή κορυφή, e = (v, w) G(f), και δ min{excess(v), r(e)} Προώθηση δ µονάδων ϱοής κατά µήκος της e = { αυξάνει την f(e) κατά δ, αν e E µειώνει την f(e ) κατά δ, αν e E 11 / 38

35 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Προροή : συνάρτηση f : E IR 0 για την οποία: (1) 0 f(e) cap(e) e E (2) excess(v) 0 v V + = V {s, t} Ενεργή κορυφή : v V + και excess(v) > 0 Προώθηση : έστω v ενεργή κορυφή, e = (v, w) G(f), και δ min{excess(v), r(e)} Προώθηση δ µονάδων ϱοής κατά µήκος της e = { αυξάνει την f(e) κατά δ, αν e E µειώνει την f(e ) κατά δ, αν e E Αν δ = r(e), τότε η προώθηση καλείται κορεσµένη 11 / 38

36 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης v (1,3) w v 2 w G 1 G(f) push v w push w v v (2,3) w v (0,3) w G G Προώθηση 1 µονάδας ϱοής κατά µήκος της (v, w) (ή της (w, v)) 12 / 38

37 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης 13 / 38

38 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Ποιες προωθήσεις πρέπει να εκτελεστούν ; 13 / 38

39 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Ποιες προωθήσεις πρέπει να εκτελεστούν ; Τοποθέτηση των κορυφών σε επίπεδα µε την t στο χαµηλότερο επίπεδο και εκτέλεση προωθήσεων που µεταφέρουν πλεόνασµα από υψηλότερο σε χαµηλότερο επίπεδο 13 / 38

40 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης 14 / 38

41 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης d(v): επίπεδο κορυφής v 14 / 38

42 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης d(v): επίπεδο κορυφής v Η ακµή e = (v, w) G(f) καλείται κατάλληλη αν d(w) < d(v) 14 / 38

43 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης d(v): επίπεδο κορυφής v Η ακµή e = (v, w) G(f) καλείται κατάλληλη αν d(w) < d(v) Προώθηση κατά µήκος της e = (v, w) G(f) εκτελείται αν η v είναι ενεργή και η e κατάλληλη 14 / 38

44 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης 15 / 38

45 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Τι γίνεται όµως αν κάποια κορυφή v είναι ενεργή και κατάλληλη ακµή προσκείµενη στην v; 15 / 38

46 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Τι γίνεται όµως αν κάποια κορυφή v είναι ενεργή και κατάλληλη ακµή προσκείµενη στην v; Η v ανεβαίνει επίπεδο, δηλ. το d(v) αυξάνεται κατά 1 15 / 38

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

48 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης 17 / 38

49 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Μη κορεσµένες προωθήσεις µπορεί να δηµιουργήσουν πρόβληµα 17 / 38

50 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Μη κορεσµένες προωθήσεις µπορεί να δηµιουργήσουν πρόβληµα Κανόνας 1 µέγιστη προώθηση: προώθηση δ= min{excess(v), r(e)} Κάθε µη-κορεσµένη προώθηση µιας ακµής (v, w) αφήνει την v ανενεργή 17 / 38

51 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Μη κορεσµένες προωθήσεις µπορεί να δηµιουργήσουν πρόβληµα Κανόνας 1 µέγιστη προώθηση: προώθηση δ= min{excess(v), r(e)} Κάθε µη-κορεσµένη προώθηση µιας ακµής (v, w) αφήνει την v ανενεργή Κανόνας 2 επιµονή: Οταν επιλέγεται µια ενεργή κορυφή v, εκτελούνται προωθήσεις από την v µέχρις ότου είτε η v γίνει ανενεργή είτε δεν υπάρχουν προσκείµενες κατάλληλες ακµές, οπότε πρέπει να αυξηθεί το d(v) 17 / 38

52 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Μη κορεσµένες προωθήσεις µπορεί να δηµιουργήσουν πρόβληµα Κανόνας 1 µέγιστη προώθηση: προώθηση δ= min{excess(v), r(e)} Κάθε µη-κορεσµένη προώθηση µιας ακµής (v, w) αφήνει την v ανενεργή Κανόνας 2 επιµονή: Οταν επιλέγεται µια ενεργή κορυφή v, εκτελούνται προωθήσεις από την v µέχρις ότου είτε η v γίνει ανενεργή είτε δεν υπάρχουν προσκείµενες κατάλληλες ακµές, οπότε πρέπει να αυξηθεί το d(v) Πώς επιλέγονται οι ενεργές κορυφές ; 17 / 38

53 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Επιλογή ενεργών κορυφών 18 / 38

54 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Επιλογή ενεργών κορυφών Αυθαίρετη αριθµός µη-κορεσµένων προωθήσεων O(n 2 m) 18 / 38

55 Μέγιστη Ροή Αλγόριθµος Προροής-Προώθησης Επιλογή ενεργών κορυφών Αυθαίρετη αριθµός µη-κορεσµένων προωθήσεων O(n 2 m) FIFO αριθµός µη-κορεσµένων προωθήσεων O(n 3 ) 18 / 38

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

57 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης 19 / 38

58 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης δύο παράµετροι αρχετύπων: ο αριθµητικός τύπος NT και η υλοποίηση του συνόλου των ενεργών κορυφών U 19 / 38

59 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης δύο παράµετροι αρχετύπων: ο αριθµητικός τύπος NT και η υλοποίηση του συνόλου των ενεργών κορυφών U // max_flow_basic template<class NT, class SET> NT MAX_FLOW_BASIC_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) { if (s == t) error_handler(1,"maxflow: source == sink"); // MF_BASIC: initialization // MF_BASIC: main loop #ifndef LEDA_CHECKING_OFF assert(check_max_flow_t(g,s,t,cap,flow)); #endif return excess[t]; } 19 / 38

60 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Αρχικοποίηση & και οµές εδοµένων // MF_BASIC: initialization // initialize flow and excess, and saturate edges out of s flow.init(g,0); if (G.outdeg(s) == 0) return 0; int n = G.number_of_nodes(); int max_level = 2*n - 1; int m = G.number_of_edges(); node_array<nt> excess(g,0); // saturate all edges leaving s edge e; forall_out_edges(e,s) { NT c = cap[e]; if (c == 0) continue; node v = target(e); flow[e] = c; excess[s] -= c; excess[v] += c; } 20 / 38

61 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Αρχικοποίηση & και οµές εδοµένων // MF_BASIC: initialize dist and U node_array<int> dist(g,0); dist[s] = n; node v; forall_nodes(v,g) if ( excess[v] > 0 ) U.insert(v,dist[v]); // MF_BASIC: initialize counters num_relabels = num_pushes = num_edge_inspections = 0; 21 / 38

62 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση του Συνόλου U των Ενεργών Κορυφών Λειτουργίες node U.del(): U.insert(node v, int d): U.insert0(node v, int d): bool U.empty(): U.clear(): Συναρτήσεις κατασκευής και κατάργησης διαγραφή κορυφής από το U και επιστροφή της (επιστρέφει nil αν το U είναι κενό) εισάγει την v µε επίπεδο d. Αυτή η εκδοχή χρησιµοποιείται στην ϕάση της αρχικοποίησης και όταν µια κορυφή επανεισάγεται στο U µετά από αύξηση του επιπέδου της εισάγει την v µε επίπεδο d. Αυτή η εκδοχή χρησιµοποιείται όταν µια κορυφή γίνεται ενεργή από µια ώθηση προς αυτή την κορυφή επιστρέφει true όταν το U είναι κενό διαγράφει όλα τα στοιχεία του U 22 / 38

63 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση FIFO διατηρεί το U σαν ουρά // FIFO implementation of SET #include <LEDA/list.h> class fifo_set{ list<node> L; public: fifo_set(){} node del() { if (!L.empty()) return L.pop(); else return nil; } void insert(node v, int d) { L.append(v); } void insert0(node v, int d) { L.append(v); } bool empty() { return L.empty(); } void clear() { L.clear(); } fifo_set(){} }; 23 / 38

64 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση τροποποιηµένης FIFO (MFIFO) διατηρεί το U σαν λίστα Πάντοτε επιλέγει την πρώτη κορυφή της λίστας. Κορυφές που επανεισάγονται µετά από αύξηση επιπέδου τοποθετούνται στην αρχή της λίστας, ενώ οι κορυφές που γίνονται ενεργές λόγω µιας ώθησης τοποθετούνται στο τέλος της λίστας // MFIFO implementation of SET #include <LEDA/list.h> class mfifo_set{ list<node> L; public: mfifo_set(){} node del() { if (!L.empty() ) return L.pop(); else return nil; } void insert(node v, int d) { L.push(v); } void insert0(node v, int d){ L.append(v); } bool empty() { return L.empty(); } void clear() { L.clear(); } mfifo_set(){} }; 24 / 38

65 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση Υψηλότερου Επιπέδου 25 / 38

66 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση Υψηλότερου Επιπέδου ιατηρεί ένα διάνυσµα A γραµµικών λιστών µε αριθµοδείκτες στο διάστηµα [0..max_level], όπου max_level είναι µια παράµετρος της συνάρτησης κατασκευής 25 / 38

67 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση Υψηλότερου Επιπέδου ιατηρεί ένα διάνυσµα A γραµµικών λιστών µε αριθµοδείκτες στο διάστηµα [0..max_level], όπου max_level είναι µια παράµετρος της συνάρτησης κατασκευής Η λίστα A[d] περιέχει όλες τις κορυφές v που εισήχθηκαν από insert(v,d) ή από insert0(v,d) 25 / 38

68 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση Υψηλότερου Επιπέδου ιατηρεί ένα διάνυσµα A γραµµικών λιστών µε αριθµοδείκτες στο διάστηµα [0..max_level], όπου max_level είναι µια παράµετρος της συνάρτησης κατασκευής Η λίστα A[d] περιέχει όλες τις κορυφές v που εισήχθηκαν από insert(v,d) ή από insert0(v,d) ιατηρείται µια µεταβλητή max, έτσι ώστε η A[d] να είναι κενή αν d > max 25 / 38

69 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Υλοποίηση Υψηλότερου Επιπέδου ιατηρεί ένα διάνυσµα A γραµµικών λιστών µε αριθµοδείκτες στο διάστηµα [0..max_level], όπου max_level είναι µια παράµετρος της συνάρτησης κατασκευής Η λίστα A[d] περιέχει όλες τις κορυφές v που εισήχθηκαν από insert(v,d) ή από insert0(v,d) ιατηρείται µια µεταβλητή max, έτσι ώστε η A[d] να είναι κενή αν d > max Στην insert0 λαµβάνεται υπόψη το γεγονός ότι η εισαγωγή κορυφών αφορά επίπεδα µικρότερα του max_level 25 / 38

70 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης // Highest level implementation of SET #include <LEDA/list.h> #include <LEDA/array.h> class hl_set{ int max, max_lev; array<list<node> > A; public: hl_set(int max_level):a(max_level+1) { max = -1; max_lev = max_level;} node del() { while (max >= 0 && A[max].empty()) max--; if (max >= 0) return A[max].pop(); else return nil; } void insert(node v, int d) { A[d].push(v); if (d > max) max = d; } 26 / 38

71 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης void insert0(node v, int d) { A[d].append(v); } bool empty() { while (max >= 0 && A[max].empty()) max--; return ( max < 0 ); } hl_set(){} void clear() { for (int i = 0; i <= max_lev; i++) A[i].clear(); max = -1; } }; 27 / 38

72 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Κύριος Βρόχος 28 / 38

73 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Κύριος Βρόχος Επιλέγεται µια κορυφή v από το U Αν v, τότε η εκτέλεση του ϐρόχου σταµατάει Αν η v είναι ταυτόσηµη της t, τότε η εκτέλεση του ϐρόχου προχωρά στην επόµενη επανάληψη 28 / 38

74 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Κύριος Βρόχος Επιλέγεται µια κορυφή v από το U Αν v, τότε η εκτέλεση του ϐρόχου σταµατάει Αν η v είναι ταυτόσηµη της t, τότε η εκτέλεση του ϐρόχου προχωρά στην επόµενη επανάληψη Προσπάθεια προώθησης του πλεονάσµατος της v στις γειτονικές κορυφές της στο G f Εξέταση των ακµών του G f που αντιστοιχούν σε εξερχόµενες ακµές της v στο G Εξέταση των ακµών του G f που αντιστοιχούν σε εισερχόµενες ακµές της v στο G 28 / 38

75 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Κύριος Βρόχος Επιλέγεται µια κορυφή v από το U Αν v, τότε η εκτέλεση του ϐρόχου σταµατάει Αν η v είναι ταυτόσηµη της t, τότε η εκτέλεση του ϐρόχου προχωρά στην επόµενη επανάληψη Προσπάθεια προώθησης του πλεονάσµατος της v στις γειτονικές κορυφές της στο G f Εξέταση των ακµών του G f που αντιστοιχούν σε εξερχόµενες ακµές της v στο G Εξέταση των ακµών του G f που αντιστοιχούν σε εισερχόµενες ακµές της v στο G Αν η v παραµένει ενεργή µετά τον κορεσµό όλων των γειτονικών ακµών της, τότε της αυξάνουµε το επίπεδο και την εισάγουµε ξανά στο U 28 / 38

76 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης // MF_BASIC: 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; // 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]); } } 29 / 38

77 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Προώθηση πλεονάσµατος µέσω εξερχόµενων ακµών 30 / 38

78 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Προώθηση πλεονάσµατος µέσω εξερχόµενων ακµών Προώθηση πλεονάσµατος µέσω κατάλληλων ακµών. Μια ακµή e G(f) είναι είτε και ακµή του G, οπότε flow[e] < cap[e] είτε είναι η αντίθετη µιας ακµής του G, οπότε flow[e ] > 0 Εξέταση όλων των εξερχόµενων και εισερχόµενων ακµών της v 30 / 38

79 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης Προώθηση πλεονάσµατος µέσω εξερχόµενων ακµών Προώθηση πλεονάσµατος µέσω κατάλληλων ακµών. Μια ακµή e G(f) είναι είτε και ακµή του G, οπότε flow[e] < cap[e] είτε είναι η αντίθετη µιας ακµής του G, οπότε flow[e ] > 0 Εξέταση όλων των εξερχόµενων και εισερχόµενων ακµών της v Για κάθε εξερχόµενη ακµή e µιας κορυφής v, προωθούµε min{excess[v], cap[e] flow[e]} Αν το πλεόνασµα της v γίνει µηδέν, τότε ο ϐρόχος for τερµατίζει 30 / 38

80 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης // MF_BASIC: 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; } } } 31 / 38

81 Μέγιστη Ροή Υλοποίηση Αλγορίθµου Προροής-Προώθησης // MF_BASIC: 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; } } } 32 / 38

82 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων 33 / 38

83 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Οι αποδείξεις ορθότητας των αλγορίθµων ϐασίζονται στους κανόνες της αριθµητικής 33 / 38

84 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Οι αποδείξεις ορθότητας των αλγορίθµων ϐασίζονται στους κανόνες της αριθµητικής Η ορθότητα των υλοποιηµένων αλγορίθµων εξακολουθεί να ισχύει αν η υλοποίηση των αριθµητικών τύπων σέβεται τους κανόνες της αριθµητικής 33 / 38

85 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Οι αποδείξεις ορθότητας των αλγορίθµων ϐασίζονται στους κανόνες της αριθµητικής Η ορθότητα των υλοποιηµένων αλγορίθµων εξακολουθεί να ισχύει αν η υλοποίηση των αριθµητικών τύπων σέβεται τους κανόνες της αριθµητικής Οµως,... αριθµητική µε τύπους int µπορεί να προκαλέσει υπερχείλιση, ή περίεργα αποτελέσµατα λόγω αναδίπλωσης αριθµητική µε τύπους double µπορεί να προκαλέσει σφάλµατα στρογγυλοποίησης 33 / 38

86 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πώς εξασφαλίζουµε ορθότητα ; 34 / 38

87 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πώς εξασφαλίζουµε ορθότητα ; 1 Αναλύουµε τις αριθµητικές απαιτήσεις του αλγορίθµου Στόχος: εύρεση µιας τιµής f, για την οποία ισχύει το εξής: Αν η µέγιστη απόλυτη ακέραια τιµή εισόδου ϕράσσεται από την C, τότε όλοι οι αριθµοί που χρησιµοποιούνται από τον αλγόριθµο είναι ακέραιοι και ϕράσσονται από την ποσότητα f C = f-ϕραγµένος αλγόριθµος Π.χ. για αλγόριθµους συντοµότερων διαδροµών f = n, ενώ για αλγόριθµους ϱοών f = out-degree(s) 34 / 38

88 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πώς εξασφαλίζουµε ορθότητα ; 35 / 38

89 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πώς εξασφαλίζουµε ορθότητα ; 2 Τύπος int: ελέγχουµε αν όλες οι τιµές w της εισόδου ικανοποιούν f w MAXINT 35 / 38

90 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πώς εξασφαλίζουµε ορθότητα ; 2 Τύπος int: ελέγχουµε αν όλες οι τιµές w της εισόδου ικανοποιούν f w MAXINT 2 Τύπος double: µετασχηµατίζουµε κατάλληλα τις αριθµητικές τιµές εισόδου w sign(w) w S /S όπου S = 2 s είναι η παράµετρος κλιµάκωσης (κατάλληλη δύναµη του 2) 35 / 38

91 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πώς εξασφαλίζουµε ορθότητα ; 2 Τύπος int: ελέγχουµε αν όλες οι τιµές w της εισόδου ικανοποιούν f w MAXINT 2 Τύπος double: µετασχηµατίζουµε κατάλληλα τις αριθµητικές τιµές εισόδου w sign(w) w S /S όπου S = 2 s είναι η παράµετρος κλιµάκωσης (κατάλληλη δύναµη του 2) Η αριθµητική κινητής υποδιαστολής δεν ϑα δηµιουργεί σφάλµατα στρογγυλοποίησης όταν τα ενδιάµεσα αποτελέσµατα είναι της µορφής z 2 s, όπου z είναι ακέραιος 35 / 38

92 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πως επιλέγεται η τιµή του s ; 36 / 38

93 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πως επιλέγεται η τιµή του s ; Εστω C η µεγαλύτερη απόλυτη τιµή εισόδου 36 / 38

94 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πως επιλέγεται η τιµή του s ; Εστω C η µεγαλύτερη απόλυτη τιµή εισόδου Το ϐήµα 1 πρέπει να ισχύει και για τις µετασχηµατισµένες ακέραιες τιµές sign(w) w S Αρα, για έναν f-ϕραγµένο αλγόριθµο f C S < 2 53 αφού η αριθµητική κινητής υποδιαστολής για τύπο double µπορεί να αναπαραστήσει όλους τους ακεραίους στο διάστηµα [ (2 53 1) ] 36 / 38

95 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Πως επιλέγεται η τιµή του s ; Εστω C η µεγαλύτερη απόλυτη τιµή εισόδου Το ϐήµα 1 πρέπει να ισχύει και για τις µετασχηµατισµένες ακέραιες τιµές sign(w) w S Αρα, για έναν f-ϕραγµένο αλγόριθµο f C S < 2 53 αφού η αριθµητική κινητής υποδιαστολής για τύπο double µπορεί να αναπαραστήσει όλους τους ακεραίους στο διάστηµα [ (2 53 1) ] Η παραπάνω ανισότητα ικανοποιείται αν f C S < 2 53 s < 53 log(f C) 36 / 38

96 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Ποια είναι η σχέση µεταξύ του αποτελέσµατος µε µετασχηµατισµένες τιµές και εκείνου µε τις αυθεντικές τιµές εισόδου ; 37 / 38

97 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Ποια είναι η σχέση µεταξύ του αποτελέσµατος µε µετασχηµατισµένες τιµές και εκείνου µε τις αυθεντικές τιµές εισόδου ; γενικός κανόνας συνήθως το αποτέλεσµα µε µετασχηµατισµένες τιµές είναι µια καλή προσέγγιση του πραγµατικού αποτελέσµατος 37 / 38

98 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Ποια είναι η σχέση µεταξύ του αποτελέσµατος µε µετασχηµατισµένες τιµές και εκείνου µε τις αυθεντικές τιµές εισόδου ; γενικός κανόνας συνήθως το αποτέλεσµα µε µετασχηµατισµένες τιµές είναι µια καλή προσέγγιση του πραγµατικού αποτελέσµατος Εστω ότι το αποτέλεσµα είναι το άθροισµα L τιµών Η διαφορά της πραγµατικής τιµή w από την µετασχηµατισµένη w είναι w w = w w S /S = (w S w S )/S 1/S Εποµένως, το άθροισµα L µετασχηµατισµένων τιµών διαφέρει από το άθροισµα L πραγµατικών τιµών το πολύ κατά L/S 37 / 38

99 Αριθµητικοί Τύποι και Ορθότητα Αλγορίθµων Ποια είναι η σχέση µεταξύ του αποτελέσµατος µε µετασχηµατισµένες τιµές και εκείνου µε τις αυθεντικές τιµές εισόδου ; γενικός κανόνας συνήθως το αποτέλεσµα µε µετασχηµατισµένες τιµές είναι µια καλή προσέγγιση του πραγµατικού αποτελέσµατος Εστω ότι το αποτέλεσµα είναι το άθροισµα L τιµών Η διαφορά της πραγµατικής τιµή w από την µετασχηµατισµένη w είναι w w = w w S /S = (w S w S )/S 1/S Εποµένως, το άθροισµα L µετασχηµατισµένων τιµών διαφέρει από το άθροισµα L πραγµατικών τιµών το πολύ κατά L/S Αν επιλεγει το S ως η µέγιστη δύναµη του 2 για την οποία S < 2 53 /(f C), τότε S 2 52 /(f C) και άρα που είναι το µέγιστο απόλυτο λάθος L S L f C / 38

100 Ερωτήσεις ; 38 / 38

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα Κεφάλαιο 5.4-5.11: Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήμερα Διάλεξη 9 - Δευτέρα while() τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38 4η Γραπτή Άσκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Άσκηση 7 Φεβρουαρίου 2017 1 / 38 Άσκηση 1 Πρέπει να βρούμε όλες τις καλές προτάσεις φίλων για τον

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

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

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

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

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

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων 1. Συντομότατα μονοπάτια 2. Αλγόριθμος Bellman-Ford 3. Αλγόριθμος Dijkstra 4. Floyd-Warshall Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Single-Source Shortest Path Πρόβλημα:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος

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

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27)

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: ίκτυα ροής και το πρόβληµα της µέγιστης ροής Η µεθοδολογία Ford-Fulkerson Ο αλγόριθµος Edmonds-Karps ΕΠΛ 232

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

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

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

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

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

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

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

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Εκλογή αρχηγού και κατασκευή BFS δένδρου σε σύγχρονο γενικό δίκτυο Παναγιώτα Παναγοπούλου Περίληψη Εκλογή αρχηγού σε γενικά δίκτυα Ορισμός του προβλήματος Ο αλγόριθμος FloodMax

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

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

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

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

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

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

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

Θεωρία και Αλγόριθμοι Γράφων

Θεωρία και Αλγόριθμοι Γράφων ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα # 13: Προβλήματα Ροών σε Δίκτυα Ιωάννης Μανωλόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creaive

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

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

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

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

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

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

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

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

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,

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

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

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

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

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

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

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

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37 4η Γραπτή Άσκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Άσκηση 3/2/2019 1 / 37 Άσκηση 1 Πρέπει να βρούμε όλες τις καλές προτάσεις φίλων για τον i ανάμεσα σε όλους

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

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

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

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

Σημειωματάριο Τετάρτης 29 Νοε. 2017

Σημειωματάριο Τετάρτης 29 Νοε. 2017 Σημειωματάριο Τετάρτης 29 Νοε. 2017 Γραφήματα (γράφοι), η αναπαράστασή τους στον υπολογιστή και μερικά προβλήματα σε αυτά Είδαμε σήμερα λίγα πράγματα για γραφήματα (ή γράφους). Γράφημα είναι, στην απλούστερή

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

Η εντολή 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 Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.

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

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

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

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

Ιδιοκτησία Αντικειµένου

Ιδιοκτησία Αντικειµένου Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

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

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

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

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

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

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

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

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

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Μορφές Εντολών Είδη εντολών Απλές εντολές Εκτελούν κάποια ενέργεια Εντολές ελέγχου Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Εντολές και παραστάσεις Μιαεντολήείναιμιαπαράστασηπου ακολουθείται

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

Ελάχιστα Γεννητορικά ένδρα

Ελάχιστα Γεννητορικά ένδρα λάχιστα Γεννητορικά ένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος του Prim και ο αλγόριθµος του Kruskal για εύρεση λάχιστων Γεννητορικών ένδρων ΠΛ 23 οµές εδοµένων και Αλγόριθµοι

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

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

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

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

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής Διάλεξη 1 Πράξεις Τελεστές Έλεγχος Ροής Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 Αριθμητικοί Τελεστές- Αριθμητικές Πράξεις 2 Internal use only Αριθμητικοί

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

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

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

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

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

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

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

Δυναμικός προγραμματισμός για δέντρα

Δυναμικός προγραμματισμός για δέντρα ΘΕ5 Ιδιότητες Δέντρων και Αναδρομή για Δέντρα Δυναμικός προγραμματισμός για δέντρα Έστω ότι, για k=1,..., m, το γράφημα Γ k = (V k, E k ) είναι δέντρο. Έστω w V 1... V m, z k V k, για k=1,..., m. Συμβολίζουμε

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011 Τελεστής σύντοµης ανάθεσης Τελεστής σύντοµης ανάθεσης (shorthand assignment operator) µεταβλητή = µεταβλητή τελεστής

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

for for for for( . */

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

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

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

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

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα Ονοματεπώνυμο: ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμίας από τις παρακάτω προτάσεις 1-5 και, δίπλα, τη λέξη ΣΩΣΤΟ, αν η πρόταση είναι σωστή, ή τη λέξη ΛΑΘΟΣ,

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2017-2018 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Μη κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Υπογραφήµατα.

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

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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