.. Α όρι μοι και Πο υπ οκότητα 1η Σειρά Γραπτών Ασκήσε ν CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Επιμέ εια διαφανειών: Χάρης Α ε ιδάκης 12 Δεκεμ ρίου, 2011
Outline. 1 Άσκηση 1. 2 Άσκηση 2. 3 Άσκηση 3. 4 Άσκηση 4. 5 Άσκηση 5 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 2 / 23
Outline. 1 Άσκηση 1. 2 Άσκηση 2. 3 Άσκηση 3. 4 Άσκηση 4. 5 Άσκηση 5 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 3 / 23
Άσκηση 1 (α): Ασυμπτ τικός Συμ ο ισμός Λύση log(n 3 ), n(log n) 50 n, log log n, log(n!) = Θ(n log n), n(log n)10, n 1.01, n 5 log 2 n, k 5 = Θ(n 6 ), (log n) log n = Θ(n log log n ), 2 (log 2 n)4 = n (log 2 n)3, k=1 (log n) n, e n/ ln n, n3 n, 2 2n = 4 n, n! Χρήσιμες σ έσεις ( n ) n/2, n! = ω n! = o(n n ) α ά log n! = Θ(log n n ). 2 Αντί ετα, f(n) = o(g(n)) f(n) = o( g(n)). ɛ > 0, log d n = o(n ɛ ), οπότε και ια ɛ = 1/2, log d n = o( n) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 4 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (1 / 2) Λύση. 1 T(n) = 5T(n/7) + n log n = Θ(n log n) (MT περ. 3). 2 T(n) = 4T(n/5) + n/ log 2 n = Θ(n/ log 2 n) (MT περ. 3). 3 T(n) = T(n/3) + 3T(n/7) + n = Θ(n) ( ύνουμε ια κάτ φρά μα: 3T(n/7) + n, και επα η εύουμε στην αρ ική σ έση. Διαισ ητικά, έ ουμε αναδρομή σε n/3 + 3n/7 < n, και άρα επικρατεί το n.). 4 T(n) = 6T(n/6) + n = Θ(n log n) (MT περ. 2) 5. T(n) = T(n/3) + T(2n/3) + n = Θ(n log n) (διαισ ητικά, n/3 + 2n/3 = n, και άρα υποψιαζόμαστε ια n log n. Ενα ακτικά, φτιά νουμε το δέντρο αναδρομής, με ύψος το πιο με ά ο μονοπάτι, έστ μήκους k -> (2/3) k n = 1 k = Θ(log n).) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 5 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (1 / 2) Λύση. 1 T(n) = 5T(n/7) + n log n = Θ(n log n) (MT περ. 3). 2 T(n) = 4T(n/5) + n/ log 2 n = Θ(n/ log 2 n) (MT περ. 3). 3 T(n) = T(n/3) + 3T(n/7) + n = Θ(n) ( ύνουμε ια κάτ φρά μα: 3T(n/7) + n, και επα η εύουμε στην αρ ική σ έση. Διαισ ητικά, έ ουμε αναδρομή σε n/3 + 3n/7 < n, και άρα επικρατεί το n.). 4 T(n) = 6T(n/6) + n = Θ(n log n) (MT περ. 2) 5. T(n) = T(n/3) + T(2n/3) + n = Θ(n log n) (διαισ ητικά, n/3 + 2n/3 = n, και άρα υποψιαζόμαστε ια n log n. Ενα ακτικά, φτιά νουμε το δέντρο αναδρομής, με ύψος το πιο με ά ο μονοπάτι, έστ μήκους k -> (2/3) k n = 1 k = Θ(log n).) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 5 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (1 / 2) Λύση. 1 T(n) = 5T(n/7) + n log n = Θ(n log n) (MT περ. 3). 2 T(n) = 4T(n/5) + n/ log 2 n = Θ(n/ log 2 n) (MT περ. 3). 3 T(n) = T(n/3) + 3T(n/7) + n = Θ(n) ( ύνουμε ια κάτ φρά μα: 3T(n/7) + n, και επα η εύουμε στην αρ ική σ έση. Διαισ ητικά, έ ουμε αναδρομή σε n/3 + 3n/7 < n, και άρα επικρατεί το n.). 4 T(n) = 6T(n/6) + n = Θ(n log n) (MT περ. 2) 5. T(n) = T(n/3) + T(2n/3) + n = Θ(n log n) (διαισ ητικά, n/3 + 2n/3 = n, και άρα υποψιαζόμαστε ια n log n. Ενα ακτικά, φτιά νουμε το δέντρο αναδρομής, με ύψος το πιο με ά ο μονοπάτι, έστ μήκους k -> (2/3) k n = 1 k = Θ(log n).) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 5 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (1 / 2) Λύση. 1 T(n) = 5T(n/7) + n log n = Θ(n log n) (MT περ. 3). 2 T(n) = 4T(n/5) + n/ log 2 n = Θ(n/ log 2 n) (MT περ. 3). 3 T(n) = T(n/3) + 3T(n/7) + n = Θ(n) ( ύνουμε ια κάτ φρά μα: 3T(n/7) + n, και επα η εύουμε στην αρ ική σ έση. Διαισ ητικά, έ ουμε αναδρομή σε n/3 + 3n/7 < n, και άρα επικρατεί το n.). 4 T(n) = 6T(n/6) + n = Θ(n log n) (MT περ. 2) 5. T(n) = T(n/3) + T(2n/3) + n = Θ(n log n) (διαισ ητικά, n/3 + 2n/3 = n, και άρα υποψιαζόμαστε ια n log n. Ενα ακτικά, φτιά νουμε το δέντρο αναδρομής, με ύψος το πιο με ά ο μονοπάτι, έστ μήκους k -> (2/3) k n = 1 k = Θ(log n).) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 5 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (1 / 2) Λύση. 1 T(n) = 5T(n/7) + n log n = Θ(n log n) (MT περ. 3). 2 T(n) = 4T(n/5) + n/ log 2 n = Θ(n/ log 2 n) (MT περ. 3). 3 T(n) = T(n/3) + 3T(n/7) + n = Θ(n) ( ύνουμε ια κάτ φρά μα: 3T(n/7) + n, και επα η εύουμε στην αρ ική σ έση. Διαισ ητικά, έ ουμε αναδρομή σε n/3 + 3n/7 < n, και άρα επικρατεί το n.). 4 T(n) = 6T(n/6) + n = Θ(n log n) (MT περ. 2) 5. T(n) = T(n/3) + T(2n/3) + n = Θ(n log n) (διαισ ητικά, n/3 + 2n/3 = n, και άρα υποψιαζόμαστε ια n log n. Ενα ακτικά, φτιά νουμε το δέντρο αναδρομής, με ύψος το πιο με ά ο μονοπάτι, έστ μήκους k -> (2/3) k n = 1 k = Θ(log n).) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 5 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (2 / 2). 6 T(n) = 16T(n/4) + n 3 log 2 n = Θ(n 3 log 2 n) (MT περ. 3) 7. T(n) = T( n) + Θ(log log n) = Θ(log 2 log n) (στο i-στάδιο: T(n) = T(n 1/2i ) + i c log log n (1 + 2 +... + i 1)c. Για την τε ευταία τιμή του i, όταν το n 1/2i φτάσει στο 2, είμαστε ok, κα ώς το επόμενο ήμα μας πάει στη μονάδα, οπότε i = Θ(log log n). Μετά, πράξεις...). 8 T(n) = T(n 3) + log n = Θ(n log n) (Για πο /σα του 3, δη αδή n = 3k, έ ουμε T(n) = T(3(k 1)) + log 3k = T(3(k 2)) + log(3(k 1)) + log 3k =... = T(3(k i)) + log(3(k i + 1)) +... + log 3k =... = T(3) + log(3 2)) + log(3 3) +... + log 3k = T(3) + log(3 k 1 k!) =...) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 6 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (2 / 2). 6 T(n) = 16T(n/4) + n 3 log 2 n = Θ(n 3 log 2 n) (MT περ. 3) 7. T(n) = T( n) + Θ(log log n) = Θ(log 2 log n) (στο i-στάδιο: T(n) = T(n 1/2i ) + i c log log n (1 + 2 +... + i 1)c. Για την τε ευταία τιμή του i, όταν το n 1/2i φτάσει στο 2, είμαστε ok, κα ώς το επόμενο ήμα μας πάει στη μονάδα, οπότε i = Θ(log log n). Μετά, πράξεις...). 8 T(n) = T(n 3) + log n = Θ(n log n) (Για πο /σα του 3, δη αδή n = 3k, έ ουμε T(n) = T(3(k 1)) + log 3k = T(3(k 2)) + log(3(k 1)) + log 3k =... = T(3(k i)) + log(3(k i + 1)) +... + log 3k =... = T(3) + log(3 2)) + log(3 3) +... + log 3k = T(3) + log(3 k 1 k!) =...) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 6 / 23
Άσκηση 1 ( ): Αναδρομικές Σ έσεις (2 / 2). 6 T(n) = 16T(n/4) + n 3 log 2 n = Θ(n 3 log 2 n) (MT περ. 3) 7. T(n) = T( n) + Θ(log log n) = Θ(log 2 log n) (στο i-στάδιο: T(n) = T(n 1/2i ) + i c log log n (1 + 2 +... + i 1)c. Για την τε ευταία τιμή του i, όταν το n 1/2i φτάσει στο 2, είμαστε ok, κα ώς το επόμενο ήμα μας πάει στη μονάδα, οπότε i = Θ(log log n). Μετά, πράξεις...). 8 T(n) = T(n 3) + log n = Θ(n log n) (Για πο /σα του 3, δη αδή n = 3k, έ ουμε T(n) = T(3(k 1)) + log 3k = T(3(k 2)) + log(3(k 1)) + log 3k =... = T(3(k i)) + log(3(k i + 1)) +... + log 3k =... = T(3) + log(3 2)) + log(3 3) +... + log 3k = T(3) + log(3 k 1 k!) =...) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 6 / 23
Outline. 1 Άσκηση 1. 2 Άσκηση 2. 3 Άσκηση 3. 4 Άσκηση 4. 5 Άσκηση 5 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 7 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (1 / 4) Είσοδος: Πίνακας A[1...n] με O(log d n) διαφορετικά στοι εία (d στα ερά). Πρό ημα: Ταξινόμηση σε ρόνο O(n log log n). Παρατηρήσεις Θέ ουμε να εκμετα ευτούμε το μικρό π ή ος διαφορετικών στοι εί ν, ταξινομώντας στην ουσία μόνο αυτά, και στη συνέ εια εμίζοντας τον πίνακα με τα αντί ραφα τους. Αφού δεν ξέρουμε τις διακριτές τιμές όμ ς, πρέπει να τις εντοπίσουμε πρώτα. Εδώ μπορούμε να ρησιμοποιήσουμε μια ουρά προτεραιότητας, έτσι ώστε να ε έ ουμε ρή ορα αν μια τιμή έ ει ήδη ρε εί ή ό ι, και στη συνέ εια να ταξινομήσουμε, ή να τις ταξινομούμε online, ρησιμοποιώντας insertion sort. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 8 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (1 / 4) Είσοδος: Πίνακας A[1...n] με O(log d n) διαφορετικά στοι εία (d στα ερά). Πρό ημα: Ταξινόμηση σε ρόνο O(n log log n). Παρατηρήσεις Θέ ουμε να εκμετα ευτούμε το μικρό π ή ος διαφορετικών στοι εί ν, ταξινομώντας στην ουσία μόνο αυτά, και στη συνέ εια εμίζοντας τον πίνακα με τα αντί ραφα τους. Αφού δεν ξέρουμε τις διακριτές τιμές όμ ς, πρέπει να τις εντοπίσουμε πρώτα. Εδώ μπορούμε να ρησιμοποιήσουμε μια ουρά προτεραιότητας, έτσι ώστε να ε έ ουμε ρή ορα αν μια τιμή έ ει ήδη ρε εί ή ό ι, και στη συνέ εια να ταξινομήσουμε, ή να τις ταξινομούμε online, ρησιμοποιώντας insertion sort. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 8 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (1 / 4) Είσοδος: Πίνακας A[1...n] με O(log d n) διαφορετικά στοι εία (d στα ερά). Πρό ημα: Ταξινόμηση σε ρόνο O(n log log n). Παρατηρήσεις Θέ ουμε να εκμετα ευτούμε το μικρό π ή ος διαφορετικών στοι εί ν, ταξινομώντας στην ουσία μόνο αυτά, και στη συνέ εια εμίζοντας τον πίνακα με τα αντί ραφα τους. Αφού δεν ξέρουμε τις διακριτές τιμές όμ ς, πρέπει να τις εντοπίσουμε πρώτα. Εδώ μπορούμε να ρησιμοποιήσουμε μια ουρά προτεραιότητας, έτσι ώστε να ε έ ουμε ρή ορα αν μια τιμή έ ει ήδη ρε εί ή ό ι, και στη συνέ εια να ταξινομήσουμε, ή να τις ταξινομούμε online, ρησιμοποιώντας insertion sort. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 8 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (1 / 4) Είσοδος: Πίνακας A[1...n] με O(log d n) διαφορετικά στοι εία (d στα ερά). Πρό ημα: Ταξινόμηση σε ρόνο O(n log log n). Παρατηρήσεις Θέ ουμε να εκμετα ευτούμε το μικρό π ή ος διαφορετικών στοι εί ν, ταξινομώντας στην ουσία μόνο αυτά, και στη συνέ εια εμίζοντας τον πίνακα με τα αντί ραφα τους. Αφού δεν ξέρουμε τις διακριτές τιμές όμ ς, πρέπει να τις εντοπίσουμε πρώτα. Εδώ μπορούμε να ρησιμοποιήσουμε μια ουρά προτεραιότητας, έτσι ώστε να ε έ ουμε ρή ορα αν μια τιμή έ ει ήδη ρε εί ή ό ι, και στη συνέ εια να ταξινομήσουμε, ή να τις ταξινομούμε online, ρησιμοποιώντας insertion sort. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 8 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (2 / 4) Λύση με insertion sort Χρησιμοποιούμε έναν απ ό πίνακα με έ ους O(log d n), στον οποίο α ά ουμε τις διακριτές τιμές, μαζί με τις συ νότητες εμφάνισης τους. Σε κά ε ήμα, με binary search (κόστους O(log log n)) ε έ ουμε αν υπάρ ει ήδη η προς εξέταση τιμή, και αν ναι αυξάνουμε τον αντίστοι ο counter, διαφορετικά με κόστος O(log d n) την τοπο ετούμε, κρατώντας sorted τον πίνακα. Αφού όμ ς α ίνουν O(log d n) insertions, έ ουμε συνο ικό κόστος O(n log log n) + O(log 2d n) = O(n log log n). Η αντι ραφή στον αρ ικό πίνακα έ ει ρόνο Θ(n) και άρα συνο ικά έ ουμε κόστος O(n log log n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 9 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (2 / 4) Λύση με insertion sort Χρησιμοποιούμε έναν απ ό πίνακα με έ ους O(log d n), στον οποίο α ά ουμε τις διακριτές τιμές, μαζί με τις συ νότητες εμφάνισης τους. Σε κά ε ήμα, με binary search (κόστους O(log log n)) ε έ ουμε αν υπάρ ει ήδη η προς εξέταση τιμή, και αν ναι αυξάνουμε τον αντίστοι ο counter, διαφορετικά με κόστος O(log d n) την τοπο ετούμε, κρατώντας sorted τον πίνακα. Αφού όμ ς α ίνουν O(log d n) insertions, έ ουμε συνο ικό κόστος O(n log log n) + O(log 2d n) = O(n log log n). Η αντι ραφή στον αρ ικό πίνακα έ ει ρόνο Θ(n) και άρα συνο ικά έ ουμε κόστος O(n log log n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 9 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (2 / 4) Λύση με insertion sort Χρησιμοποιούμε έναν απ ό πίνακα με έ ους O(log d n), στον οποίο α ά ουμε τις διακριτές τιμές, μαζί με τις συ νότητες εμφάνισης τους. Σε κά ε ήμα, με binary search (κόστους O(log log n)) ε έ ουμε αν υπάρ ει ήδη η προς εξέταση τιμή, και αν ναι αυξάνουμε τον αντίστοι ο counter, διαφορετικά με κόστος O(log d n) την τοπο ετούμε, κρατώντας sorted τον πίνακα. Αφού όμ ς α ίνουν O(log d n) insertions, έ ουμε συνο ικό κόστος O(n log log n) + O(log 2d n) = O(n log log n). Η αντι ραφή στον αρ ικό πίνακα έ ει ρόνο Θ(n) και άρα συνο ικά έ ουμε κόστος O(n log log n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 9 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (2 / 4) Λύση με insertion sort Χρησιμοποιούμε έναν απ ό πίνακα με έ ους O(log d n), στον οποίο α ά ουμε τις διακριτές τιμές, μαζί με τις συ νότητες εμφάνισης τους. Σε κά ε ήμα, με binary search (κόστους O(log log n)) ε έ ουμε αν υπάρ ει ήδη η προς εξέταση τιμή, και αν ναι αυξάνουμε τον αντίστοι ο counter, διαφορετικά με κόστος O(log d n) την τοπο ετούμε, κρατώντας sorted τον πίνακα. Αφού όμ ς α ίνουν O(log d n) insertions, έ ουμε συνο ικό κόστος O(n log log n) + O(log 2d n) = O(n log log n). Η αντι ραφή στον αρ ικό πίνακα έ ει ρόνο Θ(n) και άρα συνο ικά έ ουμε κόστος O(n log log n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 9 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (3 / 4) Λύση με ουρά προτεραιότητας Κα ώς έ ουμε ί α στοι εία προς ταξινόμηση, η ταξινόμηση τους σε κά ε περίπτ ση είναι ρή ορη. Οπότε η ρονική επι άρυνση προκύπτει κα ώς αναζητούμε τις ήδη υπάρ ουσες διακριτές τιμές, ια τον εντοπισμό τ ν duplicates στον αρ ικό πίνακα. Για το ό ο αυτό, προσφέρεται να ρησιμοποιήσουμε μια ουρά προτεραιότητας που δίνει κα ούς ρόνους αναζήτησης. Για παράδει μα, μπορούμε να ρησιμοποιήσουμε κάποια δομή well-balanced binary search tree (AVL trees, Red-black trees, κ.ά.) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 10 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (3 / 4) Λύση με ουρά προτεραιότητας Κα ώς έ ουμε ί α στοι εία προς ταξινόμηση, η ταξινόμηση τους σε κά ε περίπτ ση είναι ρή ορη. Οπότε η ρονική επι άρυνση προκύπτει κα ώς αναζητούμε τις ήδη υπάρ ουσες διακριτές τιμές, ια τον εντοπισμό τ ν duplicates στον αρ ικό πίνακα. Για το ό ο αυτό, προσφέρεται να ρησιμοποιήσουμε μια ουρά προτεραιότητας που δίνει κα ούς ρόνους αναζήτησης. Για παράδει μα, μπορούμε να ρησιμοποιήσουμε κάποια δομή well-balanced binary search tree (AVL trees, Red-black trees, κ.ά.) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 10 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (4 / 4) Ερώτηση: Γιατί δεν ισ ύει το κάτ φρά μα Ω(n log n)?? Απάντηση: Κα ώς έ ουμε πο απ ές εμφανίσεις ίδι ν στοι εί ν, δε ρειάζεται να διακρίνουμε αυτές τις εμφανίσεις. Ουσιαστικά οιπόν από τις n! μετα έσεις, έ ουμε να α νοήσουμε τις μετα έσεις τ ν στοι εί ν που έ ουν ίδια τιμή. Εξετάζοντας την περίπτ ση που τα στοι εία έ ουν ισοκατανεμη εί, έ ουμε ότι το π ή ος τ ν μετα έσε ν είναι n! ( ) log n! log d n που δίνει ύψος του δέντρου συ κρίσε ν Θ(n log log n)). Άρα, ο α όρι μος μας είναι και έ τιστος! d n (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 11 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (4 / 4) Ερώτηση: Γιατί δεν ισ ύει το κάτ φρά μα Ω(n log n)?? Απάντηση: Κα ώς έ ουμε πο απ ές εμφανίσεις ίδι ν στοι εί ν, δε ρειάζεται να διακρίνουμε αυτές τις εμφανίσεις. Ουσιαστικά οιπόν από τις n! μετα έσεις, έ ουμε να α νοήσουμε τις μετα έσεις τ ν στοι εί ν που έ ουν ίδια τιμή. Εξετάζοντας την περίπτ ση που τα στοι εία έ ουν ισοκατανεμη εί, έ ουμε ότι το π ή ος τ ν μετα έσε ν είναι n! ( ) log n! log d n που δίνει ύψος του δέντρου συ κρίσε ν Θ(n log log n)). Άρα, ο α όρι μος μας είναι και έ τιστος! d n (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 11 / 23
Άσκηση 2: Ταξινόμηση σε Πίνακα με Πο ά Ίδια Στοι εία (4 / 4) Ερώτηση: Γιατί δεν ισ ύει το κάτ φρά μα Ω(n log n)?? Απάντηση: Κα ώς έ ουμε πο απ ές εμφανίσεις ίδι ν στοι εί ν, δε ρειάζεται να διακρίνουμε αυτές τις εμφανίσεις. Ουσιαστικά οιπόν από τις n! μετα έσεις, έ ουμε να α νοήσουμε τις μετα έσεις τ ν στοι εί ν που έ ουν ίδια τιμή. Εξετάζοντας την περίπτ ση που τα στοι εία έ ουν ισοκατανεμη εί, έ ουμε ότι το π ή ος τ ν μετα έσε ν είναι n! ( ) log n! log d n που δίνει ύψος του δέντρου συ κρίσε ν Θ(n log log n)). Άρα, ο α όρι μος μας είναι και έ τιστος! d n (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 11 / 23
Outline. 1 Άσκηση 1. 2 Άσκηση 2. 3 Άσκηση 3. 4 Άσκηση 4. 5 Άσκηση 5 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 12 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (1 / 2) Γενικά: Δυαδική αναζήτηση στοι είου x σε ταξινομημένο πίνακα A με έ ους n, δίνει έ τιστο ρόνο αναζήτησης O(log n). Πρό ημα: Και αν δεν ξέρουμε το n??... Ιδέα!! Binary Search + Repeating Doubling Doubling: Ε έ ουμε διαδο ικά τις έσεις 2 i, ια i = 0, 1,... Παρατηρούμε ότι σε log n ήματα αίνουμε από τα όρια του πίνακα. i- ήμα α ορί μου: Αν A[2 i ] < x, συνε ίζουμε στο επόμενο ήμα, α ιώς το x μπορεί να ρίσκεται μόνο μεταξύ τ ν έσε ν 2 i 1 και 2 i, οπότε κάνουμε binary search. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 13 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (1 / 2) Γενικά: Δυαδική αναζήτηση στοι είου x σε ταξινομημένο πίνακα A με έ ους n, δίνει έ τιστο ρόνο αναζήτησης O(log n). Πρό ημα: Και αν δεν ξέρουμε το n??... Ιδέα!! Binary Search + Repeating Doubling Doubling: Ε έ ουμε διαδο ικά τις έσεις 2 i, ια i = 0, 1,... Παρατηρούμε ότι σε log n ήματα αίνουμε από τα όρια του πίνακα. i- ήμα α ορί μου: Αν A[2 i ] < x, συνε ίζουμε στο επόμενο ήμα, α ιώς το x μπορεί να ρίσκεται μόνο μεταξύ τ ν έσε ν 2 i 1 και 2 i, οπότε κάνουμε binary search. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 13 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (1 / 2) Γενικά: Δυαδική αναζήτηση στοι είου x σε ταξινομημένο πίνακα A με έ ους n, δίνει έ τιστο ρόνο αναζήτησης O(log n). Πρό ημα: Και αν δεν ξέρουμε το n??... Ιδέα!! Binary Search + Repeating Doubling Doubling: Ε έ ουμε διαδο ικά τις έσεις 2 i, ια i = 0, 1,... Παρατηρούμε ότι σε log n ήματα αίνουμε από τα όρια του πίνακα. i- ήμα α ορί μου: Αν A[2 i ] < x, συνε ίζουμε στο επόμενο ήμα, α ιώς το x μπορεί να ρίσκεται μόνο μεταξύ τ ν έσε ν 2 i 1 και 2 i, οπότε κάνουμε binary search. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 13 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (1 / 2) Γενικά: Δυαδική αναζήτηση στοι είου x σε ταξινομημένο πίνακα A με έ ους n, δίνει έ τιστο ρόνο αναζήτησης O(log n). Πρό ημα: Και αν δεν ξέρουμε το n??... Ιδέα!! Binary Search + Repeating Doubling Doubling: Ε έ ουμε διαδο ικά τις έσεις 2 i, ια i = 0, 1,... Παρατηρούμε ότι σε log n ήματα αίνουμε από τα όρια του πίνακα. i- ήμα α ορί μου: Αν A[2 i ] < x, συνε ίζουμε στο επόμενο ήμα, α ιώς το x μπορεί να ρίσκεται μόνο μεταξύ τ ν έσε ν 2 i 1 και 2 i, οπότε κάνουμε binary search. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 13 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (1 / 2) Γενικά: Δυαδική αναζήτηση στοι είου x σε ταξινομημένο πίνακα A με έ ους n, δίνει έ τιστο ρόνο αναζήτησης O(log n). Πρό ημα: Και αν δεν ξέρουμε το n??... Ιδέα!! Binary Search + Repeating Doubling Doubling: Ε έ ουμε διαδο ικά τις έσεις 2 i, ια i = 0, 1,... Παρατηρούμε ότι σε log n ήματα αίνουμε από τα όρια του πίνακα. i- ήμα α ορί μου: Αν A[2 i ] < x, συνε ίζουμε στο επόμενο ήμα, α ιώς το x μπορεί να ρίσκεται μόνο μεταξύ τ ν έσε ν 2 i 1 και 2 i, οπότε κάνουμε binary search. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 13 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A...... x...... 1 2 3 4 2 i 2 i+1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A...... x...... 1 2 3 4 2 i 2 i+1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A...... x...... 1 2 3 4 2 i 2 i+1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A...... x...... 1 2 3 4 2 i 2 i+1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A...... x...... 1 2 3 4 2 i 2 i+1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A 1 2 3 4... 2 i... x...... 2 i+1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A...... x...... 1 2 3 4 2 i BINARY SEARCH 2 i+1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 (α): Δυαδική Αναζήτηση (2 / 2) A...... x...... 1 2 3 4 2 i BINARY SEARCH 2 i+1 Χρόνος: Το πο ύ log n ήματα μέ ρι να ρούμε το κατά η ο (2 i, 2 i+1 ) διάστημα, και μετά binary search σε εύρος 2 i n. Άρα συνο ικό κόστος O(log n) (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 14 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. A B n (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. k A B n (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. k/2 k A n B (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. k/2 k A A[k/2] > B[k/2] n B (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. k/2 k A Still need k/2 to reach k on the merged list A[k/2] > B[k/2] n B k/2 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. k/2 k A Which ones? The k/2 smallest ones A[k/2] > B[k/2] n B k/2 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 1 / 2) Είσοδος: Δύο ταξινομημένοι πίνακες A, B, με έ ους n. Ζητούμενο: Το k-οστό μικρότερο στοι είο της έν σης. Ιδέα: Πρακτικά ζητάμε το μεσαίο στοι είο της έν σης τ ν A[1...k], B[1...k]. Θα το ρούμε με divide-and-conquer τρόπο. k/2 k A Observe that the middle element of the red s is what we need B k/2 A[k/2] > B[k/2] n (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 15 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 2 / 2) Χρόνος: Σε κά ε ήμα, υποδιπ ασιάζεται το μέ ε ος του input, δη αδή T(k) = T(k/2) + c, και άρα κατα ή ουμε σε ρόνο O(log k). Σημεί ση: Αν k > n, τότε μπορούμε με μία μικρή τροποποίηση να κάνουμε τον α όρι μο να δου έψει (π ς?). Ο ρόνος είναι και πά ι O(log k), όπου απ ά k = Θ(n), οπότε κατα ή ουμε σε ρόνο O(log n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 16 / 23
Άσκηση 3 ( ): Δυαδική Αναζήτηση ( 2 / 2) Χρόνος: Σε κά ε ήμα, υποδιπ ασιάζεται το μέ ε ος του input, δη αδή T(k) = T(k/2) + c, και άρα κατα ή ουμε σε ρόνο O(log k). Σημεί ση: Αν k > n, τότε μπορούμε με μία μικρή τροποποίηση να κάνουμε τον α όρι μο να δου έψει (π ς?). Ο ρόνος είναι και πά ι O(log k), όπου απ ά k = Θ(n), οπότε κατα ή ουμε σε ρόνο O(log n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 16 / 23
Outline. 1 Άσκηση 1. 2 Άσκηση 2. 3 Άσκηση 3. 4 Άσκηση 4. 5 Άσκηση 5 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 17 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. 2 k 1 ak 1 ak 2 a0 a k 1 0 1 Queries 2 k + (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. 2 k 1 > 1 ak 1 ak 2 a0 a k 1 0 1 Queries 2 k + (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. 2 k 2 1 ak 1 ak 2 a0 a k 2 0 1 Queries 2 k + 2 k 1 + (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. < 2 k 2 1 0 ak 1 ak 2 a0 a k 2 0 1 Queries 2 k + 2 k 1 + (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. 2 k i 1 0 ak 1 ak 2 a0 a k i 0 1 Queries 2 k + 2 k 1 +... + 2 k i+1 + (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Άσκηση 4: Συ ο ή Comics Είσοδος: Ό οι οι αρι μοί από το 0 ς το n = 2 k εκτός από έναν. Ζητούμενο: Εντοπισμός του αρι μού που είπει με ερ τήσεις μόνο ια συ κεκριμένα ψηφία τ ν δοσμέν ν αρι μών. Ιδέα: Βρίσκουμε ένα ένα τα bits του ζητούμενου αρι μού, ξεκινώντας από το MSB. Με την εύρεση ενός νέου bit, το μέ ε ος του προ ήματος υποδιπ ασιάζεται. 2 0 = 1 1 0 ak 1 ak 2 0 a0 a 0 0 1 Queries 2 k + 2 k 1 +... + 2 = 2 k + 2 k 1 = 2n 1 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 18 / 23
Outline. 1 Άσκηση 1. 2 Άσκηση 2. 3 Άσκηση 3. 4 Άσκηση 4. 5 Άσκηση 5 (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 19 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (1 / 4) Είσοδος: Πίνακας A[1...n] Ζητούμενο: Πίνακας B[1...n] όπου B[i] το index του κοντινότερου από αριστερά αρι μού με A[B[i]] > A[i]. Λύση: Γεμίζουμε από αριστερά προς τα δεξιά τον πίνακα B, έση προς έση. Αυτό ίνεται εύκο α: B[1] = 0; for i := 2 to n do { j := i 1; while (j > 0) do { if A[j] > A[i] then break; else j := j 1; } B[i] := j; } // πρώτη προσέ ιση (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 20 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (1 / 4) Είσοδος: Πίνακας A[1...n] Ζητούμενο: Πίνακας B[1...n] όπου B[i] το index του κοντινότερου από αριστερά αρι μού με A[B[i]] > A[i]. Λύση: Γεμίζουμε από αριστερά προς τα δεξιά τον πίνακα B, έση προς έση. Αυτό ίνεται εύκο α: B[1] = 0; for i := 2 to n do { j := i 1; while (j > 0) do { if A[j] > A[i] then break; else j := j 1; } B[i] := j; } // πρώτη προσέ ιση (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 20 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (1 / 4) Είσοδος: Πίνακας A[1...n] Ζητούμενο: Πίνακας B[1...n] όπου B[i] το index του κοντινότερου από αριστερά αρι μού με A[B[i]] > A[i]. Λύση: Γεμίζουμε από αριστερά προς τα δεξιά τον πίνακα B, έση προς έση. Αυτό ίνεται εύκο α: B[1] = 0; for i := 2 to n do { j := i 1; while (j > 0) do { if A[j] > A[i] then break; else j := B[j]; } B[i] := j; } // κα ύτερο?? (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 20 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (2 / 4) Trivial Upper Time Bound: Σκεπτόμενοι απ οϊκά, και παρά τη ε τί ση μας, η ειρότερη περίπτ ση φαντάζει να είναι και πά ι όταν σε κά ε ήμα κάνουμε συ κρίσεις με ό ους τους προη ούμενους αρι μούς. Αυτό δίνει κατευ είαν ένα άν φρά μα της τάξης 1 + 2 +... + n 1 = O(n 2 ). Ιδέα: Για να προκύψει ο ζητούμενος ραμμικός ρόνος, ρησιμοποιούμε amortized ανά υση: παρ ό ο που στο i- ήμα το κόστος στη ειρότερη είναι i 1, δε ίνεται ό α τα ήματα να έ ουν κόστος ειρότερης περίπτ σης, ανεξάρτητα από το input μας. Με ά α ό ια, αν ια κάποια στοι εία κάνουμε πο ές συ κρίσεις μέ ρι να ρούμε το σ στό index, τότε πο ά ά α στοι εία σί ουρα α μας έ ουν κοστίσει πο ύ ί ο. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 21 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (2 / 4) Trivial Upper Time Bound: Σκεπτόμενοι απ οϊκά, και παρά τη ε τί ση μας, η ειρότερη περίπτ ση φαντάζει να είναι και πά ι όταν σε κά ε ήμα κάνουμε συ κρίσεις με ό ους τους προη ούμενους αρι μούς. Αυτό δίνει κατευ είαν ένα άν φρά μα της τάξης 1 + 2 +... + n 1 = O(n 2 ). Ιδέα: Για να προκύψει ο ζητούμενος ραμμικός ρόνος, ρησιμοποιούμε amortized ανά υση: παρ ό ο που στο i- ήμα το κόστος στη ειρότερη είναι i 1, δε ίνεται ό α τα ήματα να έ ουν κόστος ειρότερης περίπτ σης, ανεξάρτητα από το input μας. Με ά α ό ια, αν ια κάποια στοι εία κάνουμε πο ές συ κρίσεις μέ ρι να ρούμε το σ στό index, τότε πο ά ά α στοι εία σί ουρα α μας έ ουν κοστίσει πο ύ ί ο. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 21 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (3 / 4) Χρησιμοποιήσουμε ένα charging επι είρημα: διαμοιράζουμε τον αρι μό τ ν συ κρίσε ν ανάμεσα στα στοι εία του πίνακα, και στο τέ ος μετράμε πόσες συ κρίσεις έ ιναν, α ροίζοντας τις ρεώσεις που κάναμε σε κά ε στοι είο. Έστ ότι στο i- ήμα κάνουμε k συ κρίσεις, κατά σειρά με τα στοι εία με δείκτες t 1 > t 2 >... > t k, (t 1 = i 1). Τότε, ρεώνουμε το A[i] με 1 σύ κριση και τα A[t 1 ], A[t 2 ],..., A[t k 1 ], με 1 σύ κριση το κα ένα. Δη αδή το κόστος διαμοιράζεται σε ό α τα στοι εία, π ην του τε ευταίου. Παρατηρούμε ότι ένα στοι είο στη έση i ρεώνεται είτε όταν είμαστε στο ήμα i είτε όταν συμμετέ ει ς ενδιάμεσο σημείο σε κάποιο μονοπάτι, ια κάποιο ήμα j > i. Τέ ος, παρατηρούμε ότι ένα στοι είο μπορεί να συμμετέ ει ς ενδιάμεσο μόνο σε ένα μονοπάτι, αυτό που αντιστοι εί στο πρώτο j > i με A[j] > A[i]. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 22 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (3 / 4) Χρησιμοποιήσουμε ένα charging επι είρημα: διαμοιράζουμε τον αρι μό τ ν συ κρίσε ν ανάμεσα στα στοι εία του πίνακα, και στο τέ ος μετράμε πόσες συ κρίσεις έ ιναν, α ροίζοντας τις ρεώσεις που κάναμε σε κά ε στοι είο. Έστ ότι στο i- ήμα κάνουμε k συ κρίσεις, κατά σειρά με τα στοι εία με δείκτες t 1 > t 2 >... > t k, (t 1 = i 1). Τότε, ρεώνουμε το A[i] με 1 σύ κριση και τα A[t 1 ], A[t 2 ],..., A[t k 1 ], με 1 σύ κριση το κα ένα. Δη αδή το κόστος διαμοιράζεται σε ό α τα στοι εία, π ην του τε ευταίου. Παρατηρούμε ότι ένα στοι είο στη έση i ρεώνεται είτε όταν είμαστε στο ήμα i είτε όταν συμμετέ ει ς ενδιάμεσο σημείο σε κάποιο μονοπάτι, ια κάποιο ήμα j > i. Τέ ος, παρατηρούμε ότι ένα στοι είο μπορεί να συμμετέ ει ς ενδιάμεσο μόνο σε ένα μονοπάτι, αυτό που αντιστοι εί στο πρώτο j > i με A[j] > A[i]. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 22 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (3 / 4) Χρησιμοποιήσουμε ένα charging επι είρημα: διαμοιράζουμε τον αρι μό τ ν συ κρίσε ν ανάμεσα στα στοι εία του πίνακα, και στο τέ ος μετράμε πόσες συ κρίσεις έ ιναν, α ροίζοντας τις ρεώσεις που κάναμε σε κά ε στοι είο. Έστ ότι στο i- ήμα κάνουμε k συ κρίσεις, κατά σειρά με τα στοι εία με δείκτες t 1 > t 2 >... > t k, (t 1 = i 1). Τότε, ρεώνουμε το A[i] με 1 σύ κριση και τα A[t 1 ], A[t 2 ],..., A[t k 1 ], με 1 σύ κριση το κα ένα. Δη αδή το κόστος διαμοιράζεται σε ό α τα στοι εία, π ην του τε ευταίου. Παρατηρούμε ότι ένα στοι είο στη έση i ρεώνεται είτε όταν είμαστε στο ήμα i είτε όταν συμμετέ ει ς ενδιάμεσο σημείο σε κάποιο μονοπάτι, ια κάποιο ήμα j > i. Τέ ος, παρατηρούμε ότι ένα στοι είο μπορεί να συμμετέ ει ς ενδιάμεσο μόνο σε ένα μονοπάτι, αυτό που αντιστοι εί στο πρώτο j > i με A[j] > A[i]. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 22 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (3 / 4) Χρησιμοποιήσουμε ένα charging επι είρημα: διαμοιράζουμε τον αρι μό τ ν συ κρίσε ν ανάμεσα στα στοι εία του πίνακα, και στο τέ ος μετράμε πόσες συ κρίσεις έ ιναν, α ροίζοντας τις ρεώσεις που κάναμε σε κά ε στοι είο. Έστ ότι στο i- ήμα κάνουμε k συ κρίσεις, κατά σειρά με τα στοι εία με δείκτες t 1 > t 2 >... > t k, (t 1 = i 1). Τότε, ρεώνουμε το A[i] με 1 σύ κριση και τα A[t 1 ], A[t 2 ],..., A[t k 1 ], με 1 σύ κριση το κα ένα. Δη αδή το κόστος διαμοιράζεται σε ό α τα στοι εία, π ην του τε ευταίου. Παρατηρούμε ότι ένα στοι είο στη έση i ρεώνεται είτε όταν είμαστε στο ήμα i είτε όταν συμμετέ ει ς ενδιάμεσο σημείο σε κάποιο μονοπάτι, ια κάποιο ήμα j > i. Τέ ος, παρατηρούμε ότι ένα στοι είο μπορεί να συμμετέ ει ς ενδιάμεσο μόνο σε ένα μονοπάτι, αυτό που αντιστοι εί στο πρώτο j > i με A[j] > A[i]. (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 22 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (4 / 4) Άρα, κά ε στοι είο ρεώνεται το πο ύ 2 συ κρίσεις. (amortized κόστος) Κατα ή ουμε οιπόν ότι ίνονται το πο ύ 2n συ κρίσεις, και άρα έ ουμε ραμμικό ρόνο Θ(n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 23 / 23
Άσκηση 5: Πο υκατοικίες ρίς έα (4 / 4) Άρα, κά ε στοι είο ρεώνεται το πο ύ 2 συ κρίσεις. (amortized κόστος) Κατα ή ουμε οιπόν ότι ίνονται το πο ύ 2n συ κρίσεις, και άρα έ ουμε ραμμικό ρόνο Θ(n). (CoReLab - NTUA) Α όρι μοι - 1η Σειρά 12 Δεκεμ ρίου, 2011 23 / 23