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

Σχετικά έγγραφα
Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

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

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

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

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

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

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

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

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

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

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

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

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

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

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

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

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

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

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

Ασκήσεις (2) Άσκηση 1

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

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

Ταξινόμηση. 1. Ταξινόμηση του Shell. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

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

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

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

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

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

Προγραμματιστικές Τεχνικές

Fast Fourier Transform

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

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

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

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

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

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

a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1

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

Ταχεία Ταξινόμηση Quick-Sort

Outline. 6 Edit Distance

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

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

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

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ

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

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

Προγραμματιστικές Τεχνικές

Learning k-modal distributions via testing

Κατώτερα φράγματα Κατώτερο φράγμα: εκτίμηση της ελάχιστης εργασίας που απαιτείται για την επίλυση ενός προβλήματος. Παραδείγματα: Αριθμός συγκρίσεων π

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

Ταξινόμηση. Σαλτογιάννη Αθανασία

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

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Εισαγωγή Ορισμός Frequency moments

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

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

Διδάσκων: Παναγιώτης Ανδρέου

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

Transcript:

1/20 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 1η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο

1 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 2 3 4 5 2/20

Άσκηση 1α): Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 1 nk=1 k2 k 2 log( ( n log n) ) 3 log(10n!)/(log n) 9 4 log ( ( 2n) n ) = Θ(n) = n3 4 56 5 nk=1 k 3 = Θ(n 4 ) 6 n 5 / log 10 n 7 (log 2 (3n)) log 2 (7n) 8 2 (log 2 n)3 = Θ(n log2 n ) nk=1 k2 k = Θ(n2 n ) = n n ( n k=1 k) 9 10 ( 2n n/4 ) 11 n! 3/20

Άσκηση 1β): Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 1 T(n) = 3T(n/4) + n log log 7 n = Θ(n log log 7 n) MT περίπτωση 3 2 T(n) = 4T(n/4) + n log 5 n = Θ(n log 6 n) Όχι ΜΤ διότι δεν είναι πολυωνυμικά διαχωρίσιμες Επειδή 4n/4 = n και f(n) = n log 5 n υποπτευόμαστε ότι T(n) = Θ(n log 6 n) και το δείχνουμε με επαγωγή ή με δένδρο αναδρομής 3 T(n) = 9T(n/5) + n log 14 n = Θ(n log 5 9 ) MT περίπτωση 1 4 T(n) = T(n 1) + log n = Θ(n log n) T(n) = T(1) + log 2 + + log n = Θ(1) + log n! 5 T(n) = 2T( n) + Θ(log n) = Θ(log log n log n) Θέτουμε m = log n και εργαζόμαστε με τη σχέση T(m) = 2T(m/2) Αλγόριθμοι και + Πολυπλοκότητα Θ(m) T(m) Χειμερινό = 2017 Θ(m log m) 4/20

Άσκηση 2: α) Ενώνουμε τους 2 σωρούς σε ενα σε χρόνο Θ(n) β) Προσθέτουμε απο το σωρό με o(n) στοιχεία, στο σωρο με Θ(n) στοιχεία Συνολικά, o(nlogn) Aν και τα δύο έχουν Θ(n) στοιχεία τότε, Θ(nlogn) 5/20

Άσκηση 3α): Tαξινόμηση Θέλουμε να ταξινομήσουμε τον πίνακα A[1,, n] με μέγιστο στοιχείο M=O(n) σε γραμμικό χρόνο Θεωρούμε πίνακα B[0,, M] και αρχικοποιούμε τα στοιχεία του στο 0 Διατρέχουμε τον πίνακα A μια φορά και για κάθε στοιχείο A[i] = j M, προσθέτουμε στο B[j] συν 1 Ξεκινάμε με τον κενό πίνακα C Διατρέχουμε τον πίνακα και για κάθε B[j] = i, βάζουμε στο τέλος του πίνακα C, i φορες το στοιχειο B[j] Επιστρέφουμε τον πίνακα C 6/20

Άσκηση 3α): Tαξινόμηση Συνολικά, Θ(n + M) = Θ(n) To κάτω φράγμα Ω(nlogn) ισχύει μόνο στην περίπτωση των συγκριτικών αλγορίθμων, δηλαδή αλγορίθμων που κάνουν μόνο συγκρίσεις μεταξύ των στοιχείων του πίνακα Ο προηγούμενος αλγόριθμος δεν εμπίπτει σε αυτή την κατηγορία, καθως κάνει χρήση της αριθμητικής τιμής του κάθε στοιχείου 7/20

Άσκηση 3β): Tαξινόμηση Εφόσον M = n d 1, κάθε στοιχείο του A περιγράφεται με d bits, A[i] = b 1,, b d όπου b k {0, n 1} Θα εφαρμόσουμε τον αλγόριθμο ταξινόμησης RadixSort Συνολικά διατρέχουμε τον A, d φορές και σε κάθε επανάληψη πληρώνουμε O(n) Συνολική Πολυπλοκότητα, O(dn) = O(n), γιατί d είναι σταθερά 8/20

