Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 5) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Βραχύτερα Μονοπάτια για όλα τα Ζεύγη Λύση υναµικού Προγραµµατισµού Ο αλγόριθµος των Floyd-Warshal ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-
Βραχύτερα Μονοπάτια Με δεδοµένο ένα κατευθυνόµενο γράφο µε βάρη G=(V,E), και µια συνάρτηση βαρών w: E R, θέλουµε να βρούµε, για κάθε ζεύγος κορυφών (u, v) το βάρος του ελάχιστου µονοπατιού µεταξύ των δύο κορυφών στον G. ηλαδή, αν V =n, θέλουµε να υπολογίσουµε ένα πίνακα n n ο οποίος να περιέχει όλα τα δ(u,v). Λύση Τρέξε τον αλγόριθµο Bellman-Ford, n φορές, µια φορά για κάθε κορυφή. Πολυπλοκότητα λύσης : n Θ(n E )= Θ(n² E ) ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-
Λύση υναµικού Προγραµµατισµού Παριστάνουµε τo γράφο µε τον πίνακα βαρών W, όπου W[i]=, για κάθε i. Συµβολισµός: d[j,m] συµβολίζει το βάρος του βραχύτερου µονοπατιού από την κορυφή i στην κορυφή j το οποίο χρησιµοποιεί m ακµές. Αναδροµικός ορισµός της βέλτιστης λύσης: d[ d[, j,] =, j, m] = min αν i = j αν i { d[ k, m ] w[ k, j] } k + j m- ακµές j i ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-3
Λύση υναµικού Προγραµµατισµού Έστω D m ο πίνακας που περιέχει στη θέση D m [j] την τιµή d[j,m]. Η πιο κάτω διαδικασία υπολογίζει τον πίνακα D m, υποθέτοντας γνώση των πινάκων D m- και W. distance(m){ for(i=; i n; i++) for(j=; j n; j++) for (k=; k n; k++) d[j,m]= min(d[j,m-], d[k,m-] + w[k,j]) } Χρονική Πολυπλοκότητα της distance: Θ(n³) ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-
Λύση υναµικού Προγραµµατισµού εδοµένου ότι δεν υπάρχουν κύκλοι αρνητικού βάρους, λύση στο πρόβληµα δίνεται από τις τιµές του πίνακα D n-. Άρα θα πρέπει να εφαρµόσουµε τη διαδικασία distance, n- φορές. Σηµείωση: Ο πίνακας D µπορεί να υπολογιστεί εύκολα Συνολική χρονική πολυπλοκότητα: (n-) Θ(n³)=Θ(n ). Όχι καλύτερη από την πολυπλοκότητα της λύσης. ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-5
Σχέση του προβλήµατος µε πολλαπλασιασµό πινάκων Θυµηθείτε τον ορισµό του πολλαπλασιασµού πινάκων: c Συγκρίνετέ το µε ij = k b Η τελευταία εξίσωση µπορεί να θεωρηθεί σαν ένας γενικευµένος πολλαπλασιασµός των πινάκων D m- και W για να δώσουν τον πίνακα D m, όπου οι πράξεις και +, του συνήθους πολλαπλασιασµού, έχουν αντικατασταθεί µε τις πράξεις + και min αντίστοιχα. a ik kj { d[ k, m ] w[ k, ] } d[ j, m] = min k + j ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-6
Σχέση του προβλήµατος µε πολλαπλασιασµό πινάκων Μπορούµε λοιπόν να γράψουµε D m = D m- W πράξη γενικευµένου πολλαπλασιασµού. Toουδέτερο στοιχείο του γενικευµένου πολλαπλασιασµού είναι ο πίνακας...... I =...... Παρατηρούµε ότι Ι=D!! ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-7
Βελτίωση Έχουµε λοιπόν D = D W= W D = D W = W W = W² D n- = D n- W = W n- W = W n- Άρα µε βάση αυτή την ιδέα, υπολογίζουµε τις n- γενικευµένες δυνάµεις του πίνακα W, και επιστρέφουµε σαν αποτέλεσµα τον πίνακα W n-. Χρονική πολυπλοκότητα: ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-8
Βελτίωση Μετατρέπουµε τον πιο πάνω αλγόριθµο ως εξής: Αντί να υπολογίζουµε όλες τις γενικευµένες δυνάµεις υπολογίζουµε µόνο τις γενικευµένες δυνάµεις σε δύναµη του, δηλαδή, υποθέτοντας απλοποιητικά ότι το n- είναι δύναµη του : W,W, W,..., W lg( n ) = W n χρησιµοποιώντας το γεγονός ότι W k W k = W k το οποίο ισχύει, αφού η πράξη είναι προσεταιριστική (γιατί;). Χρονική Πολυπλοκότητα: Θ(lg n) Θ(n³) = Θ(lg n n³) πλήθος των γενικευµένων τετραγωνισµών ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-9
Ο αλγόριθµος των Floyd-Warshall Χρησιµοποιεί επίσης δυναµικό προγραµµατισµό, αλλά είναι ταχύτερος κατά έναν συντελεστή lg n. Συµβολισµός: c[j,m] συµβολίζει το βάρος του βραχύτερου µονοπατιού από την κορυφή i στην κορυφή jµε ενδιάµεσες κορυφές που ανήκουν στο σύνολο {,, m}. i m m m m j Αναδροµικός ορισµός της βέλτιστης λύσης: c[ c[ j,] = w[ j] j, m] = min( c[ j, m ], c[ m, m ] + c[ m, j, m ]) ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-
Ο αλγόριθµος των Floyd-Warshall Επεξήγηση του αναδροµικού βήµατος: m c[m,m-] c[m,j,m-] i j c[j,m-] Παρατήρηση: σηµαντική διαφορά από την προηγούµενη αναδροµική σχέση είναι ότι τώρα εξετάζεται µόνο µια καινούρια κορυφή πηγαίνοντας από το c[j,m-] στο c[j,m], ενώ η προηγούµενη εξέταζε όλες τις κορυφές. ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-
Ο αλγόριθµος των Floyd-Warshal Μπορούµε να υπολογίσουµε τα c[j,m] ως εξής: cost(){ for all j c[j,] = w(j); for(m=; m n; m++) for (i=; i n; i++) for (j=; j n; j++) c[j,m]= min(c[j,m-], c[m,m-]+c[m,j,m-]) } Χρονική πολυπλοκότητα: Για πυκνούς γράφους ( E = n²), o αλγόριθµος των Floyd-Warshall δίνει όλα τα βραχύτατα µονοπάτια στον ίδιο χρόνο που ο αλγόριθµος των Bellman-Ford δίνει ένα µόνο βραχύτατο µονοπάτι. ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-
ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 7-3 Παράδειγµα 3 5 3 3 6 5 7 [] 3 6 5 9 C[3] 3 5 [] [] C[] 3 5 [] = = = = = C C C C