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

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

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

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

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

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

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

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

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

Θέματα υπολογισμού στον πολιτισμό

Κβαντική Επεξεργασία Πληροφορίας

Κβαντική Επεξεργασία Πληροφορίας

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

Διοικητική Λογιστική

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Κβαντική Επεξεργασία Πληροφορίας

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

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εισαγωγή στην Πληροφορική

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Θέματα υπολογισμού στον πολιτισμό

Θέματα υπολογισμού στον πολιτισμό

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Βέλτιστος Έλεγχος Συστημάτων

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Κβαντική Επεξεργασία Πληροφορίας

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

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

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Διακριτά Μαθηματικά. Ενότητα 5: Απαρίθμηση: Διωνυμικοί συντελεστές

Ψηφιακή Επεξεργασία Εικόνων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

Εισαγωγή στη Δικτύωση Υπολογιστών

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Θέματα υπολογισμού στον πολιτισμό

Διοικητική Λογιστική

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διδακτική των εικαστικών τεχνών Ενότητα 1

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

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

Φιλοσοφία της Ιστορίας και του Πολιτισμού

Έλεγχος Ποιότητας Φαρμάκων

Χωρικές σχέσεις και Γεωμετρικές Έννοιες στην Προσχολική Εκπαίδευση

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

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

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

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Πρακτική Άσκηση σε σχολεία της δευτεροβάθμιας εκπαίδευσης

Διακριτά Μαθηματικά. Ενότητα 7: Προχωρημένες μέθοδοι απαρίθμησης: Εγκλεισμός Αποκλεισμός

Διδακτική των εικαστικών τεχνών Ενότητα 3

Μηχανολογικό Σχέδιο Ι

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

Διδακτική των εικαστικών τεχνών Ενότητα 2

Ψηφιακή Λογική Σχεδίαση

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Διδακτική των εικαστικών τεχνών Ενότητα 2

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

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

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

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Υπολογιστική άλγεβρα Ενότητα 10: Βάσεις Groebner ενός ιδεώδους ΙΙΙ

Βάσεις Περιβαλλοντικών Δεδομένων

Βέλτιστος Έλεγχος Συστημάτων

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

Μεθοδολογία των Επιστημών του Ανθρώπου: Στατιστική

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

Διδακτική των εικαστικών τεχνών Ενότητα 2

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

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

Transcript:

Εισαγωγή στους Αλγόριθμους Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών

Σκοποί ενότητας Παρουσίαση και μελέτη αλγορίθμων για πρόσθεση και πολλαπλασιασμό Τίτλος Ενότητας 2

Περιεχόμενα ενότητας Παρουσίαση και μελέτη αλγορίθμων για πρόσθεση και πολλαπλασιασμό Τίτλος Ενότητας 3

Εισαγωγή στους Αλγόριθμους Πρόσθεση και πολλαπλασιασμός

ΠΡΟΣΘΕΣΗ 5

Πρόσθεση: αλγόριθμος Βάλε τους αριθμούς έναν σε κάθε σειρά και στοίχισέ τους από δεξιά προς τα αριστερά Κάνεέναπέρασμααπότοδεξιάπροςτα αριστερά υπολογίζοντας το άθροισμα ψηφίο ψηφίο, διατηρώντας μία επιπλέον γραμμή για το κρατούμενο Σε κάθε βήμα αθροίζονται τρεις μονοψήφιοι αριθμοί 6

Πρόσθεση: παράδειγμα Κρατούμενο: 7

Πρόσθεση: χρόνος εκτέλεσης αλγορίθμου Δίνονται δύο δυαδικοί αριθμοί x και y Πόσο χρόνο απαιτεί ο προηγούμενος αλγόριθμος για να τους αθροίσει; Θέλουμε η απάντηση να εκφραστεί σα συνάρτηση του μεγέθους της εισόδου: του αριθμού των bits του x και του y, δηλ., του αριθμού των πλήκτρων που πατάμε για να τους πληκτρολογήσουμε 8