Άσκηση 3γ): Tαξινόμηση Θέλουμε να υπολογίσουμε το πλήθος των διαφορετικών ταξινομημένων ακολουθιών μήκους n, με στοιχεία που παίρνουν τιμές στο {1,, M} Για να προσδιορίσουμε μια τέτοια ακολουθία, αρκεί να προσδιορίσουμε το πλήθος στοιχείων της με τιμές 1,2,,M Έστω A k το το πλήθος στοιχείων με τιμή k Αρκεί να υπολογίσουμε με πόσους τρόπους μπορουμε να αναθέσουμε τιμές από το 0 στο n, στους αριθμούς A 1,, A M έτσι ώστε A 1 + + A M = n Το παραπάνω μπορεί να γίνει με ( n+m 1) n τρόπους Άρα κάθε συγκριτικός αλγόριθμος χρειάζεται τουλάχιστον Ω(log ( n+m 1) n ) = Ω(n logm) βήματα 9/20

Άσκηση 3γ): Tαξινόμηση Για να υπάρχει συγκριτικός αλγόριθμός με χρόνο εκτέλεσης O(nloglogn), θα πρέπει το M = O(log d n) για σταθερά d Αν γνωρίζουμε το μέγιστο στοιχείο του A είναι, μπορούμε να παράξουμε ενα συγκριτικό αλγόριθμο με πολυπλοκότητα O(nlogM)? Θα λυσουμε ένα λίγο πιο γενικό πρόβλημα: Δεδομένου ότι ο A περιέχει M διαφορετικά στοιχεία, θα φτιάξουμε ένα ενα συγκριτικό αλγόριθμο με πολυπλοκότητα O(nlogM + Mlogn) 10/20

Άσκηση 3γ): Tαξινόμηση Ιδέα: Έστω ότι έχουμε ενα υποπίνακα A του A, ο οποίος περιέχει M διαφορετικά στοιχεία του A σε αύξουσα σειρά Διασχίζουμε τον A και για κάθε στοιχείο που συνανταμε, κάνουμε δυαδική αναζήτηση στον A για να βρούμε με ποιο στοιχείο του A είναι ίσο Αυξάνουμε ενα Counter σε εκείνο το σημείο και βάσει αυτού μπορούμε να παράξουμε μια ταξινόμηση για τον A Πολυπλοκότητα: O(nlogM) 11/20

Άσκηση 3γ): Tαξινόμηση Μας μένει να υπολογίσουμε τον A Θα χρησιμοποιήσουμε μια παραλλαγή της Mergesort Χωρίζουμε τον A στην μέση και παίρνουμε τους πίνακες A 1 και A 2 Αναδρομικά υπολογίζουμε τους A 1 και A 2, καθένας τους περιέχει το πολύ M στοιχεία Συγχωνεύουμε τους A 1 και A 2 με την διαφορά οτι αν συναντησουμε 2 ίσα στοιχεία, πετάμε το ένα Ο πίνακας που προκύπτει είναι ο A Πολυπλοκότητα: T(n) = 2T(n/2) + Θ(M) = T(n) = O(Mlogn) 12/20

Άσκηση 3γ): Tαξινόμηση Συνολική Πολυπλοκότητα: O(nlogM + Mlogn) Στην περίπτωση μας, O(nloglog d n) = O(d nloglogn) = O(nloglogn) 13/20

Άσκηση 4α): Χαρακτηρίζουμε κάθε θέση του πίνακα ως εξής j H A[j] j > k + 1 2, j L A[j] j < k + 1, 2 j X A[j] j k + 1 2 Υποθέτουμε ότι C = Τότε έχουμε ότι 0 A και n B επειδή 1 A[j] n 14/20

Άσκηση 4α): Αφού δεν ανήκουν όλα τα στοιχεία μόνο στο H ή μόνο στο L υπάρχουν διαδοχικές θέσεις ώστε j H και j + 1 L Έχουμε λοιπόν A[j] j > k + 1 2 A[j + 1] j 1 < k + 1 2 2 Προσθέτοντας κατά μέλη παίρνουμε Άτοπο A[j] j k + 1 2 k + 1 A[j] A[j + 1] > k > 0 (1) A[j + 1] + j + 1 > 0 (2) 15/20

Άσκηση 4α): Κάθε φορά που έχουμε θέσεις i < j έτσι ώστε A[i] H και A[j] L, γνωρίζουμε ότι υπάρχει i < k < j ώστε k X Άρα μπορούμε να κάνουμε binary search Ξεκινάμε με i = 0 και j = n Ελέγχουμε αν i X ή j X Αν δεν είναι τότε βρίσκω σε ποια κατηγορία από τις L, H, X ανήκει ο (ακέραιος) διάμεσος m των i, j Αν ανήκει στο X τον επιστρέφω Αν ανήκει στο H τότε συνεχίζω την αναζήτηση στο (i, m) Αν ανήκει στο L τότε συνεχίζω την αναζήτηση στο (m, j) 16/20

