Πολλαπλασιασμός: αλγόριθμος

Σχετικά έγγραφα
ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)

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

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

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

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

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

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

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

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

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

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

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

Ελίνα Μακρή

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Λέγονται οι αριθμοί που βρίσκονται καθημερινά στη φύση, γύρω μας. π.χ. 1 μήλο, 2 παιδιά, 5 αυτοκίνητα, 100 πρόβατα, δέντρα κ.λ.π.

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

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

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

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

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

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

Εισαγωγή στους Υπολογιστές

Αλγόριθμοι Χαμηλού Επιπέδου

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΑΚΟΛΟΥΘΙΕΣ ΑΡΙΘΜΩΝ EΞΙΣΩΣΕΙΣ...47 ΠΡΟΛΟΓΟΣ... 9

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Ψηφιακά Συστήματα. 1. Συστήματα Αριθμών

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

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

Πρόγραμμα Σπουδών Εκπαίδευσης Παιδιών-Προφύγων Τάξεις Ε+ΣΤ Δημοτικού

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

ΑΛΓΕΒΡΑ Α ΓΥΜΝΑΣΙΟΥ ΘΕΤΙΚΟΙ ΚΑΙ ΑΡΝΗΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

Οδύσσεια Τα απίθανα... τριτάκια! Tετάρτη τάξη ΜΑΘΗΜΑΤΙΚΑ Δ ΤΑΞΗ Συμπεράσματα Ενοτήτων

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ.

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

Αριθμητικά Συστήματα = 3 x x x x 10 0

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

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

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

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

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

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

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

1. ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 11 ο και 12 ο

ΕΠΑΝΑΛΗΨΗ Α ΓΥΜΝΑΣΙΟΥ

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. 2.1 Αριθμητικά συστήματα

Οι Φυσικοί Αριθμοί. Παρατήρηση: Δεν στρογγυλοποιούνται αριθμοί τηλεφώνων, Α.Φ.Μ., κωδικοί αριθμοί κλπ. Πρόσθεση Φυσικών αριθμών

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

Λογική Σχεδίαση Ψηφιακών Συστημάτων

Θεωρια Αριθµων Προβληµατα

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

Φυσικοί αριθμοί - Διάταξη φυσικών αριθμών - Στρογγυλοποίηση

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

Αριθμητικά Συστήματα Κώδικες

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

ΘΕΜΑ : ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ. ΔΙΑΡΚΕΙΑ: 1 περιόδους. 22/1/ :11 Όνομα: Λεκάκης Κωνσταντίνος καθ. Τεχνολογίας

Περιεχόμενα. Κεφάλαιο 3 Οι ιδιότητες των αριθμών Αριθμητικά σύνολα Ιδιότητες Περισσότερες ιδιότητες...

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

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

Fast Fourier Transform

Περιεχόμενα. Κεφάλαιο 3 Οι ιδιότητες των αριθμών Αριθμητικά σύνολα Ιδιότητες Περισσότερες ιδιότητες...

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Συστήματα Αρίθμησης ΔΥΑΔΙΚΟ ΣΥΣΤΗΜΑ ΑΡΙΘΜΗΣΗΣ

2ογελ ΣΥΚΕΩΝ 2ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ

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

2.1 ΠΡΑΞΕΙΣ ΚΑΙ ΟΙ ΙΔΙΟΤΗΤΕΣ ΤΟΥΣ

Μαθηματικά. Ενότητα 1: Οι Αριθμοί. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

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

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης:

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

