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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Χαρακτηριστικά Δυναμικού Προγραμματισμού. Εισαγωγικά. 2 Δυναμικός Προγραμματισμός

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

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

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

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

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

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

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

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

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

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

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

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

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

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

Fast Fourier Transform

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

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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

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

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

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

Όταν οι αριθμοί είναι ομόσημοι Βάζουμε το κοινό πρόσημο και προσθέτουμε

Κεφάλαιο 2.4 Matrix Algorithms

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

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

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

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

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

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

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

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

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

Transcript:

Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται σε μια κατηγορία αλγοριθμικών τεχνικών όπου:.1 "διασπούμε" την είσοδο σε αρκετά τμήματα.2 επιλύουμε το πρόβλημα σε κάθε τμήμα αναδρομικά.3 συνδυάζουμε τις λύσεις αυτών των υποπροβλημάτων σε μια συνολική λύση Χαροκόπειο Πανεπιστήμιο 2/26

Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται σε μια κατηγορία αλγοριθμικών τεχνικών όπου:.1 "διασπούμε" την είσοδο σε αρκετά τμήματα.2 επιλύουμε το πρόβλημα σε κάθε τμήμα αναδρομικά.3 συνδυάζουμε τις λύσεις αυτών των υποπροβλημάτων σε μια συνολική λύση Η ανάλυση του χρόνου εκτέλεσης ενός αλγορίθμου τύπου "διαίρει και βασίλευε" γενικά περιλαμβάνει την επίλυση μιας αναδρομικής σχέσης (recurrence relation), η οποία φράσσει αναδρομικά το χρόνο εκτέλεσης με βάση τους χρόνους εκτέλεσης μικρότερων στιγμιοτύπων. Χαροκόπειο Πανεπιστήμιο 2/26

Πρώτη Αναδρομή: MergeSort Ο αλγόριθμος ταξινόμησης MergeSort ταξινομεί μια δεδομένη λίστα αριθμών με τον εξής τρόπο:.1 πρώτα χωρίζει την είσοδο σε δύο ίσα τμήματα,.2 ταξινομεί τα τμήματα αναδρομικά,.3 συγχωνεύει τα δυο ταξινομημένα υποπροβλήματα σε ένα. Χαροκόπειο Πανεπιστήμιο 3/26

Πρώτη Αναδρομή: MergeSort Ο αλγόριθμος ταξινόμησης MergeSort ταξινομεί μια δεδομένη λίστα αριθμών με τον εξής τρόπο:.1 πρώτα χωρίζει την είσοδο σε δύο ίσα τμήματα,.2 ταξινομεί τα τμήματα αναδρομικά,.3 συγχωνεύει τα δυο ταξινομημένα υποπροβλήματα σε ένα. Σε κάθε αλγόριθμο "διαίρει και βασίλευε" χρειαζόμαστε μια βασική περίπτωση για την αναδρομή. Στο MergeSort π.χ σταματάμε την αναδρομή όταν έχουμε 2 στοιχεία. Απλά τα συγκρίνουμε και τα επιστρέφουμε στη σωστή σειρά. Χαροκόπειο Πανεπιστήμιο 3/26

Συγχώνευση Συγχώνευση είναι η διαδικασία συνδυασμού δύο ταξινομημένων αρχείων σε ένα ταξινομημένο αρχείο. ταξινοµηµένος πίνακας a α) επιλογή µικρότερου ϐ) αντιγραφή σε άλλο πίνακα c γ) µετακίνηση δείκτη ταξινοµηµένος πίνακας b Για εισόδους μεγέθους n γίνεται σε χρόνο O(n). Χαροκόπειο Πανεπιστήμιο 4/26

Ανάλυση Χρόνου MergeSort Έστω T(n) ο χρόνος εκτέλεσης της χειρότερης περίπτωσης για στιγμιότυπα μεγέθους n. 1 Ο αλγόριθμος δαπανά το πολύ χρόνο O(n) για να διαιρέσει την είσοδο σε δύο τμήματα μεγέθους n/2 το καθένα T(n/2) για να επιλύσει το κάθε τμήμα O(n) για να συνδυάσει τις λύσεις από τις δύο αναδρομικές κλήσεις. 1 Ας υποθέσουμε προς το παρόν πως n είναι άρτιος. Χαροκόπειο Πανεπιστήμιο 5/26

