Α όρι μοι και Πο υπ οκότητα 1η Σειρά Γραπτών Ασκήσε ν

Σχετικά έγγραφα
1η Σειρά Γραπτών Ασκήσεων

Κανονισμός Εκτε εστικής Επιτροπής

Κανονισμός Διοικητικού Συμ ου ίου

Απ ή υ οποίηση α ορί μου Fast Multipole Method ανεξάρτητου συνάρτησης πυρήνα

Ο Κατά ο ος Υπο ραφών

Αλγόριθµοι και Πολυπλοκότητα

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Το Διανυσματικό Μοντέ ο

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών. Διπ ματική Ερ ασία

Κανονισμός Οικονομικής Δια είρισης

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Το Λο ικό Μοντέ ο. Περιε όμενα Κεφα αίου

Δομές Δεδομένων & Αλγόριθμοι

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

ΕΠΑΝΑΛΗΠΣΙΚΕ ΑΚΗΕΙ ΜΙΓΑΔΙΚΟΤ-ΟΡΙΑ-ΤΝΕΧΕΙΑ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Ο Αντεστραμμένος Κατά ο ος

Κανονισμός Εποπτικού Συμ ου ίου

Αλγόριθμοι ταξινόμησης

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Αλγόριθμοι Ταξινόμησης Μέρος 4

Ουρά Προτεραιότητας: Heap

α κα ρι ι ο ος α α νηρ ος ου ουκ ε πο ρε ε ευ θη εν βου λη η η α α σε ε ε βων και εν ο δω ω α α µαρ τω λω ων ουουκ ε ε ε

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αλγόριθµοι Divide-and- Conquer

Παρά η η Δια είριση Δεδομέν ν

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Δομές Δεδομένων & Αλγόριθμοι

Το Πι ανοκρατικό Μοντέ ο

Δομές Δεδομένων & Αλγόριθμοι

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Ανάκτηση Π ηροφορίας στον Πα κόσμιο Ιστό

Σχεδίαση και Ανάλυση Αλγορίθμων

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Αλγόριθμοι Ταξινόμησης Μέρος 2

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Outline. 6 Edit Distance

Αλγόριθμοι και Πολυπλοκότητα

Παράλληλοι Αλγόριθμοι: Ανάλυση Εικόνας και Υπολογιστική Γεωμετρία. Πέτρος Ποτίκας CoReLab 4/5/2006

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Δομές Δεδομένων & Αλγόριθμοι

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Ταξινόμηση με συγχώνευση Merge Sort

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

ἔστω Ο...πισινός μας! American Bar το καναμε για όλους μας. * * * κι από τη Σκιά τους. σε κάθε νησί;

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ταξινόμηση. 1. Στατιστικά Διάταξης 2. Στατιστικά σε Μέσο Γραμμικό Χρόνο. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Προγραμματισμός Ι (ΗΥ120)

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

Εισαγωγή στην Ανάλυση Αλγορίθμων

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

1o Φροντιστήριο ΗΥ240

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

2η Σειρά Γραπτών Ασκήσεων

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

ΚΑΝΟΝΙΣ ΜΟ Ι ΙΕΞΑΓΩΓΗΣ ΑΓΩΝΩΝ 1 / 8 SCALE IC TRA CK ΕΛ. Μ. Ε

Π α σα πνο η αι νε σα τω τον Κυ ρι. Π α σα πνο η αι νε σα α τω τον. Ἕτερον. Τάξις Ἑωθινοῦ Εὐαγγελίου, Ὀ Ν Ψαλµός. Μέλος Ἰωάννου Ἀ. Νέγρη.

Σχεδίαση και Ανάλυση Αλγορίθμων

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Ουρά Προτεραιότητας: Heap

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εκτενείς Δομές Δεδομένων

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Εισαγωγή στους Αλγόριθμους

Ουρά Προτεραιότητας: Heap

Αλγόριθμοι και Πολυπλοκότητα

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι (ΗΥ120)

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ε νικό Μετσό ιο Πο υτε νείο

Ουρά Προτεραιότητας: Heap

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

JEAN-CHARLES BLATZ 02XD RE52755

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014

Διαδικασιακός Προγραμματισμός

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αποτίμηση Αποτε εσματικότητας

ιαφάνειες παρουσίασης #4

Transcript:

.. Α όρι μοι και Πο υπ οκότητα 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