ΕΛΛΝΚΟ ΝΟΚΤΟ ΠΝΕΠΣΤΜΟ ΠΡΟΡΜΜ ΣΠΟΥΩΝ: ΜΕΤΠΤΥΧΚ ΕΞΕΚΕΥΣ ΣΤ ΠΛΡΟΦΟΡΚ ΣΥΣΤΜΤ (ΠΛΣ) ΘΕΜΤΚ ΕΝΟΤΤ: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ (ΠΛΣ50) ' ΤΕΛΚ ΕΞΕΤΣ - 5 ΟΥΝΟΥ 2010 ΧΡΟΝΟΣ ΕΞΕΤΣΣ 180' (Σύνολο μονάδων 115) Επώνυμο Μ Ονομα Τμήμα ΘΕΜ 1 (ΜΟΝΕΣ 3) Τι θα εμφανίσει στην οθόνη η εκτέλεση του παρακάτω προγράμματος; #include<stdio.h> void blah(char s[],char c) { int i,j; for(i=j=0;s[i]!='\0';i++) if(s[i]!=c) s[j++]= s[i]; s[j]='\0'; int main() { char s[10]="abcdef"; blah(s,'w'); printf("%s\n", s); blah(s, 'c'); printf("%s\n", s); Β Ε abcdef abcdef wwwwww cccccc abcdef abdef bcdef cef ύο κενές γραμμές ΘΕΜ 2 (ΜΟΝΕΣ 3) Ποιο από τα τμήματα κώδικα που ακολουθούν είναι ισοδύναμο με τον ακόλουθο κώδικα; int n=0; while(n!=99) scanf( %d,&n); Β Ε int n = 0; for ( ; n!= 99; ) scanf( "%d", &n ); do{ scanf( %d,%n); while(n!=99) for ( n=0; n!= 99; n++) scanf( "%d", &n ); π
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 3 (ΜΟΝΕΣ 6) Τι θα εμφανίσει στην οθόνη η εκτέλεση του παρακάτω προγράμματος; #include <stdio.h> void gaou(int n) { if (n > 4) return; gaou(n+1); printf("%d ", n); gaou(n+2); int main() { gaou(1); Β E τίποτε 4 3 4 2 4 3 1 4 3 2 4 1 3 4 4 3 2 4 1 4 3 1 2 3 4 4 3 4 ΘΕΜ 4 (ΜΟΝΕΣ 6) Στο πιο κάτω πρόγραμμα με τι θα πρέπει να αντικαταστήσουμε το για να εκτυπώσει: 0 1 2 3 4 5 6 7 8 9 #include <stdio.h> int array[10] = { 0,1,2,3,4,5,6,7,8,9 ; int *ptr, counter; main() { ptr = array; for (counter = 0; counter < 10; counter++) printf("%d ", A); return 0; Β Ε array[counter++] ptr++ ++ptr *ptr++ array[++counter] ΘΕΜ 5 (ΜΟΝΕΣ 3) Έστω η παρακάτω διπλά συνδεδεμένη Λίστα στην οποία σημειώνονται μεταβλητές δεικτών και η τιμή τους. Θέλουμε να 2
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 διαγράψουμε τον κόμβο e. Ποιά από τις παρακάτω επιλογές περιγράφει ακριβώς τα βήματα που θα κάνουμε για το σκοπό αυτό; a c e g head current tail Β Ε current - > next = tail; head - > next = current - > next - > next - > prev; current - >next - > next - > prev = current; current - > next = current - > next - > next; current = current - > next - > next; current - > next - > prev = current - > prev; current - > next = current - > next - > next; current - > next - > next - > prev = current - > prev; current - > next = current - > prev - > next; current - > next = current - > prev; ΘΕΜ 6 (ΜΟΝΕΣ 6) Έστω η ακολουθία ΣΚΛ*Ρ**Π*Χ**Ν** όπου η εμφάνιση γράμματος σημαίνει την Εισαγωγή του γράμματος αυτού σε μια Στοίβα (stack), ενώ η εμφάνιση αστεριού την λειτουργία Εξαγωγής στοιχείου από τη Στοίβα. Κάθε φορά που γίνεται εξαγωγή στοιχείου από τη Στοίβα αυτό εισάγεται σε ένα υαδικό ένδρο ναζήτησης (), που στην αρχή είναι κενό. σύγκριση των κόμβων του δένδρου γίνεται αλφαβητικά. Ποια θα είναι η τελική μορφή του μετά την ολοκλήρωση όλων των κινήσεων της ακολουθίας; Λ Ρ Π Χ Λ Π Β Ρ Χ 3
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 Λ Π Ρ N Λ Π Ρ Χ Λ Ε Π Ρ N ΘΕΜ 7 (ΜΟΝΕΣ 6) Τρεις ακριβώς από τις παρακάτω προτάσεις είναι αληθείς. Ποιες; 1. Μπορούμε να διαβάσουμε Ν ακεραίους και να εξετάσουμε αν είναι ταξινομημένοι σε αύξουσα σειρά χρησιμοποιώντας μνήμη Θ(1) (χωρίς πίνακα, λίστα, κλπ). 2. Μπορούμε να διαβάσουμε Ν ακεραίους και να εμφανίσουμε όλους εκείνους που είναι μεγαλύτεροι κατά 10% από το μέσο όρο τους, με πολυπλοκότητα χώρου Θ(1). 3. Σε ένα υαδικό δένδρο αναζήτησης για να διαγράψουμε ένα κόμβο που έχει μόνο ένα υποδένδρο, αφαιρούμε τον κόμβο και τον αντικαθιστούμε με το υποδένδρο αυτό. 4. Ο πίνακας που περιέχει τα στοιχεία 8, 7, 4, 1, 6, 2, 1, 0, 4, 0 αποτελεί Σωρό μεγίστου (max heap). 5. χρονική πολυπλοκότητα της συνάρτησης max- heapify είναι Ο(1) όταν οι αριθμοί που περιέχονται στο Σωρό είναι όλοι ίσοι. 6. ν σε μια Στοίβα ή σε μια Ουρά αφαιρέσουμε (DELETE OPERATION) ένα στοιχείο και το επαναεισαγάγουμε (INSERT OPERATION) αμέσως μετά, τότε η ομή (Στοίβα ή Ουρά) δεν μεταβάλλεται. Β Ε 1, 3, 5 2, 4, 6 2, 5, 6 1, 4, 6 1, 2, 6 4
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 8 (ΜΟΝΕΣ 6) Έστω ο πίνακας: 0 1 2 3 4 5 6 7 8 9 32 28 69 15 8 12 23 ώστε την pre- order διάταξη του δυαδικού δέντρου αναζήτησης που σχηματίζεται μετά τις αλλαγές που γίνονται με την ακόλουθη σειρά: 1. Μετά την εξαγωγή τριών στοιχείων του πίνακα με την λογική «στοίβας» και την εισαγωγή τους (με τη σειρά που διαγράφονται) στο υαδικό ένδρο ναζήτησης 2. Μετά την εξαγωγή των τεσσάρων υπολοίπων στοιχείων του πίνακα με την λογική «ουράς» και την εισαγωγή τους (με τη σειρά που διαγράφονται) στο υαδικό ένδρο ναζήτησης Β Ε 23 12 8 15 32 28 69 23 12 32 8 15 28 69 8 12 15 23 28 32 69 8 12 15 28 69 32 23 32 12 23 15 28 69 8 ΘΕΜ 9 (ΜΟΝΕΣ 9) Ένα δυαδικό δένδρο αναζήτησης έχει 11 κόμβους με κλειδιά γράμματα του αγγλικού αλφαβήτου συγκρινόμενα αλφαβητικά. προδιατεταγμένη (preorder) διαπέραση έχει ως αποτέλεσμα την επίσκεψη των κόμβων του με τη σειρά P, F, B, H, G, S, R, Y, T, W, Z. (α) Να βρείτε ποια είναι η σειρά επίσκεψης με την ενδοδιατεταγμένη διάσχιση (inorder) (μονάδες 1) και στη συνέχεια, (β) Να σχεδιάσετε το δυαδικό δένδρο, δίνοντας και μια περιγραφή των βημάτων που ακολουθείτε (μονάδες 8). παντήστε στο χώρο που διατίθεται στο φύλλο απαντήσεων α) η ενδοδιατεταγμένη διαπέραση προκύπτει με αλφαβητική ταξινόμηση των 11 κόμβων, σύμφωνα με το κλειδί. σειρά είναι B, F, G, H, P, R, S, T, W, Y, Z. β) Βλέπε Βιβλίο ΕΠ «ομές εδομένων», ωάννη Χατζηλυγερούδη, έκδοση 2000, Άσκηση αυτοαξιολόγησης 5.1, σελ. 126. Στο τέλος της διαδικασίας το θα έχει την ακόλουθη μορφή: P F S B H R Y G T Z W 5
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 10 (ΜΟΝΕΣ 3) Ποια από τα παρακάτω 5 τμήματα ιαγραμμάτων Ροής εδομένων (Ρ) έχουν λογικά σφάλματα, όπως αυτά προκύπτουν θεωρώντας αυτοτελώς τους μετασχηματισμούς που εμφανίζονται, ή παραβιάζουν τις αρχές δημιουργίας Ρ; X Z P Y K Ώρες Εργασίας Μισθός B Κόστος Ώρας Υπολογισµός Μισθού µεροµηνία έννησης P2 A X X Y P1 Y P3 B Z P4 C P1 X P3 Y P2 Z ραµµατεία Λίστα Μ νάγνωση Στοιχείων Λίστα Μ, Όνοµα, Τηλέφωνο, ιεύθυνση Μορφοποίηση Μορφοποιηµένα στοιχεία Εκτυπωτής Ε Στοιχεία Φοιτητών ρχείο Φοιτητών Β Ε,Β,, Ε Β,, Ε,Β,,,, Όλα 6
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 11 (ΜΟΝΕΣ 6) Παρακάτω δίνονται τρεις λεπτομερείς σχεδιασμοί μονάδων λογισμικού σε ψευδοκώδικα (- ). πό ποια ιαγράμματα Ροής εδομένων (1-3) προκύπτουν οι παρακάτω ψευδοκώδικες, αν εφαρμοστούν οι κανόνες σχεδιασμού της τεχνολογίας λογισμικού; ναφέρετε σε κάθε ιάγραμμα Ροής εδομένων τον ψευδοκώδικα που αντιστοιχεί. Σημειώστε την αντιστοίχιση στο φύλο απαντήσεων) Β procedure Exec_XXX CALL execm1(,, ) CALC 2(,Z) CALC 4(Z,E, ) CALC 3(, ) IF < 9 THEN PUT(I) END IF CALL execm5( ) END Procedure Exec_XXX CALL execm1(, ) CALCM2(, ) CALC 3(, ) CALC 4(, ) PUT(I) CALL execm5( ) END END Procedure Exec_XXX CALL execm1(, ) CALCM3(, ) CALC 2(,, ) WHILE (E > 0 ) DO CALL exec 4( ) END WHILE CALL execm5( ) M2 Ζ A M4 1 M1 Ε B M3 M5 Θ M2 Ζ A M4 2 Ε M1 B M3 M5 Θ M2 Ζ A M4 3 Β M1 B M3 Ε M5 Θ 7
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 12 (ΜΟΝΕΣ 6) Έστω η παρακάτω συνάρτηση dosomething η οποία υπολογίζει και επιστρέφει πόσοι διαιρέτες του ακέραιου αριθμού a υπάρχουν στο διάστημα [b,c) : int dosomething( int a, int b, int c ) { int i, n=0; for (i=b; i < c; ++i) n = (i &&!(a%i)? ++n:n); return(n); Με ποια από τα παρακάτω ορίσματα θα καλούσατε την συνάρτηση dosomething, προκειμένου αυτή να ελεγχθεί σύμφωνα με τη μέθοδο των κλάσεων ισοδύναμων τιμών; Β Ε (1, 2, 10) (3, 15, 5) (12, 5, 20) (12, 5, 10) (0, 3, 25) (2, 9, 7) (8, - 10, - 2) (2, - 4, 4) (11, 3, 9) (7, 2, 5) (3, - 5, 1) (4, 12, 30) (5, - 30, - 1) (- 2, - 6, - 3) (3, 12, 8) ΘΕΜ 13 (ΜΟΝΕΣ 6) ίνεται η παρακάτω συνάρτηση chop, η οποία διαχωρίζει («σπάει») τη συμβολοσειρά που δίνεται ως είσοδος s σε διαδοχικά τμήματα μήκους ακριβώς ίσα με 5 και τα εμφανίζει στην οθόνη. Τμήματα με μήκος μικρότερο από 5 δεν εμφανίζονται καθόλου. Πόσες είναι οι ελάχιστες δοκιμές που πρέπει να γίνουν αν πρόκειται η συνάρτηση chop να ελεγχθεί με τη μέθοδο των κλάσεων ισοδύναμων τιμών; int chop(char *s) { char t[6]; int l = strlen(s); if (l < 5 ) return(-1); else if (l == 5){ printf("%s\n", s); return(0); strncpy(t, s, 5); *(t+5) = '\0'; printf("%s\n", t); return( chop(s+5) ); Β Ε 1 2 3 4 5 8
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 14 (ΜΟΝΕΣ 9) Επανερχόμαστε στην εργασία Ε5 στην οποία προδιαγράφεται ένα σύστημα ηλεκτρονικής υποβολής εργασιών στο ΕΠ, μέσω διαδικτυακής πύλης. Στην εργασία αναφέρεται ότι "Οι συντονιστές των ΘΕ που χρησιμοποιούν το σύστημα, εισάγουν στο σύστημα τα στοιχεία για κάθε γραπτή εργασία και την εκφώνησή της. Το σύστημα δημιουργεί μια εγγραφή για την εργασία και της αποδίδει αυτόματα έναν κωδικό." Το αντίστοιχο Ρ δεύτερου επιπέδου, δίνεται στην ενδεικτική επίλυση: ΣΥΝΤΟΝΣΤΣ ΘΕ ΘΕ, ΕΡΣ, Μ.ΥΠΟΒΟΛΣ, ΜΟΝΕΣ ΚΩ.ΕΡΣΣ ΣΥΝΤΟΝΣΤΣ ΘΕ 2. Χ/Σ ΕΡΣΩΝ ΕΡΦ ΕΡΣΣ ΚΩ ΕΡΣΣ ΕΡΣΕΣ Να κατασκευάσετε το Ρ 3ου επιπέδου (να μην περιέχει περισσότερους από 2 μετασχηματισμούς) και το αντίστοιχο Π. Τι θα άλλαζε αν η αυτόματη απόδοση κωδικού εργασίας γίνονταν από ένα εξωτερικό σύστημα λογισμικού; παντήστε στο χώρο που διατίθεται στο φύλλο απαντήσεων ΣΥΝΤΟΝΣΤΣ ΘΕ ΘΕ, ΕΡΣ, Μ.ΥΠΟΒΟΛΣ, ΜΟΝΕΣ 2.1 ΝΝΩΣ ΣΤΟΧΕΩΝ ΕΡΣΣ ΕΡΦ ΕΡΣΣ 2.2 ΕΠΒΕΒΩΣ ΕΡΦΣ ΚΩ. ΕΡΣΣ ΣΥΝΤΟΝΣΤΣ ΘΕ ΚΩ ΕΡΣΣ ΕΡΦ ΕΡΣΣ ΕΡΣΕΣ RUN21 GET ΘΕ, ΕΡΣ, Μ.ΥΠΟΒΟΛΣ, ΜΟΝΕΣ DO PREPARE REC RUN22 GET ΚΩ ΕΡΣΣ DO CONFIRM REC PUT REC PUT ΚΩΚΟΣ ΕΡΣΣ Στην περίπτωση που είχαμε εξωτερικό σύστημα λογισμικού για την αυτόματη απόδοση κωδικών, θα έπρεπε να έχουμε έναν επιπλέον μετασχηματισμό οποίος θα διάβαζε τον τελευταίο "Κωδικό εργασίας" από την αποθήκη "Εργασίες" και θα υπολόγιζε τον επόμενο, τον οποίο και θα επέστρεφε. 9
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 15 (ΜΟΝΕΣ 3) Ποια είναι η χρονική πολυπλοκότητα του παρακάτω κώδικα σε Θ- συμβολισμό; for i=1 to n do for j=2*i to n do s=s+1 Β Ε Θ(n) Θ(! log!) Θ(!) Θ(n 2 ) Καμία από τις προηγούμενες ΘΕΜ 16 (ΜΟΝΕΣ 6) Ποια είναι η πολυπλοκότητα της παρακάτω συνάρτησης σε O- συμβολισμό; 8 log! + 4! 3! 2 log! Β Ε! 1!!! 1!! 1! log!! 1!! log! Καμία από τις προηγούμενες ΘΕΜ 17 (ΜΟΝΕΣ 9). Έστω ότι σας δίνονται δύο πίνακες n ακεραίων και σας ζητάνε να ελέγξετε εάν έχουν τα ίδια στοιχεία. Περιγράψτε ένα αλγόριθμο με πολυπλοκότητα Ο(n) που να επιλύει το παραπάνω πρόβλημα χρησιμοποιώντας hashing. Υποθέστε ότι σε κάθε πίνακα όλα τα στοιχεία είναι διαφορετικά μεταξύ τους. Β. Έστω ότι σας δίνονται δύο πίνακες n ακεραίων και σας ζητάνε να ελέγξετε εάν έχουν έστω και ένα κοινό στοιχείο. Περιγράψτε ένα αλγόριθμο με πολυπλοκότητα Θ(! log!) που να επιλύει το παραπάνω πρόβλημα χωρίς να χρησιμοποιεί hashing. Υποθέστε ότι σε κάθε πίνακα όλα τα στοιχεία είναι διαφορετικά μεταξύ τους. παντήστε στο χώρο που διατίθεται στο φύλλο απαντήσεων. Κάνουμε hashing τα στοιχεία του πρώτου πίνακα. ια κάθε στοιχείο του δεύτερου πίνακα, το αναζητούμε στον πίνακα hashing. Ο αναμενόμενος χρόνος είναι γραμμικός O(n). Β. ρχικά ενώνουμε τα στοιχεία των δύο πινάκων φτιάχνοντας ένα τρίτο πίνακα με μέγεθος 2n. Ταξινομούμε τον πίνακα αυτό και στη συνέχεια ελέγχουμε αν υπάρχουν δύο συνεχόμενα στοιχεία του που να είναι ίσα. Ο χρόνος είναι Θ(! log!), όσο χρειάζεται για την ταξινόμηση. ΘΕΜ 18 (ΜΟΝΕΣ 3) ια κάθε μία από τις παρακάτω προτάσεις, αναφέρετε εάν είναι αληθής ή ψευδής: ) αναπαράσταση γράφου με συνδεδεμένες λίστες είναι πιο συμπαγής (απαιτεί λιγότερη μνήμη) έναντι της αναπαράστασης γράφου με πίνακα γειτνίασης για σχεδόν πλήρως συνδεδεμένους γράφους (δηλαδή για γράφους όπου υπάρχουν ακμές των περισσοτέρων ζευγών κορυφών). Β) Ο αλγόριθμος breadth- first search βρίσκει πάντα το συντομότερο μονοπάτι μεταξύ δύο κορυφών ενός γράφου. ) Ένας κατευθυνόμενος μη- κυκλικός γράφος μπορεί να έχει περισσότερες από μία τοπολογικές ταξινομήσεις (topological sort) των κορυφών του. ) ακμή με το μικρότερο βάρος (υποθέτουμε ότι είναι μοναδική) σε έναν μη- κατευθυνόμενο γράφο συμμετέχει πάντα στο ελάχιστο ζευγνύον δένδρο (minimum spanning tree). Ε) Μια ακμή με το μεγαλύτερο βάρος (υποθέτουμε ότι είναι μοναδική) σε έναν μη- κατευθυνόμενο γράφο δεν συμμετέχει ποτέ στο ελάχιστο ζευγνύον δένδρο. ΣΤ) ελάχιστη απόσταση μεταξύ δύο οποιωνδήποτε κορυφών σε γράφο που περιλαμβάνει αρνητικούς κύκλους δεν 10
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 είναι δυνατόν να οριστεί σε καμία περίπτωση (δηλαδή είναι πάντα μείον άπειρο). ράψτε [Σ]ωστό ή [Λ]άθος σε κάθε περίπτωση στο φύλλο απαντήσεων Β Ε ΣΤ Λάθος. Λάβετε υπόψη και το μέγεθος των δεικτών που απαιτούνται για τις λίστες γειτνίασης. Σωστό. Σωστό. Σωστό. Λάθος. ια παράδειγμα, σκεφτείτε έναν γράφο με δύο κορυφές και μια ακμή μεταξύ τους. Λάθος. Είναι δυνατόν να μην υπάρχει κανένα μονοπάτι μεταξύ των δύο κορυφών που να περιλαμβάνει τον αρνητικό κύκλο. ΘΕΜ 19 (ΜΟΝΕΣ 6) ίνεται η παρακάτω ακολουθία A είκοσι ακεραίων αριθμών (προηγούνται οι ακέραιοι της πρώτης γραμμής και ακολουθούν αυτοί της δεύτερης). 23 61 53 6 94 5 91 22 59 89 26 87 93 98 79 18 27 52 68 10 Ως υπο- ακολουθία της παραπάνω ακολουθίας ορίζουμε οποιαδήποτε ακολουθία αριθμών που εμφανίζονται στην παραπάνω ακολουθία, όχι απαραίτητα συνεχόμενων αλλά χωρίς να αλλάξει η σειρά εμφάνισής τους. ια παράδειγμα, μια υπο- ακολουθία είναι η: 61 6 94 22 89 87 98 27 68 Ενδιαφερόμαστε για υπο- ακολουθίες της δοθείσης ακολουθίας στις οποίες οι αριθμοί εμφανίζονται σε αύξουσα σειρά, όπως π.χ. η: 6 22 26 27 68 Ειδικότερα, ενδιαφερόμαστε για τη μέγιστη υπο- ακολουθία της με αριθμούς σε αύξουσα σειρά (Longest Increasing Subsequence problem). Πόσα στοιχεία έχει αυτή; Υπόδειξη: Ορίστε ως L(j) το μήκος της μέγιστης αύξουσας υπο- ακολουθίας της L, το τελευταίο στοιχείο της οποίας είναι το A[j]. σχύει ότι: L( j) = max i< j A[ i] < A[ j] { L( i) + 1 τιμή που αναζητάμε είναι η max{ L( j) j. Β Ε 5 6 7 8 9 11
ΠΛΣ50: ΒΣΚΕΣ ΕΞΕΚΕΥΣΕΣ ΣΕ ΘΕΩΡ Κ ΛΟΣΜΚΟ - ' ΤΕΛΚ ΕΞΕΤΣ - 13 ΟΥΝΟΥ 2009 ΘΕΜ 20 (ΜΟΝΕΣ 9) Έστω το πρόβλημα της συμπλήρωσης ενός χρηματικού ποσού, έστω n, με κέρματα, με στόχο τη χρήση όσο το δυνατό λιγότερων κερμάτων. Έστω ότι έχετε απεριόριστα κέρματα στη διάθεσή σας από τις παρακάτω αξίες: 1, 10, 25, 50 Προτείνετε έναν άπληστο αλγόριθμο που να επιλέγει τα κέρματα που θα χρησιμοποιηθούν για τη συμπλήρωση του ποσού n. Είναι βέλτιστος ο αλγόριθμός σας; Εάν ναι, αποδείξτε το. Εάν όχι, δώστε ένα παράδειγμα που να μην βρίσκει το βέλτιστο σύνολο κερμάτων. Μπορείτε να σκεφτείτε μια ικανή συνθήκη για να είναι βέλτιστος ο αλγόριθμός σας; παντήστε στο χώρο που διατίθεται στο φύλλο απαντήσεων Ένας άπληστος αλγόριθμος είναι ο εξής: Όσο n>0 Επέλεξε ένα κέρμα με τη μεγαλύτερη δυνατή αξία k που να είναι μικρότερη από n Θέσε n=n- k ια παράδειγμα, έστω n=70. Ο παραπάνω αλγόριθμος θα επιλέξει αρχικά ένα κέρμα των 50 και στη συνέχεια δύο κέρματα των 10, σύνολο τρία κέρματα, που είναι η βέλτιστη λύση. ν όμως έχουμε n=80, τότε ο παραπάνω αλγόριθμος θα επιλέξει αρχικά ένα κέρμα των 50, μετά ένα κέρμα των 25 και μετά πέντε κέρματα του 1, σύνολο 7 κέρματα, που δεν είναι η βέλτιστη επιλογή. Πράγματι, το ίδιο ποσό θα μπορούσε να σχηματισθεί με 4 μόνο κέρματα, δηλαδή ένα κέρμα των 50 και τρία κέρματα των 10. Άρα ο αλγόριθμος δεν είναι βέλτιστος. Μια ικανή συνθήκη για να είναι βέλτιστος ο αλγόριθμος θα ήταν κάθε κέρμα να είναι πολλαπλάσιο του προηγούμενού του. 12