Ανάλυση Χρόνου MergeSort Έστω T(n) ο χρόνος εκτέλεσης της χειρότερης περίπτωσης για στιγμιότυπα μεγέθους n. 1 Άρα ο χρόνος εκτέλεσης T(n) ικανοποιεί την ακόλουθη αναδρομική σχέση (recurrence relation). Για κάποια σταθερά c, όταν n > 2, και T(n) 2T(n/2) + cn T(n) cn. 1 Ας υποθέσουμε προς το παρόν πως n είναι άρτιος. Χαροκόπειο Πανεπιστήμιο 5/26

Λύση Αναδρομής Υπόθεση Άρτιας Εισόδου. Γενικά είναι ανακριβές να υποθέσουμε πως το μέγεθος της εισόδου n είναι άρτιος ή είναι δύναμη του 2. Ακριβής Αναδρομή. Για κάποια σταθερά c, για n 2. T(n) T( n/2 ) + T( n/2 ) + cn Για τις αναδρομές που θα μας απασχολήσουν, τα ασυμπτωτικά όρια δεν επηρεάζονται παραβλέποντας τα άνω και κάτω ακέραια μέρη. Χαροκόπειο Πανεπιστήμιο 6/26

Τεχνικές Λύσης Αναδρομής Ξεδιπλώνοντας..1 ξεδιπλώνουμε την αναδρομή (unroll) υπολογίζοντας τον χρόνο εκτέλεσης για τα πρώτα λίγα επίπεδα.2 αναγνωρίζουμε ένα μοτίβο (pattern) που μπορεί να συνεχιστεί.3 αθροίζουμε τους χρόνους εκτέλεσης για όλα τα επίπεδα της αναδρομής Χαροκόπειο Πανεπιστήμιο 7/26

Τεχνικές Λύσης Αναδρομής Ανάλυση Πρώτων Επιπέδων. πρώτο επίπεδο έχουμε ένα υποπρόβλημα μεγέθους n το οποίο χρειάζεται cn χρόνο συν το χρόνο των αναδρομικών κλήσεων c n c n/2 c n/2 c n c n δεύτερο επίπεδο δύο προβλήματα, το καθένα μεγέθους n/2. Καθένα από αυτά χρειάζεται χρόνο το πολύ cn/2. Συνολικά χρόνο cn συν το χρόνο των αναδρομικών κλήσεων. log n c n/4 c n/4 c n/4 c n/4 c n τρίτο επίπεδο τέσσερα προβλήματα, το καθένα μεγέθους n/4. Καθένα από αυτά χρειάζεται χρόνο το πολύ cn/4. Συνολικά χρόνο cn συν το χρόνο των αναδρομικών κλήσεων. c c c c c c c n c n Χαροκόπειο Πανεπιστήμιο 8/26

Τεχνικές Λύσης Αναδρομής c n c n Αναγνώριση Μοτίβου. Στο επίπεδο j της αναδρομής ο αριθμός των υποπροβλημάτων έχει διπλασιαστεί j φορές και άρα έχουμε 2 j υποπροβλήματα. c n/2 c n/2 c n Καθένα από αυτά έχει συρρικνωθεί σε μέγεθος κατά 2 επίσης j φορές. Άρα κάθε υποπρόβλημα έχει μέγεθος n/2 j. Χρειάζεται λοιπόν χρόνο το πολύ cn/2 j. log n c n/4 c n/4 c n/4 c n/4 c n Συνολικά όλα τα υποπροβλήματα του επιπέδου j χρειάζονται χρόνο το πολύ 2 j (cn/2 j ) = cn. c c c c c c c n c n Χαροκόπειο Πανεπιστήμιο 8/26

Τεχνικές Λύσης Αναδρομής c n c n Άθροιση Επιπέδων. Ο αριθμός των υποδιπλασιασμών της εισόδου έτσι ώστε να μειωθεί το μέγεθος της από n σε 2 είναι log 2 n 1 αφού ισχύει c n/2 c n/2 c n n 2 k = 2 n = 2k+1 log 2 n = k + 1. log n c n/4 c n/4 c n/4 c n/4 c n Η άθροιση της εργασίας cn για log n επίπεδα μας δίνει συνολικό χρόνο εκτέλεσης O(n log n). c c c c c c c n c n Χαροκόπειο Πανεπιστήμιο 8/26

