23
Δευτέρα, 20 Ιουνίου 2022 Δευτέρα, 20 Ιουνίου 2022 Τμ. Πληροφορικής, Α.Π.Θ. Τμ. Πληροφορικής, Α.Π.Θ. 1 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Διαίρει και βασίλευε Ι Είναι μία τεχνική για σχεδίαση αλγορίθμων που βασίζονται στη διάσπαση της προς επίλυση περίπτωσης σε μικρότερες υποπεριπτώσεις του ίδιου προβλήματος, στη διαδοχική και ανεξάρτητη επίλυση αυτών και στο συνδυασμό των επί μέρους λύσεων με τέτοιο τρόπο, ώστε να σχηματισθεί η λύση της αρχικής περίπτωσης. Ας υποθέσουμε ότι κάποιος αλγόριθμος Α απαιτεί χρόνο τετραγωνικής πολυπλοκότητας. Έστω c μία σταθερά έτσι ώστε για κάποια υλοποίηση του αλγορίθμου t A (n)cn 2 . Έστω επίσης ότι διαπιστώνουμε ότι η συγκεκριμένη περίπτωση μπορεί επίσης να επιλυθεί διασπώντας τη σε τρεις υποπεριπτώσεις μεγέθους n/2, επιλύνοντάς τις και συνδυάζοντας τις επί μέρους λύσεις.

Διαίρει και βασίλευε Ι

Embed Size (px)

DESCRIPTION

Διαίρει και βασίλευε Ι. - PowerPoint PPT Presentation

Citation preview

Page 1: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 11

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Διαίρει και βασίλευε Ι

Είναι μία τεχνική για σχεδίαση αλγορίθμων που βασίζονται στη διάσπαση της προς επίλυση περίπτωσης σε μικρότερες υποπεριπτώσεις του ίδιου προβλήματος, στη διαδοχική και ανεξάρτητη επίλυση αυτών και στο συνδυασμό των επί μέρους λύσεων με τέτοιο τρόπο, ώστε να σχηματισθεί η λύση της αρχικής περίπτωσης.Ας υποθέσουμε ότι κάποιος αλγόριθμος Α απαιτεί χρόνο τετραγωνικής πολυπλοκότητας. Έστω c μία σταθερά έτσι ώστε για κάποια υλοποίηση του αλγορίθμου tA(n)cn2. Έστω επίσης ότι διαπιστώνουμε ότι η συγκεκριμένη περίπτωση μπορεί επίσης να επιλυθεί διασπώντας τη σε τρεις υποπεριπτώσεις μεγέθους n/2, επιλύνοντάς τις και συνδυάζοντας τις επί μέρους λύσεις.

Page 2: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 22

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Διαίρει και βασίλευε ΙΙΕίναι επίσης d μια σταθερά, έτσι ώστε ο απαιτούμενος χρόνος για τη διάσπαση του προβλήματος και το συνδυασμό των επί μέρους λύσεων είναι t(n)dn. Τότε, ο συνολικός χρόνος του νέου αλγόριθμου B είναι

Άρα ο νέος αλγόριθμος B εξακολουθεί να έχει πολυπλοκότητα n2, αν και έχει επιτευχθεί μία βελτίωση κατά 25%.Αν όμως οι υποπεριπτώσεις έχουν αρκετά μεγάλο μέγεθος τι θα γινόταν αν το πρόβλημα επιλύονταν με αναδρομή;Τότε ο απαιτούμενος χρόνος εκτέλεσης θα δινόταν από τη σχέση

cndccn

dnncntntnt AB

4

3)

2

