ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι Σεπτέμβριος 00 Κατ οίκον Εργασία Σκελετοί Λύσεων Άσκηση Αφού ξέρουμε με ακρίβεια τον αριθμό των βασικών πράξεων που εκτελεί ο κάθε αλγόριθμος σε δεδομένα μεγέθους, θα υπολογίσουμε τον χρόνο εκτέλεσης που ζητείται στα i και ii αντικαθιστώντας όπου με και + αντίστοιχα (α i. ( = 4 Ο χρόνος εκτέλεσης του αλγορίθμου θα τετραπλασιαστεί. ii. (+ = + + Θα έχουμε + περισσότερες πράξεις. (β i. ( = 8 Ο χρόνος εκτέλεσης του αλγορίθμου θα οκταπλασιαστεί. ii. (+ = + + + Θα έχουμε + + περισσότερες πράξεις. (γ (δ (ε i. 00( = 004 Ο χρόνος εκτέλεσης θα τετραπλασιαστεί. ii. 00(+ = 00 +00+00 Θα έχουμε 00+00 περισσότερες πράξεις. i. lg = (lg + lg = ( + lg = + lg Θα έχουμε + lg περισσότερες πράξεις. ii. (+lg(+ = lg(+ + lg(+ Θα έχουμε (lg(+ lg + lg(+ περισσότερες πράξεις. i. = ( Ο χρόνος εκτέλεσης θα υψωθεί στο τετράγωνο. ii. + = Ο χρόνος εκτέλεσης θα διπλασιαστεί. (ζ i. ii. Ο χρόνος εκτέλεσης θα πολλαπλασιαστεί επί (. Ο χρόνος εκτέλεσης θα υψωθεί στο τετράγωνο. Άσκηση Πιο κάτω παρουσιάζεται η ζητούμενη σειρά των συναρτήσεων από τη μικρότερη τάξη προς τη μεγαλύτερη. f ( = 4 f ( =.5 f ( =.5 Πιο κάτω αποδεικνύουμε τις σχέσεις που υπάρχουν ανάμεσα στις συναρτήσεις. 4 O(.5 Πρέπει να δείξουμε ότι υπάρχουν σταθερές c και 0 τέτοιες ώστε
ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι Σεπτέμβριος 00 4 c.5 για κάθε 0, δηλαδή 0.5 4 c.5 για κάθε 0, δηλαδή 4 c για κάθε 0 Προφανώς για c = 4 και 0 = η πρόταση ισχύει..5 O(4 Έστω ότι ισχύει, δηλαδή.5 Ο( 4. Τότε c, 0 τ.ω..5 c 4 για κάθε 0, δηλαδή c 4 για κάθε 0, δηλαδή 4c για κάθε 0 Δεν είναι δυνατόν να υπάρχει θετική σταθερά c που να ικανοποιεί την πιο πάνω σχέση. Αυτό μας οδηγεί σε αντίφαση και συμπεραίνουμε ότι.5 Ο( 4.5 Ο(.5 Πρέπει να δείξουμε ότι υπάρχουν σταθερές c και 0 τέτοιες ώστε.5 c (.5, για κάθε 0, δηλαδή c ( 0.5 -, για κάθε 0, δηλαδή c, για κάθε 0 Έστω ότι c =. Τότε έχουμε - 4 6. Κατά συνέπεια, το ζητούμενο ισχύει για c = και 0 = 6..5 Ο(.5 Έστω ότι ισχύει, δηλαδή.5 Ο(.5. Τότε c, 0 τ.ω..5 c.5 για κάθε 0, δηλαδή (c +.5 για κάθε 0, δηλαδή c + για κάθε 0
ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι Σεπτέμβριος 00 Δεν είναι δυνατόν να υπάρχει θετική σταθερά c που να ικανοποιεί την πιο πάνω σχέση, αφού καθώς το τείνει στο το επίσης τείνει στο. Αυτό μας οδηγεί σε αντίφαση και συμπεραίνουμε ότι.5 Ο(.5. Άσκηση (i Η πρόταση δεν είναι αληθής όπως φαίνεται στο πιο κάτω αντιπαράδειγμα. f ( = 5, f ( = g ( = 5, g ( = Παρατηρούμε ότι ενώ 5 Θ( και 5 Θ(, 5 5 ( (ii Η πρόταση δεν είναι αληθής όπως φαίνεται στο πιο κάτω αντιπαράδειγμα. f ( =, mod g ( = mod 0 Έστω ότι f( Ω(g(. Τότε πρέπει να υπάρχουν σταθερές c και 0, τέτοιες ώστε f( cg( για κάθε 0 δηλαδή, c για κάθε περιττό 0 ( και c³ για κάθε άρτιο 0 ( Παρατηρούμε ότι δεν υπάρχουν σταθερές c και 0 που να ικανοποιούν την πρόταση ( ( c c και δεν υπάρχει σταθερά c > 0 μικρότερη του / για κάθε. Παρόμοια, μπορούμε να δούμε ότι g( Ω(f( και το ζητούμενο έπεται. (iii Η πρόταση είναι αληθής. Ακολουθεί η απόδειξη: i i Αφού... i τότε O( i i.... i για c= και 0 = Άσκηση 4 Α. Έστω Τ( ο χρόνος εκτέλεσης της διαδικασίας selectiosort. Τότε, T( i ji i ( i i ( ( ( i i
ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι Σεπτέμβριος 00 Β. Για να βρούμε τον χρόνο εκτέλεσης της διεργασίας, παρατηρούμε ότι ο χρόνος εκτέλεσης του μεσαίου βρόχου εξαρτάται από την τιμή του i, η οποία καθορίζεται από τον εξωτερικό βρόχο. Θεωρούμε χωρίς βλάβη της γενικότητας ότι το είναι δύναμη του. Ο πιο κάτω πίνακας δείχνει τον χρόνο εκτέλεσης του μεσαίου βρόχου, T, (i, σαν συνάρτηση του i: i / /4 T, (i / /4 /8 0 Ο συνολικός χρόνος εκτέλεσης της διεργασίας, T total, είναι ίσος με το άθροισμα των χρόνων εκτέλεσης, T, (i, δηλαδή T total = + / + /4 + /8 + + = ( + / + /4 + /8 + + = (- ( Γ. Για να βρούμε τον χρόνο εκτέλεσης του πρώτου βρόχου παρατηρούμε ότι ο χρόνος εκτέλεσης του εσωτερικού for εξαρτάται από την τιμή του j, η οποία καθορίζεται από τον μεσαίο βρόχο. Θεωρούμε χωρίς βλάβη της γενικότητας ότι το είναι δύναμη του. Ο πιο κάτω πίνακας δείχνει τον χρόνο εκτέλεσης του εσωτερικού for, T (j, σαν συνάρτηση του j: j 4 T (j 4 Ο συνολικός χρόνος εκτέλεσης της μεσαίου for, Τ, είναι ίσος με το άθροισμα των χρόνων εκτέλεσης, T (j, δηλαδή T = + + 4 + + = ( - Επομένως ο χρόνος εκτέλεσης του πρώτου βρόχου είναι [ ( - ] ( Σε αυτό τον χρόνο θα πρέπει να προσθέσουμε τον χρόνο εκτέλεσης του δεύτερου βρόχου. Υποθέτουμε, χωρίς βλάβη της γενικότητας, ότι o είναι πολλαπλάσιο του. Για να βρούμε τον χρόνο εκτέλεσης του else, παρατηρούμε ότι ο χρόνος εκτέλεσης του εσωτερικού βρόχου εξαρτάται από την τιμή i, η οποία καθορίζεται από τον εξωτερικό βρόχο. Ο πιο κάτω πίνακας δείχνει τον χρόνο εκτέλεσης του εσωτερικού βρόχου, T εσ (i, σαν συνάρτηση του i: i 4 5 6 T εσ (i 0 0 0 0 6 Συνεπώς, ο χρόνος εκτέλεσης του εξωτερικού βρόχου δίνεται από το πιο κάτω άθροισμα: 4
ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι Σεπτέμβριος 00 6 9... (... / / ( / ( / i O( i Συμπεραίνουμε ότι ο συνολικός χρόνος εκτέλεσης της διεργασίας είναι της τάξης Θ(. Άσκηση 5 Έστω Τ( o χρόνος εκτέλεσης της recursive(. Τότε η τιμή του Τ( δίνεται από την πιο κάτω αναδρομική εξίσωση: Τ(0 = Τ( = Τ( = T(- + (Το προκύπτει από την ανάλυση που έγινε στην Άσκηση 4(Γ. Θα λύσουμε την αναδρομική εξίσωση με τη μέθοδο της αντικατάστασης: T( = T( + = T( + ( + = = T( i + ( i + + ( + Θέτουμε = - και έχουμε ότι: T( = T( + ( + + ( + = T( + + + ( ( = ( 6 ( + ( + 5