Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Σχετικά έγγραφα
Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Γράφοι (συνέχεια) Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler

ΕΠΛ 232 Φροντιστήριο 2

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Αλγόριθµοι Οπισθοδρόµησης

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

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

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

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

Συντομότερες Διαδρομές

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

Ελαφρύτατες διαδρομές

Συντομότερες ιαδρομές

Συντομότερες Διαδρομές

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Συντομότερες ιαδρομές

Συντομότερες ιαδρομές

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Προσεγγιστικοί Αλγόριθμοι

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Λυσεις Ασκησεων - Φυλλαδιο 4

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

Θεωρία Γραφημάτων 5η Διάλεξη

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

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

Ταιριάσματα. Γράφημα. Ταίριασμα (matching) τέτοιο ώστε κάθε κορυφή να εμφανίζεται σε το πολύ μια ακμή του

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις Επαναληψης

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Προτεινοµενες Ασκησεις - Φυλλαδιο 9

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος)

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Ασκησεις - Επανάληψης. ιδασκων: Α. Μπεληγιάννης Ιστοσελιδα Μαθηµατος :

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 4

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 4

Διάλεξη 4: Απόδειξη: Για την κατεύθυνση, παρατηρούμε ότι διαγράφοντας μια κορυφή δεν μπορούμε να διαχωρίσουμε τα u και v. Αποδεικνύουμε

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Ασκησεις - Φυλλαδιο 4. ιδασκων: Α. Μπεληγιάννης Ιστοσελιδα Μαθηµατος :

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 8

d(v) = 3 S. q(g \ S) S

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

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Αξιολόγηση Ευριστικών Αλγορίθµων

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: Δομές Δεδομένων και Αλγόριθμοι. Εαρινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ

Αλγόριθμοι και πολυπλοκότητα Τα συντομότερα μονοπάτια(shortest Paths)

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Ασκησεις Επαναληψης. ιδασκων: Α. Μπεληγιάννης Ιστοσελιδα Μαθηµατος :

Σειρά Προβλημάτων 5 Λύσεις

Αρµονική Ανάλυση. Ενότητα: L p Σύγκλιση. Απόστολος Γιαννόπουλος. Τµήµα Μαθηµατικών

Αναζήτηση Κατά Πλάτος

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Λυσεις Ασκησεων - Φυλλαδιο 3

q(g \ S ) = q(g \ S) S + d = S.

Θεωρία Γραφημάτων 5η Διάλεξη

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Αρµονική Ανάλυση. Ενότητα: Προσεγγίσεις της µονάδας και Αθροισιµότητα - Ασκήσεις. Απόστολος Γιαννόπουλος. Τµήµα Μαθηµατικών

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

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

Συντομότερα Μονοπάτια για Όλα τα Ζεύγη Κορυφών

4.4 Το πρόβλημα του ελάχιστου ζευγνύοντος δένδρου

Θεωρία Γραφημάτων 10η Διάλεξη

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

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

3η Σειρά Γραπτών Ασκήσεων

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

Κατ οίκον Εργασία 4 Σκελετοί Λύσεων

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Διάλεξη 4: Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος συνεκτικά γραφήματα (συνέχεια) Πρόταση 4.1 Δύο μπλοκ ενός

Σειρά Προβλημάτων 5 Λύσεις

Προσεγγιστικοί Αλγόριθμοι

Κεφάλαιο 7 Βασικά Θεωρήµατα του ιαφορικού Λογισµού

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

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

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

4. ΔΙΚΤΥΑ

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

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

u v 4 w G 2 G 1 u v w x y z 4

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3

Γράφοι: κατευθυνόμενοι και μη

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 9

