ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.1 Διαίρει και βασίλευε Ι Είναι μία τεχνική για σχεδίαση αλγορίθμων που βασίζονται στη διάσπαση της προς επίλυση περίπτωσης σε μικρότερες υποπεριπτώσεις του ίδιου προβλήματος, στη διαδοχική και ανεξάρτητη επίλυση αυτών και στο συνδυασμό των επί μέρους λύσεων με τέτοιο τρόπο, ώστε να σχηματισθεί η λύση της αρχικής περίπτωσης. Ας υποθέσουμε ότι κάποιος αλγόριθμος Α απαιτεί χρόνο τετραγωνικής πολυπλοκότητας. Έστω c μία σταθερά έτσι ώστε για κάποια υλοποίηση του αλγορίθμου t A (n) cn 2. Έστω επίσης ότι διαπιστώνουμε ότι η συγκεκριμένη περίπτωση μπορεί επίσης να επιλυθεί διασπώντας τη σε τρεις υποπεριπτώσεις μεγέθους n/2 , επιλύνοντάς τις και συνδυάζοντας τις επί μέρους λύσεις.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.2 Διαίρει και βασίλευε ΙΙ Είναι επίσης d μια σταθερά, έτσι ώστε ο απαιτούμενος χρόνος για τη διάσπαση του προβλήματος και το συνδυασμό των επί μέρους λύσεων είναι t(n) dn. Τότε, ο συνολικός χρόνος του νέου αλγόριθμου B είναι Άρα ο νέος αλγόριθμος B εξακολουθεί να έχει πολυπλοκότητα n 2, αν και έχει επιτευχθεί μία βελτίωση κατά 25%. Αν όμως οι υποπεριπτώσεις έχουν αρκετά μεγάλο μέγεθος τι θα γινόταν αν το πρόβλημα επιλύονταν με αναδρομή; Τότε ο απαιτούμενος χρόνος εκτέλεσης θα δινόταν από τη σχέση
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.3 Διαίρει και βασίλευε ΙΙΙ με πολυπλοκότητα n lg3 που είναι περίπου n Αυτή είναι μια αρκετά καλή βελτίωση που γίνεται πιο σημαντική όσο μεγαλώνει το n. Πως καθορίζεται το n 0 ?? DQ(x) {//Γενική μορφή αλγορίθμων divide & conquer if (x αρκετά μικρό) return ADHOC(x); διάσπαση της περίπτωσης σε υποπεριπτώσεις x 1, x 2, …, x k for (i=1; i<=k; i++) y i =DQ(x i ); συνδυασμός των y i για το σχηματισμό της λύσης y του x return y }
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.4 Διαίρει και βασίλευε ΙV Σε κάποιες περιπτώσεις προτιμάται η αντικατάσταση της αναδρομής από έναν επαναληπτικό βρόχο.Τότε μπορεί να επιτευχθεί ίσως μία περιορισμένη βελτίωση σε ότι αφορά το χρόνο εκτέλεσης, αλλά από την άλλη μεριά μία αλλαγή στην τάξη μεγέθους του χώρου μνήμης, που χρησιμοποιείται. Για τον καθορισμό του βέλτιστου n 0 κάνουμε τα εξής: καθορίζουμε με θεωρητική ανάλυση τη μορφή των αναδρομικών εξισώσεων του χρόνου εκτέλεσης και στη συνέχεια προσπαθούμε να καθορίσουμε τις σταθερές που χρησιμοποιούνται σε αυτές τις εξισώσεις για μια συγκεκριμένη υλοποίηση του αλγορίθμου. Τότε το βέλτιστο n 0 καθορίζεται από τον υπολογισμό του n, που δε διαφοροποιεί την απόδοση μιας περίπτωσης μεγέθους n αν γίνει απευθείας εφαρμογή του αλγορίθμου ή αν θα χρησιμοποιηθεί ένα επιπλέον επίπεδο αναδρομής.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.5 Δυαδική αναζήτηση I Έστω Τ[n] ένας πίνακας ταξινομημένος κατά αύξουσα σειρά στοιχείων, δηλ. 0 i<j n-1 T[i] T[j] και έστω ένα στοιχείο x, που αναζητάμε. Αν το στοιχείο x δεν περιέχεται μέσα στον πίνακα, τότε μας ενδιαφέρει να βρούμε τη θέση, όπου θα μπορούσαμε να το εισάγουμε. ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ int sequential(T[n],x) { for (i=0;i<n;i++) if (T[i]>x) return i-1; return n; }
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.6 Δυαδική αναζήτηση II Χειρότερη περίπτωση: Θ(n) Μέση περίπτωση: απαιτούνται κατά μέσο όρο (1+2+…+n)/n συγκρίσεις, δηλ. (n(n+1)/2)/n, δηλαδή (n+1)/2. Άρα, ο αλγόριθμος είναι O(n). ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ int binsearch(T[n], x) { if (n=1 || x<T[0]) return O; return binrec(T, x); } int binrec(T[i..j], x) { //η συνάρτηση αυτή καλείται αν T[i] x<T[j+1] και i j if (i = j) return i; int k=(i+j+1) / 2; if (x<T[k]) return binrec(T[i..k-1], x); else return binrec(T[k..j], x); }
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.7 Δυαδική αναζήτηση III
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.8 Δυαδική αναζήτηση IV Άρα στη χειρότερη περίπτωση ο βρόχος εκτελείται log 2 n φορές. Επομένως ο αλγόριθμος είναι Ο(log 2 n). ΜΗ ΑΝΑΔΡΟΜΙΚΗ ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ int iterbin(T[n], x) { if (n=1 || x<T[0]) return O; i=0; j=n-1; while (i<j) { //αν T[i] x < T[j+1] int k=(i+j+1)/2; if (x<T[k]) j=k-1; else i=k; } return i; }
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.9 Δυαδική αναζήτηση V int iterbin2(T[n], x) { if (n=1 || x<T[0]) return O; i=0; j=n-1; while (i<j) { //αν T[i] x<T[j+1] int k=(i+j+1) / 2; if (x<T[k]) j=k-1; else if (x T[k+1]) i=k+1; else {i=k; j=k;} } return i; } Έχει αποδειχθεί ότι για αρκετά μεγάλο n ο iterbin2 είναι πιο αποδοτικός από τον iterbin.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.10 Ταξινόμηση με συγχώνευση Ι Έστω Τ[n] ένας πίνακας από n στοιχεία. Μας ενδιαφέρει να ταξινομηθούν τα στοιχεία αυτά κατά αύξουσα σειρά. Μία προσέγγιση διαίρει και βασίλευε είναι να διαιρέσουμε τον πίνακα σε δύο μέρη περίπου ίσα, να ταξινομηθούν αυτά με αναδρομικές κλήσεις και να συγχωνευθούν οι επί μέρους λύσεις με τη σωστή σειρά. mergesort(T[n]) { if (n είναι μικρό) insert(T); else U=T[0.. n/2 ]; V=T[1+ n/2 ..n]; mergesort(U); mergesort(V) merge(T, U, V) }
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.11 Ταξινόμηση με συγχώνευση ΙI Ο συγκεκριμένος αλγόριθμος είναι ένα κλασσικό παράδειγμα με όλα τα χαρακτηριστικά του διαίρει και βασίλευε. Όταν ο αριθμός των προς ταξινόμηση στοιχείων είναι μικρός, τότε χρησιμοποιείται κάποιος άλλος απλός αλγόριθμος, διαφορετικά η περίπτωση διασπάται σε δύο υποπεριπτώσεις και η ίδια συνάρτηση καλεί τον εαυτό της για κάθε μία από αυτές και συγχωνεύει τις επί μέρους λύσεις. Αποδεικνύεται ότι ο αλγόριθμος έχει αποδοτικότητα Θ(n logn) Αν όμως χρησιμοποιήσουμε αλγόριθμο που διασπά την κάθε περίπτωση σε μη ίσες υποπεριπτώσεις, τότε αποδεικνύεται ότι Θ(n 2 ).
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.12 Επιλογή στοιχείου Ι Θέλουμε να επιλέξουμε τη διάμεσο, δηλ. το στοιχείο εκείνο που στον πίνακα υπάρχουν τόσα μεγαλύτερα στοιχεία, όσα και μικρότερα. Μία λύση είναι να προηγηθεί ταξινόμηση του πίνακα κατά αύξουσα σειρά και να πάρουμε το μεσαίο στοιχείο. Αυτό θα απαιτούσε χρόνο O(nlogn). Μήπως γίνεται και πιο γρήγορα; Θεωρούμε το γενικότερο πρόβλημα, το πρόβλημα της επιλογής: Έστω Τ ένας πίνακας από n στοιχεία και έστω k ένας ακέραιος μεταξύ 0 και n-1. Το k-στο πιο μικρό στοιχείο του Τ είναι η τιμή m για την οποία ισχύει
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.13 Επιλογή στοιχείου ΙΙ int selection(T[n], k) { if (n αρκετά μικρό) { sort T; return T[k]} p=κάποιο στοιχείο του Τ[n]; u=#{i [0..n-1]|T[i]<p}; v=#{i [0..n-1]|T[i] p}; if (k u) { πίνακας U[0..u-1] τα στοιχεία του T που είναι μικρότερα από το p return selection(U,k)} if (k v) return p; else {//k>v πίνακας V[0..n-v-1] τα στοιχεία του T που είναι μεγαλύτερα από το p return selection(V,k-v)} }
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.14 Επιλογή στοιχείου ΙΙI Μπορεί να αποδειχθεί ότι αν χρησιμοποιούμε ως στοιχείο pivot τη διάμεσο και η εύρεσή της έχει μοναδιαίο κόστος, τότε ο αλγόριθμος είναι O(n). Εναλλακτικά, αν επιλέγουμε κάθε φορά το πρώτο στοιχείο του πίνακα μπορούμε πάλι να χρησιμοποιήσουμε τη μέθοδο ελπίζοντας ότι τα μεγέθη των επί μέρους πινάκων θα είναι ισορροπημένα (αυτό εξαρτάται από την τυχαιότητα των στοιχείων). Τότε, στη χειρότερη περίπτωση ο αλγόριθμος θα είναι Ο(n 2 ). ΛΥΣΗ: Μία γρήγορη προσέγγιση της διαμέσου
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.15 Επιλογή στοιχείου ΙV pseudomed(T[n]) { int s=n / 5; πίνακας S[s]; for (i=1;i<=s;i++) S[i]=adhocmed5(T[5i i]); return selection(S,[(s+1) / 2]) } όπου adhocmed αλγόριθμος ειδικά σχεδιασμένος για να βρίσκει τη διάμεσο μεταξύ πέντε στοιχείων Όταν χρησιμοποιείται μια προσέγγιση όπως η προαναφερόμενη τότε ο αλγόριθμος επιλογής είναι Ο(n).
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.16 Πράξεις μεγάλων αριθμών Ι Σε όσους αλγορίθμους χρησιμοποιήσαμε μέχρι τώρα θεωρήσαμε τις προσθέσεις και τους πολλαπλασιασμούς ως στοιχειώδεις πράξεις με την έννοια ότι ο χρόνος που απαιτείται για την εκτέλεση της κάθε μιας είναι άνω φραγμένος από μια σταθερά, που εξαρτάται μόνο από την ταχύτητα των κυκλωμάτων του υπολογιστή. Αυτό όμως είναι αλήθεια μόνο όταν το μέγεθος των τελεστέων είναι αρκετά μικρό, ώστε να μπορεί να αναπαρασταθεί απευθείας στο hardware. Τι γίνεται ας πούμε όταν έχουμε πολλαπλασιασμό πολύ μεγάλων ακεραίων, που δεν μπορούν να αναπαρασταθούν στη μηχανή; Χρειαζόμαστε μια αποδοτική αναπαράσταση σε επίπεδο λογισμικού!! Εφαρμογή: Κρυπτογραφία
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.17 Πράξεις μεγάλων αριθμών ΙΙ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ: 45Χ19 ΚΛΑΣΣΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ45 Χ 855 ΡΩΣΙΚΟΣ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ πλεονέκτημα: γίνεται μόνο με προσθέσεις, που σε επίπεδο hardware έχουν μικρότεροκόστος από τους πολλαπλασιασμούς
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.18 Πράξεις μεγάλων αριθμών ΙΙΙ Και οι δύο αλγόριθμοι έχουν τετραγωνική πολυπλοκότητα. Μπορεί αυτό να βελτιωθεί; ΝΑΙ με διαίρει και βασίλευε. Διασπάμε τον καθένα από τους τελεστέους σε δύο μέρη, περίπου του ιδίου μεγέθους: u=10 s w+x και v=10 s y+z, όπου 0 x<10 s, 0 z<10 s και Επομένως οι ακέραιοι w και y έχουν και οι δύο από ψηφία. Το γινόμενο δίνεται ως:
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.19 Πράξεις μεγάλων αριθμών ΙV long int mult(u,v:long int) { n=μικρότερος ακέραιος έτσι ώστε τόσο ο u όσο και ο v να έχουν μέγεθος n; if (n είναι μικρό) { πολλαπλασίασε το u με το v χρησιμοποιώντας ένα κλασσικό αλγόριθμο return το γινόμενο} s = [n / 2]; w=[u / 10 s ]; x=u mod 10 s ; y=[v / 10 s ]; z=v mod 10 s ; return mult(w,y) X 10 2s + (mult(w,z)+mult(x,y)) X 10 s + mult(x,z); }
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.20 Πράξεις μεγάλων αριθμών V Ο προηγούμενος αλγόριθμος επίσης έχει τετραγωνική πολυπλοκότητα και άρα δεν πετύχαμε καμιά βελτίωση. Αν όμως αντικατασταθεί η τελευταία του εντολή από τις r=mult(w+x,y+z); p=mult(w,y); q=mult(x,z); return 10 2s p+10 s (r-p-q)+q τότε μπορεί να αποδειχθεί ότι ο αλγόριθμος γίνεται, που είναι περίπου O(n 1.59 ) και αυτό είναι μια βελτίωση
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.21 Πολλαπλασιασμός πινάκων Ι Ο κλασσικός αλγόριθμος για τον πολλαπλασιασμό δύο τετραγωνικών πινάκων Α και B διαστάσεων nXn είναι: Αφού κάθε στοιχείο του C υπολογίζεται σε χρόνο τάξης n και για το γινόμενο απαιτούνται n 2 τέτοιοι υπολογισμοί, o αλγόριθμος έχει πολυπλοκότητα Θ(n 3 ). Μπορούμε αυτό να το βελτιώσουμε; ΝΑΙ σύμφωνα με τον αλγόριθμο που εφευρέθηκε το 1960 από τον Strassen
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.22 Πολλαπλασιασμός πινάκων ΙI Έστω δύο πίνακες 2Χ2 Α και Β: Θεωρούμε τις ακόλουθες πράξεις: m 1 =(α 21 +α 22 -α 11 )(b 22 -b 12 +b 11 ) m 2 =α 11 b 11 m 3 =α 12 b 21 m 4 =(α 11 -α 21 )(b 22 -b 12 ) m 5 =(α 21 +α 22 )(b 12 -b 11 ) m 6 =(α 12 -α 21 +α 11 -α 22 )b 22 m 7 =α 22 (b 11 +b 22 -b 12 -b 21 )
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Τμ. Πληροφορικής, Α.Π.Θ.23 Πολλαπλασιασμός πινάκων ΙII Τότε, το γινόμενο δίνεται από τον πίνακα και άρα μπορούμε να υπολογίσουμε το γινόμενο χρησιμοποιώντας μόνο 7 πολλαπλασιασμούς Αν αντικαταστήσουμε κάθε στοιχείο των A και B με πίνακα nXn, τότε φτιάχνουμε έναν αλγόριθμο έναν αλγόριθμο για πολλαπλασιασμό πινάκων 2nX2n με επτά πολλαπλασιασμούς πινάκων nXn και έναν αριθμό προσθέσεων και αφαιρέσεων. Πολυπλοκότητα Ο(n 2.81 )