Τεχνικές Λύσης Αναδρομής Μαντεύοντας!.1 ξεκινάμε με μια πρόβλεψη για τη λύση.2 αντικαθιστούμε την πρόβλεψη στην αναδρομική σχέση και ελέγχουμε αν λειτουργεί.3 αιτιολογούμε αυτή την αντικατάσταση χρησιμοποιώντας ένα επιχείρημα επαγωγής ως προς το n Χαροκόπειο Πανεπιστήμιο 9/26

Τεχνικές Λύσης Αναδρομής Υποθέστε ότι πιστεύουμε ότι T(n) cn log 2 n για όλα τα n 2. Θέλουμε να το επαληθεύσουμε με την μέθοδο της επαγωγής. για n = 2 έχουμε cn log 2 n = 2c και άρα ισχύει αφού ξέρουμε πως T(2) c. έστω τώρα ότι T(m) cm log 2 m για όλες τις τιμές του m < n για n έχουμε πως T(n) 2T(n/2) + cn 2c(n/2) log 2 (n/2) + cn = cn(log 2 n 1) + cn = cn log 2 n Χαροκόπειο Πανεπιστήμιο 10/26

Πολλαπλασιασμός Ακεραίων Η μέθοδος του σχολείου Έστω δύο ακέραιοι αριθμοί x και y οι οποίοι αποτελούνται από n bits. Πόσο χρόνο χρειάζεται ο αλγόριθμος του σχολείου για να πολλαπλασιάσει τους x και y; Χαροκόπειο Πανεπιστήμιο 11/26

Πολλαπλασιασμός Ακεραίων Η μέθοδος του σχολείου Έστω δύο ακέραιοι αριθμοί x και y οι οποίοι αποτελούνται από n bits. Πόσο χρόνο χρειάζεται ο αλγόριθμος του σχολείου για να πολλαπλασιάσει τους x και y; Υποθέστε πως θέλουμε να εκτελέσουμε τον πολλαπλασιασμό 13 11, ή σε δυαδικό x = 1101 και y = 1011. 1 1 0 1 1 0 1 1 1 1 0 1 (1101 επί 1) 1 1 0 1 (1101 επί 1, μετατοπισμένο μια φορά) 0 0 0 0 (1101 επί 0, μετατοπισμένο δύο φορές) + 1 1 0 1 (1101 επί 1, μετατοπισμένο τρείς φορές) 1 0 0 0 1 1 1 1 (δυαδικό 143) Χαροκόπειο Πανεπιστήμιο 11/26