3(

4

3

)2/)1((3)()2/(3)(

2

2

Page 3: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 33

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Διαίρει και βασίλευε ΙΙΙ

με πολυπλοκότητα nlg3 που είναι περίπου n1.59. Αυτή είναι μια αρκετά καλή βελτίωση που γίνεται πιο σημαντική όσο μεγαλώνει το n. Πως καθορίζεται το n0??DQ(x) { //Γενική μορφή αλγορίθμων divide & conquer

if (x αρκετά μικρό) return ADHOC(x);

διάσπαση της περίπτωσης σε υποπεριπτώσεις x1, x2, …, xk

for (i=1; i<=k; i++)yi=DQ(xi);

συνδυασμός των yi για το σχηματισμό της λύσης y του xreturn y}

άntnt

nnntnt

C

AC

)()2/(3

)()( 0

Page 4: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 44

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Διαίρει και βασίλευε ΙV Σε κάποιες περιπτώσεις προτιμάται η αντικατάσταση της

αναδρομής από έναν επαναληπτικό βρόχο.Τότε μπορεί να επιτευχθεί ίσως μία περιορισμένη βελτίωση σε ότι αφορά το χρόνο εκτέλεσης, αλλά από την άλλη μεριά μία αλλαγή στην τάξη μεγέθους του χώρου μνήμης, που χρησιμοποιείται.

Για τον καθορισμό του βέλτιστου n0 κάνουμε τα εξής: καθορίζουμε με θεωρητική ανάλυση τη μορφή των αναδρομικών εξισώσεων του χρόνου εκτέλεσης και στη συνέχεια προσπαθούμε να καθορίσουμε τις σταθερές που χρησιμοποιούνται σε αυτές τις εξισώσεις για μια συγκεκριμένη υλοποίηση του αλγορίθμου. Τότε το βέλτιστο n0 καθορίζεται από τον υπολογισμό του n, που δε διαφοροποιεί την απόδοση μιας περίπτωσης μεγέθους n αν γίνει απευθείας εφαρμογή του αλγορίθμου ή αν θα χρησιμοποιηθεί ένα επιπλέον επίπεδο αναδρομής.

Page 5: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 55

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Δυαδική αναζήτηση IΈστω Τ[n] ένας πίνακας ταξινομημένος κατά αύξουσα σειρά στοιχείων, δηλ. 0i<j n-1T[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;

}

Page 6: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 66

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Δυαδική αναζήτηση 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] και ij

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);

}

Page 7: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 77

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Δυαδική αναζήτηση III

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ

σε κάθε βήμα υπ οδια ιρείτα ι τοσύνολο δεδομένω ν στο μ ισό

κάθε κόμβος του δένδρου αναπ αριστά το μεσα ίο στο ιχείο του συνόλου

Page 8: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 88

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Δυαδική αναζήτηση IVΆρα στη χειρότερη περίπτωση ο βρόχος εκτελείται log2n φορές. Επομένως ο αλγόριθμος είναι Ο(log2n).

ΜΗ ΑΝΑΔΡΟΜΙΚΗ ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ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;

}

Page 9: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 99

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Δυαδική αναζήτηση Vint 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 (xT[k+1])

i=k+1;else {i=k; j=k;}

}return i;

}

Έχει αποδειχθεί ότι για αρκετά μεγάλο n ο iterbin2 είναι πιο αποδοτικός από τον iterbin.

Page 10: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1010

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Ταξινόμηση με συγχώνευση ΙΈστω Τ[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)

}

Page 11: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1111

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Ταξινόμηση με συγχώνευση ΙI

Ο συγκεκριμένος αλγόριθμος είναι ένα κλασσικό παράδειγμα με όλα τα χαρακτηριστικά του διαίρει και βασίλευε. Όταν ο αριθμός των προς ταξινόμηση στοιχείων είναι μικρός, τότε χρησιμοποιείται κάποιος άλλος απλός αλγόριθμος, διαφορετικά η περίπτωση διασπάται σε δύο υποπεριπτώσεις και η ίδια συνάρτηση καλεί τον εαυτό της για κάθε μία από αυτές και συγχωνεύει τις επί μέρους λύσεις.Αποδεικνύεται ότι ο αλγόριθμος έχει αποδοτικότητα Θ(n logn)

Αν όμως χρησιμοποιήσουμε αλγόριθμο που διασπά την κάθε περίπτωση σε μη ίσες υποπεριπτώσεις, τότε αποδεικνύεται ότι Θ(n2).

Page 12: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1212

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Επιλογή στοιχείου Ι

