Εισαγωγή στο Σχεδιασμό & την Ανάλυση Αλγορίθμων Εξέταση Φεβρουαρίου 2016 Σελ. 1 από 7 Στη σελίδα αυτή γράψτε μόνο τα στοιχεία σας. Γράψτε τις απαντήσεις σας στις επόμενες σελίδες, κάτω από τις αντίστοιχες ερωτήσεις. Στις απαντήσεις σας μην ξεπερνάτε, για οποιοδήποτε λόγο, τα καθορισμένα όρια για τις απαντήσεις. Σελίδες για πρόχειρο θα σας δοθούν χωριστά. Γράψτε τον ΑΜ σας σε όλες τις σελίδες (και ονοματεπώνυμο και ΑΜ στο πρόχειρο). Επώνυμο: Όνομα: ΑΜ: Βαθμοί 1 2α 2β 2γ 3 (3) Σύνολο Κ Ε
ΑΜ: Σελ. 2 από 7 Θέμα 1 [2 μονάδες]. Έστω δέντρο ύψους h 1 με n κόμβους όπου κάθε κόμβος έχει ακριβώς δύο παιδιά, εκτός ενδεχομένως των κόμβων που βρίσκονται σε βάθος (απόσταση από τη ρίζα) h 1, μερικοί από τους οποίους ενδέχεται να έχουν < 2 παιδιά. Αν log 2 n ακέραιος, να υπολογίσετε το πλήθος των κόμβων n ως συνάρτηση του ύψους h. Απάντηση: Μέχρι το βάθος h 2, κάθε κόμβος έχει ακριβώς δύο παιδιά, επομένως οι κόμβοι βάθους h 1 είναι σε πλήθος 1 + + 2 h 1 = 2 h 1. Για να έχει το δέντρο ύψος h πρέπει να έχει από 1 έως 2 h φύλλα. Επομένως έχουμε ότι 2 h n 2 h 1 + 2 h, επομένως h log 2 n < h + 1, άρα, αφού log 2 n ακέραιος, έχουμε ότι n = 2 h.
ΑΜ: Σελ. 3 από 7 Έστω {S 1... S k } πεπερασμένα υποσύνολα των φυσικών όλα πλήθους ακριβώς M. Έστω ακόμη N δεδομένος φυσικός Mk. Θέμα 2α [2 μονάδες]. Να περιγράψετε πολύ σύντομα άπληστο αλγόριθμο ο οποίος επιλέγει κάποια S i με άθροισμα πληθαρίθμων το πολύ N έτσι ώστε το άθροισμα όλων των στοιχείων όσων συνόλων επιλεγούν να είναι μέγιστο (φυσικός που εμφανίζεται σε περισσότερα του ενός επιλεγόμενα S i μετρά στο άθροισμα τόσες φορές όσες και οι εμφανίσεις του). Απάντηση: Όσο το άθροισμα των πληθαρίθμων των συνόλων που επιλέγουμε δεν ξεπερνά το N, επιλέγουμε σύνολο, μεταξύ όσων δεν έχουν ακόμη επιλεγεί, με το μεγαλύτερο δυνατό άθροισμα στοιχείων.
ΑΜ: Σελ. 4 από 7 Θέμα 2β [2 μονάδες]. Εάν τα S i δεν έχουν αναγκαστικά όλα τον ίδιο πληθάριθμο, αλλά παραμένει ο πληθάριθμος όλων M, εξακολουθεί να είναι ορθός ο αλγόριθμός σας; Να δικαιολογήσετε σύντομα την απάντησή σας. Περίπλοκες δικαιολογίες δεν θα γίνουν αποδεκτές. Απάντηση: Όχι δεν είναι πλέον ο άπληστος αλγόριθμος ορθός. Για παράδειγμα ας θεωρήσουμε τα σύνολα {1, 2}, {2, 3}, {0, 1, 2, 3} και N = 4. Ο άπληστος αλγόριθμος θα επέλεγε μόνο το σύνολο {0, 1, 2, 3}, το οποίο εξαντλεί το επιτρεπόμενο άθροισμα πληθαρίθμων N = 4 και έχει άθροισμα στοιχείων 6, ενώ τα σύνολα {1, 2}, {2, 3} έχουν άθροισμα πληθαρίθμων ίσο με N = 4 και άθροισμα στοιχείων 8.
ΑΜ: Σελ. 5 από 7 Θέμα 2γ [2 μονάδες]. Να αποδειχθεί πολύ προσεκτικά η ορθότητα του άπληστου αλγόριθμου του πρώτου ερωτήματος αυτού του θέματος. Απάντηση: Έστω αλγόριθμος στον οποίο σε κάποιο βήμα δεν επιλέγεται από τα σύνολα που απομένουν αυτό με το μεγαλύτερο δυνατό άθροισμα στοιχείων. Έστω ότι ο αλγόριθμος εκτελεί s βήματα και επιλέγει τα σύνολα S i1,... S is. Ας υποθέσουμε ότι k είναι το πρώτο βήμα στο οποίο δεν επιλέγεται από τα σύνολα που απομένουν αυτό με το μεγαλύτερο δυνατό άθροισμα στοιχείων. Ας καλέσουμε S το σύνολο με το μεγαλύτερο άθροισμα στοιχείων από αυτά που δεν έχουν επιλεγεί μετά το βήμα k 1. Αν το S επιλέγεται σε κάποιο μεταγενέστερο βήμα j > k, τότε μπορούμε να αλλάξουμε τον αλγόριθμο ώστε στο βήμα k να επιλέγεται το S και στο βήμα j το S ik. Αν πάλι το S δεν επιλέγεται σε κάποιο βήμα j > k, τότε μπορούμε να επιλέξουμε στο βήμα k το S χωρίς να αλλάξουμε άλλη επιλογή. Οι αλλαγές που περιγράψαμε, επειδή όλα τα σύνολα έχουν τον ίδιο πληθάριθμο, δεν επηρεάζουν την απαίτηση το άθροισμα των πληθαρίθμων των επιλογών να παραμένει N. Επιπλέον βελτιώνουν (μεγαλώνουν) ή αφήνουν αμετάβλητο το άθροισμα των στοιχείων των συνόλων που επιλέγονται. Συνεχίζοντας με αυτόν τον τρόπο, μπορούμε να πετύχουμε να μην υπάρχει πλέον βήμα k όπου δεν επιλέγεται από τα σύνολα που απομένουν αυτό με το μεγαλύτερο δυνατό άθροισμα στοιχείων.
ΑΜ: Σελ. 6 από 7 Θέμα 3 [3 μονάδες]. Έχουμε έναν n n πίνακα θετικών ακεραίων A. Ξεκινώντας από το στοιχείο A 1,1 κάνουμε 2n βήματα κινούμενοι συνεχώς προς τα κάτω ή προς τα δεξιά, χωρίς να «βγούμε» από τον πίνακα, και καταλήγουμε στο A n,n. Ολοκληρώνοντας μια τέτοια διαδρομή, έχουμε ως κέρδος το άθροισμα των τιμών των στοιχείων που επισκεφθήκαμε. Να υπολογίσετε με αλγόριθμο δυναμικού προγραμματισμού το μέγιστο δυνατό κέρδος. Ποια είναι η πολυπλοκότητα του αλγορίθμου συναρτήσει του αριθμού n του πλήθους των γραμμών/στηλών του πίνακα; Υπόδειξη: Έστω OPT(i, j) το μέγιστο κέρδος που μπορούμε να επιτύχουμε αν καταλήγουμε στο στοιχείο A i,j αντί για το A n,n. Εκφράστε το OPT(i, j) συναρτήσει των OPT(i 1, j) και OPT(i, j 1) καθώς και του A i,j. Να είστε προσεκτικοί στη διάκριση των περιπτώσεων και στην αρχικοποίηση. Απάντηση: Παρατηρούμε ότι: OPT(i, j) = A i,j + max{opt(i 1, j), OPT(i, j 1)}, αν i, j > 1, A i,j + OPT(i 1, j), αν i > 1, j = 1, A i,j + OPT(i, j 1), αν i = 1, j > 1, A i,j, αλλιώς. Όσον αφορά την πολυπλοκότητα, ο αλγόριθμος επισκέπτεται κάθε θέση του πίνακα μία φορά. Επιπλέον χρειάζεται σταθερό αριθμό βημάτων για να υπολογίσει το OPT(i, j), δεδομένου ότι έχουν υπολογιστεί τα OPT(i 1, j) και OPT(i, j 1). Επομένως, η πολυπλοκότητα του είναι O(n 2 ).
ΑΜ: Σελ. 7 από 7 Πρόσθετος χώρος για το τελευταίο θέμα.