Πολλαπλασιασμός Ακεραίων Η μέθοδος του σχολείου Έστω δύο ακέραιοι αριθμοί x και y οι οποίοι αποτελούνται από n bits. Πόσο χρόνο χρειάζεται ο αλγόριθμος του σχολείου για να πολλαπλασιάσει τους x και y; Υποθέστε πως θέλουμε να εκτελέσουμε τον πολλαπλασιασμό 13 11, ή σε δυαδικό x = 1101 και y = 1011. 1 1 0 1 1 0 1 1 1 1 0 1 (1101 επί 1) 1 1 0 1 (1101 επί 1, μετατοπισμένο μια φορά) 0 0 0 0 (1101 επί 0, μετατοπισμένο δύο φορές) + 1 1 0 1 (1101 επί 1, μετατοπισμένο τρείς φορές) 1 0 0 0 1 1 1 1 (δυαδικό 143) Υπάρχουν n ενδιάμεσες γραμμές με μήκη μέχρι 2n bit (με την μετατόπιση). Ο συνολικός χρόνος είναι λοιπόν O(n 2 ). Χαροκόπειο Πανεπιστήμιο 11/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά Λόγω απλότητας υποθέστε πως το n είναι δύναμη του 2. Ας χωρίσουμε τους ακεραίους x και y στο αριστερό και δεξιό τους μέρος. x = x L x R = 2 n/2 x L + x R y = y L y R = 2 n/2 y L + y R Χαροκόπειο Πανεπιστήμιο 12/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά Λόγω απλότητας υποθέστε πως το n είναι δύναμη του 2. Ας χωρίσουμε τους ακεραίους x και y στο αριστερό και δεξιό τους μέρος. x = x L x R = 2 n/2 x L + x R y = y L y R = 2 n/2 y L + y R Για παράδειγμα, αν x = 10110110 2 τότε x L = 1011 2 x R = 0110 2 Χαροκόπειο Πανεπιστήμιο 12/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά Λόγω απλότητας υποθέστε πως το n είναι δύναμη του 2. Ας χωρίσουμε τους ακεραίους x και y στο αριστερό και δεξιό τους μέρος. x = x L x R = 2 n/2 x L + x R y = y L y R = 2 n/2 y L + y R Το γινόμενο xy γράφετε ως xy = (2 n/2 x L + x R )(2 n/2 y L + y R ) = 2 n x L y L + 2 n/2 (x L y R + x R y L ) + x R y R Χαροκόπειο Πανεπιστήμιο 12/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά x = x L x R = 2 n/2 x L + x R y = y L y R = 2 n/2 y L + y R xy = 2 n x L y L + 2 n/2 (x L y R + x R y L ) + x R y R.1 οι προσθέσεις χρειάζονται γραμμικό χρόνο.2 οι πολλαπλασιασμοί με δυνάμεις του 2 επίσης γραμμικό χρόνο μιας και είναι απλά μετατοπίσεις προς τα αριστερά.3 οι πολλαπλασιασμοί μπορούν να γίνουν αναδρομικά Χαροκόπειο Πανεπιστήμιο 13/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά x = x L x R = 2 n/2 x L + x R y = y L y R = 2 n/2 y L + y R xy = 2 n x L y L + 2 n/2 (x L y R + x R y L ) + x R y R Ο αναδρομικός αλγόριθμος πολλαπλασιασμού αριθμών n bits υπολογίζει τα γινόμενα x L y L, x L y R, x R y L και x R y R έπειτα αποτιμά την παραπάνω παράσταση σε χρόνο O(n) Χαροκόπειο Πανεπιστήμιο 14/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά x = x L x R = 2 n/2 x L + x R y = y L y R = 2 n/2 y L + y R xy = 2 n x L y L + 2 n/2 (x L y R + x R y L ) + x R y R Ο αναδρομικός αλγόριθμος πολλαπλασιασμού αριθμών n bits υπολογίζει τα γινόμενα x L y L, x L y R, x R y L και x R y R έπειτα αποτιμά την παραπάνω παράσταση σε χρόνο O(n) Εαν T(n) είναι ο χρόνος στη χειρότερη περίπτωση, έχουμε T(n) 4T(n/2) + O(n) Χαροκόπειο Πανεπιστήμιο 14/26

Αναδρομή T(n) 4T(n/2) + O(n).1 Ας υποθέσουμε για λόγους απλότητας πως το n είναι δύναμη του 2. Χαροκόπειο Πανεπιστήμιο 15/26

Αναδρομή T(n) 4T(n/2) + O(n).1 Ας υποθέσουμε για λόγους απλότητας πως το n είναι δύναμη του 2..2 Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα 2 σε κάθε επίπεδο αναδρομής και επομένως φτάνει στη βασική περίπτωση μετά από log 2 n επίπεδα. Χαροκόπειο Πανεπιστήμιο 15/26

Αναδρομή T(n) 4T(n/2) + O(n).1 Ας υποθέσουμε για λόγους απλότητας πως το n είναι δύναμη του 2..2 Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα 2 σε κάθε επίπεδο αναδρομής και επομένως φτάνει στη βασική περίπτωση μετά από log 2 n επίπεδα..3 Ο παράγοντας διακλάδωσης είναι 4 οπότε στο j-οστό επίπεδο του δέντρου έχουμε 4 j υποπροβλήματα, το καθένα μεγέθους n/2 j. Χαροκόπειο Πανεπιστήμιο 15/26

Αναδρομή T(n) 4T(n/2) + O(n).1 Ας υποθέσουμε για λόγους απλότητας πως το n είναι δύναμη του 2..2 Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα 2 σε κάθε επίπεδο αναδρομής και επομένως φτάνει στη βασική περίπτωση μετά από log 2 n επίπεδα..3 Ο παράγοντας διακλάδωσης είναι 4 οπότε στο j-οστό επίπεδο του δέντρου έχουμε 4 j υποπροβλήματα, το καθένα μεγέθους n/2 j..4 Άρα στο j επίπεδο έχουμε συνολικό κόστος 4 j O( n 2 j ) = 2j O(n) Χαροκόπειο Πανεπιστήμιο 15/26