Θέλουμε να επιλέξουμε τη διάμεσο, δηλ. το στοιχείο εκείνο που στον πίνακα υπάρχουν τόσα μεγαλύτερα στοιχεία, όσα και μικρότερα.

Μία λύση είναι να προηγηθεί ταξινόμηση του πίνακα κατά αύξουσα σειρά και να πάρουμε το μεσαίο στοιχείο. Αυτό θα απαιτούσε χρόνο O(nlogn). Μήπως γίνεται και πιο γρήγορα;

Θεωρούμε το γενικότερο πρόβλημα, το πρόβλημα της επιλογής: Έστω Τ ένας πίνακας από n στοιχεία και έστω k ένας ακέραιος μεταξύ 0 και n-1. Το k-στο πιο μικρό στοιχείο του Τ είναι η τιμή m για την οποία ισχύει

2/ } ] [ | ]1 .. 0[ {# 2/ } ] [ | ]1 .. 0[ {#n m i T n i n m i T n i

k m i T n i k m i T n i } ] [ | ] .. 0[ {# } ] [ | ]1 .. 0[ {#

Page 13: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1313

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Επιλογή στοιχείου ΙΙ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 (ku) {

πίνακας U[0..u-1]τα στοιχεία του T που είναι μικρότερα από το p

return selection(U,k)}if (kv)

return p;else { //k>v

πίνακας V[0..n-v-1]τα στοιχεία του T που είναι μεγαλύτερα από το p

return selection(V,k-v)}}

Page 14: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1414

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Επιλογή στοιχείου ΙΙI

Μπορεί να αποδειχθεί ότι αν χρησιμοποιούμε ως στοιχείο pivot τη διάμεσο και η εύρεσή της έχει μοναδιαίο κόστος, τότε ο αλγόριθμος είναι O(n).

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

ΛΥΣΗ: Μία γρήγορη προσέγγιση της διαμέσου

Page 15: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1515

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Επιλογή στοιχείου ΙV

pseudomed(T[n]) {int s=n / 5;

πίνακας S[s];for (i=1;i<=s;i++)

S[i]=adhocmed5(T[5i-4-1..5i]);return selection(S,[(s+1) / 2])}

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

Όταν χρησιμοποιείται μια προσέγγιση όπως η προαναφερόμενη τότε ο αλγόριθμος επιλογής είναι Ο(n).

Page 16: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1616

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πράξεις μεγάλων αριθμών Ι Σε όσους αλγορίθμους χρησιμοποιήσαμε μέχρι τώρα

θεωρήσαμε τις προσθέσεις και τους πολλαπλασιασμούς ως στοιχειώδεις πράξεις με την έννοια ότι ο χρόνος που απαιτείται για την εκτέλεση της κάθε μιας είναι άνω φραγμένος από μια σταθερά, που εξαρτάται μόνο από την ταχύτητα των κυκλωμάτων του υπολογιστή.

Αυτό όμως είναι αλήθεια μόνο όταν το μέγεθος των τελεστέων είναι αρκετά μικρό, ώστε να μπορεί να αναπαρασταθεί απευθείας στο hardware. Τι γίνεται ας πούμε όταν έχουμε πολλαπλασιασμό πολύ μεγάλων ακεραίων, που δεν μπορούν να αναπαρασταθούν στη μηχανή;

Χρειαζόμαστε μια αποδοτική αναπαράσταση σε επίπεδο λογισμικού!!

Εφαρμογή: Κρυπτογραφία

Page 17: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1717

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πράξεις μεγάλων αριθμών ΙΙ

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ: 45Χ19

ΚΛΑΣΣΙΚΟΣ ΑΛΓΟΡΙΘΜΟΣ 45 Χ 19 405 +45 855

ΡΩΣΙΚΟΣ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ 45 19 19πλεονέκτημα: 22 38 --γίνεται μόνο με προσθέσεις, που σε επίπεδο 11 76 76hardware έχουν μικρότεροκόστος από τους 5 152

152πολλαπλασιασμούς 2 304 ----

1 608 608855

Page 18: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1818

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πράξεις μεγάλων αριθμών ΙΙΙ

Και οι δύο αλγόριθμοι έχουν τετραγωνική πολυπλοκότητα. Μπορεί αυτό να βελτιωθεί; ΝΑΙ με διαίρει και βασίλευε.

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

u=10sw+x και v=10sy+z, όπου 0x<10s, 0z<10s και Επομένως οι ακέραιοι w και y έχουν και οι δύο από ψηφία.Το γινόμενο δίνεται ως:

w x

y z

u

v

n

2/n 2/n

2/ns 2/n

xzxywzwyuv ss )(10102

Page 19: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 1919

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πράξεις μεγάλων αριθμών ΙV

long int mult(u,v:long int) {n= μικρότερος ακέραιος έτσι ώστε τόσο ο u όσο και ο v να έχουν μέγεθος n;if (n είναι μικρό) {

πολλαπλασίασε το u με το v χρησιμοποιώντας ένα κλασσικό αλγόριθμοreturn το γινόμενο}

s = [n / 2];w=[u / 10s]; x=u mod 10s;y=[v / 10s]; z=v mod 10s;return mult(w,y) X 102s + (mult(w,z)+mult(x,y)) X 10s + mult(x,z);

}

Page 20: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2020

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πράξεις μεγάλων αριθμών V

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

Αν όμως αντικατασταθεί η τελευταία του εντολή από τις r=mult(w+x,y+z);p=mult(w,y); q=mult(x,z);return 102sp+10s(r-p-q)+qτότε μπορεί να αποδειχθεί ότι ο αλγόριθμος γίνεται

, που είναι περίπου O(n1.59) και αυτό είναι μια βελτίωση

)( 3log2nO

Page 21: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2121

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πολλαπλασιασμός πινάκων Ι

Ο κλασσικός αλγόριθμος για τον πολλαπλασιασμό δύο τετραγωνικών πινάκων Α και B διαστάσεων nXn είναι:

Αφού κάθε στοιχείο του C υπολογίζεται σε χρόνο τάξης n και για το γινόμενο απαιτούνται n2 τέτοιοι υπολογισμοί, o αλγόριθμος έχει πολυπλοκότητα Θ(n3). Μπορούμε αυτό να το βελτιώσουμε;

ΝΑΙ σύμφωνα με τον αλγόριθμο που εφευρέθηκε το 1960 από τον Strassen

kj

n

kikij BAC

1

Page 22: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2222

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πολλαπλασιασμός πινάκων ΙI

Έστω δύο πίνακες 2Χ2 Α και Β:

Θεωρούμε τις ακόλουθες πράξεις:m1=(α21+α22-α11)(b22-b12+b11)

m2=α11b11

m3=α12b21

m4=(α11-α21)(b22-b12)

m5=(α21+α22)(b12-b11)

m6=(α12-α21+α11-α22)b22

m7=α22(b11+b22-b12-b21)

2221

1211

aa

aaA

2221

1211

bb

bbA

Page 23: Διαίρει και βασίλευε Ι

Τετάρτη, 19 Απριλίου 2023Τετάρτη, 19 Απριλίου 2023 Τμ. Πληροφορικής, Α.Π.Θ.Τμ. Πληροφορικής, Α.Π.Θ. 2323

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ

Πολλαπλασιασμός πινάκων ΙII Τότε, το γινόμενο δίνεται από τον πίνακα

και άρα μπορούμε να υπολογίσουμε το γινόμενο χρησιμοποιώντας μόνο 7 πολλαπλασιασμούς

Αν αντικαταστήσουμε κάθε στοιχείο των A και B με πίνακα nXn, τότε φτιάχνουμε έναν αλγόριθμο έναν αλγόριθμο για πολλαπλασιασμό πινάκων 2nX2n με επτά πολλαπλασιασμούς πινάκων nXn και έναν αριθμό προσθέσεων και αφαιρέσεων.

Πολυπλοκότητα Ο(n2.81)

54217421

652132

mmmmmmmm

mmmmmm