Τεχνολογίες Υλοποίησης Αλγορίθµων
|
|
- Κλωπᾶς Βαμβακάς
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών Ενότητα 7 1 / 42
2 Ενότητα 7 - Συντοµότερες ιαδροµές ΙΙ Αλγόριθµοι Συντοµότερων ιαδροµών και Υλοποιήσεις Γενικά κόστη ακµών Αλγόριθµος Bellman-Ford Ελεγκτής Ορθότητας Αλγορίθµων Συντοµότερων ιαδροµών Αρχέτυπα για Αλγορίθµους Γραφηµάτων 2 / 42
3 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ 3 / 42
4 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ for all { v V d(v) = ; π(v) = nil; } d(s) = 0; while e = (u, v) E : d(v) > d(u) + c(e) { d(v) = d(u) + c(e); π(v) = e; } 3 / 42
5 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ for all { v V d(v) = ; π(v) = nil; } d(s) = 0; while e = (u, v) E : d(v) > d(u) + c(e) { d(v) = d(u) + c(e); π(v) = e; } Γράφηµα προκατόχων (οριζόµενο από τους δείκτες π): P = {e : e = π(v) E, v V} 3 / 42
6 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 4 / 42
7 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 1 d(s) = 0 ανν π(s) = nil, και d(v) < ανν π(v) nil, για v s 4 / 42
8 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 1 d(s) = 0 ανν π(s) = nil, και d(v) < ανν π(v) nil, για v s 2 Αν π(v) = e = (u, v), τότε d(v) d(u) + c(e) 4 / 42
9 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 1 d(s) = 0 ανν π(s) = nil, και d(v) < ανν π(v) nil, για v s 2 Αν π(v) = e = (u, v), τότε d(v) d(u) + c(e) 3 Αν π(v) nil, τότε η v είτε ϐρίσκεται σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P, είτε είναι προσπελάσιµη από την s στο P. Αν π(s) nil, τότε η s ϐρίσκεται σε έναν κύκλο του P. 4 / 42
10 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 1 d(s) = 0 ανν π(s) = nil, και d(v) < ανν π(v) nil, για v s 2 Αν π(v) = e = (u, v), τότε d(v) d(u) + c(e) 3 Αν π(v) nil, τότε η v είτε ϐρίσκεται σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P, είτε είναι προσπελάσιµη από την s στο P. Αν π(s) nil, τότε η s ϐρίσκεται σε έναν κύκλο του P. 4 Οι κύκλοι στο P έχουν αρνητικό κόστος 4 / 42
11 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 1 d(s) = 0 ανν π(s) = nil, και d(v) < ανν π(v) nil, για v s 2 Αν π(v) = e = (u, v), τότε d(v) d(u) + c(e) 3 Αν π(v) nil, τότε η v είτε ϐρίσκεται σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P, είτε είναι προσπελάσιµη από την s στο P. Αν π(s) nil, τότε η s ϐρίσκεται σε έναν κύκλο του P. 4 Οι κύκλοι στο P έχουν αρνητικό κόστος 5 Αν η v ϐρίσκεται σε έναν κύκλο του P ή είναι προσπελάσιµη από έναν κύκλο στο P, τότε δ(v) = 4 / 42
12 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 1 d(s) = 0 ανν π(s) = nil, και d(v) < ανν π(v) nil, για v s 2 Αν π(v) = e = (u, v), τότε d(v) d(u) + c(e) 3 Αν π(v) nil, τότε η v είτε ϐρίσκεται σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P, είτε είναι προσπελάσιµη από την s στο P. Αν π(s) nil, τότε η s ϐρίσκεται σε έναν κύκλο του P. 4 Οι κύκλοι στο P έχουν αρνητικό κόστος 5 Αν η v ϐρίσκεται σε έναν κύκλο του P ή είναι προσπελάσιµη από έναν κύκλο στο P, τότε δ(v) = 6 Αν v V f και d(v) = δ(v), τότε µια s-v διαδροµή στο P η οποία έχει κόστος δ(v) 4 / 42
13 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Ιδιότητες 1 d(s) = 0 ανν π(s) = nil, και d(v) < ανν π(v) nil, για v s 2 Αν π(v) = e = (u, v), τότε d(v) d(u) + c(e) 3 Αν π(v) nil, τότε η v είτε ϐρίσκεται σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P, είτε είναι προσπελάσιµη από την s στο P. Αν π(s) nil, τότε η s ϐρίσκεται σε έναν κύκλο του P. 4 Οι κύκλοι στο P έχουν αρνητικό κόστος 5 Αν η v ϐρίσκεται σε έναν κύκλο του P ή είναι προσπελάσιµη από έναν κύκλο στο P, τότε δ(v) = 6 Αν v V f και d(v) = δ(v), τότε µια s-v διαδροµή στο P η οποία έχει κόστος δ(v) 7 Αν d(v) = δ(v) v V f, τότε το επαγώµενο από τις κορυφές του V f υπογράφηµα του P είναι ένα Σ 4 / 42
14 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Προβλήµατα 5 / 42
15 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Προβλήµατα ΠΧΠ εκθετική (ακόµη και σε απουσία αρνητικών κύκλων) 5 / 42
16 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Προβλήµατα ΠΧΠ εκθετική (ακόµη και σε απουσία αρνητικών κύκλων) Ο αλγόριθµος δεν τερµατίζει όταν αρνητικοί κύκλοι 5 / 42
17 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος 6 / 42
18 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος ιατήρηση ενός συνόλου κορυφών U: κορυφές που προσωρινά δεν παραβιάζουν την τριγωνική ανισότητα U {u : d(u) < και (u, v) E µε d(u) + c(u, v) < d(v)} 6 / 42
19 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος ιατήρηση ενός συνόλου κορυφών U: κορυφές που προσωρινά δεν παραβιάζουν την τριγωνική ανισότητα U {u : d(u) < και (u, v) E µε d(u) + c(u, v) < d(v)} for all { v V d(v) = ; π(v) = nil; } d(s) = 0; U = {s}; while U { επιλογή u U; U = U {u}; for all e = (u, v) E { if d(v) > d(u) + c(e) then { U = U {v}; d(v) = d(u) + c(e); π(v) = e; } } } 6 / 42
20 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος 7 / 42
21 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος Ποια κορυφή u U πρέπει να επιλέξουµε ; 7 / 42
22 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος Ποια κορυφή u U πρέπει να επιλέξουµε ; Υπαρξη Βέλτιστης Επιλογής (ι) Για κάθε v V f µε d(v) > δ(v), κορυφή u U µε d(u) = δ(u) και η οποία ϐρίσκεται σε µια s-v Σ (ιι) Οταν µια κορυφή u µε d(u) = δ(u) διαγράφεται από το U, τότε δεν προστίθεται ποτέ ξανά στο U 7 / 42
23 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος 8 / 42
24 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος Σχέση µεταξύ (d, π) και (dist, pred) pred[v] = π(v), dist[v] = { d(v) αν d(v) < αυθαίρετη αν d(v) = + 8 / 42
25 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος Σχέση µεταξύ (d, π) και (dist, pred) pred[v] = π(v), dist[v] = { d(v) αν d(v) < αυθαίρετη αν d(v) = + Αναπαράσταση του + d(v) = + ανν v s και π(v) = nil 8 / 42
26 Γενικευµένος Αλγόριθµος ΕΣ ΑΚ Αντιµετώπιση 1ου προβλήµατος Σχέση µεταξύ (d, π) και (dist, pred) pred[v] = π(v), dist[v] = { d(v) αν d(v) < αυθαίρετη αν d(v) = + Αναπαράσταση του + d(v) = + ανν v s και π(v) = nil Σύγκριση d < d(v), d IR (pred[v] == nil && v!= s) d < dist[v] 8 / 42
27 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος 9 / 42
28 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος Πώς επιλέγουµε κορυφές από το U ; 9 / 42
29 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος Πώς επιλέγουµε κορυφές από το U ; Οργάνωση του αλγορίθµου σε ϕάσεις U i = U στην αρχή της ϕάσης i, i 0, U 0 = {s} 9 / 42
30 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος Πώς επιλέγουµε κορυφές από το U ; Οργάνωση του αλγορίθµου σε ϕάσεις U i = U στην αρχή της ϕάσης i, i 0, U 0 = {s} Στην ϕάση i, όλες οι κορυφές του U i διαγράφονται από το U και οι νέες κορυφές που προστίθενται στο U εισάγονται στο U i+1 9 / 42
31 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος Πώς επιλέγουµε κορυφές από το U ; Οργάνωση του αλγορίθµου σε ϕάσεις U i = U στην αρχή της ϕάσης i, i 0, U 0 = {s} Στην ϕάση i, όλες οι κορυφές του U i διαγράφονται από το U και οι νέες κορυφές που προστίθενται στο U εισάγονται στο U i+1 Υλοποίηση του U µε χρήση ουράς Q 9 / 42
32 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος Πώς επιλέγουµε κορυφές από το U ; Οργάνωση του αλγορίθµου σε ϕάσεις U i = U στην αρχή της ϕάσης i, i 0, U 0 = {s} Στην ϕάση i, όλες οι κορυφές του U i διαγράφονται από το U και οι νέες κορυφές που προστίθενται στο U εισάγονται στο U i+1 Υλοποίηση του U µε χρήση ουράς Q Φάση i: όλες οι κορυφές του U i ϐρίσκονται στην αρχή της Q και όλες οι κορυφές του U i+1 ϐρίσκονται στο τέλος της Q, χωρισµένες από έναν διαχωριστή µε τιµή nil 9 / 42
33 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος Πώς επιλέγουµε κορυφές από το U ; Οργάνωση του αλγορίθµου σε ϕάσεις U i = U στην αρχή της ϕάσης i, i 0, U 0 = {s} Στην ϕάση i, όλες οι κορυφές του U i διαγράφονται από το U και οι νέες κορυφές που προστίθενται στο U εισάγονται στο U i+1 Υλοποίηση του U µε χρήση ουράς Q Φάση i: όλες οι κορυφές του U i ϐρίσκονται στην αρχή της Q και όλες οι κορυφές του U i+1 ϐρίσκονται στο τέλος της Q, χωρισµένες από έναν διαχωριστή µε τιµή nil Οταν ο διαχωριστής nil ϐρίσκεται στην αρχή της Q, τότε αυξάνεται ϐηµατικά η phase_count 9 / 42
34 Αλγόριθµος Bellman-Ford Αντιµετώπιση 2ου προβλήµατος Πώς επιλέγουµε κορυφές από το U ; Οργάνωση του αλγορίθµου σε ϕάσεις U i = U στην αρχή της ϕάσης i, i 0, U 0 = {s} Στην ϕάση i, όλες οι κορυφές του U i διαγράφονται από το U και οι νέες κορυφές που προστίθενται στο U εισάγονται στο U i+1 Υλοποίηση του U µε χρήση ουράς Q Φάση i: όλες οι κορυφές του U i ϐρίσκονται στην αρχή της Q και όλες οι κορυφές του U i+1 ϐρίσκονται στο τέλος της Q, χωρισµένες από έναν διαχωριστή µε τιµή nil Οταν ο διαχωριστής nil ϐρίσκεται στην αρχή της Q, τότε αυξάνεται ϐηµατικά η phase_count node_array<bool> in_q : in_q[v] = true, ανν v Q (αποφυγή επανεισαγωγών στην Q) 9 / 42
35 Αλγόριθµος Bellman-Ford 10 / 42
36 Αλγόριθµος Bellman-Ford Ο αλγόριθµος τερµατίζει όταν Q =, ή όταν i = n 10 / 42
37 Αλγόριθµος Bellman-Ford Ο αλγόριθµος τερµατίζει όταν Q =, ή όταν i = n Στην πρώτη περίπτωση (Q = ): d(v) = δ(v), v V 10 / 42
38 Αλγόριθµος Bellman-Ford Ο αλγόριθµος τερµατίζει όταν Q =, ή όταν i = n Στην πρώτη περίπτωση (Q = ): d(v) = δ(v), v V Στη δεύτερη περίπτωση (i = n): d(v) = δ(v), v V + V f 10 / 42
39 Αλγόριθµος Bellman-Ford Ο αλγόριθµος τερµατίζει όταν Q =, ή όταν i = n Στην πρώτη περίπτωση (Q = ): d(v) = δ(v), v V Στη δεύτερη περίπτωση (i = n): d(v) = δ(v), v V + V f Οι κορυφές του V αντιµετωπίζονται σε µια µεταγενέστερη ϕάση 10 / 42
40 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ 11 / 42
41 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ bool BELLMAN_FORD_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred) 11 / 42
42 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ bool BELLMAN_FORD_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred) Επιστρέφει false αν δ(v) = για κάποια κορυφή v αλλιώς, επιστρέφει true 11 / 42
43 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ bool BELLMAN_FORD_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred) Επιστρέφει false αν δ(v) = για κάποια κορυφή v αλλιώς, επιστρέφει true Χρόνος: O(nm) 11 / 42
44 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ // BF: helper template <class NT> bool BELLMAN_FORD_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred ) { int n = G.number_of_nodes(); int phase_count = 0; b_queue<node> Q(n+1); node_array<bool> in_q(g,false); node u,v; edge e; forall_nodes(v,g) pred[v] = nil; dist[s] = 0; Q.append(s); in_q[s] = true; Q.append((node) nil); // end marker 12 / 42
45 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ while( phase_count < n ) { u = Q.pop(); if ( u == nil ) { phase_count++; if ( Q.empty() ) return true; Q.append((node) nil); continue; } else in_q[u] = false; NT du = dist[u]; forall_adj_edges(e,u) { v = G.opposite(u,e); // makes it also work for ugraphs NT d = du + c[e]; if ( (pred[v] == nil && v!= s) d < dist[v] ) { dist[v] = d; pred[v] = e; if (!in_q[v] ) { Q.append(v); in_q[v] = true; } } } } // BF: postprocessing return false; } 13 / 42
46 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση: Q µετά από n φάσεις 14 / 42
47 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση: Q µετά από n φάσεις Πρόβληµα: µπορεί να υπάρχουν κορυφές στο V που δεν είναι ακόµη προσπελάσιµες από έναν κύκλο στο γράφηµα P 14 / 42
48 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση: Q µετά από n φάσεις Πρόβληµα: µπορεί να υπάρχουν κορυφές στο V που δεν είναι ακόµη προσπελάσιµες από έναν κύκλο στο γράφηµα P Πώς µπορούµε να ϐρούµε αυτές τις κορυφές χωρίς να χρειαστεί να εκτελέσουµε τον αλγόριθµο για έναν µεγαλύτερο αριθµό ϕάσεων ; 14 / 42
49 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Βασικές Ιδιότητες µετά από n φάσεις δ k (v) = min{c(p) : p µια s-v διαδροµή µε το πολύ k ακµές} 15 / 42
50 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Βασικές Ιδιότητες µετά από n φάσεις δ k (v) = min{c(p) : p µια s-v διαδροµή µε το πολύ k ακµές} 1 d(v) δ n (v) και αν v U, τότε d(v) < δ n 1 (v) 15 / 42
51 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Βασικές Ιδιότητες µετά από n φάσεις δ k (v) = min{c(p) : p µια s-v διαδροµή µε το πολύ k ακµές} 1 d(v) δ n (v) και αν v U, τότε d(v) < δ n 1 (v) 2 s V f ανν π(s) = nil 15 / 42
52 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Βασικές Ιδιότητες µετά από n φάσεις δ k (v) = min{c(p) : p µια s-v διαδροµή µε το πολύ k ακµές} 1 d(v) δ n (v) και αν v U, τότε d(v) < δ n 1 (v) 2 s V f ανν π(s) = nil 3 Κάθε κορυφή u U ϐρίσκεται είτε σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P 15 / 42
53 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Βασικές Ιδιότητες µετά από n φάσεις δ k (v) = min{c(p) : p µια s-v διαδροµή µε το πολύ k ακµές} 1 d(v) δ n (v) και αν v U, τότε d(v) < δ n 1 (v) 2 s V f ανν π(s) = nil 3 Κάθε κορυφή u U ϐρίσκεται είτε σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P 4 Κάθε κορυφή v V είναι προσπελάσιµη στο G από κάποια u U 15 / 42
54 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Βασικές Ιδιότητες µετά από n φάσεις δ k (v) = min{c(p) : p µια s-v διαδροµή µε το πολύ k ακµές} 1 d(v) δ n (v) και αν v U, τότε d(v) < δ n 1 (v) 2 s V f ανν π(s) = nil 3 Κάθε κορυφή u U ϐρίσκεται είτε σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P 4 Κάθε κορυφή v V είναι προσπελάσιµη στο G από κάποια u U 5 Αν π(s) nil, τότε κάθε κορυφή προσπελάσιµη από την s ϐρίσκεται είτε σε έναν κύκλο του P, είτε είναι προσπελάσιµη από έναν κύκλο στο P 15 / 42
55 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση 16 / 42
56 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση Εστω V f (π(s) = nil), και R V f το σύνολο των κορυφών που είναι προσπελάσιµες από την s στο P 16 / 42
57 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση Εστω V f (π(s) = nil), και R V f το σύνολο των κορυφών που είναι προσπελάσιµες από την s στο P Ολες οι κορυφές w R που είναι προσπελάσιµες από µια κορυφή u U ανήκουν στο V και εποµένως πρέπει να ενηµερωθούν οι π(w) 16 / 42
58 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση Εστω V f (π(s) = nil), και R V f το σύνολο των κορυφών που είναι προσπελάσιµες από την s στο P Ολες οι κορυφές w R που είναι προσπελάσιµες από µια κορυφή u U ανήκουν στο V και εποµένως πρέπει να ενηµερωθούν οι π(w) Ενηµέρωση π(w), w R Εκτέλεση ΑΠΒ από κάθε u U όταν µια κορυφή w R προσπελαύνεται µέσω της ακµής (z, w), τότε ϑέτουµε π(w) = (z, w) όλες οι κορυφές του R V είναι προσπελάσιµες από τις κορυφές του U και από την (3) προσπελάσιµες από έναν κύκλο στο P 16 / 42
59 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση: Πώς προσδιορίζονται οι κορυφές του R ; 17 / 42
60 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση: Πώς προσδιορίζονται οι κορυφές του R ; ΑΠΒ από την s στο P, αφού πρώτα «κρύψουµε» τις ακµές που δεν ανήκουν στο P και µετά τις επαναφέρουµε στο αρχικό γράφηµα 17 / 42
61 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση: Πώς προσδιορίζονται οι κορυφές του R ; ΑΠΒ από την s στο P, αφού πρώτα «κρύψουµε» τις ακµές που δεν ανήκουν στο P και µετά τις επαναφέρουµε στο αρχικό γράφηµα // BF: postprocessing if (pred[s]!= nil) return false; node_array<bool> in_r(g,false); forall_edges(e,g) if (e!= pred[g.target(e)]) ((graph*) &G)->hide_edge(e); DFS(G,s,in_R); // sets in_r[v] = true for v in R ((graph*) &G)->restore_all_edges(); node_array<bool> reached_from_node_in_u(g,false); forall_nodes(v,g) if (in_q[v] &&!reached_from_node_in_u[v]) Update_pred(G,v,in_R,reached_from_node_in_U,pred); 17 / 42
62 Αλγόριθµος Bellman-Ford Πρόβληµα ΕΣ ΑΚ Μεταγενέστερη Φάση: Πώς προσδιορίζονται οι κορυφές του R ; (συνέχεια) // BF: helper inline void Update_pred(const graph& G, node v, const node_array<bool>& in_r, node_array<bool>& reached_from_node_in_u, node_array<edge>& pred) { reached_from_node_in_u[v] = true; edge e; forall_adj_edges(e,v) { node w = G.target(e); if (!reached_from_node_in_u[w] ) { if ( in_r[w] ) pred[w] = e; Update_pred(G,w,in_R,reached_from_node_in_U,pred); } } } 18 / 42
63 Γενικός Αλγόριθµος ΕΣ ΑΚ template <class NT> bool SHORTEST_PATH_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred ) { if ( Is_Acyclic(G) ) { ACYCLIC_SHORTEST_PATH_T(G,s,c,dist,pred); return true; } bool non_negative = true; edge e; forall_edges(e,g) if (c[e] < 0) non_negative = false; } if (non_negative) { DIJKSTRA_T(G,s,c,dist,pred); return true; } return BELLMAN_FORD_T(G,s,c,dist,pred); 19 / 42
64 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ 20 / 42
65 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ανάπτυξη προγράµµατος CHECK_SP_T(G,s,c,dist,pred) το οποίο ϑα ελέγχει αν το Ϲεύγος (dist, pred) είναι µια σωστή λύση του προβλήµατος ΕΣ ΑΚ (G, s, c) 20 / 42
66 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ανάπτυξη προγράµµατος CHECK_SP_T(G,s,c,dist,pred) το οποίο ϑα ελέγχει αν το Ϲεύγος (dist, pred) είναι µια σωστή λύση του προβλήµατος ΕΣ ΑΚ (G, s, c) Εσφαλµένη λύση: σταµατάει αµέσως η εκτέλεση του προγράµµατος µε διαγνωστικό µήνυµα λάθους ("assertion failed") 20 / 42
67 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ανάπτυξη προγράµµατος CHECK_SP_T(G,s,c,dist,pred) το οποίο ϑα ελέγχει αν το Ϲεύγος (dist, pred) είναι µια σωστή λύση του προβλήµατος ΕΣ ΑΚ (G, s, c) Εσφαλµένη λύση: σταµατάει αµέσως η εκτέλεση του προγράµµατος µε διαγνωστικό µήνυµα λάθους ("assertion failed") Σωστή λύση: επιστρέφει ένα node_array<int> label µε label[v] < 0, αν v V label[v] = 0, αν v V f label[v] > 0, αν v V + 20 / 42
68 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ορισµοί 21 / 42
69 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ορισµοί { αν pred[s] U f nil = {v; s-v διαδροµή στο P } αν pred[s] = nil 21 / 42
70 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ορισµοί { αν pred[s] U f nil = {v; s-v διαδροµή στο P } αν pred[s] = nil U + = {v; v s και pred[v] = nil} 21 / 42
71 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ορισµοί { αν pred[s] U f nil = {v; s-v διαδροµή στο P } αν pred[s] = nil U + = {v; v s και pred[v] = nil} U = {v; v ϐρίσκεται σε έναν κύκλο του P ή είναι προσπελάσιµη από έναν κύκλο στο P} 21 / 42
72 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ελεγχοι Ορθότητας Το Ϲεύγος (dist, pred) είναι µια σωστή λύση αν ικανοποιούνται οι παρακάτω συνθήκες/έλεγχοι: 22 / 42
73 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ελεγχοι Ορθότητας Το Ϲεύγος (dist, pred) είναι µια σωστή λύση αν ικανοποιούνται οι παρακάτω συνθήκες/έλεγχοι: 1 v U + αν διαδροµή s-v στο G 22 / 42
74 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ελεγχοι Ορθότητας Το Ϲεύγος (dist, pred) είναι µια σωστή λύση αν ικανοποιούνται οι παρακάτω συνθήκες/έλεγχοι: 1 v U + αν διαδροµή s-v στο G 2 Ολοι οι κύκλοι στο P έχουν αρνητικό κόστος 22 / 42
75 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ελεγχοι Ορθότητας Το Ϲεύγος (dist, pred) είναι µια σωστή λύση αν ικανοποιούνται οι παρακάτω συνθήκες/έλεγχοι: 1 v U + αν διαδροµή s-v στο G 2 Ολοι οι κύκλοι στο P έχουν αρνητικό κόστος 3 ακµή (v, w) E µε v U και w U f 22 / 42
76 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ελεγχοι Ορθότητας Το Ϲεύγος (dist, pred) είναι µια σωστή λύση αν ικανοποιούνται οι παρακάτω συνθήκες/έλεγχοι: 1 v U + αν διαδροµή s-v στο G 2 Ολοι οι κύκλοι στο P έχουν αρνητικό κόστος 3 ακµή (v, w) E µε v U και w U f 4 e = (v, w) E: αν v U f και w U f, τότε dist[v] + c[e] dist[w] 22 / 42
77 Ελεγκτής Ορθότητας Αλγορίθµων ΕΣ ΑΚ Ελεγχοι Ορθότητας Το Ϲεύγος (dist, pred) είναι µια σωστή λύση αν ικανοποιούνται οι παρακάτω συνθήκες/έλεγχοι: 1 v U + αν διαδροµή s-v στο G 2 Ολοι οι κύκλοι στο P έχουν αρνητικό κόστος 3 ακµή (v, w) E µε v U και w U f 4 e = (v, w) E: αν v U f και w U f, τότε dist[v] + c[e] dist[w] 5 v U f : αν v = s, τότε dist[v] = 0, και αν v s τότε dist[v] = dist[u] + c[pred[v]] όπου u είναι η αρχική κορυφή της pred[v] 22 / 42
78 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών 23 / 42
79 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών Αρχικά όλες οι κορυφές έχουν label ίσο µε UNKNOWN 23 / 42
80 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών Αρχικά όλες οι κορυφές έχουν label ίσο µε UNKNOWN Εκτέλεση ΑΠΒ για προσδιορισµό όλων των κορυφών που είναι προσπελάσιµες από την s, και έλεγχος για όλα τα v s: pred[v] = nil ανν s-v διαδροµή 23 / 42
81 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών Αρχικά όλες οι κορυφές έχουν label ίσο µε UNKNOWN Εκτέλεση ΑΠΒ για προσδιορισµό όλων των κορυφών που είναι προσπελάσιµες από την s, και έλεγχος για όλα τα v s: pred[v] = nil ανν s-v διαδροµή Σε όλες τις κορυφές που δεν είναι προσπελάσιµες από την s: ανάθεση τιµής label ίσο µε PLUS 23 / 42
82 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών Αρχικά όλες οι κορυφές έχουν label ίσο µε UNKNOWN Εκτέλεση ΑΠΒ για προσδιορισµό όλων των κορυφών που είναι προσπελάσιµες από την s, και έλεγχος για όλα τα v s: pred[v] = nil ανν s-v διαδροµή Σε όλες τις κορυφές που δεν είναι προσπελάσιµες από την s: ανάθεση τιµής label ίσο µε PLUS // condition (1) enum{ NEG_CYCLE = -2, ATT_TO_CYCLE = -1, FINITE = 0, PLUS = 1, CYCLE = 2, ON_CUR_PATH = 3, UNKNOWN = 4 }; node_array<int> label(g,unknown); node_array<bool> reachable(g,false); DFS(G,s,reachable); node v; forall_nodes(v,g) { if (v!= s) { assert( (pred[v] == nil) == (reachable[v] == false)); if (reachable[v] == false) label[v] = PLUS; } } 23 / 42
83 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών 24 / 42
84 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v w v 24 / 42
85 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v w v Ακολουθούµε τη διαδροµή [v, source(pred[v]), source(pred[source(pred[v])]),...] µέχρι να συναντήσουµε µια κορυφή δύο ϕορές (U ) ή µέχρι να µην µπορούµε να προχωρήσουµε άλλο (U f ) 24 / 42
86 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v w v Ακολουθούµε τη διαδροµή [v, source(pred[v]), source(pred[source(pred[v])]),...] µέχρι να συναντήσουµε µια κορυφή δύο ϕορές (U ) ή µέχρι να µην µπορούµε να προχωρήσουµε άλλο (U f ) U : κορυφές που ανήκουν σε έναν κύκλο στο P (label CYCLE) και κορυφές που είναι προσπελάσιµες από έναν κύκλο στο P (label ATT_TO_CYCLE) 24 / 42
87 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v w v Ακολουθούµε τη διαδροµή [v, source(pred[v]), source(pred[source(pred[v])]),...] µέχρι να συναντήσουµε µια κορυφή δύο ϕορές (U ) ή µέχρι να µην µπορούµε να προχωρήσουµε άλλο (U f ) U : κορυφές που ανήκουν σε έναν κύκλο στο P (label CYCLE) και κορυφές που είναι προσπελάσιµες από έναν κύκλο στο P (label ATT_TO_CYCLE) Η διαπέραση µιας διαδροµής δεν πρέπει να γίνει πολλές ϕορές η διαπέραση σταµατά όταν συναντήσουµε µια κορυφή µε label UNKNOWN Κατά τη διαπέραση όλες οι κορυφές της διαδροµής εισάγονται σε µία στοίβα S και παίρνουν label ON_CUR_PATH 24 / 42
88 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v w v // classification of nodes if (pred[s] == nil) label[s] = FINITE; forall_nodes(v,g) { if ( label[v] == UNKNOWN ) { stack<node> S; node w = v; while ( label[w] == UNKNOWN ) { label[w] = ON_CUR_PATH; S.push(w); w = G.source(pred[w]); } // label all nodes on current path } } 25 / 42
89 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v w v 26 / 42
90 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v Εξέταση κορυφής w µε label UNKNOWN w v Αν label[w]=finite, τότε όλες οι κορυφές της διαδροµής U f Αν label[w]=cycle ή label[w]=att_to_cycle, τότε όλες οι κορυφές (εκτός της w) είναι προσπελάσιµες από έναν κύκλο. Αν επίσης η w ανήκει στην τρέχουσα διαδροµή, τότε ανήκει στον κύκλο 26 / 42
91 Υλοποίηση Ελεγκτή Συνθ. (1) & Κατηγοριοποίηση κορυφών s v Εξέταση κορυφής w µε label UNKNOWN w v Αν label[w]=finite, τότε όλες οι κορυφές της διαδροµής U f Αν label[w]=cycle ή label[w]=att_to_cycle, τότε όλες οι κορυφές (εκτός της w) είναι προσπελάσιµες από έναν κύκλο. Αν επίσης η w ανήκει στην τρέχουσα διαδροµή, τότε ανήκει στον κύκλο // label all nodes on current path int t = label[w]; if ( t == ON_CUR_PATH ) { node z; do { z = S.pop(); label[z] = CYCLE; } while ( z!= w ); while (!S.empty() ) label[s.pop()] = ATT_TO_CYCLE; } else // t is CYCLE, ATT_TO_CYCLE, or FINITE { if ( t == CYCLE ) t = ATT_TO_CYCLE; while (!S.empty() ) label[s.pop()] = t; } 26 / 42
92 Υλοποίηση Ελεγκτή Συνθήκη (2) 27 / 42
93 Υλοποίηση Ελεγκτή Συνθήκη (2) Για κάθε κορυφή v µε label[v]=cycle διαπερνούµε τον κύκλο στον οποίο ανήκει, υπολογίζουµε το κόστος του και ελέγχουµε αν είναι αρνητικό. Αν ναι, τότε δίνουµε σε όλες τις κορυφές του κύκλου νέο label ίσο µε NEG_CYCLE. Αυτό εξασφαλίζει ότι κάθε κύκλος διαπερνάται µόνο µία ϕορά 27 / 42
94 Υλοποίηση Ελεγκτή Συνθήκη (2) Για κάθε κορυφή v µε label[v]=cycle διαπερνούµε τον κύκλο στον οποίο ανήκει, υπολογίζουµε το κόστος του και ελέγχουµε αν είναι αρνητικό. Αν ναι, τότε δίνουµε σε όλες τις κορυφές του κύκλου νέο label ίσο µε NEG_CYCLE. Αυτό εξασφαλίζει ότι κάθε κύκλος διαπερνάται µόνο µία ϕορά // condition (2) forall_nodes(v,g) { if ( label[v] == CYCLE ) { node w = v; NT cycle_length = 0; do { cycle_length += c[pred[w]]; label[w] = NEG_CYCLE; w = G.source(pred[w]); } while (w!= v); assert(cycle_length < 0); } } 27 / 42
95 Υλοποίηση Ελεγκτή Συνθήκες (3), (4) & (5) 28 / 42
96 Υλοποίηση Ελεγκτή Συνθήκες (3), (4) & (5) 3 ακµή (v, w) E µε v U και w U f 28 / 42
97 Υλοποίηση Ελεγκτή Συνθήκες (3), (4) & (5) 3 ακµή (v, w) E µε v U και w U f 4 e = (v, w) E: αν v U f και w U f, τότε dist[v] + c[e] dist[w] 28 / 42
98 Υλοποίηση Ελεγκτή Συνθήκες (3), (4) & (5) 3 ακµή (v, w) E µε v U και w U f 4 e = (v, w) E: αν v U f και w U f, τότε dist[v] + c[e] dist[w] 5 v U f : αν v = s, τότε dist[v] = 0, και αν v s τότε dist[v] = dist[u] + c[pred[v]] όπου u είναι η αρχική κορυφή της pred[v] 28 / 42
99 Υλοποίηση Ελεγκτή Συνθήκες (3), (4) & (5) 3 ακµή (v, w) E µε v U και w U f 4 e = (v, w) E: αν v U f και w U f, τότε dist[v] + c[e] dist[w] 5 v U f : αν v = s, τότε dist[v] = 0, και αν v s τότε dist[v] = dist[u] + c[pred[v]] όπου u είναι η αρχική κορυφή της pred[v] //conditions (3), (4), and (5) if ( label[s] == FINITE ) assert(dist[s] == 0); edge e; forall_edges(e,g) { node v = G.source(e); node w = G.target(e); if ( label[w] == FINITE ) { assert( label[v] == FINITE label[v] == PLUS); if ( label[v] == FINITE ) { assert( dist[v] + c[e] >= dist[w] ); if ( e == pred[w] ) assert( dist[v] + c[e] == dist[w] ); } } 28 / 42
100 Υλοποίηση Ελεγκτή Το πλήρες πρόγραµµα template <class NT> node_array<int> CHECK_SP_T(const graph& G, node s, const edge_array<nt>& c, const node_array<nt>& dist, const node_array<edge>& pred) { // condition (1) // classification of nodes // condition (2) // conditions (3), (4), and (5) return label; } 29 / 42
101 Αρχέτυπα για Αλγορίθµους Γραφηµάτων 30 / 42
102 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Αλγόριθµοι γραφηµάτων 30 / 42
103 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Αλγόριθµοι γραφηµάτων ακµές/κορυφές γραφηµάτων είναι συσχετισµένες µε τιµές ενός συγκεκριµένου (αριθµητικού) τύπου 30 / 42
104 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Αλγόριθµοι γραφηµάτων ακµές/κορυφές γραφηµάτων είναι συσχετισµένες µε τιµές ενός συγκεκριµένου (αριθµητικού) τύπου πρέπει να µπορούν να εφαρµοσθούν σε οποιονδήποτε αριθµητικό τύπο που ικανοποιεί κάποιες προϋποθέσεις (π.χ. είναι γραµµικά διατεταγµένος) 30 / 42
105 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Αλγόριθµοι γραφηµάτων ακµές/κορυφές γραφηµάτων είναι συσχετισµένες µε τιµές ενός συγκεκριµένου (αριθµητικού) τύπου πρέπει να µπορούν να εφαρµοσθούν σε οποιονδήποτε αριθµητικό τύπο που ικανοποιεί κάποιες προϋποθέσεις (π.χ. είναι γραµµικά διατεταγµένος) Ο µηχανισµός αρχετύπων χρησιµοποιείται για αυτό το σκοπό 30 / 42
106 Αρχέτυπα για Αλγορίθµους Γραφηµάτων 31 / 42
107 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Παράδειγµα: αλγόριθµος ΕΣ ΑΚ template <class NT> void DIJKSTRA_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred); 31 / 42
108 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Παράδειγµα: αλγόριθµος ΕΣ ΑΚ template <class NT> void DIJKSTRA_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred); Η παράµετρος αρχετύπου NT µπορεί να συγκεκριµενοποιηθεί µε οποιονδήποτε αριθµητικό τύπο που πληροί κάποιες συντακτικές και σηµασιολογικές προϋποθέσεις Π.χ. πρέπει να είναι γραµµικά διατεταγµένος και η λειτουργία της πρόσθεσης πρέπει να είναι µονότονη 31 / 42
109 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Επιθυµητοί Στόχοι 32 / 42
110 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Επιθυµητοί Στόχοι Οι πιο συχνά χρησιµοποιούµενες συγκεκριµενοποιήσεις πρέπει να είναι προµεταγλωττισµένες 32 / 42
111 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Επιθυµητοί Στόχοι Οι πιο συχνά χρησιµοποιούµενες συγκεκριµενοποιήσεις πρέπει να είναι προµεταγλωττισµένες Οι προ-συγκεκριµενοποιηµένες εκδοχές πρέπει να µπορούν να χρησιµοποιούνται εναλλακτικά µε τις εκδοχές αρχετύπων 32 / 42
112 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA 33 / 42
113 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA Για κάθε συνάρτηση Alg που υλοποιεί κάποιον αλγόριθµο τρία αρχεία 33 / 42
114 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA Για κάθε συνάρτηση Alg που υλοποιεί κάποιον αλγόριθµο τρία αρχεία Alg.h: ϐρίσκεται στον κατάλογο LEDAROOT/incl/LEDA και περιέχει τις δηλώσεις όλων των συναρτήσεων Η προ-συγκεκριµενοποιηµένη εκδοχή έχει όνοµα Alg, ενώ η εκδοχή αρχετύπου έχει όνοµα Alg_T 33 / 42
115 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA Για κάθε συνάρτηση Alg που υλοποιεί κάποιον αλγόριθµο τρία αρχεία Alg.h: ϐρίσκεται στον κατάλογο LEDAROOT/incl/LEDA και περιέχει τις δηλώσεις όλων των συναρτήσεων Η προ-συγκεκριµενοποιηµένη εκδοχή έχει όνοµα Alg, ενώ η εκδοχή αρχετύπου έχει όνοµα Alg_T Alg.t: ϐρίσκεται στον κατάλογο LEDAROOT/incl/LEDA/templates και περιέχει τον ορισµό της συνάρτησης αρχετύπου 33 / 42
116 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA Για κάθε συνάρτηση Alg που υλοποιεί κάποιον αλγόριθµο τρία αρχεία Alg.h: ϐρίσκεται στον κατάλογο LEDAROOT/incl/LEDA και περιέχει τις δηλώσεις όλων των συναρτήσεων Η προ-συγκεκριµενοποιηµένη εκδοχή έχει όνοµα Alg, ενώ η εκδοχή αρχετύπου έχει όνοµα Alg_T Alg.t: ϐρίσκεται στον κατάλογο LEDAROOT/incl/LEDA/templates και περιέχει τον ορισµό της συνάρτησης αρχετύπου _Alg.c: ϐρίσκεται στον κατάλογο LEDAROOT/src και περιέχει τις υλοποιήσεις των συγκεκριµενοποιήσεων µε ϐάση τη συνάρτηση αρχετύπου Το αρχείο αυτό είναι προµεταγλωττισµένο στο αρχείο κώδικα αντικειµένου _Alg.o που περιέχεται σε κάποια από τις ϐιβλιοθήκες της LEDA 33 / 42
117 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA Χρήση των διαφορετικών εκδοχών 34 / 42
118 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA Χρήση των διαφορετικών εκδοχών Συνάρτηση αρχετύπου #include <LEDA/templates/Alg.t> 34 / 42
119 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μηχανισµός LEDA Χρήση των διαφορετικών εκδοχών Συνάρτηση αρχετύπου #include <LEDA/templates/Alg.t> Προ-συγκεκριµενοποιηµένη συνάρτηση #include <LEDA/Alg.h> 34 / 42
120 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Παράδειγµα: αλγόριθµος Dijkstra // file dijkstra.h #ifndef DIJKSTRA_H #define DIJKSTRA_H #include <LEDA/graph.h> template <class NT> void DIJKSTRA_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred); // next come the pre-instantiated versions // void DIJKSTRA(const graph& G, node s, const edge_array<int>& c, node_array<int>& dist, node_array<edge>& pred); // and, similarly, for double,... #endif 35 / 42
121 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Παράδειγµα: αλγόριθµος Dijkstra // file dijkstra.t #include <LEDA/dijkstra.h> template <class NT> void DIJKSTRA_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred) { /* implementation of DIJKSTRA_T */ } 36 / 42
122 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Παράδειγµα: αλγόριθµος Dijkstra // file _dijkstra.c #include <LEDA/templates/dijkstra.t> void DIJKSTRA(const graph& G, node s, const edge_array<int>& c, node_array<int>& dist, node_array<edge>& pred) { DIJKSTRA_T(G,s,c,dist,pred); } // and, similarly, for double / 42
123 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Παράδειγµα: αλγόριθµος Dijkstra Χρήση προ-συγκεκριµενοποιηµένης εκδοχής σε πρόγραµµα εφαρµογής #include <LEDA/dijkstra.h> // define G, s, c, dist, pred with number type int DIJKSTRA(G,s,c,dist,pred); 38 / 42
124 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Παράδειγµα: αλγόριθµος Dijkstra Χρήση εκδοχής αρχετύπου σε πρόγραµµα εφαρµογής #include <LEDA/templates/dijkstra.t> // define G, s, c, dist, pred for any number type NT DIJKSTRA_T(G,s,c,dist,pred); // define G, s, c, dist, pred for number type int // and use template version DIJKSTRA_T(G,s,c,dist,pred); // use pre-instantiated version DIJKSTRA(G,s,c,dist,pred); 39 / 42
125 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μια συνιστώµενη διαφορετική µέθοδος 40 / 42
126 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μια συνιστώµενη διαφορετική µέθοδος Τα.t-αρχεία δεν πρέπει να συµπεριλαµβάνονται άµεσα στα προγράµµατα εφαρµογής, διότι µπορεί να περιέχουν ϐοηθητικές συναρτήσεις οι οποίες να δηµιουργούν πρόβληµα µε τον χώρο ονοµάτων του προγ/τος εφαρµογής 40 / 42
127 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μια συνιστώµενη διαφορετική µέθοδος Τα.t-αρχεία δεν πρέπει να συµπεριλαµβάνονται άµεσα στα προγράµµατα εφαρµογής, διότι µπορεί να περιέχουν ϐοηθητικές συναρτήσεις οι οποίες να δηµιουργούν πρόβληµα µε τον χώρο ονοµάτων του προγ/τος εφαρµογής ηµιουργία ενδιάµεσων αρχείων Π.χ. συγκεκριµενοποίηση της DIJKSTRA_T µε τον τύπο δεδοµένων real της LEDA // real_dijkstra.h #include <LEDA/real.h> void DIJKSTRA(const graph& G, node s, const edge_array<real>& c, node_array<real>& dist, node_array<edge>& pred) 40 / 42
128 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μια συνιστώµενη διαφορετική µέθοδος // real_dijkstra.c #include "real_dijkstra.h" #include <LEDA/templates/dijkstra.t> void DIJKSTRA(const graph& G, node s, const edge_array<real>& c, node_array<real>& dist, node_array<edge>& pred) { DIJKSTRA_T(G,s,c,dist,pred); } 41 / 42
129 Αρχέτυπα για Αλγορίθµους Γραφηµάτων Μια συνιστώµενη διαφορετική µέθοδος // real_dijkstra.c #include "real_dijkstra.h" #include <LEDA/templates/dijkstra.t> void DIJKSTRA(const graph& G, node s, const edge_array<real>& c, node_array<real>& dist, node_array<edge>& pred) { DIJKSTRA_T(G,s,c,dist,pred); } Το αρχείο real_dijkstra.h συµπεριλαµβάνεται στο πρόγραµµα εφαρµογής, ενώ το αρχείο real_dijkstra.c προµεταγλωττίζεται και προστίθεται στη ϐιβλιοθήκη κώδικα αντικειµένου από τον διασυνδετή 41 / 42
130 Ερωτήσεις ; 42 / 42
Τεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 7 1 / 48 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΠροηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων
Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 6 1 / 35 Ενότητα 6 - Συντοµότερες
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 6 1 / 41 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 8 Μέγιστη Ροή & Αριθµητική Ορθότητα Αλγορίθµων 1
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 8 1 / 44 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 9 1 / 46 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΑσκηση 1 [ ] Παράδοση : Τετάρτη , 13:00
Χρήστος. Ζαρολιάγκης Τεχνολογίες Υλοποίησης Αλγορίθµων : Άσκηση 1 1 Ασκηση 1 [16.03.2016] Παράδοση : Τετάρτη 13.04.2016, 13:00 Η παρούσα άσκηση αφορά στον έλεγχο διµερότητας ενός γραφήµατος. Σκοπός της
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 9 Μέγιστη Ροή ΙΙ Αλγόριθµος Προροής-Προώθησης &
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 3 1 / 25 Ενότητα 3 οκιµή Προγραµµάτων (Program Testing)
Διαβάστε περισσότεραΜάθημα 21: Ουρές (Queues)
Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Dijkstra Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Dijkstra
Διαβάστε περισσότεραΠροηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων
Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 6 Μαΐου 2015 1 / 42 Εύρεση Ελάχιστου Μονοπατιού
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 10
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 10 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 8
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών 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
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 5 / 46 Ενότητα 5 Γραφήµατα Γραφήµατα ϐασικές έννοιες
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Ενότητα 10η
Εισαγωγή στους Αλγορίθμους Ενότητα 10η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΣχεδίαση & Ανάλυση Αλγορίθμων
Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 4.2 Διαδρομές σε Γραφήματα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Πρόβλημα Οδικό Δίκτυο
Διαβάστε περισσότεραΕπίλυση Προβληµάτων µε Greedy Αλγόριθµους
Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Περίληψη Επίλυση προβληµάτων χρησιµοποιώντας Greedy Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης
Διαβάστε περισσότεραΓράφηµα (Graph) Εργαστήριο 10. Εισαγωγή
Εργαστήριο 10 Γράφηµα (Graph) Εισαγωγή Στην πληροφορική γράφηµα ονοµάζεται µια δοµή δεδοµένων, που αποτελείται από ένα σύνολο κορυφών ( vertices) (ή κόµβων ( nodes» και ένα σύνολο ακµών ( edges). Ενας
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Bellman Ford Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Bellman
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 7
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 7 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 18 Dijkstra s Shortest Path Algorithm 1 / 12 Ο αλγόριθμος εύρεσης της συντομότερης διαδρομής του Dijkstra
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 5 1 / 52 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 5
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 6
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 6 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΑλγόριθμοι Γραφημάτων
Αλγόριθμοι Γραφημάτων 1. Συντομότατα μονοπάτια 2. Αλγόριθμος Bellman-Ford 3. Αλγόριθμος Dijkstra 4. Floyd-Warshall Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Single-Source Shortest Path Πρόβλημα:
Διαβάστε περισσότεραΣυντομότερες ιαδρομές
Συντομότερες ιαδρομές ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Συντομότερη ιαδρομή Κατευθυνόμενο G(V, E, w) με μήκη Μήκος διαδρομής Απόσταση d(u,
Διαβάστε περισσότεραΣυντομότερες Διαδρομές
Συντομότερες Διαδρομές Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Συντομότερη Διαδρομή Κατευθυνόμενο G(V, E, w) με μήκη Μήκος διαδρομής
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Ενότητα 9η
Εισαγωγή στους Αλγορίθμους Ενότητα 9η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Ελάχιστα Γεννητικά Δένδρα Ελάχιστο Γεννητικό
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 3 1 / 32 Αδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΔοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης
Δοµές Δεδοµένων 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης Περίληψη Quicksort Χαρακτηριστικά επιδόσεων Μη αναδροµική υλοποίηση Δέντρα Μαθηµατικές ιδιότητες Δοµές Δεδοµένων 11-2
Διαβάστε περισσότεραΕιδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων
Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις
Διαβάστε περισσότεραΕργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα
Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 30 Απριλίου 2015 1 / 48 Εύρεση Ελάχιστου
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Αυτό-αξιολόγηση 1η: 08/02/2006 1
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους
Εισαγωγή στους Αλγορίθμους Ενότητα 7η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Αλγόριθμοι Γραφημάτων Τοπολογική Διάταξη
Διαβάστε περισσότεραΣυντομότερες ιαδρομές
Συντομότερες ιαδρομές ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΕισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Διαβάστε περισσότεραΣυντομότερες ιαδρομές
Συντομότερες ιαδρομές ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 3
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 3 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΣυντομότερες Διαδρομές
Συντομότερη Διαδρομή Συντομότερες Διαδρομές Διδάσκοντες: Σ Ζάχος, Δ Φωτάκης Επιμέλεια διαφανειών: Δ Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Κατευθυνόμενο G(V, E, w) με μήκη Μήκος
Διαβάστε περισσότερα4.3. Γραµµικοί ταξινοµητές
Γραµµικοί ταξινοµητές Γραµµικός ταξινοµητής είναι ένα σύστηµα ταξινόµησης που χρησιµοποιεί γραµµικές διακριτικές συναρτήσεις Οι ταξινοµητές αυτοί αναπαρίστανται συχνά µε οµάδες κόµβων εντός των οποίων
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
Διαβάστε περισσότεραΔομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Γραφήματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Γραφήματα Κατευθυνόμενο Γράφημα Ένα κατευθυνόμενο γράφημα G είναι ένα ζευγάρι (V, E) όπου V είναι ένα
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΒαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά
Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο
Διαβάστε περισσότεραΓράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V
Γράφοι Ορολογία γράφος ή γράφηµα (graph) Ορισµός: G = (V, E) όπου V:ένα σύνολο E:µια διµελής σχέση στο V Ορολογία (συνέχεια) κάθε v V ονοµάζεται κορυφή (vertex) ή κόµβος (node) κάθε (v 1, v 2 ) Ε ονοµάζεται
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &
Διαβάστε περισσότεραΒραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)
Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος των BellmanFord Ο αλγόριθµος του Dijkstra ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 61
Διαβάστε περισσότεραΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ 2
Version 1.5 (16/03/2017) Σχολή Τεχνολογικών Εφαρμογών (ΣΤΕΦ) Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διδάσκων: Γκόγκος Χρήστος Μάθημα: Τεχνητή Νοημοσύνη (εργαστήριο Δ εξαμήνου) Ακαδημαϊκό έτος 2016-2017 εαρινό
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Ενότητα 7η
Εισαγωγή στους Αλγορίθμους Ενότητα 7η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΔιάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διαβάστε περισσότεραΣχήµα 4.1: Εισαγωγή βρόγχου while-loop.
Ο βρόγχος While-loop 1. Ο βρόγχος while-loop εκτελείται έως ότου ικανοποιηθεί µία προκαθορισµένη συνθήκη. 2. Ο αριθµός των επαναλήψεων ενός βρόγχου while-loop δεν είναι εκ των προτέρων προκαθορισµένος,
Διαβάστε περισσότεραΙδιοκτησία Αντικειµένου
Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται
Διαβάστε περισσότερα- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)
Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο
Διαβάστε περισσότεραΚατ οίκον Εργασία 5 Σκελετοί Λύσεων
Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Άσκηση 1 (α) Ο αλγόριθµος χρησιµοποιεί τη διαδικασία DFS(v) η οποία, ως γνωστό, επισκέπτεται όλους τους κόµβους που είναι συνδεδεµένοι µε τον κόµβο v. Για να µετρήσουµε
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 26 Ιουνίου 201 1 / Απληστοι (Greedy) Αλγόριθµοι
Διαβάστε περισσότεραΕνότητα 7 Ουρές Προτεραιότητας
Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω
Διαβάστε περισσότεραΕλάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;
Άπληστοι Αλγόριθμοι ΙΙI Αλγόριθμοι γραφημάτων Ελάχιστο Γεννητικό Δένδρο Παράδειγμα Κατασκευή δικτύων Οδικά, επικοινωνίας Έχουμε ένα συνεκτικό γράφημα (V,E) και ένας βάρος we σε κάθε ακμή e. Να βρεθεί υποσύνολο
Διαβάστε περισσότεραΑλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Μαΐου 201 1 / Απληστοι (Greedy) Αλγόριθµοι
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού C
Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Ενότητα 9η
Εισαγωγή στους Αλγορίθμους Ενότητα 9η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΠ. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ Αρχές
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις
ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών Συναρτήσεις 60 Ροή ελέγχου Είναι η σειρά µε την οποία εκτελούνται οι εντολές. Μέχρι τώρα, «σειριακή»,
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI
20 ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ Με εξαίρεση το 3ο θέμα, στα 2 πρώτα, υποβλήθηκαν περισσότερες από μία βέλτιστες λύσεις (100% σημείων επιτυχίας). Από αυτές τελείως
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη 2005. Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 3 ο Συνδεδεµένες Λίστες Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση ΟΑΤ λίστα Ακολουθιακή λίστα Συνδεδεµένη λίστα
Διαβάστε περισσότεραΚεφάλαιο : Επαναλήψεις (for, do-while)
Κεφάλαιο 5.4-5.11: Επαναλήψεις (for, do-while) 10-1 Εντολές Επανάληψης που θα καλυφθούν σήµερα while(){ τελεστές postfix/prefix (++, --,...) και σύνθετοι τελεστές Παραδείγµατα Σήµερα for(){ Η εντολές break/continue;
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους Φροντιστήριο 4
Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαβάστε περισσότεραΣτοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Διαβάστε περισσότεραΚατ οίκον Εργασία 2 Σκελετοί Λύσεων
Κατ οίκον Εργασία 2 Σκελετοί Λύσεων 1. Ο αλγόριθµος κτίζει όλες τις δυνατές αναθέσεις εργασιών στους φοιτητές (υπάρχουν n! διαφορετικές αναθέσεις) και επιστρέφει εκείνη µε το µέγιστο βαθµό καταλληλότητας.
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους
Εισαγωγή στους Αλγορίθμους Ενότητα 4η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Ευσταθές Ταίριασμα Πρόβλημα Ευσταθούς Ταιριάσματος
Διαβάστε περισσότεραΔιάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &
Διαβάστε περισσότεραΠληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος)
Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων
Διαβάστε περισσότεραΕνότητα 7 Ουρές Προτεραιότητας
Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type).
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι
ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι 5.1 Η έννοια του αλγορίθµου 5.2 Αναπαράσταση αλγορίθµων 5.3 Επινόηση αλγορίθµων 5.4 Δοµές επανάληψης 5.5 Αναδροµικές δοµές 1 Αλγόριθµος: Ορισµός Ένας αλγόριθµος είναι ένα διατεταγµένο
Διαβάστε περισσότεραlab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1
ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1 1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2 1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3 1927 PASS 1928 Οριακό
Διαβάστε περισσότεραΣυλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διαβάστε περισσότεραΚατ οίκον Εργασία 5 Σκελετοί Λύσεων
Κατ οίκον Εργασία 5 Σκελετοί Λύσεων Άσκηση 1 Χρησιμοποιούμε τις δομές: struct hashtable { struct node array[maxsize]; int maxsize; int size; struct node{ int data; int status; Στο πεδίο status σημειώνουμε
Διαβάστε περισσότεραΆσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.
Άσκηση 1 Ψευδοκώδικας Kruskal Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα. Αντιστοιχίζω τους κόμβους με αριθμούς από το 0 έως το 4. 2Η ΕΡΓΑΣΙΑ ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ - MAY 2018
Διαβάστε περισσότεραΚατ οίκον Εργασία 4 Σκελετοί Λύσεων
Κατ οίκον Εργασία Σκελετοί Λύσεων Άσκηση Αναδρομική διαδικασία Η αναδρομική διαδικασία RecIsheap παίρνει ως παραμέτρους τον πίνακα, το μέγεθός του καθώς και το στοιχείο το οποίο θα τύχει επεξεργασίας.
Διαβάστε περισσότεραΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
Διαβάστε περισσότεραΑλγόριθμοι και Πολυπλοκότητα
Αλγόριθμοι και Πολυπλοκότητα Άπληστοι Αλγόριθμοι Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Άπληστοι Αλγόριθμοι Είναι δύσκολο να ορίσουμε ακριβώς την έννοια του άπληστου
Διαβάστε περισσότεραΒασικές Έννοιες Δοµών Δεδοµένων
Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες
Διαβάστε περισσότεραΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1
Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Διάσχιση Γράφων Τοπολογική Ταξινόµηση ΕΠΛ 23 Δοµές Δεδοµένων και Αλγόριθµοι - Γράφοι Η πιο γενική µορφή δοµής
Διαβάστε περισσότεραΕισαγωγή στους Αλγορίθμους
Εισαγωγή στους Αλγορίθμους Ενότητα 3η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Απλοί Αλγόριθμοι & Δομές Δεδομένων Δύο Απλές
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση
Διαβάστε περισσότεραΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,
Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Τοπολογική Ταξινόµηση ιάσχιση Γράφων ΕΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 26 - Γράφοι Ηπιο
Διαβάστε περισσότεραΠρογραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους
Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους Αναπτύξτε μια βιβλιοθήκη για την δημιουργία / διαχείριση γράφων και την υποστήριξη βασικών λειτουργιών αναζήτησης σε αυτούς. Η βιβλιοθήκη πρέπει να υποστηρίζει
Διαβάστε περισσότεραΠεριεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις
Προγραµµατισµός Η/Υ Ανασκόπηση - Ορισµοί Περιεχόµενα Ο κύκλος ανάπτυξης προγράµµατος Περιγραφή προβλήµατος Ανάλυση προβλήµατος Λογικό ιάγραµµα Ψευδοκώδικας Κωδικοποίηση Συντήρηση Γλώσσες Προγραµµατισµού
Διαβάστε περισσότεραΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες
Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Διαβάστε περισσότεραm 1 min f = x ij 0 (8.4) b j (8.5) a i = 1
KΕΦΑΛΑΙΟ 8 Προβλήµατα Μεταφοράς και Ανάθεσης 8. ΕΙΣΑΓΩΓΗ Μια ειδική κατηγορία προβληµάτων γραµµικού προγραµµατισµού είναι τα προβλήµατα µεταφοράς (Π.Μ.), στα οποία επιζητείται η ελαχιστοποίηση του κόστους
Διαβάστε περισσότερα