Αναδρομή T(n) 4T(n/2) + O(n).1 Ας υποθέσουμε για λόγους απλότητας πως το n είναι δύναμη του 2..2 Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα 2 σε κάθε επίπεδο αναδρομής και επομένως φτάνει στη βασική περίπτωση μετά από log 2 n επίπεδα..3 Ο παράγοντας διακλάδωσης είναι 4 οπότε στο j-οστό επίπεδο του δέντρου έχουμε 4 j υποπροβλήματα, το καθένα μεγέθους n/2 j..4 Άρα στο j επίπεδο έχουμε συνολικό κόστος 4 j O( n 2 j ) = 2j O(n).5 Συνολικά log 2 n 2 j O(n) O(n) 2 log 2 n = O(n 2 ) j=0 Χαροκόπειο Πανεπιστήμιο 15/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά Πρόοδος; Ο αναδρομικός μας αλγόριθμος τρέχει λοιπόν σε χρόνο O(n 2 ). Ίδιο χρόνο με την μέθοδο του σχολείου. Θα χρησιμοποιήσουμε ένα τέχνασμα ώστε να επιταχυνθεί. Χαροκόπειο Πανεπιστήμιο 16/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά Πρόοδος; Ο αναδρομικός μας αλγόριθμος τρέχει λοιπόν σε χρόνο O(n 2 ). Ίδιο χρόνο με την μέθοδο του σχολείου. Θα χρησιμοποιήσουμε ένα τέχνασμα ώστε να επιταχυνθεί. Τέχνασμα του Gauss. Ο μαθηματικός Carl Friedrich Gauss (1777-1855) παρατήρησε κάποτε ότι παρόλο που το γινόμενο δύο μιγαδικών αριθμών (a + bi)(c + di) = ac bd + (bc + ad)i φαίνεται να περιλαμβάνει τέσσερις πολλαπλασιασμούς πραγματικών αριθμών, στην πραγματικότητα μπορεί να εκτελεστεί με μόλις τρεις: ac, bd και (a + b)(c + d) αφού bc + ad = (a + b)(c + d) ac bd. Χαροκόπειο Πανεπιστήμιο 16/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά Αλγόριθμος των Karatsuba και Ofman x = x L x R = 2 n/2 x L + x R y = y L y R = 2 n/2 y L + y R xy = 2 n x L y L + 2 n/2 (x L y R + x R y L ) + x R y R Ενώ η παράσταση φαίνεται να χρειάζεται 4 πολλαπλασιασμούς, στην πραγματικότητα τρεις αρκούν x L y L x R y R (x L + x R )(y L + y R ) αφού x L y R + x R y L = (x L + x R )(y L + y R ) x L y L x R y R Χαροκόπειο Πανεπιστήμιο 17/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά multiply( x, y ) Input: θετικοί ακέραιοι x και y των n bits Output: Το γινόμενο τους if n = 1 then return xy end x L, x R αριστερότερα n/2, δεξιότερα n/2 bit του x y L, y R αριστερότερα n/2, δεξιότερα n/2 bit του y P 1 multiply(x L, y L ) P 2 multiply(x R, y R ) P 3 multiply(x L + x R, y L + y R ) return P 1 2 n + (P 3 P 1 P 2 ) 2 n/2 + P 2 Χαροκόπειο Πανεπιστήμιο 18/26

Πολλαπλασιασμός Ακεραίων Αναδρομικά multiply( x, y ) Input: θετικοί ακέραιοι x και y των n bits Output: Το γινόμενο τους if n = 1 then return xy end x L, x R αριστερότερα n/2, δεξιότερα n/2 bit του x y L, y R αριστερότερα n/2, δεξιότερα n/2 bit του y P 1 multiply(x L, y L ) P 2 multiply(x R, y R ) P 3 multiply(x L + x R, y L + y R ) return P 1 2 n + (P 3 P 1 P 2 ) 2 n/2 + P 2 Έχοντας μειώσει σε 3 τις αναδρομικές κλήσεις έχουμε την αναδρομή T(n) 3T(n/2) + O(n). Επειδή η επίδραση αυτή γίνεται σε κάθε αναδρομικό βήμα, οδηγούμαστε σε ένα δραματικά χαμηλότερο χρονικό φράγμα. Η αναδρομή αυτή λύνει σε T(n) = O(n log 2 3 ) = O(n 1.59 ). Στην πράξη επειδή οι σύγχρονες αρχιτεκτονικές πολλαπλασιάζουν 32 ή 64 bits πολύ γρήγορα, θα σταματούσαμε την αναδρομή όταν το n φτάσει αυτές τις τιμές. Χαροκόπειο Πανεπιστήμιο 18/26

