ΦΥΛΛΑΔΙΟ ΚΑΤΑΝΟΗΣΗΣ 6 ΛΥΣΕΙΣ 1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0. 2. Εντολή Αλγορίθμου Αριθμός Πράξεων Ανάθεση τιμών στα x,y 2 έλεγχος i 6 αύξηση i 5 εκτύπωση i 5 υπολογισμός z (2x5) 10 εκτύπωση x,y,z 3 Σύνολο 32 3. Εντολή Αλγορίθμου Αριθμός Πράξεων Ανάθεση τιμών στα a,b 2 έλεγχος i 101 αύξηση i 100 Ανάθεση τιμής στο a 100 Ανάθεση τιμής στο b (2x100) 200 εκτύπωση a,b 2 Σύνολο 506 4. Στον αλγόριθμο αυτό υπάρχουν δύο βρόχοι επανάληψης (ένας βρόχος για κάθε διάσταση του πίνακα). Ο 1 ος και ο 2 ος βρόχος εκτελούν Ν επαναλήψεις ο καθένας. Για κάθε επανάληψη του εσωτερικού βρόχου γίνονται δύο απλές πράξεις (ανάγνωση και εκτύπωση) μοναδιαίου κόστους n καθεμία. Επομένως η πολυπλοκότητα του αλγορίθμου θα εκφράζεται με Ν*Ν*2 = 2Ν 2, και άρα ο αλγόριθμος έχει τετραγωνική πολυπλοκότητα. Είναι φανερό ότι οι βρόχοι επανάληψης είναι εκείνοι που καθορίζουν την επιβάρυνση στο κόστος εκτέλεσης του αλγορίθμου. Ευάγγελος Χρ. Ζιούλας (Καθηγητής Πληροφορικής) 1
5. Για τον υπολογισμό της επίδοσης του αλγορίθμου, χρειάζεται να μετρηθεί ο αριθμός των συγκρίσεων και ο αριθμός των ανταλλαγών που θα πραγματοποιηθούν για την ταξινόμηση. Αριθμός Συγκρίσεων Η εκτέλεσή του αλγορίθμου περιλαμβάνει 3 συνεχόμενα περάσματα πάνω στα στοιχεία του πίνακα και σε κάθε πέρασμα συγκρίνονται ζευγάρια στοιχείων. Συνολικά γίνονται 9 πράξεις σύγκρισης, αφού σε κάθε ένα πέρασμα γίνονται 3 συγκρίσεις. Ο συγκεκριμένος πίνακας Α έχει n=4 θέσεις. Γενικεύοντας την καταγραφή των πράξεων της σύγκρισης, παρατηρούμε ότι συνολικά θα χρειαστούν (n-1)*(n-1) = (n-1) 2 συγκρίσεις για έναν πίνακα n θέσεων. Αριθμός Ανταλλαγών Για να υπάρξει κριτήριο για την τυποποίηση της επίδοσης του αλγορίθμου, θα πρέπει να μετρηθεί ο αριθμός των ανταλλαγών που γίνονται στη χειρότερη περίπτωση. Επομένως η χειρότερη περίπτωση για έναν πίνακα 4 θέσεων, είναι τα στοιχεία του να βρίσκονται ταξινομημένα κατά φθίνουσα τάξη έτσι ώστε όλα να πρέπει να αλλάξουν θέση. Επομένως, για έναν πίνακα 4 στοιχείων που είναι τοποθετημένα σε αντίθετη διάταξη (χειρότερη περίπτωση), θα γίνουν συνολικά 3+2+1=6 ανταλλαγές. Αν γενικεύσουμε το παράδειγμα για πίνακα n θέσεων θα χρειασθούν στη χειρότερη περίπτωση (n-1)+(n-2)+...+1 ανταλλαγές στοιχείων. Η πολυπλοκότητα του παραπάνω αλγορίθμου υπολογίζεται από το άθροισμα του κόστους των συγκρίσεων και των ανταλλαγών που είναι: Η τάξη της πολυπλοκότητας του αλγορίθμου υπολογίζεται από το μεγαλύτερο όρο του πολυωνύμου, ο οποίος είναι το n 2, και έτσι προκύπτει ότι ο παραπάνω αλγόριθμος έχει τετραγωνική πολυπλοκότητα. 6. Α) Απλός βρόχος με αριθμό πράξεων n, άρα η πολυπλοκότητα είναι γραμμική Ο(n). Β) Απλός βρόχος με αριθμό πράξεων n/2, άρα η πολυπλοκότητα είναι γραμμική Ο(n). Γ) Διπλός εμφωλευμένος βρόχος με αριθμό πράξεων n*n = n 2, άρα η πολυπλοκότητα είναι τετραγωνική Ο(n 2 ). Δ) Διπλός εμφωλευμένος βρόχος με αριθμό πράξεων (n/2)*n = n 2 /2, άρα η πολυπλοκότητα είναι τετραγωνική Ο(n 2 ). Γενικά, ισχύει ότι κάθε απλός βρόχος έχει γραμμική πολυπλοκότητα, κάθε διπλός βρόχος έχει τετραγωνική πολυπλοκότητα κοκ. Ευάγγελος Χρ. Ζιούλας (Καθηγητής Πληροφορικής) 2
7. Απαιτείται ένας μονοδιάστατος πίνακας Α (Ν θέσεων), στον οποίο είναι αποθηκευμένα τα διάφορα ποσά των δωρεών. Τα στοιχεία του πίνακα πρέπει να προσπελαστούν ώστε να αθροισθούν τα επιμέρους ποσά σε ένα συνολικό ποσό sum. Αλγόριθμος Δωρεές Δεδομένα // Α, Ν // sum 0 Για i από 1 μέχρι Ν sum sum + Α[i] Τέλος_επανάληψης Εκτύπωσε sum Τέλος Δωρεές Ο αλγόριθμος αυτός είναι μία γραμμική διαδικασία και άρα η πολυπλοκότητα του είναι Ο(n). 8. Έστω ότι τα δεδομένα αποθηκεύονται σε δύο δομές μονοδιάστατων πινάκων Α και Β, όπου η 1 η αποθηκεύει τις ταινίες και η 2 η τα έτη παραγωγής. Για την επίλυση σαρώνουμε τα στοιχεία του 2ου πίνακα και ελέγχουμε ποια από αυτά περιλαμβάνουν την τιμή 1960. Αν η τιμή είναι 1960, τότε επιστρέφουμε στο χρήστη το αντίστοιχο στοιχείο του 1 ου πίνακα, αλλιώς προχωράμε παρακάτω. Αλγόριθμος Ταινίες Δεδομένο // Α, Β, Ν // Για i από 1 μέχρι Ν Αν Β[i] = 1960 τότε Εμφάνισε Α[i] Τέλος_αν Τέλος_επανάληψης Τέλος Ταινίες Ο αλγόριθμος αυτός είναι μία γραμμική διαδικασία και άρα η πολυπλοκότητα του είναι Ο(n). 9. Α) Το κομμάτι του αλγορίθμου είναι ένας απλός βρόχος n=100 επαναλήψεων. Άρα, για το κομμάτι αυτό η πολυπλοκότητα είναι γραμμική O(n). B) To κομμάτι είναι ένας απλός βρόχος, όπου εκτελούνται n-1 επαναλήψεις. Άρα, η πολυπλοκότητα είναι γραμμική Ο(n). Γ) Ο αριθμός των επαναλήψεων του απλού βρόχου είναι (n-1)/3. Άρα, η πολυπλοκότητα είναι και πάλι γραμμική O(n). 10. Εντολή Αλγορίθμου Αριθμός Πράξεων Ανάθεση τιμών στα x,c 2 έλεγχος i 11 μείωση i 10 υπολογισμός x 10 υπολογισμός y 30 εκτύπωση x,y 2 Σύνολο 66 Ευάγγελος Χρ. Ζιούλας (Καθηγητής Πληροφορικής) 3
11. Ο αλγόριθμος της Δυαδικής Αναζήτησης για έναν πίνακα Α 10 στοιχείων είναι: Δεδομένα // Α,key // start 1 end 10 found Ψευδής Όσο (start end) και (found = Ψευδής) επανάλαβε μέσο (start + end) div 2 Αν Α[μέσο] = key τότε found Αληθής Εμφάνισε "Βρέθηκε στη θέση", μέσο αλλιώς_αν Α[μέσο] > key τότε end μέσο - 1 αλλιώς start μέσο + 1 Τέλος_Αν Τέλος_Επανάληψης Αν (found = Ψευδής) τότε Εμφάνισε "Στοιχείο δεν βρέθηκε" Τέλος_Αν Στο κυρίως σώμα του αλγορίθμου Δυαδικής Αναζήτησης υπάρχει μία επαναληπτική δομή. Ανάλογα με το αποτέλεσμα της σύγκρισης Α[μέσο] = key θα εκτελεσθεί ένας από τους τρεις κλάδους που έχουν σταθερό κόστος. Επομένως το ερώτημα είναι πόσες φορές θα επαναληφθεί η εντολή Αν μέσα στο βρόχο. Σε κάθε επανάληψη το σχετικό διάστημα end-start συνεχώς υποδιπλασιάζεται. Ο μέγιστος αριθμός υποδιπλασιασμών είναι log(end-start). Έτσι προκύπτει ότι η πολυπλοκότητα του αλγορίθμου είναι O(logn). Άρα, σε ένα πίνακα 10 θέσεων, η δυαδική αναζήτηση στη χειρότερη περίπτωση τερματίζει με 4 προσπάθειες. Ευάγγελος Χρ. Ζιούλας (Καθηγητής Πληροφορικής) 4