Άσκηση 4β): Αφού m n μπορούμε να κάνουμε binary search σε κάθε στήλη κάνοντας O(m log n) συγκρίσεις, αν ο πίνακας είναι τετράγωνος κάνουμε O(n log n) Έτσι δεν εκμεταλλευόμαστε το γεγονός ότι ο πίνακας είναι ταξινομημένος και ως προς γραμμές και ως προς στήλες Ξεκινάμε από το πάνω δεξιά στοιχείο A[m, 1] του πίνακα Αν A[m, 1] = k τότε επιστρέφουμε τη θέση [m, 1] και συνεχίζουμε την αναζήτηση στον υποπίνακα A[2 n 1, 2 m 1] Αν A[m, 1] < k τότε συνεχίζουμε στον υποπίνακα A[2 n 1, 1 m 1] Αν A[m, 1] > k τότε συνεχίζουμε στον υποπίνακα A[1 n 1, 2 m 1] Συνολικός χρόνος O(n + m) = O(n) 17/20

Άσκηση 4γ): Στην περίπτωση m = n, αν υπάρχουν r εμφανίσεις του στοιχείου k στον πίνακα κάθε αλγόριθμος για αυτό το πρόβλημα πρέπει να τυπώσει μια ακολουθία από θέσεις (i l, j l ) r l=1 Το πλήθος των δυνατών ακολουθιών για κάθε τιμή του r είναι τουλάχιστον ( n) r αφού μπορούμε να διαλέξουμε σε ποιες από τις n γραμμές θα τοποθετήσουμε κάθε εμφάνιση του k Το συνολικό πλήθος των δυνατών ακολουθιών εξόδου είναι n r=1 ( ) n = 2 n r Άρα (όμοια με το lower bound της ταξινόμησης) κάθε αλγόριθμος πρέπει να κάνει τουλάχιστον log 2 (2 n ) = n συγκρίσεις μέχρι να σταματήσει Συνεπώς χρειάζονται Ω(n) συγκρίσεις 18/20

Άσκηση 5: Πλειοψηφία - Λύση 1 Ξεκινάμε με έναν βουλευτή και ξεκινάμε να τον βάζουμε να χαιρετηθεί με τους υπόλοιπους Αρχικοποιούμε έναν μετρητή στο 1 Κάθε φορά που βρίσκουμε πολιτικό του αντίπαλο μειώνουμε τον μετρητή κατά 1, αλλιώς τον αυξάνουμε Αν κάποια στιγμή ο μετρητής γίνει 0 τότε αλλάζουμε τον βουλευτή με τον επόμενό του και θέτουμε τον μετρητή στο 1 Αν υπάρχει κόμμα με απόλυτη πλειοψηφία, ο βουλευτής που έχουμε στο τέλος ανήκει σε αυτό, οπότε τον βάζουμε να χαιρετηθεί ξανά με όλους και βρίσκουμε και όλους τους υπόλοιπους στο κόμμα του Αν τελικά οι βουλευτές προκύψουν λιγότεροι τότε δεν υπάρχει απόλυτη πλειοψηφία και απαντάμε ΟΧΙ, αλλιώς απαντάμε ΝΑΙ και δίνουμε την λίστα των βουλευτών Συνολικοί χαιρετισμοί O(n) 19/20

Άσκηση 5: Πλειοψηφία - Λύση 2 Διαλέγω έναν βουλευτή στην τύχη, τον βάζω να χαιρετηθεί με όλους τους άλλους και μετράω πόσοι και ποιοι ανήκουν στο κόμμα του Αν το πλήθος των βουλευτών στο κόμμα του πρώτου είναι τουλάχιστον n/2 + 1 τότε απαντάω ΝΑΙ και δίνω την λίστα των βουλευτών, αλλιώς απαντάω OXI Περιοριζόμαστε στην περίπτωση που υπάρχει πλειοψηφικό κόμμα, αφού αλλιώς ο αλγόριθμος απαντάει πάντα σωστά Αν υπάρχει κόμμα με απόλυτη πλειοψηφία η πιθανότητα να ανήκει σε αυτό είναι τουλάχιστον 1/2 + 1/n 20/20

Άσκηση 5: Πλειοψηφία - Λύση 2 Ο αλγόριθμος απαντάει σωστά με πιθανότητα τουλάχιστον 1/2 σε χρόνο O(n) Αν τον τρέξουμε k φορές τότε η πιθανότητα να μην πετύχουμε βουλευτή του πλειοψηφικού κόμματος είναι (1/2) k Διαλέγουμε k = log(1/δ) και έχουμε ότι η πιθανότητα αποτυχίας του αλγορίθμου είναι το πολύ δ Συνολικοί χαιρετισμοί O(n log(1/δ)) 21/20