(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,

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

Αριθμητικά Συστήματα

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

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

Οργάνωση Υπολογιστών

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

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

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

ξργ Μονάδα επεξεργασίας ξργ δδ δεδομένων Μονάδα ελέγχου

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

Μ α θ η μ α τ ι κ α Γ Γ υ μ ν α σ ι ο υ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα

Εισαγωγή στην επιστήμη των υπολογιστών

Transcript:

ΟΛΛΑΛΑΣΙΑΣΜΟΣ

ολλαπλασιασμός: αλγόριθμος Για να πολλαπλασιάσουμε δύο αριθμούς x και κατασκευάζουμε έναν πίνακα από ενδιάμεσα αθροίσματα, κάθε ένα από τα οποία προκύπτει ως γινόμενο του x με ένα ψηφίο του Οι τιμές αυτές μετατοπίζονται κατάλληλα προς τα αριστερά και μετά αθροίζονται Υποθέστε ότι θέλουμε να πολλαπλασιάσουμε το 13 με το 11, ή σε δυαδική αναπαράσταση, x 1101 και 1011

ολλαπλασιασμός: παράδειγμα 1101 επί 1 1101 επί 1, μετατόπιση κατά μία θέση 1101 επί 0, μετατόπιση κατά δύο θέσεις 1101 επί 1, μετατόπιση κατά τρεις θέσεις δυαδικός

ολλαπλασιασμός: χρόνος εκτέλεσης αλγορίθμου Με δυαδική αναπαράσταση, κάθε ενδιάμεση γραμμή είναι είτε 0 είτε το ίδιο το x, μετατοπισμένο κατά τα αριστερά κατάλληλο πλήθος φορών αρατηρήστε ότι η μετατόπιση προς τα αριστερά είναι ένας σύντομος τρόπος για να πολλαπλασιάσουμε με τη βάση, δηλ., το 2 Αν οι x και έχουν και οι δύο από n bits, τότε υπάρχουν n ενδιάμεσες σειρές, με μήκος το πολύ 2n bits η κάθε μία (λαμβάνοντας υπόψη και τη μετατόπιση) Επομένως, ο συνολικός χρόνος που απαιτείται για να αθροιστούν αυτές οι γραμμές, προσθέτοντας δύο αριθμούς τη φορά είναι:

ολλαπλασιασμός: χρόνος εκτέλεσης αλγορίθμου ροκύπτουν n ενδιάμεσες γραμμές κάθε μία με μήκος το πολύ 2n, οπότε για να αθροιστούν (αθροίζοντας 2 από αυτές κάθε φορά) απαιτείται χρόνος: φορές Είναι της τάξης του O(n 2 ), δηλ., τετραγωνικός ως προς το μέγεθος των εισόδων: παραμένει πολυωνυμικός αλλά μεγαλύτερος από τον αντίστοιχο χρόνο που απαιτείται για την πρόσθεση

ολλαπλασιασμός: αλγόριθμος του Al Khwarizmi Για να πολλαπλασιάσουμε δύο δεκαδικούς αριθμούς x και, τους γράφουμε τον έναν δίπλα στον άλλον Τότε επαναλαμβάνουμε τα ακόλουθα: Διαιρούμε τον πρώτο αριθμό με το 2, στρογγυλοποιώντας προς τα κάτω το αποτέλεσμα (δηλ., διώχνουμε το,5 αν ο αριθμός είναι περιττός), και Διπλασιάζουμε το δεύτερο αριθμό Συνεχίζουμε μέχρι ο πρώτος αριθμός να γίνει 1 Τότε σβήνουμε όλες τις γραμμές στις οποίες ο πρώτος αριθμός είναι άρτιος και αθροίζουμε τους αριθμούς που έχουν μείνει στη δεύτερη στήλη

ολλαπλασιασμός: αλγόριθμος του Al Khwarizmi η απάντηση

ολλαπλασιασμός: αλγόριθμος του Al Khwarizmi Συγκρίνοντας τους δύο αλγόριθμους, για δυαδικό πολλαπλασιασμό και πολλαπλασιασμό με επαναληπτικές διαιρέσεις του πολλαπλασιαστή με 2, παρατηρούμε ότι κάνουν ακριβώς το ίδιο πράγμα! Οι 3 αριθμοί που αθροίζονται στο δεύτερο αλγόριθμο είναι ακριβώς τα πολλαπλάσια του 13 με δυνάμεις του 2 ανάλογα με αυτούς που αθροίζονταν στη δυαδική μέθοδο Μόνο που το 11 δε δόθηκε ρητά σε δυαδική μορφή και έπρεπε μόνοι μας να εξάγουμε τη δυαδική του αναπαράσταση ελέγχοντας την ισοτιμία των αριθμών που προέκυπταν από τις διαδοχικές του διαιρέσεις με 2 Ο δεύτερος αλγόριθμος του Al Khwarizmi είναι μια εντυπωσιακή μείξη δεκαδικής και δυαδικής αναπαράστασης!

Οι δύο μέθοδοι κάνουν το ίδιο! Λύση 1 Οι αριθμοί μετατρέπονται σε δυαδικούς: 111010112 131011012 1101 x 1011 1101 13 11010 26 000000 0 1101000 104 10001111 143 Λύση 2 11 13 11/25,5 5 26 13*2 5/22,5 2 52 26*2 2/21 1 104 52 143

Οι δύο μέθοδοι κάνουν το ίδιο! Λύση 1 Οι αριθμοί μετατρέπονται σε δυαδικούς: 111010112 131011012 1101 x 1011 1101 13 11010 26 000000 0 1101000 104 10001111 143 Λύση 2 11 13 11/25,5 5 26 13*2 5/22,5 2 52 26*2 2/21 1 104 52 143

Οι δύο μέθοδοι κάνουν το ίδιο! Λύση 1 Οι αριθμοί μετατρέπονται σε δυαδικούς: 111010112 131011012 1101 x 1011 1101 13 11010 26 000000 0 1101000 104 10001111 143 Ο(n 2 ) Λύση 2 11 13 11/25,5 5 26 13*2 5/22,5 2 52 26*2 2/21 1 104 52 Ο(n 2 ) 143

ολλαπλασιασμός: άλλος αλγόριθμος ΓΑΛΛΙΚΟΣ ΟΛΛΑΛΑΣΙΑΣΜΟΣ

ολλαπλασιασμός: άλλος αλγόριθμος Αν ο είναι άρτιος Αν ο είναι περιττός

ολλαπλασιασμός: άλλος αλγόριθμος Αν ο είναι άρτιος Αν ο είναι περιττός x z x x x x ό z x x x ά Α Α 2 * 1) 2 *( * ) 2 * ( ) 2 *( * ς περιττ ν ρτιος ν

), ( * * ), (, ), ( : 11 6 2 11 2 1113 6 2 0 13 1113 1 Κ z x ό ή ς περιττ ση λ (11,3) (11,6) 3 2 0, 6 (11,6) 2 : Κ z ά ή ρτιος ση λ (11,1) 11 (11,3) 1 2 0, 3 (11,3) 3: Κ z x ό ή ς περιττ ση λ (11,0) 11 (11,1) 0 2 0, 1 (11,1) 4 : Κ z x ό ή ς περιττ ση λ 143 66 11 (11,6) 11 (11,13) 66 33 (11,3) (11,6) 33 11 11 (11,1) 11 (11,3) 11 0 11 (11,0) 11 (11,1) 0 (11,0) 0 (11,0) 5 : Κ z x z z x z x λήση Α Ρ Α Δ Ε Ι Γ Μ Α

ολλαπλασιασμός: άλλος αλγόριθμος Ορθότητα: Ο προηγούμενος αναδρομικός κανόνας είναι σωστός και ο αλγόριθμος μιμείται ακριβώς αυτόν τον κανόνα και χειρίζεται σωστά την αρχική περίπτωση ( 0) Χρόνος εκτέλεσης: Ο αλγόριθμος τερματίζει μετά από n αναδρομικές κλήσεις, αφού σε κάθε κλήση το γίνεται μισό δηλ., ο αριθμός των bits του μειώνεται κατά 1 Κάθε αναδρομική κλήση απαιτεί συνολικά O(n) bit λειτουργίες: Διαίρεση με το 2 (ολίσθηση προς τα δεξιά) Έλεγχο για το αν ο αριθμός είναι άρτιος/περιττός (κοιτάμε το τελευταίο bit) ολλαπλασιασμό με το 2 (ολίσθηση προς τα αριστερά) Ίσως, μία πρόσθεση Επομένως, συνολικός χρόνος εκτέλεσης: O(n 2 ), όπως και για τους προηγούμενους αλγόριθμους

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

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

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

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

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

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

ολλαπλασιασμός: βελτιωμένος αλγόριθμος Δίνονται n-bit ακέραιοι αριθμοί x, και ζητείται το x* Χωρίζουμε τους x, στο αριστερό και δεξί τους τμήμα (το καθένα έχει 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 υποπροβλήματα Η αναδρομική διαδικασία k0 klogn Τελικά: 3 k υποπροβλήματα, μεγέθους το καθένα n/2 k : χρόνος 3 k *Ο(n/2 k ) (3/2) k *O(n)

ολλαπλασιασμός: βελτιωμένος αλγόριθμος (τεχνική διαίρει και βασίλευε) Δεδομένα: 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*1923*80)*10 2 23*19*10 4 120021250043700004583700 Απαιτούμενος χρόνος: 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 12004583700 Απαιτούμενος χρόνος: T(n) 3*T(n / 2) O(n) T(n) O(n 1.59 )

ολλαπλασιασμός: βελτιωμένος αλγόριθμος (τεχνική διαίρει και βασίλευε) Διαιρούμε το πρόβλημα: (alar)*(blbr)al*blal*b*rar*blar*br al*b*rar*bl(alar)*(blbr)-al*bl-ar*br al*b*rar*blx3-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 12004583700 Απαιτούμενος χρόνος: T(n) 3*T(n / 2) O(n) T(n) O(n 1.59 )