Κύριο Θεώρημα Master Theorem Θεώρημα Αν T(n) = a T( n/b ) + O(n d ) για κάποιες σταθερές a > 0, b > 1 και d 0, τότε O(n d ) αν d > log b a T(n) = O(n d log n) αν d = log b a O(n log b a ) αν d < log b a. Χαροκόπειο Πανεπιστήμιο 19/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. µέγεθος n διακλάδωση a µέγεθος n b µέγεθος n b 2 ϐάθος log b n µέγεθος 1 πλάτος a log b n = n log b a Χαροκόπειο Πανεπιστήμιο 20/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. µέγεθος n διακλάδωση a Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα b σε κάθε επίπεδο αναδρομής, και άρα φτάνει στην βασική περίπτωση μετά από log b n επίπεδα. µέγεθος n b µέγεθος n b 2 ϐάθος log b n µέγεθος 1 πλάτος a log b n = n log b a Χαροκόπειο Πανεπιστήμιο 20/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. µέγεθος n διακλάδωση a Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα b σε κάθε επίπεδο αναδρομής, και άρα φτάνει στην βασική περίπτωση μετά από log b n επίπεδα. Παράγοντας διακλάδωσης a και άρα στο j επίπεδο έχουμε a j υποπροβλήματα με μέγεθος n/b j το καθένα. µέγεθος n b µέγεθος n b 2 µέγεθος 1 ϐάθος log b n πλάτος a log b n = n log b a Χαροκόπειο Πανεπιστήμιο 20/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. µέγεθος n διακλάδωση a Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα b σε κάθε επίπεδο αναδρομής, και άρα φτάνει στην βασική περίπτωση μετά από log b n επίπεδα. µέγεθος n b µέγεθος n b 2 ϐάθος log b n Παράγοντας διακλάδωσης a και άρα στο j επίπεδο έχουμε a j υποπροβλήματα με μέγεθος n/b j το καθένα. Η συνολική εργασία στο επιπέδου j είναι a j O( n b j )d = O(n d ) ( a b d )j. µέγεθος 1 πλάτος a log b n = n log b a Χαροκόπειο Πανεπιστήμιο 20/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα b σε κάθε επίπεδο αναδρομής, και άρα φτάνει στην βασική περίπτωση μετά από log b n επίπεδα. Παράγοντας διακλάδωσης a και άρα στο j επίπεδο έχουμε a j υποπροβλήματα με μέγεθος n/b j το καθένα. µέγεθος n µέγεθος n b µέγεθος n b 2 µέγεθος 1 Η συνολική εργασία στο επιπέδου j είναι a j O( n b j )d = O(n d ) ( a b d )j. Καθώς το j πηγαίνει από 0 έως log b n έχουμε μια γεωμετρική σειρά με λόγο a b d ( ( ) ( ) a a 2 ( ) ) a logb O(n d n ) 1 + + +... + b d b d b d πλάτος a log b n = n log b a διακλάδωση a ϐάθος log b n Χαροκόπειο Πανεπιστήμιο 20/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. µέγεθος n Το μέγεθος των υποπροβλημάτων µέγεθος n b μειώνεται κατά ένα παράγοντα b σε κάθε επίπεδο αναδρομής, και άρα µέγεθος φτάνει στην βασική περίπτωση μετά n b 2 από log b n επίπεδα. Παράγοντας διακλάδωσης a και άρα στο j επίπεδο έχουμε a j υποπροβλήματα με μέγεθος n/b j το καθένα. µέγεθος 1 Η συνολική εργασία στο επιπέδου j είναι a j O( n b j )d = O(n d ) ( a b d )j. Καθώς το j πηγαίνει από 0 έως log b n έχουμε μια γεωμετρική σειρά με λόγο a b d ( ( ) ( ) a a 2 ( ) ) a logb O(n d n ) 1 + + +... + b d b d b d πλάτος a log b n = n log b a διακλάδωση a ϐάθος log b n Εαν a b d < 1, δηλαδή d > log b a, τότε η σειρά είναι φθίνουσα και το άθροισμα ισούται με τον πρώτο όρο O(n d ). Χαροκόπειο Πανεπιστήμιο 20/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. µέγεθος n Το μέγεθος των υποπροβλημάτων µέγεθος n b μειώνεται κατά ένα παράγοντα b σε κάθε επίπεδο αναδρομής, και άρα µέγεθος φτάνει στην βασική περίπτωση μετά n b 2 από log b n επίπεδα. Παράγοντας διακλάδωσης a και άρα στο j επίπεδο έχουμε a j υποπροβλήματα με μέγεθος n/b j το καθένα. µέγεθος 1 Η συνολική εργασία στο επιπέδου j είναι a j O( n b j )d = O(n d ) ( a b d )j. Καθώς το j πηγαίνει από 0 έως log b n έχουμε μια γεωμετρική σειρά με λόγο a b d ( ( ) ( ) a a 2 ( ) ) a logb O(n d n ) 1 + + +... + b d b d b d πλάτος a log b n = n log b a διακλάδωση a ϐάθος log b n Εάν a b d = 1, δηλαδή d = log b a, τότε όλοι οι O(log n) όροι της σειράς είναι ίσοι με O(nd ) και άρα έχουμε O(n d log n). Χαροκόπειο Πανεπιστήμιο 20/26