Πρόσθεση: χρόνος εκτέλεσης αλγορίθμου Υποθέτουμε ότι οι αριθμοί x και y αποτελούνται από n bits ο καθένας Το άθροισμα των x και y έχει n+1 bits το πολύ Κάθε ανεξάρτητο bit του αθροίσματος υπολογίζεται σε σταθερό χρόνο Ο συνολικός χρόνος εκτέλεσης του αλγορίθμου είναι επομένως c0+c1n (c0 και c1 είναι σταθερές) δηλ., γραμμικός Δεν επικεντρωνόμαστε στις σταθερές c0 και c1, και συμβολίζουμε το χρόνο εκτέλεσης με O(n) 9

Πρόσθεση: μπορούμε καλύτερα; Για να προσθέσουμε δύο αριθμούς των n bit ο καθένας πρέπει τουλάχιστον να τους διαβάσουμε και να γράψουμε το αποτέλεσμα: ακόμα και αυτό απαιτεί n λειτουργίες Επομένως, ο αλγόριθμος για την πρόσθεση είναι βέλτιστος εντός πολλαπλασιαστικών σταθερών 10

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ 11

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

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

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

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

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

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

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

Οι δύο μέθοδοι κάνουν το ίδιο! Λύση 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*2 + 143 19

Οι δύο μέθοδοι κάνουν το ίδιο! Λύση 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*2 + 143 20

Οι δύο μέθοδοι κάνουν το ίδιο! Λύση 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*2 + Ο(n 2 ) 143 21

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

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

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

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

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

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

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

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

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

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

Πολλαπλασιασμός: βελτιωμένος αλγόριθμος Δίνονται 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 ) με τη γνωστή τεχνική πολλαπλασιασμού 32

Πολλαπλασιασμός: βελτιωμένος αλγόριθμος Δίνονται 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 33

Πολλαπλασιασμός: βελτιωμένος αλγόριθμος ΑΛΓΟΡΙΘΜΟΣ ΓΙΑ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΤΕΧΝΙΚΗΣ ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ 34

35

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

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

Πολλαπλασιασμός: βελτιωμένος αλγόριθμος (τεχνική διαίρει και βασίλευε) Διαιρούμε το πρόβλημα: Χωρίζουμε τους ακεραίους στα δύο τους μισά: 38

Πολλαπλασιασμός: βελτιωμένος αλγόριθμος (τεχνική διαίρει και βασίλευε) Διαιρούμε το πρόβλημα: (al+ar)*(bl+br)al*bl+al*b*r+ar*bl+ar*br al*b*r+ar*bl(al+ar)*(bl+br)-al*bl-ar*br al*b*r+ar*blx3-x1-x2 Χωρίζουμε τους ακεραίους στα δύο τους μισά: 39

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Τίτλος Ενότητας 41

Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.00. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Τίτλος Ενότητας 43

Σημείωμα Αναφοράς Copyright Πανεπιτήμιο Πατρών, Εύη Παπαϊωάννου. «Εισαγωγή στους Αλγόριθμους. Πρόσθεση και πολλαπλασιασμός.». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/culture158/index.php Τίτλος Ενότητας 44

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by nc sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος(π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Τίτλος Ενότητας 45

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. Τίτλος Ενότητας 46

Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: Εικόνες/Σχήματα/Διαγράμματα/Φωτογραφίες Σχεδιασμός Αλγορίθμων. Jon Kleinberg, Eva Tardos. Επιστημονική επιμέλεια Ελληνικής έκδοσης: Χρήστος Ζαρολιάγκης. Εκδόσεις Κλειδάριθμος, 2009. ISBN: 978 960 461 207 9. Κωδικός Βιβλίου στον Εύδοξο: 13898. Αλγόριθμοι. Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani. Εκδόσεις Κλειδάριθμος, 2009. ISBN 978 960 524 444 6. Κωδικός Βιβλίου στον Εύδοξο: 13583. http://www.wikipedia.org Τίτλος Ενότητας 47