ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)

Σχετικά έγγραφα
Πολλαπλασιασμός: αλγόριθμος

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

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

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

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

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

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΟΙΝΟΥ ΔΙΑΙΡΕΤΗ

Αναδρομικοί Αλγόριθμοι

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

2. Να γράψετε έναν αριθμό που είναι μεγαλύτερος από το 3,456 και μικρότερος από το 3,457.

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

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

Σύστημα αρίθμησης. Τρόπος αναπαράστασης αριθμών Κάθε σύστημα αρίθμησης έχει μία βάση R

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

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

Ελίνα Μακρή

Fast Fourier Transform

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

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

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

Αλγοριθμικές Τεχνικές

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

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

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

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα

Η κλασματική γραμμή είναι η πράξη της διαίρεσης.

Συστήματα Αρίθμησης. Συστήματα Αρίθμησης 1. PDF created with FinePrint pdffactory Pro trial version

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

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

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

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

a 11 a 1n b 1 a m1 a mn b n

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Μ. Μαυρονικόλας. μπορούμε να πολλαπλασιασουμε (1,0,1,-1) με τον FFT πίνακα ή να εφαρμόζουμε τον

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

υναμικός Προγραμματισμός

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

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

Ανάλυση Συσχέτισης IΙ

Τεχνικές Σχεδιασμού Αλγορίθμων

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

(a 1)!b! (a + b 1)! και a!(b 1)! (a + b 1)!, (a + b)! = (a + b 1)!(a + b) = (a + b 1)!a + (a + b 1)!b,

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

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

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ

Αριθμητική Ανάλυση & Εφαρμογές

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

(CLR, κεφάλαιο 32) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

Οι φυσικοί αριθμοί. Παράδειγμα

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

Διάλεξη 19: Κατανομή Πόρων Κόψιμο Τούρτας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

* * * ( ) mod p = (a p 1. 2 ) mod p.

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

Γραμμική Άλγεβρα ΙΙ Εξέταση Σεπτεμβρίου Όνομα συνοπτικές ενδεικτικές λύσεις

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

1. ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΩΝ. α i. (α i β i ) (1.3) όπου: η= το πλήθος ακεραίων ψηφίων του αριθμού Ν. n-1

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

υναμικός Προγραμματισμός

(a 1, b 1 ) (a 2, b 2 ) = (a 1 a 2, b 1 b 2 ).

a = a a Z n. a = a mod n.

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

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

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

ΠΑΡΑΓΡΑΦΟΣ 1. 2 ΠΡΟΣΘΕΣΗ ΑΦΑΙΡΕΣΗ ΚΑΙ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΦΥΣΙΚΩΝ ΑΡΙΘΜΩΝ

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

ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2-1

Κεφάλαιο 1 Συστήματα γραμμικών εξισώσεων

ΚΕΦΑΛΑΙΟ 4 Η ΑΡΧΗ ΕΓΚΛΕΙΣΜΟΥ ΑΠΟΚΛΕΙΣΜΟΥ

ιαιρετότητα Στοιχεία Θεωρίας Αριθµών «Ο Αλγόριθµος της ιαίρεσης» Αριθµητική Υπολοίπων 0 r < d και a = d q +r

Να αποδείξετε ότι αυτή η τοποθέτηση των ακεραίων είναι δυνατή αν και μόνο αν οι ευθείες δεν είναι όλες παράλληλες.

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

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

Δυαδικό Σύστημα Αρίθμησης

Ενότητα 4. Επίλυση μαθηματικών προβλημάτων με το ΒΥΟΒ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ

υναμικός Προγραμματισμός

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

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Μαθηματικά Γ Γυμνασίου. Επαναληπτικές Ασκήσεις στο Κεφάλαιο 1: Μονώνυμα - Πολυώνυμα - Ταυτότητες

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

Μαθηµατικά για Πληροφορική

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΜΑΘΗΜΑΤΙΚΑ Ι (ΘΕ ΠΛΗ 12) ΕΡΓΑΣΙΑ 1 η Ημερομηνία Αποστολής στον Φοιτητή: 17 Οκτωβρίου 2011

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

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

Transcript:

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)

Πολλαπλασιασμός: μπορούμε καλύτερα; Διαισθητικά, επειδή ο πολλαπλασιασμός φαίνεται να απαιτεί άθροιση περίπου n πολλαπλασίων μιας από τις εισόδους, και δεδομένου ότι κάθε πρόσθεση απαιτεί γραμμικό χρόνο, φαίνεται οι n 2 bit λειτουργίες να μη γίνεται να μειωθούν Παραδόξως: μπορούμε να κάνουμε πολύ καλύτερα!

αλγόριθμος Χρησιμοποιούμε (1) την τεχνική διαίρει και βασίλευε (divide and conquer) 1. Σπάμε το πρόβλημα σε υποπροβλήματα που αποτελούν μικρότερου μεγέθους στιγμιότυπα του δοσμένου προβλήματος 2. Αναδρομικά λύνουμε τα υποπροβλήματα 3. Συνδυάζουμε κατάλληλα τις λύσεις τους για να πάρουμε τη λύση του αρχικού προβλήματος Φανταστείτε ότι έχω να πλύνω μια στολή που αποτελείται από πουκάμισο, γιλέκο και παντελόνι και (2) το θεώρημα του Gauss bc + ad = (a + b)(c + d)-ac-bd

αλγόριθμος Δίνονται n-bit ακέραιοι αριθμοί x, y και ζητείται το x*y Χωρίζουμε τους x, y στο αριστερό και δεξί τους τμήμα (το καθένα έχει n/2 bits) Τότε:

αλγόριθμος Δίνονται n-bit ακέραιοι αριθμοί x, y και ζητείται το x*y Χωρίζουμε τους x, y στο αριστερό και δεξί τους τμήμα (το καθένα έχει n/2 bits) Αν x = 10110110 τότε xl = 1011 και xr = 0110 και x = 1011*2 4 + 0110 Τότε:

αλγόριθμος Δίνονται n-bit ακέραιοι αριθμοί x, y και ζητείται το x*y Χωρίζουμε τους x, y στο αριστερό και δεξί τους τμήμα (το καθένα έχει n/2 bits) Αν x = 10110110 τότε xl = 1011 και xr = 0110 και x = 1011*2 4 + 0110 Τότε: Γραμμικός χρόνος: Ο(n)

αλγόριθμος Δίνονται n-bit ακέραιοι αριθμοί x, y και ζητείται το x*y Χωρίζουμε τους x, y στο αριστερό και δεξί τους τμήμα (το καθένα έχει n/2 bits) Αν x = 10110110 τότε xl = 1011 και xr = 0110 και x = 1011*2 4 + 0110 Τότε: Γραμμικός χρόνος: Ο(n) Xρόνος: 4*T(n/2) Συνολικός χρόνος: 4*Τ(n/2)+O(n)=O(n 2 ) με τη γνωστή τεχνική πολλαπλασιασμού

αλγόριθμος Δίνονται n-bit ακέραιοι αριθμοί x, y και ζητείται το x*y Χωρίζουμε τους x, y στο αριστερό και δεξί τους τμήμα (το καθένα έχει n/2 bits) Αν x = 10110110 τότε xl = 1011 και xr = 0110 και x = 1011*2 4 + 0110 Τότε: Γραμμικός χρόνος: Ο(n) Xρόνος: 3*T(n/2) Συνολικός χρόνος: 3*Τ(n/2)+O(n) O(n 1.59 ) με χρήση της τεχνικής του Gauss

αλγόριθμος ΑΛΓΟΡΙΘΜΟΣ ΓΙΑ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΤΕΧΝΙΚΗΣ ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ

Κάθε πρόβλημα διαιρείται σε 3 υποπροβλήματα Η αναδρομική διαδικασία k=0 Τελικά: 3 k υποπροβλήματα, μεγέθους το καθένα n/2 k : χρόνος 3 k *Ο(n/2 k )= (3/2) k *O(n) k=logn

αλγόριθμος (τεχνική διαίρει και βασίλευε) Δεδομένα: 2 ακέραιοι a και b με n ψηφία ο καθένας Ζητούμενο: γινόμενο a επί b Παράδειγμα: 1980 = a x 2315 = b ---------------- 9900 1980 5940 + 3960 ---------------- 4583700 = a x b Με βάση τον αλγόριθμο για πολλαπλασιασμό που είδαμε ήδη και απαιτεί χρόνο O(n 2 )

αλγόριθμος (τεχνική διαίρει και βασίλευε) Διαιρούμε το πρόβλημα: Χωρίζουμε τους ακεραίους στα δύο τους μισά: *10 4 *10 2 *10 0 Ο αλγόριθμος πρέπει να υπολογίσει τα 4 γινόμενα και μετά να τα αθροίσει, δηλ., 15*80+(15*19+23*80)*10 2 +23*19*10 4 = 1200+212500+4370000=4583700 Απαιτούμενος χρόνος: T(n) 4*T(n / 2) + O(n) T(n) = O(n 2 )

αλγόριθμος (τεχνική διαίρει και βασίλευε) Διαιρούμε το πρόβλημα: Χωρίζουμε τους ακεραίους στα δύο τους μισά: Με λίγη εξυπνάδα ο αλγόριθμος μπορεί να υπολογίσει μόνο 3 γινόμενα: x1 = al*bl, x2 = ar*br και x3 = (al + ar)*(bl + br) Αφού: al ar x bl br ------------------------------------------- al bl al br + ar bl ar br x1 x3 - x1 - x2 x2 *10 4 *10 2 *10 0 Αλγόριθμος Karatsuba Τώρα ο αλγόριθμος πρέπει να υπολογίσει 3 γινόμενα: x1, x2, και x3, να υπολογίσει το x3 - x1 - x2, και να αθροίσει: x1*10 4 + (x3 - x1 x2)*10 2 + x2 = 437*10 4 + (3762-437 1200)*10 2 + 1200= 437*10 4 + 2125*10 2 + 1200=4583700 Απαιτούμενος χρόνος: T(n) 3*T(n / 2) + O(n) T(n) O(n 1.59 )

αλγόριθμος (τεχνική al*b*r+ar*bl=(al+ar)*(bl+br)-al*bl-ar*br διαίρει και βασίλευε) Διαιρούμε το πρόβλημα: (al+ar)*(bl+br)=al*bl+al*b*r+ar*bl+ar*br al*b*r+ar*bl=x3-x1-x2 Χωρίζουμε τους ακεραίους στα δύο τους μισά: Με λίγη εξυπνάδα ο αλγόριθμος μπορεί να υπολογίσει μόνο 3 γινόμενα: x1 = al*bl, x2 = ar*br και x3 = (al + ar)*(bl + br) Αφού: al ar x bl br ------------------------------------------- al bl al br + ar bl ar br x1 x3 - x1 - x2 x2 *10 4 *10 2 *10 0 Αλγόριθμος Karatsuba Τώρα ο αλγόριθμος πρέπει να υπολογίσει 3 γινόμενα: x1, x2, και x3, να υπολογίσει το x3 - x1 - x2, και να αθροίσει: x1*10 4 + (x3 - x1 x2)*10 2 + x2 = 437*10 4 + (3762-437 1200)*10 2 + 1200= 437*10 4 + 2125*10 2 + 1200=4583700 Απαιτούμενος χρόνος: T(n) 3*T(n / 2) + O(n) T(n) O(n 1.59 )