Κύριο Θεώρημα Απόδειξη Ας υποθέσουμε πάλι για λόγους απλότητας ότι το n είναι δύναμη του b. Το μέγεθος των υποπροβλημάτων μειώνεται κατά ένα παράγοντα b σε κάθε επίπεδο αναδρομής, και άρα φτάνει στην βασική περίπτωση μετά από log b n επίπεδα. Παράγοντας διακλάδωσης a και άρα στο j επίπεδο έχουμε a j υποπροβλήματα με μέγεθος n/b j το καθένα. µέγεθος n µέγεθος n b µέγεθος n b 2 µέγεθος 1 Η συνολική εργασία στο επιπέδου j είναι a j O( n b j )d = O(n d ) ( a b d )j. Καθώς το j πηγαίνει από 0 έως log b n έχουμε μια γεωμετρική σειρά με λόγο a b d ( ( ) ( ) a a 2 ( ) ) a logb O(n d n ) 1 + + +... + b d b d b d πλάτος a log b n = n log b a διακλάδωση a ϐάθος log b n Εάν a b d > 1, δηλαδή d < log b a, τότε η σειρά είναι αύξουσα και το άθροισμα της δίνεται από τον τελευταίο της όρο ( ) ( ) a logb n d n a = n d log b n = a log b d (b log b n b n = a (log a n)(log b a) = n log b a. Χαροκόπειο Πανεπιστήμιο ) d 20/26

Πολλαπλασιασμός Ακεραίων Έχοντας μειώσει σε 3 τις αναδρομικές κλήσεις έχουμε την αναδρομή T(n) 3T(n/2) + O(n). Επειδή η επίδραση αυτή γίνεται σε κάθε αναδρομικό βήμα, οδηγούμαστε σε ένα δραματικά χαμηλότερο χρονικό φράγμα. Χρησιμοποιώντας το κύριο θεώρημα με a = 3, b = 2 και d = 1 και άρα = 3/2 > 1 πέρνουμε πως ο χρόνος είναι a b d T(n) = O(n log 2 3 ) = O(n 1.59 ) Χαροκόπειο Πανεπιστήμιο 21/26

Πολλαπλασιασμός Πινάκων Το γινόμενο δύο n n πινάκων X και Y είναι ένας τρίτος πίνακας Z = XY πάλι διαστάσεων n n όπου το στοιχείο (i, j) είναι n Z ij = X ik Y kj. k=1 j i = (i, j) X Y Z Χαροκόπειο Πανεπιστήμιο 22/26