Transcript:

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων 1. Ο αλγόριθµος κτίζει όλες τις δυνατές αναθέσεις εργασιών στους φοιτητές (υπάρχουν n! διαφορετικές αναθέσεις) και επιστρέφει εκείνη µε το µέγιστο βαθµό καταλληλότητας. Το κτίσιµο των αναθέσεων γίνεται ως εξής. Ξεκινούµε µε την κενή ανάθεση αξίας 0 (jobs[n], val = 0 στον κώδικα) και την επεκτείνουµε σε µία 1-υποσχόµενη ανάθεση, 2- υποσχόµενη ανάθεση, και ούτω καθεξής, όπου µία ανάθεση είναι -υποσχόµενη αν αναθέτει στους πρώτους φοιτητές διαφορετικές εργασίες. Η επέκταση µιας ανάθεσης υλοποιείται κατά τις επαναλήψεις του βρόχου στην περίπτωση < n, όπου η εργασία που ανατίθεται στον -οστό φοιτητή είναι η k. Ταυτόχρονα ο βαθµός καταλληλότητας val της ανάθεσης αυξάνεται κατάλληλα. Όταν µία n-υποσχόµενη ανάθεση ολοκληρωθεί (συνθήκη == n στον κώδικα) συγκρίνεται µε την καλύτερη ανάθεση που έχει βρεθεί µέχρι στιγµής (στον κώδικα η best[n] αξίας max) και, αν είναι καλύτερη, η τιµή της best ανανεώνεται κατάλληλα. Για υπολογισµό της επόµενης ανάθεσης, εφαρµόζεται οπισθοδρόµηση. Στόχος της οπισθοδρόµησης είναι η εύρεση του πρώτου φοιτητή (ξεκινώντας από τον τελευταίο και προχωρώντας προς τον πρώτο) στον οποίο µπορεί να δοθεί κάποια άλλη εργασία. Παρατηρήστε ότι, σε κάθε φάση, στον φοιτητή δίνεται η εργασία µε τον µικρότερο αριθµό από εκείνες που δεν του έχουν ήδη δοθεί και που δεν είναι δεσµευµένες από τους φοιτητές 1..-1. Κατά συνέπεια η συνθήκη k > n στον κώδικα εκφράζει ότι δεν υπάρχουν άλλες δυνατές αναθέσεις για τον φοιτητή. Σε τέτοια περίπτωση οπισθοδροµούµε στον φοιτητή -1. Αν το πάρει την τιµή 0 συµπεραίνουµε ότι ο αλγόριθµος έχει κτίσει όλες τις δυνατές αναθέσεις, και επιστρέφουµε την ανάθεση που είναι αποθηκευµένη ως best. nt jobs[n]; nt val = 0; nt best[n]; nt max = 0; nt = 1; whle ( <= n){ f ( < n) k = smallest job not already n jobs[1..-1]; jobs[] = k; val =+ compatblty (,k); ++; f ( == n) f (val > max) max = val; best = jobs; whle ( > 0 AND k > n) k = smallest job not already n jobs[1..-2] 1

greater than jobs[-1]; --; f ( == 0) return best; else jobs[] = k; val =+ compatblty (,k); ++; } Ο χρόνος εκτέλεσης του αλγορίθµου είναι της τάξης Ο(n!). 2. (α) Χρησιµοποιούµε ένα πίνακα V[1..n, 1..W, 1..R]. Στη θέση V[,k] του πίνακα θα αποθηκεύουµε τη µέγιστη αξία συλλογής αντικειµένων από το σύνολο 1.. της οποία το βάρος δεν ξεπερνά το βάρος j και τον όγκο k. Έχουµε τη σχέση v, max( V[ 1, k], V[, k] = V[ 1, j w, k r ] + v ), V [ 1, k], 0, f = 1, w f > 1, w f > 1, w otherwse Υπολογίζουµε το V[n,W,R], ξεκινώντας από το V[1,1,1],,V[1,1,R], V[1,2,1],,V[1,2,R],, V[1,W,1],,V[1,W,R], και προχωρώντας στο V[2,_], V[3,_],. (β) ηµιουργούµε ένα γράφο µε βάρη (V,E), οι κόµβοι του οποίου είναι τριάδες της µορφή (S, w, r). Θέτουµε - (S, w, r) V, αν S είναι κάποιο υποσύνολο των αντικειµένων µε συνολικό βάρος w W και συνολικό όγκο r R, και - ((S, w, r), (S, w, r )) Ε, αν S = S {}, w = w + w, r = r + r. Θέτουµε ως βάρος της ακµής την τιµή -v. Παρατηρούµε ότι ο γράφος δεν περιέχει κύκλους. Με αυτή τη µοντελοποίηση, τo πρόβληµα µας ανάγεται στην εύρεση του βραχύτερου µονοπατιού από τον κόµβο (, 0, 0) και µπορεί να λυθεί µε τον αλγόριθµο των Bellman-Ford. (Αφού ο γράφος είναι άκυκλος, το πρόβληµα ορίζεται). Η χρονική πολυπλοκότητα του αλγορίθµου είναι V E. Παρατηρούµε ότι, στη χείριστη περίπτωση, όπου όλες οι δυνατές επιλογές αντικειµένων ικανοποιούν τους περιορισµούς βάρους και όγκου, ο γράφος περιέχει 2 n κόµβους (κάθε αντικείµενο µπορεί είτε να βρίσκεται είτε να µην βρίσκεται σε κάποια συλλογή) και ο αλγόριθµος έχει εκθετικό χρόνο εκτέλεσης. > r k j and r j or r k > k 2

