Εισαγωγή στο Σχεδιασμό & την Ανάλυση Αλγορίθμων Εξέταση Σεπτεμβρίου 2015 Σελ. 1 από 8 Στη σελίδα αυτή γράψτε μόνο τα στοιχεία σας. Γράψτε τις απαντήσεις σας στις επόμενες σελίδες, κάτω από τις αντίστοιχες ερωτήσεις. Στις απαντήσεις σας μην ξεπερνάτε, για οποιοδήποτε λόγο, τα καθορισμένα όρια για τις απαντήσεις. Σελίδες για πρόχειρο θα σας δοθούν χωριστά. Γράψτε τον ΑΜ σας σε όλες τις σελίδες (και ονοματεπώνυμο και ΑΜ στο πρόχειρο). Επώνυμο: Όνομα: ΑΜ: Βαθμοί 1α 1β 2α 2β 3α 3β Σύνολο Κ Ε
ΑΜ: Σελ. 2 από 8 Θέμα 1α [2 μονάδες]. Έστω δέντρο ύψους h όπου κάθε κόμβος έχει το πολύ δύο παιδιά και έστω ότι ο συνολικός αριθμός κόμβων του δέντρου είναι n. Αληθεύει ότι h + 1 > log 2 n; Να δικαιολογήσετε την απάντησή σας. Απάντηση: Ναι ισχύει. Πράγματι ας θεωρήσουμε το δέντρο ύψους h όπου κάθε κόμβος που βρίσκεται σε βάθος h 1 έχει ακριβώς δύο παιδιά. Έστω N ο αριθμός των κόμβων αυτού του δέντρου. Τότε προφανώς Αλλά επίσης n N. (1) N = 1 + + 2 h = 2 h+1 1 < 2 h+1. (2) Επομένως από τις εξισώσεις (1) και (2) έχουμε n < 2 h+1. Λογαριθμίζοντας προκύπτει το ζητούμενο.
ΑΜ: Σελ. 3 από 8 Θέμα 1.β [2 μονάδες]. Έστω ότι ένας πίνακας H[1... n] ικανοποιεί ότι για κάθε i = 1,..., n/2 με i i 0, H[i] H[2i] και για κάθε i = 1,..., (n 1)/2, H[i] H[2i + 1] και H[i 0 ] > H[2i 0 ]. Είναι ο H πάντοτε σχεδόν σωρός με το κλειδί [i 0 ] πολύ μεγάλο; Δικαιολογήστε την απάντησή σας προσεκτικά. Απάντηση: Όχι πάντοτε. Π.χ. στο εικονιζόμενο στο Σχήμα 1 δέντρο με κλειδιά, όπου οι εμφανιζόμενοι αριθμοί παριστάνουν την τιμή των κλειδιών H[i], ισχύουν όλες οι προϋποθέσεις που αναφέρονται στην εκφώνηση αν θεωρήσουμε ως i 0 η θέση για την οποία H[i 0 ] = 3, δηλαδή i 0 = 2. Όμως το δέντρο αυτό δεν είναι σχεδόν σωρός με το κλειδί στη θέση i 0 πολύ μεγάλο, διότι είναι αδύνατον να δώσουμε μια κατάλληλη τιμή στο H[i 0 ] και να ισχύσει η ιδιότητα του σωρού. Πράγματι για μια τέτοια τιμή, έστω a, αν υπήρχε, θα ίσχυε ότι a 1 για να έχουμε ότι H[i 0 ] H[2i 0 ] και a 2 για να έχουμε ότι H[i 0 ] H[ i 0 /2 ]. H[1] H[2] H[3] H[4] H[5] H[6] H7 2 3 4 1 8 5 6 Σχήμα 1
ΑΜ: Σελ. 4 από 8 Σε μία εξωτική χώρα υπάρχουν τριών μόνον ειδών κέρματα αξίας 1 = a 1 < a 2 < a 3 νομισματικών μονάδων, αντιστοίχως. Θέλουμε να σχεδιάσουμε αλγόριθμο που να βρίσκει τον μικρότερο αριθμό κερμάτων που αθροίζονται σε ένα δεδομένο ποσό M. Θέμα 2α [2 μονάδες]. Δώστε, χωρίς οποιοδήποτε σχολιασμό, ένα παράδειγμα συγκεκριμένων (μικρών) τιμών για a 2, a 3, M (ότι a 1 = 1 είναι δεδομένο) που να καταδεικνύει ότι δεν οδηγούμαστε στη σωστή λύση για όλες τις δυνατές τιμές των κερμάτων αν διαλέγουμε πάντα το μεγαλύτερο κέρμα που δεν ξεπερνά το υπολειπόμενο ποσό. Απάντηση: Θεωρήστε π.χ. a 2 = 6, a 3 = 7, M = 12.
ΑΜ: Σελ. 5 από 8 Θέμα 2β [2 μονάδες]. Δώστε αλγόριθμο που να βρίσκει για οποιαδήποτε (θετικά και ακέραια) a 2, a 3 και M την ορθή απάντηση. Περιορίστε την περιγραφή του αλγορίθμου σε μία αναδρομική σχέση που δίνει το το ζητούμενο OP T (M) (στη διόρθωση, θα δοθεί ιδιαίτερη βαρύτητα στην προσεκτική κάλυψη όλων των περιπτώσεων από την αναδρομική σχέση που θα δώσετε τα a 2, a 3, M είναι πάντα θετικοί ακέραιοι). Να εξηγήσετε σύντομα την ορθότητα της. Απάντηση: 0 if M = 0, OP T (M a 1 ) + 1 if 1 = a 1 M < a 2, OP T (M) = min i=1,2 {OP T (M a i } + 1 if a 2 M < a 3, min i=1,2,3 {OP T (M a i )} + 1 if a 3 M. Στην παραπάνω αναδρομική σχέση, η περίπτωση M = 0 αποτελεί την εκκίνηση της αναδρομής. Οι υπόλοιπες περιπτώσεις διακρίνονται με βάση ποια κέρματα είναι δυνατόν να χρησιμοποιηθούν. Το max αναφέρεται στο πρώτο κέρμα που χρησιμοποιεί ο αλγόριθμος. Με την παραπάνω αναδρομική σχέση, υπολογισμός του OP T (M) ανάγεται σε μικρότερες τιμές του M. Ο αλγόριθμος καταγράφει σε ένα πίνακα διαστάσεως 1 τις τιμές του OP T (M), αφού τις υπολογίζει διαδοχικά για M = 0, 1,..., χρησιμοποιώντας κάθε φορά τις προηγούμενες καταγεγραμμένες τιμές.
ΑΜ: Σελ. 6 από 8 Θέμα 3α [2 μονάδες] Να δοθεί άπληστος αλγόριθμος για το πρόβλημα του προηγούμενου θέματος (χωρίς αιτιολόγηση της ορθότητας του) για την ειδική περίπτωση όπου a 2 = 5, a 3 = 10. Απάντηση: Επιλέγουμε κάθε φορά το μεγαλύτερο κέρμα που είναι μικρότερο ή ίσο από το ποσό που υπολείπεται.
ΑΜ: Σελ. 7 από 8 Θέμα 3β [2 μονάδες]. Να αποδειχθεί πολύ προσεκτικά η ορθότητα του άπληστου αλγόριθμου του προηγουμένου ερωτήματος αυτού του θέματος. Απάντηση: Έστω M το δεδομένο ποσό. Έστω ότι η άπληστη τακτική που περιγράψαμε στο 3α δίνει l «δεκάρικα», m «τάλιρα» και n κέρματα αξίας 1. Εύκολα διαπιστώνουμε ότι m 1 (αλλιώς θα επιλέγαμε νωρίτερα δεκάρικο). Επίσης n 4 (αλλιώς θα επιλέγαμε νωρίτερα τάλιρο). Έστω ακόμη l, m, n ένας βέλτιστος τρόπος επιλογής δεκάρικων, τάλιρων και κερμάτων αξίας 1 για να σχηματίσουμε το ίδιο ποσό. Θα αποδείξουμε ότι l = l, m = m και n = n. Επειδή η (l, m, n ) είναι βέλτιστη λύση, συμπεραίνουμε ότι n 4 (αλλιώς θα μπορούσαμε να αφαιρέσουμε πέντε κέρματα αξίας 1 και να τα αντικαταστήσουμε με ένα τάλιρο). Επίσης, για παρόμοιο λόγο, m 1 (αλλιώς θα μπορούσαμε να αφαιρέσουμε δύο τάλιρα και να τα αντικαταστήσουμε με ένα δεκάρικο). Έχουμε επίσης, επειδή οι δύο επιλογές οδηγούν στο ίδιο ποσό, ότι 10l + 5m + n = 10l + 5m + n. (3) Από την παραπάνω εξίσωση, προκύπτει ότι n = n + 5k για κάποιο k Z. Επειδή όμως n, n = 0, 1, 2, 3, 4 εξετάζοντας όλες τις δυνατές περιπτώσεις για τα n, n έχουμε ότι k = 0, άρα n = n. Όμως τότε από την ισότητα (3) προκύπτει ότι m = m + 2r για κάποιο r Z. Εξετάζοντας πάλι όλες τις δυνατές περιπτώσεις (m, m = 0, 1) έχουμε ότι r = 0, άρα m = m. Eπομένως και l = l.
ΑΜ: Σελ. 8 από 8 Πρόσθετος χώρος για απάντηση στο Ζήτημα 3β.