ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Σχεδίαση και Ανάλυση Αλγορίθμων Διδάσκων: Ε. Μαρκάκης, Φθινοπωρινό εξάμηνο 014-015 Λύσεις 1ης Σειράς Ασκήσεων Πρόβλημα 1. Σχεδιάστε έναν αλγόριθμο δυναμικού προγραμματισμού που λύνει το 0 1- KNAPSACK σε χρόνο O(n v max ), όπου ν είναι ο αριθμός των αντικειμένων, και v max είναι η μέγιστη αξία ενός αγαθού. Μια ιδέα για το πώς να σχεδιάσετε τον αλγόριθμο περιγράφεται στις διαφάνειες. Απάντηση. [Βίτσας, Κοτσώνης]. Εστω A πίνακας δυναμικού προγραμματισμού. Κάθε κελί του Α ( έστω A[i,p] ) ϑα έχει τη μικρότερη χωρητικότητα για τη επίτευξη της συνολικής τιμής p με τα αντικείμενα { o 1, o,..., o i }. Οι γραμμές του πίνακα A ϑα είναι 0,1,...n και οι στήλες ϑα έχουν p {0,1,...,P} όπου P = n i=1 t i. Θα αναθέσουμε στον A[i,p] αν δεν υπάρχει υποσύνολο του { o 1, o,..., o i } του οποίου η συνολική τιμή είναι p. { i f i == 0 and p > 0 A[i, p] = 0 i f p == 0 Θέτουμε A[0,p] για 0 < p < P επειδή χρησιμοποιώντας ενα κενό σύνολο αντικειμένων, δεν μπορούμε να πετύχουμε καμιά συνολική τιμή που είναι μεγαλύτερη του 0. Επίσης ϑέτουμε A[i,0] για 0 i n γιατί δεν μπορούμε να λάβουμε τιμή 0 με περισσότερα από 0 αντικείμενα. Από τα παραπάνω, για κάθε βήμα του αλγορίθμου ( για κάθε 1 p P ) ϑα χρησιμοποιήσουμε την παρακάτω αναδρομική σχέση. { min{a[i, p], A[i, p vi+1 ] + w A[i + 1, p] = i+1 } i f V i+1 p A[i, p] αλλιώς Για κάθε βήμα, αυτό που σκεφτόμαστε ειναι πότε να προσθέσουμε το (i+1) th αντικείμενο στο σάκο ώστε να πετύχουμε μια συνολική τιμή p. Εφαρμόζουμε την αναδρομική σχέση γραμμή-γραμμή για μια σταθερή τιμή p. Αναθέτουμε τιμές στο A[i + 1, p] για 0 i n 1. Αυξάνουμε το p κατα 1 και αναθέτουμε τιμή ξανά στο A[i + 1, p] για 0 i n 1. Στη συνέχεια, παίρνουμε A[i, p] αν v i+1 > p επειδή αν η τιμή του (i + 1) th αντικειμένου είναι μεγαλύτερη από τη τιμή p, υπάρχει η πιθανότητα να μην προσθέσουμε το (i + 1) th αντικείμενο στο σάκο. Η σχέση min{a[i, p], A[i, p v i+1 ]+w i+1 } προσδιορίζει κατά πόσο ϑα προσθέσουμε το (i+1) th 1
αντικείμενο στο σάκο ή οχι. Οταν το προσθέσουμε αυτό το αντικείμενο τότε η συνολική τιμή ϑα γίνει: p V i+1 + v i+1 = p και η απαιτούμενη χωρητικότητα A[i, p v i+1 ] + w i+1. Αν αυτή η χωρητικότητα είναι μεγαλύτερη από A[i,p] σημαίνει οτι δεν χρειάζεται να προσθέσουμε το (i + 1) th αντικείμενο στο σάκο. Αν A[i, p v i+1 ] + w i+1 είναι μικρότερο του A[i,p] σημαίνει οτι πρέπει να το προσθέσουμε. Algorithm 1 Algorithm 1: for p 0 to P do : for i V max to P do 3: if V i+1 > p thn 4: A[i + 1, p] = A[i, p] 5: ls if A[i, p] < A[i, p v i + 1] + w i+1 thn 6: A[i + 1, p] = A[i, p] 7: ls 8: A[i + 1, p] < A[i, p v i + 1] + w i+1 9: nd if 10: nd for 11: nd for 1: rturn row with max p so that calculatd w is lss than W Η πολυπλοκότητα του αλγορίθμου είναι O(nP) με P = n i=1 t i. Άρα: O(nP) = O(n n i=1 t i ) O(n n v max ) = O(n v max ) Πρόβλημα 3. Το πρόβλημα Max -covrag ορίζεται ως εξής: Εχουμε ένα σύνολο U από n στοιχεία και μια οικογένεια συνόλων S 1,..., S m με S i U. Ο στόχος είναι να επιλέξουμε από αυτά τα υποσύνολα, έστω S i1,..., S i, έτσι ώστε να καλύψουμε το μέγιστο δυνατό αριθμό από στοιχεία του U. Θέλουμε δηλαδή να μεγιστοποιήσουμε το S i1... S i. 1. Δείξτε ότι το πρόβλημα είναι NP-complt (το dcision vrsion του προβλήματος).. Αποδείξτε ότι ο grdy αλγόριθμος που σε κάθε επανάληψη επιλέγει το σύνολο που περιέχει τα περισσότερα ακάλυπτα στοιχεία έχει λόγο προσέγγισης 1 (1 1 ) > 1 1 ɛ. Απάντηση. [Καρύδης, Μπουρσίνος, Μπουρτσουκλή] 1. Το Max -covrag είναι το dcision πρόβλημα, όπου βάση της ύπαρξης ενός συνόλου S = {S 1,..., S m }, ενός συνόλου από στοιχεία U = {U 1,...U n } και ενός ακεραίου p,
απαντάει αν υπάρχει υποσύνολο S, μεγέθους το πολύ, τέτοιο ώστε να καλύπτονται το λιγότερο p στοιχεία του U. Επιπλέον, γνωρίζουμε ότι στο dcision πρόβλημα του St Covr, δεδομένου της ύπαρξης ενός συνόλου S = {S 1,..., S m } και ενός συνόλου από στοιχεία U = {U 1,...U n }, απαντάει αν υπάρχει υποσύνολο S, μεγέθους, τέτοιο ώστε να καλύπτονται και τα n στοιχεία του U. Επομένως ϑέτοντας το p = n, το Max -covrag ανάγεται στο St Covr. Η προαναφερθείσα αναγωγή γίνεται σε πολυωνυμικό χρόνο και δεδομένου ότι το St Covr είναι NP-Complt πρόβλημα, επομένως και το Max -covrag είναι NP-Complt.. Θέλουμε να αποδείξουμε ότι ο Γρεεδψ αλγόριθμος που σε κάθε επανάληψη επιλέγει το σύνολο που περιέχει τα περισσότερα ακάλυπτα στοιχεία έχει λόγο προσέγγισης 1 (1 1 ) > 1 1. Στην ανάλυση που ϑα κάνουμε, η OPT υποδηλώνει τη βέλτιστη λύση του προβλήματος Max--covrag, x i δηλώνει τον αριθμό των νέων στοιχείων που καλύπτονται στην i επανάληψη, y i είναι ο συνολικός αριθμός των καλυπτόμενων στοιχείων μέχρι την i επανάληψη, δηλαδή y i = Σ i j=1 x j και z i είναι ο αριθμός των μη καλυπτόμενων στοιχείων μετά την επανάληψη i, δηλαδή z i = OPT y i. Ωστόσο x 0 = y 0 = 0 και z 0 = OPT. Ακόμα για να αποδειχθεί ο παραπάνω λόγος πρέπει πρώτα να αποδείξουμε δύο ισχυρισμούς. 1 os Ισχυρισμός. Ο αριθμός των νέων καλυπτόμενων στοιχείων στην (i + 1) επανάληψη είναι πάντα μεγαλύτερος ή ίσος από το 1 του αριθμού των ακάλυπτων στοιχείων μετά την i επανάληψη, δηλαδή, x i+1 z i. Απόδειξη 1 oυ ισχυρισμού. Η βέλτιστη λύση καλύπτει OPT στοιχεία σε επαναλήψεις. Αυτό σημαίνει ότι σε κάθε επανάληψη ϑα πρέπει να υπάρχουν κάποια σύνολα, τα οποία το μέγεθός τους είναι μεγαλύτερο ή ίσο από το 1 των υπολοίπων ακάλυπτων στοιχείων, δηλαδή, z i. Αλλιώς, ϑα ήταν αδύνατο να καλυφθούν τα OPT στοιχεία σε βήματα από την βέλτιστη λύση. Αφού ο προσεγγιστικός αλγόριθμος είναι Grdy, επιλέγω πάντα το σύνολο που καλύπτει το μέγιστο αριθμό των ακάλυπτων στοιχείων, το οποίο σε κάθε επανάληψη ϑα πρέπει να είναι το λιγότερο το z i των υπολοίπων ακάλυπτων στοιχείων, δηλαδή, x i+1 z i 3
os Ισχυρισμός. Θα αποδείξω ότι z i+1 (1 1 )i+1 OPT. Απόδειξη. Η απόδειξη ϑα γίνει μέσω αναγωγής. Αρχικά ϑα δείξω ότι ισχύει για i = 0. z 1 (1 1 ) OPT z 1 OPT OPT 1 OPT y 1 OPT OPT 1 αφού z i = OPT y i y 1 OPT 1 y 1 OPT 1 x 1 OPT 1 αφού x 1 = y 1 x 1 z 0 1 αφού z 0 = OPT από υπόθεση Από τον ισχυρισμό 1, γνωρίζουμε ότι x 1 z 0 1. Άρα, η απόδειξη για i = 0 ισχύει. Τώρα για την αναγωγή, υποθέτω ότι ισχύειz i (1 1 )i OPT, ϑα δείξω ότι ισχύει και το z i+1 (1 1 )i+1 OPT. z i+1 = z i x i+1 από τον ορισμό του z i = OPT Σ i x j=1 j z i+1 z i z i από τον 1 o ισχυρισμό z i+1 z i (1 1 ) z i+1 (1 1 )i OPT (1 1 ) από υπόθεση z i+1 (1 1 )i+1 OPT Τώρα ϑα δείξουμε ότι ο Γρεεδψ αλγόριθμος έχει λόγο προσέγγισης (1 1 ). Από τον o ισχυρισμό γνωρίζουμε ότι z (1 1 ) OPT. Αφού (1 1 ) 1, ϑα έχω z OPT. Δηλαδή, y = OPT z OPT z OPT OPT OPT (1 1 ) OPT > OPT OPT OPT (1 (1 1 ) ) > OPT (1 1 ) (1 (1 1 ) ) > (1 1 ) από τον ορισμό του y Πρόβλημα 4. Εχουμε δει ότι το πρόβλημα Vrtx Covr είναι συμπληρωματικό του προβλήματος Cliqu. Συγκεκριμένα, είδαμε στις διαφάνειες ότι το πρόβλημα Cliqu μπορεί να αναχθεί στο Vrtx Covr χρησιμοποιώντας το συμπλήρωμα του αρχικού γράφου. Μπορεί αυτή η αναγωγή να χρησιμοποιηθεί για να δείξουμε ότι ο -προσεγγιστικός αλγόριθμος που είδαμε για το Unwightd Vrtx Covr συνεπάγεται έναν προσεγγιστικό αλγόριθμο 4
για το Cliqu, με λόγο προσέγγισης ή κάποια άλλη σταθερά; Αν ναι, δείξτε γιατί, αν όχι, επιδείξτε ένα παράδειγμα. Απάντηση. [Αργυρός, Γκούμας] Cliqu p Vrtx Covr Υπάρχει Κλίκα μεγέθους Κ σε ένα γραφο G(V, E) Υπάρχει Vrtx Covr μεγέθους V - Κ στο G c (V,E c ) A Εστω Α ένας approximation Αλγόριθμος για το Vrtx Covr,. Ο αλγόριθμος Opt Α δεν μπορεί να χρησιμοποιηθεί για να προσεγγίσουμε το προβλημα Cliqu. Εστω ένας γράφος G(V, E) με κλίκα μεγέθους V. Αυτό σημαίνει ότι ο Gc (V,E c ) ϑα έχει Vrtx Covr μεγέθους V - V V. Χρησιμοποιώντας τον Αλγόριθμο Α ϑα παίρναμε ένα Vrtx Covr μεγέθους * V V. Αυτό συνεπάγεται ότι ϑα έχουμε σαν output για V την κλίκα 0 κόμβους, v v 0, 0 Πρόβλημα 5. Εστω ένας κατευθυνόμενος γράφος G = (V, E). Θέλετε να διαλέξετε ένα μέγιστο σύνολο από ακμές, έστω E E, έτσι ώστε ο γράφος που προκύπτει από αυτές τις ακμές G = (V, E ), να μην έχει κύκλους. Δώστε έναν 1/-προσεγγιστικό αλγόριθμο για το πρόβλημα αυτό. Απάντηση. [Καρόζος, Μιχολιά, Φιλιππίδου] Ο αλγόριθμος αρχικά ονομάζει τους κόμβους με αυθαίρετο τρόπο από το 1 έως το n. Στην συνέχεια δημιουργεί δύο σύνολα ακμών ως εξής: Το σύνολο forward-going περιλαμβάνει τις ακμές της μορφής (i, j) με i < j. Το σύνολο bacward-going περιλαμβάνει τις ακμές της μορφής (i, j) με i > j. Τέλος ο αλγόριθμος επιστρέφει ως λύση το μεγαλύτερο από αυτά τα δύο σύνολα. Θα δείξουμε ότι ο παραπάνω αλγόριθμος έχει προσέγγιση 1/. Ενας κατευθυνόμενος κύκλος περιέχει τουλάχιστον μια forward-going και μια bacwardgoing ακμή. Ισχύει επίσης ότι OPT E δηλαδή ϑα περιέχει το πολύ όλες τις ακμές. Η λύση που επιστρέφει ο αλγόριθμος ϑα είναι max{w(a 1 ), w(a )} για το οποίο ισχύει: max{w(a 1 ), w(a )} 0, 5 w(a) δηλαδή η λύση του αλγορίθμου (S OL) ϑα περιέχει τουλάχιστον τις μισές ακμές του γράφου. Αφού τα A 1, A είναι άκυκλα ισχύει ότι A 1 A = A. Επομένως S OL E / OPT E Άρα προκύπτει OPT E S OL OPT S OL Πρόβλημα 6. Θεωρήστε το πρόβλημα DEGREE WEIGHTED VERTEX COVER, στο οποίο για ένα γράφο G = (V, E), το βάρος κάθε κορυφής v V είναι w(v) = c d(v), όπου d(v) είναι ο 5
βαθμός της κορυφής v και c είναι μια σταθερά. Το πρόβλημα είναι πάλι να βρούμε μια κάλυψη κορυφών ελαχίστου βάρους. Αποδείξτε ότι οποιοσδήποτε αλγόριθμος επιτυγχάνει λόγο προσέγγισης το πολύ (εννοούμε οποιοσδήποτε αλγόριθμος που επιστρέφει σε κάθε instanc ένα vrtx covr). Απάντηση. [Πετρίδης, Σπυριδάκης, Τσελεπάκης] Εστω μια βέλτιστη λύση OPT V με κόστος C = u OPT c d(u) και η λύση ενός προσεγγιστικού αλγορίθμου S OL V με κόστος C = u S OL c d(u). Για την OPT γνωρίζουμε ότι: u OPT d(u) E (1), αφού εφόσον η λύση καλύπτει όλες τις ακμές του γράφου E, κάθε μια από αυτές συνεισφέρει τουλάχιστον έναν βαθμό στο άθροισμα. (1) C = u OPT c d(u) = c u OPT d(u) c E, c > 0 C c E () Για κάθε γράφο G = (V, E) ισχύει ότι: u V d(u) = E (3), αφού κάθε ακμή συνεισφέρει με δύο βαθμούς ακριβώς στο άθροισμα. Για την S OL ισχύει: (3) u S OL d(u) E (4), αφού S OL V. (4) C = u S OL c d(u) c E, c > 0 C c E (5) (),(5) C C. Συνεπώς ο λόγος προσέγγισης οποιουδήποτε αλγορίθμου είναι το πολύ. 6