3. (α) Ο πιο κάτω γράφος, χωρίς να έχει κύκλους αρνητικού µεγέθους, προκαλεί την αποτυχία του αλγορίθµου του Djkstra. Γ 2-2 Α Β 1 1 Η αποτυχία προκαλείται λόγω του ότι, στην παρουσία ακµών αρνητικού µεγέθους, είναι δυνατόν µία κορυφή v να µπει στο σύνολο S (δες αλγόριθµο) χωρίς να έχει υπολογιστεί η µικρότερη προς αυτήν απόσταση, δηλαδή, χωρίς να έχει τεθεί d[v] = δ(s,v) (Θεώρηµα 2). Αυτό έχει ως αποτέλεσµα, αφού κάθε κορυφή τυγχάνει επεξεργασίας ακριβώς µία φορά, ακόµα και αν το d[v] πάρει στη συνέχεια την ορθή του τιµή, να µην ενηµερωθούν κατάλληλα οι γείτονες του v. Στο παράδειγµα, η Β τυγχάνει επεξεργασίας όταν d[β] = 1, δίνοντας d[ ] = 2, το οποίο δεν αλλάζει στη συνέχεια. (β) Σε αυτή την περίπτωση ο αλγόριθµος είναι ορθός. Αρκεί να δείξουµε ότι όταν µια κορυφή u µπαίνει στο S, τότε d[u] = δ(s,u). Απόδειξη Υποθέτουµε, για να φτάσουµε σε αντίφαση, ότι η u είναι η πρώτη κορυφή η οποία, κατά την εκτέλεση του αλγόριθµου, µπαίνοντας στο S έχει d[u] µεγαλύτερο από το βάρος του βραχύτερου µονοπατιού µεταξύ της u και της s. Έστω p = s x u το βραχύτερο µονοπάτι από την s στη u. Αν x = u, δηλαδή το µονοπάτι έχει µήκος 1, τότε είναι προφανές ότι κατά την επεξεργασία της s από τον αλγόριθµο το d[x] παίρνει την ορθή του τιµή η οποία δεν αλλάζει στη συνέχεια. ιαφορετικά, έστω y η `πρώτη κορυφή στο V-S που ανήκει στο βραχύτερο µονοπάτι από την s στη u. (Αν δεν υπάρχει τέτοια κορυφή, τότε, το αποτέλεσµα αποδεικνύεται όπως πιο πάνω.) s S x y u V Αφού η x µπήκε στο S πριν από την u, d[x]=δ(s,x). Επίσης, µε την εισαγωγή του x στο S, ετέθει d[y]=d[x]+w(x,y), το οποίο είναι το κόστος του υποµονοπατιού στο σχήµα. Αφού το µονοπάτι από τo s στο u, είναι βραχύτερο, τότε από τη δοµή βέλτιστης λύσης συνεπάγεται ότι το υποµονοπάτι s x y από το s στο y είναι επίσης βραχύτερο. Άρα d[y] = δ(s,y). 3

Έτσι: d[u] > δ(s,u) (αρχική υπόθεση) = δ(s,y) + δ(y,u) (δοµή βέλτιστης λύσης) = d[y] + δ(y,u) (d[y] = δ(s,y)) d[y] (τα βάρη στο µονοπάτι δ(y,u) είναι 0) Αφού d[u] > d[y], ο αλγόριθµος θα διάλεγε και θα εισήγαγε τη y στο S και όχι τη u. Αντίφαση! (γ) Ακολουθεί ο ζητούµενος αλγόριθµος. Μετά από τις απαραίτητες αρχικοποιήσεις, αν κατά την εκτέλεση του αλγορίθµου, κάποιος κόµβος u επιτρέψει µονοπάτι προς κάποιο κόµβο v µε µικρότερο βάρος από αυτό που ήδη γνωρίζουµε, τότε ο αριθµός των µονοπατιών προς τον v γίνεται όσος και τα µονοπάτια προς τον u. Αν ο u επιτρέψει µονοπάτι προς τον v µε ίδιο βάρος µε αυτό που ήδη γνωρίζουµε, τότε ο αριθµός των µονοπατιών προς τον v αυξάνεται κατά τον αριθµό µονοπατιών προς τον u. heap Q; for all v V d[v]= ; num[v]=0; d[s]=0; num[s]=1; S= ; Q=V; whle (Q ){ u=deletemn(q); S=S {u}; για κάθε γείτονα v του u f d[v]>d[u]+w(u,v) d[v]=d[u]+w(u,v); num[v]=num[u]; f d[v]== d[u]+w(u,v) num[v]=+num[u]; } 4. Για επίλυση του προβλήµατος, επεκτείνουµε κατάλληλα τον αλγόριθµο των Floyd- Warshal. Συγκεκριµένα χρησιµοποιούµε εκτός από τον πίνακα c, τον πίνακα nf, όπου nf[,m] συµβολίζει τον αριθµό των πτήσεων στη φθηνότερη διαδροµή από την πόλη στην πόλη j µε ενδιάµεσες στάσεις που ανήκουν στο σύνολο {1,2,,m}. for all,j c [,0] = w(,j); nf[,0] = 1; for(m=1; m n; m++) for (=1; n; ++) for (j=1; j n; j++) 4

f (c[,m-1] > c[,m,m-1]+c[m,m-1]) OR [(c[,m-1] == c[,m,m-1] + c[m,m-1]) AND (nf[,m-1] > nf[,m,m-1] + nf[m,m-1])] c[,m] = c[,m,m-1]+ c[m,m-1]); nf[,m] = nf[,m,m-1]+ nf[m,m-1]); 5