Πολλαπλασιασμός Πινάκων Z 11 Z 12 Z 1n X 11 X 12 X 1n Y 11 Y 12 Y 1n Z 21 Z 22 Z 2n X........ = 21 X 22 X 2n Y........ 21 Y 22 Y 2n........ Z n1 Z n2 Z nn X n1 X n2 X nn Y n1 Y n2 Y nn Ο παρακάτω κώδικας υλοποιεί τον αλγόριθμο πολλαπλασιασμού και χρειάζεται O(n 3 ) χρόνο. for ( i = 0 ; i < n ; i ++ ) for ( j = 0 ; j < n ; j ++ ) for ( k = 0, c [ i ] [ j ] = 0. 0 ; k < n ; k++ ) Z [ i ] [ j ] += X [ i ] [ k ] * Y[ k ] [ j ] ; Χαροκόπειο Πανεπιστήμιο 23/26

Πολλαπλασιασμός Πινάκων Z 11 Z 12 Z 1n X 11 X 12 X 1n Y 11 Y 12 Y 1n Z 21 Z 22 Z 2n X........ = 21 X 22 X 2n Y........ 21 Y 22 Y 2n........ Z n1 Z n2 Z nn X n1 X n2 X nn Y n1 Y n2 Y nn Ο παρακάτω κώδικας υλοποιεί τον αλγόριθμο πολλαπλασιασμού και χρειάζεται O(n 3 ) χρόνο. for ( i = 0 ; i < n ; i ++ ) for ( j = 0 ; j < n ; j ++ ) for ( k = 0, c [ i ] [ j ] = 0. 0 ; k < n ; k++ ) Z [ i ] [ j ] += X [ i ] [ k ] * Y[ k ] [ j ] ; Το 1969, ο Γερμανός μαθηματικός Volker Strassen ανακοίνωσε έναν αλγόριθμο "διαίρει και βασίλευε" που είναι σημαντικά γρηγορότερος. Χαροκόπειο Πανεπιστήμιο 23/26

Πολλαπλασιασμός Πινάκων Διαίρει και Βασίλευε Είναι ιδιαίτερα εύκολο να χωριστεί το πρόβλημα σε υποπροβλήματα αφού μπορεί να εκτελεστεί κατά μπλόκ. Χωρίζουμε τους πίνακες X και Y σε τέσσερα μπλοκ τον καθένα μεγέθους n/2 n/2: [ ] [ ] A B E F X =, Y = C D G H Το γινόμενο τους μπορεί να εκφραστεί συναρτήσει αυτών των μπλόκ σαν να ήταν τα μπλόκ απλά στοιχεία: [ ] [ ] [ ] A B E F AE + BG AF + BH XY = = C D G H CE + DG CF + DH Χαροκόπειο Πανεπιστήμιο 24/26

Πολλαπλασιασμός Πινάκων Διαίρει και Βασίλευε [ ] [ ] [ ] A B E F AE + BG AF + BH XY = = C D G H CE + DG CF + DH Ένας αλγόριθμος διαίρει και βασίλευε λοιπόν: υπολογίζει αναδρομικά 8 γινόμενα μισού (n/2) μεγέθους AE, BG, AF, BH, CE, DG, CF και DH και στην συνέχεια κάνει μερικές προσθέσεις Συνολικά χρειάζεται χρόνο T(n) 8T(n/2) + O(n 2 ) που καταλήγει σε O(n 3 ), το ίδιο με τον αλγόριθμο του σχολείου. Χαροκόπειο Πανεπιστήμιο 25/26

Πολλαπλασιασμός Πινάκων Ο Αλγόριθμος του Strassen Ο Strassen με έξυπνη άλγεβρα έδειξε πως το γινόμενο XY μπορεί να υπολογιστεί με μόνο 7 υποπροβλήματα n/2 n/2 και περισσότερες προσθέσεις. [ ] P5 + P 4 P 2 + P 6 P 1 + P 2 XY = P 3 + P 4 P 1 + P 5 P 3 P 7 όπου P 1 = A(F H) P 5 = (A + D)(E + H) P 2 = (A + B)H P 6 = (B D)(G + H) P 3 = (C + D)E P 7 = (A C)(E + F) P 4 = D(G E) Συνολικά χρειάζεται χρόνο T(n) 7T(n/2) + O(n 2 ) που από το κύριο θεώρημα προκύπτει ότι είναι O(n log 2 7 ) O(n 2.81 ). Χαροκόπειο Πανεπιστήμιο 26/26