Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ΠΛΗ30 ΜΑΘΗΜΑ 2.1

5,748 views

Published on

1) Διαίρει και Βασίλευε
1.1) Ο αλγόριθμος MergeSort (Ταξινόμηση με Συγχώνευση)
1.2) Ο αλγόριθμος QuickSort (Γρήγορη Ταξινόμηση)
1.3) Ο αλγόριθμος QuickSelect (Γρήγορη Επιλογή)
1.4) Ο αλγόριθμος Strassen για τον πολλαπλασιασμό πινάκων
Ασκήσεις

Published in: Education
  • Be the first to comment

  • Be the first to like this

ΠΛΗ30 ΜΑΘΗΜΑ 2.1

  1. 1. ΠΛΗ30 ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ Μάθηµα 2.1: ∆ιαίρει και Βασίλευε∆ιαίρει και Βασίλευε ∆ηµήτρης Ψούνης
  2. 2. ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήµατος 1. ∆ιαίρει και Βασίλευε 1. Ο αλγόριθµος MergeSort(Ταξινόµησης µε Συγχώνευση) 2. Ο αλγόριθµος QuickSort (Γρήγορη Ταξινόµηση) 3. Ο αλγόριθµος QuickSelect (Γρήγορη Επιλογή) 4. Ο αλγόριθµος Strassen για τον πολ/µο πινάκων Β.Ασκήσεις 2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Β.Ασκήσεις 1. Εφαρµογές
  3. 3. Α. Σκοπός του Μαθήµατος Οι στόχοι του µαθήµατος είναι: Επίπεδο Α (-) Επίπεδο Β Η τεχνική σχεδίασης αλγόριθµων ∆ιαίρει και Βασίλευε 3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Η τεχνική σχεδίασης αλγόριθµων ∆ιαίρει και Βασίλευε Επίπεδο Γ Ο αλγόριθµος Γρήγορης Ταξινόµησης (QuickSort) Ο αλγόριθµος Επιλογής του k-µικρότερου αριθµού σε έναν πίνακα Ο αλγόριθµος Πολλαπλασιασµού Πινάκων Strassen
  4. 4. B. Θεωρία Τεχνικές Σχεδίασης Αλγορίθµων 4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Στην 2η ενότητα του µαθήµατος ασχολούµαστε µε τεχνικές που έχουν αναπτυχθεί, ως γενικές µεθοδολογίες για την κατασκευή ενός αλγορίθµου: Η τεχνική ∆ιαίρει και Βασίλευε (Μάθηµα 2.1) Η τεχνική του ∆υναµικού Προγραµµατισµού (Μάθηµα 2.2) Η κατασκευή των Άπληστων Αλγόριθµων (Μάθηµα 2.3) Υπάρχουν ακόµη δεκάδες τεχνικές κατασκευής αλγορίθµων που είναι εκτός ύλης.
  5. 5. B. Θεωρία 1. ∆ιαίρει και Βασίλευε 5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε ∆ΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ Ένας αλγόριθµος διαίρει και βασίλευε συνίσταται από τα εξής βήµατα: 1. ΒΗΜΑ ∆ΙΑΙΡΕΣΗΣ: ∆ιάσπαση του αρχικού προβλήµατος σε µικρότερα επιµέρους υποπροβλήµατα. 2. ΒΗΜΑ ΕΠΙΛΥΣΗΣ ΕΠΙΜΕΡΟΥΣ ΣΤΙΓΜΙΟΤΥΠΩΝ: Επίλυση των επιµέρους υποπροβληµάτων (µε αναδροµικές κλήσεις του ίδιου αλγόριθµου) 3. ΒΗΜΑ ΣΥΝΘΕΣΗΣ ΛΥΣΕΩΝ: Υπολογισµός της λύσης του αρχικού προβλήµατος, από τις επιµέρους λύσεις των υποπροβληµάτων.
  6. 6. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 1. Ο αλγόριθµος ταξινόµησης MergeSort 6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Ο αλγόριθµος ταξινόµησης MergeSort (Ο αλγόριθµος Ταξινόµησης µε Συγχώνευση) είναι εφαρµογή του ∆ιαίρει και Βασίλευε: 1. ΒΗΜΑ ∆ΙΑΙΡΕΣΗΣ: Ο πίνακας χωρίζεται σε δύο µέρη: τον πίνακα και τον πίνακα ],...,[ 1 naaA = ],...,[ 2/11 naaA = ],...,[ 12/2 nn aaA += Η πολυπλοκότητα του αλγορίθµου είναι: 2. ΒΗΜΑ ΕΠΙΛΥΣΗΣ ΕΠΙΜΕΡΟΥΣ ΣΤΙΓΜΙΟΤΥΠΩΝ: Η επίλυση των δύο υποπροβληµάτων που προκύπτουν γίνονται µε αναδροµικές κλήσεις του MergeSort. 3. ΒΗΜΑ ΣΥΝΘΕΣΗΣ ΛΥΣΕΩΝ: Η συγχώνευση των δύο πινάκων γίνεται µε την διαδικασία Merge (βλέπε Μάθηµα 1.4) σε γραµµικό χρόνο 2/11 n 12/2 nn + )log(...)( 2 2)( nnn n TnT Θ==Θ+      =
  7. 7. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 2. Ο αλγόριθµος ταξινόµησης QuickSort 7∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Ο αλγόριθµος ταξινόµησης QuickSort (Ο αλγόριθµος Γρήγορης Ταξινόµησης) είναι επίσης εφαρµογή του ∆ιαίρει και Βασίλευε: 1. ΒΗΜΑ ∆ΙΑΙΡΕΣΗΣ: Ο πίνακας χωρίζεται σε δύο µέρη: τον πίνακα Α1 που περιεχει όλα τα στοιχεία που είναι µικρότερα από το α1 και ],...,[ 1 naaA = 1 1 τον Α2 που περιέχει όλα τα στοιχεία που είναι µεγαλύτερα από το α1 2. ΒΗΜΑ ΕΠΙΛΥΣΗΣ ΕΠΙΜΕΡΟΥΣ ΣΤΙΓΜΙΟΤΥΠΩΝ: Η επίλυση των δύο υποπροβληµάτων (ταξινόµηση των υποπινάκων Α1 και Α2) που προκύπτουν γίνονται µε αναδροµικές κλήσεις του QuickSort. 3. ΒΗΜΑ ΣΥΝΘΕΣΗΣ ΛΥΣΕΩΝ: Ο πίνακας A = [A1]α1[A2]
  8. 8. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 2. Ο αλγόριθµος ταξινόµησης QuickSort (1.Ψευδοκώδικας) 8∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Παρακάτω φαίνεται µια υλοποίηση της διαδικασίας QuickSort: procedure QuickSort(A,start,finish) if start<finish then pos=Partition(A,start,finish) QuickSort(A,start,pos-1) QuickSort(A,pos+1,finish) end ifend if end procedure procedure Partition(A,start,finish) odigo=A[start] i=start; j=finish for (k=start+1 to finish) if (A[k]>odigo) B[j]=A[k]; j=j-1 else B[i]=A[k]; i=i+1 end for B[i]=odigo; Α=Β return pos; end procedure
  9. 9. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 2. Ο αλγόριθµος ταξινόµησης QuickSort (2.Παράδειγµα Εκτέλεσης) 9∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Ας τρέξουµε ένα παράδειγµα εκτέλεσης της Partition: B.1 B.2 1 2 3 4 5 6 7 8 9 7 4 11 18 20 6 1 1 2 3 4 5 6 7 8 7k i j 1 2 3 4 5 6 7 8 9 7 4 11 18 20 6 1 1 2 3 4 5 6 7 8 7 4k i j 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 B.3 B.4 B.5 B.6 B.7 1 2 3 4 5 6 7 8 9 7 4 11 18 20 6 1 1 2 3 4 5 6 7 8 7 4 11k i j 1 2 3 4 5 6 7 8 9 7 4 11 18 20 6 1 1 2 3 4 5 6 7 8 7 4 18 11k i j 1 2 3 4 5 6 7 8 9 7 4 11 18 20 6 1 1 2 3 4 5 6 7 8 7 4 20 18 11k i j 1 2 3 4 5 6 7 8 9 7 4 11 18 20 6 1 1 2 3 4 5 6 7 8 7 4 6 20 18 11k i j 1 2 3 4 5 6 7 8 9 7 4 11 18 20 6 1 1 2 3 4 5 6 7 8 7 4 6 1 20 18 11k i j 1 2 3 4 5 6 7 8 7 4 6 1 9 20 18 11
  10. 10. Ο αλγόριθµος ταξινόµησης QuickSort (2.Παράδειγµα Εκτέλεσης) 10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 7 4 11 9 6 1 14 5 2 3 10 13 18 19 22 20 1 2 3 4 5 6 7 8 9 10 11 12 7 4 11 9 6 1 14 5 2 3 10 13 4 6 1 5 2 3 7 13 10 14 9 11 14 15 16 19 22 20 19 20 22 1 2 3 4 5 6 4 6 1 5 2 3 1 2 3 4 5 6 8 9 10 11 12 13 10 14 9 11 10 9 11 13 14 15 16 20 22 20 221 2 3 4 5 6 10 9 11 13 14 20 22 16 22 22 1 2 3 1 2 3 1 3 2 5 6 5 6 5 6 8 9 10 10 9 11 9 10 11 12 14 14 6 6 6 2 3 3 2 2 3 2 2 2 8 9 9 10 11 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 9 10 11 13 14 18 19 20 22
  11. 11. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 2. Ο αλγόριθµος ταξινόµησης QuickSort (3. Ανάλυση) 11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Η διαδικασία του Partition έχει πολυπλοκότητα Θ(n) Ανάλυση Καλύτερης Περίπτωσης: Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η αναδροµή: )log(...)(2)( . nnn n TnT ί Θ==Θ+    = αςκυριαρχθ Ανάλυση Χειρότερης Περίπτωσης: Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η αναδροµή: Στην µέση περίπτωση? )log(...)( 2 2)( nnn n TnT Θ==Θ+      = ( ) )(...)(1)( 2 . nnnTnT Θ==Θ+−= επαναληψηςµεθ
  12. 12. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 2. Ο αλγόριθµος ταξινόµησης QuickSort (3. Ανάλυση) 12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Ανάλυση Μέσης Περίπτωσης: Αν θεωρήσουµε ότι είναι ισοπίθανα τα δυνατά σπασίµατα του πίνακα σε δύο κοµµάτια τότε κατά µέσο όρο οι πράξεις του αλγορίθµου θα δίνονται από την αναδροµική σχέση: [ ] [ ] [ ]nTnTnnTnnTT nT )()0()1(...)()2()1()()1()0( )( Θ++−++Θ+−Τ++Θ+−+ = Ή πιο απλά: Και τελικά Για την οποία αποδεικνύεται ότι ισχύει T(n)=Θ(nlogn) [ ] [ ] [ ] n nT )( = [ ] n nnnTTT nT )()(...)1()0(2 )( Θ++++ = [ ] )( )(...)1()0(2 )( n n nTTT nT Θ+ +++ =
  13. 13. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect 13∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε ΠΡΟΒΛΗΜΑ: ∆ίνεται ένας αταξινόµητος πίνακας µε n στοιχεία. Ζητείται να βρεθεί το k-µικρότερο στοιχείο Παράδειγµα στιγµιοτύπου: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 Το 5-µικρότερο στοιχείο είναι το 5 Το 10-µικρότερο στοιχείο είναι το 11 Αλγόριθµοι: Προφανής Αλγόριθµος: Ταξινόµησε τον πίνακα (µε MergeSort) και επέλεξε το k-ο µικρότερο στοιχείο. Πολυπλοκότητα: Θ(nlogn) QuickSelect: Εφαρµογή ∆ιαίρει και Βασίλευε: Πολ/τα: O(n)
  14. 14. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect (Ιδέα) 14∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Εκµεταλλευόµαστε τo σπάσιµο του πίνακα που κάνει η διαδικασία partition. Θα χρειάζεται κάθε φορά να ψάχνουµε έναν από τους δύο υποπίνακες που προκύπτουν µε κατάλληλη τροποποίηση του k. Έτσι αφού η διαδικασία Partition σπάει τον πίνακα ως εξής [A1] apos [A2] Αν k=pos τότε βρήκαµε το στοιχείο είναι το apos. Αν k<pos τότε ψαχνουµε στον πίνακα A1 για το k-µικρότερο στοιχείο Αν k>pos τότε ψάχνουµε στον πίνακα Α2 για το (k-n1-1)-µικρότερο στοιχείο (όπου n1 το πλήθος των στοιχείων του Α1)
  15. 15. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect (1.Ψευδοκώδικας) 15∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Η υλοποιηση σε ψευδογλώσσα της παραπάνω διαδικασίας είναι η ακόλουθη: procedure QuickSelect(A,start,finish,k) if start>finish then return 0 elseelse pos=Partition(A,start,finish) if k=pos then return A[pos] else if k<pos then return QuickSelect(A,start,pos-1,k) else if k>pos then return QuickSelect(A,pos+1,finish,k-pos) end if end if end procedure
  16. 16. 3. Ο αλγόριθµος επιλογης QuickSelect(2.Παράδειγµα Εκτέλεσης για k=12) 16∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 7 4 11 9 6 1 14 5 2 3 10 13 18 19 22 20 1 2 3 4 5 6 7 8 9 10 11 12 7 4 11 9 6 1 14 5 2 3 10 13 4 6 1 5 2 3 7 13 10 14 9 11 8 9 10 11 12 13 10 14 9 11 10 9 11 13 1410 9 11 13 14 12 14 14
  17. 17. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect (3. Ανάλυση) 17∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Η διαδικασία του Partition έχει πολυπλοκότητα Θ(n) Ανάλυση Καλύτερης Περίπτωσης: Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η αναδροµή: )(...)()( . nn n TnT ί Θ==Θ+    = αςκυριαρχθ Ανάλυση Χειρότερης Περίπτωσης: Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η αναδροµή: Χρειαζόµαστε ένα πιο έξυπνο σπάσιµο σπάσιµο του πίνακα ώστε να επιτυγχάνεται ένα σπάσιµο του πίνακα περίπου στην µέση. )(...)( 2 )( nn n TnT Θ==Θ+      = ( ) )(...)(1)( 2 . nnnTnT Θ==Θ+−= επαναληψηςµεθ
  18. 18. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων) 18∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Προτείνεται η διαδικασία των πεντάδων η οποία: Χωρίζει τα στοιχεία σε 5-αδες Από κάθε 5-άδα επιλέγουµε το µεσαίο στοιχειο. Επαναλαµβάνουµε αναδροµικά για τα µεσαία στοιχεία. Επιλέγουµε δηλαδή το µεσαίο των µεσαίων (των µεσαίων…) από κάθεΕπιλέγουµε δηλαδή το µεσαίο των µεσαίων (των µεσαίων…) από κάθε πεντάδα. Π.χ.: 5-άδες Νεος Πίνακας αναδροµική εκτέλεση Επιστρέφεται το 9 (επιλογή οδηγού στοιχείου) 16 13 1 2 3 4 5 18 7 4 11 9 6 7 8 9 10 20 6 1 22 19 11 12 13 14 15 14 5 2 3 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 1 2 3 4 9 19 5 13
  19. 19. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων) 19∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Η επιλογή του µεσαίου στοιχείου από 5 στοιχεία θέλει σταθερό χρόνο: Άρα αν ο πίνακας έχει n στοιχεία και θέλουµε συνολικά χρόνο T(n) Επιλέγουµε n/5 φορές το µεσαίο (µε χρόνο Θ(1)). Το βήµα αυτό θέλει συνολικό χρόνο Έπειτα κάνουµε µια αναδροµική κλήση για n/5 δεδοµένα. )()1( 5 n n Θ=Θ Έπειτα κάνουµε µια αναδροµική κλήση για n/5 δεδοµένα. Συνεπώς η πολυπλοκότητα της επιλογής του στοιχείου µε την διαδικασία των 5-άδων προκύπτει από την επίλυση της αναδροµικής σχέσης: Αποδεικνύεται ότι είναι πολύ καλό σπάσιµο, διότι σε κάθε βήµα θα απορρίπτονται τουλάχιστον 3n/10 στοιχεία (Η απόδειξη παραλείπεται). ∆ηλαδή µε άλλα λόγια η αναδροµή της QuickSelect θα γίνει για το πολύ 7n/10 στοιχεία. )(...)( 5 )( . nn n TnT ί Θ==Θ+      = αςκυριαρχθ
  20. 20. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων) 20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Ενσωµατώνουµε την διαδικασία επιλογής οδηγού στοιχείου στον προηγούµενο κώδικα: procedure QuickSelect(A,start,finish,k) if start=finish then return A[start] elseelse Επιλογή στοιχείου m µε την διαδικασία των 5-άδων. swap(A[m],A[start]) pos=Partition(A,start,finish) if k=pos then return A[pos] else if k<pos then return QuickSelect(A,start,pos-1,k) else if k>pos then return QuickSelect(A,pos+1,finish,k-pos) end if end if end procedure
  21. 21. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων) 21∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε Η αναδροµική σχέση που περιγράφει την τελική πολυπλοκότητα του αλγορίθµου είναι: Για να λύσουµε ένα πρόβληµα µεγέθους n: Οι πεντάδες θέλουν χρόνο Θ(n)Οι πεντάδες θέλουν χρόνο Θ(n) Η διαδικασία Partition θέλει χρόνο Θ(n) Η αναδροµική κλήση θα γίνει για ένα πρόβληµα µεγέθους το πολύ 7n/10, συνεπώς ο χρόνος που απαιτείται είναι Τ(7n/10) Συνεπώς: Αυτή είναι και η χειρότερη περίπτωση, άρα τελικά έχουµε T(n)=O(n) )(...)( 10 7 )( . nn n TnT ί Θ==Θ+      = αςκυριαρχθ
  22. 22. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen 22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε ΠΡΟΒΛΗΜΑ: Να υπολογιστεί το γινόµενο δύο nxn πινάκων Α και Β.       ++ ++ =      ×      = =×= 2222122121221121 2212121121121111 2221 1211 2221 1211 babababa babababa bb bb aa aa C BAC Αλγόριθµοι: Εφαρµογή του γνωστού αλγορίθµου από ΠΛΗ12. Η πολυπλοκότητα του είναι Θ(n2). Αλγόριθµος του Strassen: Εφαρµογή του ∆ιαίρει και Βασίλευε: Πολυπλοκότητα: Θ(n2,81) Ακόµη καλύτεροι αλγόριθµοι ∆ιαίρει και Βασίλευε. Η καλύτερη πολυπλοκότητα µέχρι στιγµής: Θ(n2,38)  ++ 222212212122112122212221 bababababbaa
  23. 23. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen O γνωστός αλγόριθµος πολλαπλασιασµού διδιάστατων πινάκων µπορεί να υλοποιηθεί σε ψευδογλώσσα ως εξής: 23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε procedure MultMatrix(A,B) for (i=1 to n) for (j=1 to n) C[i][j]=0; Η πολυπλοκότητα είναι: C[i][j]=0; for (k=1 to n) C[i][j]=C[i][j]+A[i][k]*B[k][j]; end for end for end for return C end procedure ( ) )(...)1()1()( 3 nnnnnT Θ==Θ⋅+Θ⋅⋅=
  24. 24. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen Strassen ‘70: Εφαρµογή του διαίρει και βασίλευε (θεωρώ ότι n άρτιος) Οι πίνακες Α και Β σπάνε στους πίνακες: 24∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε       = 1211 AA AA A       = 1211 BB BB B Όπου κάθε ένας από τους υποπίνακες έχει µέγεθος n/2 x n/2 O Strassen προσπάθησε να υπολογίσει το γινόµενο C=AxB κατασκευάζοντας τον πίνακα:     2221 AA     = 2221 BB B       = 2221 1211 CC CC C
  25. 25. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen 1η προσέγγιση: Ισχύει ότι: 25∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε 2222122122 2122112121 2212121112 2112111111 BABAC BABAC BABAC BABAC += += += += Αντί να κάνουµε τον nxn πολ/µο των πινάκων. ∆ΙΑΣΠΑΣΗ: Γίνονται 8 πολ/µοι n/2 x n/2 πινάκων ΕΠΙΛΥΣΗ: Αναδροµικά µε τον ίδιο τρόπο. ΣΥΝΘΕΣΗ ΛΥΣΕΩΝ: 4 προσθέσεις nx2 x nx2 πινάκων Άρα για να λύσω ένα πρόβληµα µεγέθους n, λύνω 8 υποπροβλήµατα µεγέθους n/2 και συνδυάζω τις λύσεις σε χρόνο Θ(n2) Η πολυπλοκότητα είναι: Καµία βελτίωση σε σχέση µε τον προφανή αλγόριθµο 2222122122 BABAC += )(...)( 2 8)( 32 nn n TnT remMasterTheo Θ==Θ+      =
  26. 26. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen 1η προσέγγιση: Ισχύει ότι: 26∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε 2222122122 2122112121 2212121112 2112111111 BABAC BABAC BABAC BABAC += += += += Αντί να κάνουµε τον nxn πολ/µο των πινάκων. ∆ΙΑΣΠΑΣΗ: Γίνονται 8 πολ/µοι n/2 x n/2 πινάκων ΕΠΙΛΥΣΗ: Αναδροµικά µε τον ίδιο τρόπο. ΣΥΝΘΕΣΗ ΛΥΣΕΩΝ: 4 προσθέσεις nx2 x nx2 πινάκων Άρα για να λύσω ένα πρόβληµα µεγέθους n, λύνω 8 υποπροβλήµατα µεγέθους n/2 και συνδυάζω τις λύσεις σε χρόνο Θ(n2) Η πολυπλοκότητα είναι: Καµία βελτίωση σε σχέση µε τον προφανή αλγόριθµο 2222122122 BABAC += )(...)( 2 8)( 32 nn n TnT remMasterTheo Θ==Θ+      =
  27. 27. Β. Θεωρία 1. ∆ιαίρει και Βασίλευε 4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen 2η προσέγγιση (Strassen): Βρήκε ότι µπορεί να παρει το ίδιο αποτέλεσµα µε τις εξής πράξεις: 27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε ))(( ))(( 21123 11112 1112221122211 BBAAM BAM BAM BBBAAAM −−= = = +−−+= 742121 652112 3211 MMMMC MMMMC MMMMC MMC +++= −++= +++= += )( )( ))(( 22221121126 111222215 BBBBAM BAAAAM BBAAM −−+= −+−= −+= Αντί να κάνουµε τον nxn πολ/µο των πινάκων. ∆ΙΑΣΠΑΣΗ: Γίνονται 7 πολ/µοι n/2 x n/2 πινάκων ΕΠΙΛΥΣΗ: Αναδροµικά µε τον ίδιο τρόπο. ΣΥΝΘΕΣΗ ΛΥΣΕΩΝ: 24 προσθαφαιρέσεις nx2 x nx2 πινάκων Άρα για να λύσω ένα πρόβληµα µεγέθους n, λύνω 7 υποπροβλήµατα µεγέθους n/2 και συνδυάζω τις λύσεις σε χρόνο Θ(n2) Η πολυπλοκότητα είναι: Υπάρχουν και ακόµη καλύτερες διασπάσεις που φτάνουν την πολυπλοκότητα µέχρι και Θ(n2,37). Ωστόσο ισχύει ότι κάθε αλγόριθµος πολ/µου πινάκων θα έχει πολυπλοκότητα Ω(n2) ))(( 122221114 BBAAM −−= )(...)( 2 7)( 81,22 nn n TnT remMasterTheo Θ==Θ+      = 542122 MMMMC +++=)( 21122211227 BBBBAM −−+=
  28. 28. Γ. Ασκήσεις Εφαρµογή 1 Ας υποθέσουµε ότι έχουµε να επιλέξουµε ανάµεσα στους ακόλουθους τρεις αλγόριθµους: I. Ο αλγόριθµος A λύνει προβλήµατα µεγέθους n µε το να επιλύει αναδροµικά οκτώ υποπροβλήµατα του µισού µεγέθους το καθένα, και συνδυάζοντας τις λύσεις τους σε γραµµικό χρόνο ως προς n. 28∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε II. Ο αλγόριθµος B λύνει προβλήµατα µεγέθους n µε το να επιλύει αναδροµικά ένα υποπρόβληµα µεγέθους n-1 και, στην συνέχεια, συνάγει την τελική λύση σε χρόνο O(n). III. Ο αλγόριθµος Γ λύνει προβλήµατα µεγέθους n µε το να επιλύει αναδροµικά εννιά υποπροβλήµατα µεγέθους n/3 και συνδυάζοντας τις λύσεις τους σε Ω(n2) χρόνο. Ποιοι είναι οι ασυµπτωτικοί χρόνοι εκτέλεσης για καθένα από τους τρεις αλγορίθµους και ποιον από αυτούς θα διαλέγατε µε βάση την ασυµπτωτική του πολυπλοκότητα?
  29. 29. Γ. Ασκήσεις Εφαρµογή 2 Ας υποθέσουµε ότι έχουµε να επιλέξουµε ανάµεσα στους ακόλουθους τρεις αλγόριθµους: I. Ο αλγόριθµος A λύνει προβλήµατα µεγέθους n µε το να επιλύει αναδροµικά ένα υποπρόβληµα, µεγέθους 1/4 του αρχικού προβλήµατος, ενώ ο χρόνος που απαιτείται για να βρεθεί το πρόβληµα αυτό (µεγέθους n/4) από το αρχικό (µεγέθους n) είναι 29∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε πρόβληµα αυτό (µεγέθους n/4) από το αρχικό (µεγέθους n) είναι γραµµικός ως προς n. II. Ο αλγόριθµος B λύνει προβλήµατα µεγέθους n µε το να επιλύει αναδροµικά ένα υποπρόβληµα µεγέθους n/2 και, στην συνέχεια, συνάγει την τελική λύση σε Ω(n3). III. Ο αλγόριθµος Γ λύνει προβλήµατα µεγέθους n µε το να επιλύει αναδροµικά τέσσερα υποπροβλήµατα µεγέθους n/2 και συνδυάζοντας τις λύσεις τους σε O(n2) χρόνο. Ποιοι είναι οι ασυµπτωτικοί χρόνοι εκτέλεσης για καθένα από τους τρεις αλγορίθµους και ποιον από αυτούς θα διαλέγατε µε βάση την ασυµπτωτική του πολυπλοκότητα?

×