Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Αλγόριθμοι Διαίρει και Βασίλευε 1Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Αλγόριθμοι Διαίρει και Βασίλευε 1Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο."— Μεταγράφημα παρουσίασης:

1 Αλγόριθμοι Διαίρει και Βασίλευε 1Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

2 Διαίρει και Βασίλευε γνωστότερη Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: Διαιρούμε το στιγμιότυπο του προβλήματος σε δύο ή περισσότερα μικρότερα στιγμιότυπα Επιλύουμε τα μικρότερα στιγμιότυπα αναδρομικά Βρίσκουμε τη λύση στο αρχικό (μεγαλύτερο) στιγμιότυπο συνδυάζοντας αυτές τις λύσεις 2Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

3 υποπρόβλημα 2 μεγέθους n/2 υποπρόβλημα 1 μεγέθους n/2 μία λύση για το υποπρόβλημα 1 Η λύση για το αρχικό πρόβλημα μία λύση για το υποπρόβλημα 2 πρόβλημα μεγέθους n Διαίρει και Βασίλευε 3Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

4 b Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση b Διασχίσεις δένδρων b Δυαδική αναζήτηση (;) b Πολλαπλασιασμός πινάκων – Αλγόριθμος του Strassen b Κυρτό περίβλημα - Αλγόριθμος QuickHull Παραδείγματα Διαίρει και Βασίλευε 4Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

5 Γενική αναδρομή του Διαίρει και Βασίλευε T(n) = aT(n/b) + f (n) όπου f (n) ∈ Θ(n k ), k≥0 1. a < b k T(n) ∈ Θ(n k ) 2. a = b k T(n) ∈ Θ(n k lg n ) 3. a > b k T(n) ∈ Θ( n log b a ) Σημείωση: το ίδιο αποτέλεσμα ισχύει για το συμβολισμό O αντί για το Θ. 5Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

6 Ταξινόμηση με συγχώνευση (1) Αλγόριθμος: b Διαιρούμε τον πίνακα A[1..n] σε δύο τμήματα και αντιγρά- φουμε το καθένα στους πίνακες B[1.. n/2 ] και C[1.. n/2 ] b Ταξινομούμε τους πίνακες B και C b Συγχωνεύουμε τους πίνακες B και C στον πίνακα A ως εξής: Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από τους πίνακες:Επαναλαμβάνουμε μέχρι να μη μείνει κάποιο στοιχείο σε έναν από τους πίνακες: –Συγκρίνουμε τα πρώτα στοιχεία στα εναπομένοντα μη επεξεργασμένα τμήματα των πινάκων –Αντιγράφουμε το μικρότερο από τα δύο στοιχεία στον πίνακα A, ενώ αυξάνουνε το δείκτη προς το μη επεξεργασμένο τμήμα του Όταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα, τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακαΌταν επεξεργασθούμε όλα τα στοιχεία του ενός πίνακα, τότε αντιγράφουμε στον πίνακα Α τα υπόλοιπα μη επεξεργασθέντα στοιχεία από τον άλλο πίνακα 6Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

7 Ταξινόμηση με συγχώνευση (2) 7Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

8 Ταξινόμηση με συγχώνευση (3) 8Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

9 Tαξινόμηση με συγχώνευση (4) 9Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

10 Αποδοτικότητα της ταξινόμησης με συγχώνευση b C(n) = 2 C(n/2) + C merge (n) for n>1, C(1)=0 b Όλες οι περιπτώσεις έχουν την ίδια αποδοτικότητα: Θ(n log n) b Το πλήθος των συγκρίσεων προσεγγίζει το θεωρητικό ελάχιστο για τις ταξινομήσεις που βασίζονται στη σύγκριση: log n ! ≈ n lg n n log n ! ≈ n lg n n b Απαιτήσεις χώρου: Θ(n) (δεν είναι in-place) b Μπορεί να υλοποιηθεί χωρίς αναδρομή (bottom-up) 10Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

11 Γρήγορη ταξινόμηση (1) b Επιλέγουμε ένα aξονικό στοιχείο ως άξονα (το στοιχείο της διαμέρισης) b Τακτοποιούμε τη λίστα έτσι ώστε τα στοιχεία σε θέσεις πριν από τον άξονα να είναι μικρότερα ή ίσα προς τον άξονα, ενώ εκείνα που είναι μετά τον άξονα είναι μεγαλύτερά του (δες τον αλγόριθμο Partition) b Ανταλλάσουμε τον άξονα με το τελευταίο στοιχείο της πρώτης λίστας (δηλ, τη λίστα ≤ ), οπότε ο άξονας λαμβάνει την τελική του θέση b Ταξινομούμε τις δύο λίστες p A[i]≤p A[i]>p 11Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

12 Γρήγορη Ταξινόμηση (2) Algorithm Quicksort(A[l..r]) // Input: an array A[0..n-1] of orderable elements // Output: Array A[0..n-1] sorted ascendingly if l

13 Algorithm Partition(A[l..r]) // Partitions a subarray by using its first element as pivot // Input: a subarray A[l..r], l

14 Παράδειγμα Παράδειγμα Ποιά είναι η σειρά των κλήσεων συναρτήσεων? Γρήγορη Ταξινόμηση (4) 14Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

15 b Καλύτερη περίπτωση: χωρισμός στη μέση — Θ( n log n) b Χειρότερη περίπτωση: ταξινομημένος πίνακας ! — Θ( n 2 ) b Μέση περίπτωση: τυχαίος πίνακας — Θ( n log n) b Βελτιώσεις: Καλύτερη επιλογή του άξονα: το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχείαΚαλύτερη επιλογή του άξονα: το μεσαίο από 3 στοιχεία αποφεύγει τη χειρότερη περίπτωση σε ταξινομημένα αρχεία Γυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχείαΓυρνούμε σε ταξινόμηση με εισαγωγή για μικρά υποαρχεία Αποφεύγουμε την αναδρομήΑποφεύγουμε την αναδρομή Μπορούν να δώσουν βελτίωση μέχρι 20-25% b Θεωρείται η καλύτερη μέθοδος για εσωτερική ταξινόμηση μεγάλων αρχείων (n ≥ 10000) Γρήγορη Ταξινόμηση (5) 15Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

16 Πολλαπλασιασμός μεγάλων ακεραίων (1) b Για να πολλαπλασιάσουμε δύο ακεραίους με n 1 και n 2 ψηφία με το χέρι, θα εκτελέσουμε n 1 n 2 πράξεις πολλαπλασιασμού b Πρόβλημα όταν έχουμε πολλά ψηφία: A = B = A = B = b Ας δούμε ένα απλούστερο παράδειγμα: 23*14, - Όμως 23 = , 14 = Άρα 23*14 = (2*1)10 2 +(2*4+3*1) (3*4) 10 0 b Αν A = 2135, B = 4014: Α*Β= (21 · )  (40 · ) = 21  40 · (21   40) ·  14 16Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

17 Πολλαπλασιασμός μεγάλων ακεραίων (2) b Βασική παρατήρηση: α) 23*14 = (2*1)10 2 +(2*4+3*1) (3*4) 10 0 = (2*1)10 2 +[(2+3)*(1+4)-2*1-3*4] (3*4) 10 0 b β) 2135 *4014 = 21  40 · (21   40) ·  14 = 21  40 · [(21+35)  (40+14) – 21*40-35*14] ·  14 b Γενικώς: a=a 1 a 0, b=b 1 b 0 και ζητείται c=a*b b c = a*b = c n + c n/2 + c όπου c 2 =a 1 *b 1, c 0 =a 0 *b 0, c 1 =(a 1 +a 0 )*(b 1 +b 0 )-(c 2 +c 0 ) b Αναδρομική εξίσωση: M(n) = 3M(n/2), M(1) = 1 b Αποδοτικότητα; M(n) = 3 log 2 n = n log 2 3 ≈ n Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

18 Πολλαπλασιασμός πινάκων αλά Strassen b Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους 2 n x2 n ) μπορεί να υπολογισθεί ως εξής: C 00 C 01 A 00 A 01 B 00 B 01 = * = * C 10 C 11 A 10 A 11 B 10 B 11 M 1 + M 4 - M 5 + M 7 M 3 + M 5 M 1 + M 4 - M 5 + M 7 M 3 + M 5 = M 2 + M 4 M 1 + M 3 - M 2 + M 6 M 2 + M 4 M 1 + M 3 - M 2 + M 6 18Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

19 Υποπίνακες του Strassen b M 1 = (A 00 + A 11 ) * (B 00 + B 11 ) b M 2 = (A 10 + A 11 ) * B 00 b M 3 = A 00 * (B 01 - B 11 ) b M 4 = A 11 * (B 10 - B 00 ) b M 5 = (A 00 + A 01 ) * B 11 b M 6 = (A 10 - A 00 ) * (B 00 + B 01 ) b M 7 = (A 01 - A 11 ) * (B 10 + B 11 ) 19Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

20 Αποδοτικότητα του αλγορίθμου Strassen b Αν το n δεν είναι δύναμη του 2, τότε οι πίνακες παραγεμίζονται με μηδενικά b Πλήθος πολλαπλασιασμών: b Πλήθος προσθέσεων: b Αναδρομή: b Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότεροι σύνθετοι 20Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

21 Το πρόβλημα του πλησιέστερου ζεύγους b Πρόβλημα: βρες τα πλησιέστερα σημεία μεταξύ n σημείων σε ένα k-διάστατο χώρο b Υποθέτουμε ότι τα σημεία ταξινομούνται με βάση τις τιμές των τετμημένων x b Διαιρούμε τα σημεία σε δύο υποσύνολα S 1 και S 2 με n/2 σημεία με βάση μία κατακόρυφη γραμμή στο x=c b Επιλέγουμε το πλησιέστερο ζεύγος μεταξύ των ζευγών του αριστερού υποσυνόλου (απόσταση d 1 ), μεταξύ των ζευγών του δεξιού υποσυνόλου (απόσταση d 2 ), και το πλησιέστερο ζεύγος με σημεία και από τις δύο πλευρές b Πρέπει να εξετάσουμε μία λωρίδα πλάτους 2d, όπου d=min[d 1,d 2 ] 21Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

22 b Γεωμετρική εξήγηση b Αναδρομή T(n) = 2T(n/2) + M(n) b Αποδοτικότητα O(n logn) b Βελτιστότητα Το πρόβλημα του πλησιέστερου ζεύγους (2) 22Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

23 Αλγόριθμος QuickHull Υπολογίζει το Κυρτό Περίβλημα με έμπνευση από τη Γρήγορη Ταξινόμηση: b Υποθέτουμε ότι τα σημεία είναι ταξινομημένα ως προς την συντεταγμένη x b Προσδιορίζουμε δύο ακραία σημαία P 1 και P 2 (μέρη του περιβλήματος) b Το σύνολο σημείων S διαιρείται σε δύο υποσύνολα S 1 και S 2 b Υπολογίζουμε το κυρτό περίβλημα για το S 1 b Ομοίως, υπολογίζουμε το κυρτό περίβλημα για το S 1 P1P1 P2P2 P max 23Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

24 b Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S 1 Βρίσκουμε το πιο απομακρυσμένο σημείο P max από τη γραμμή P 1 P 2Βρίσκουμε το πιο απομακρυσμένο σημείο P max από τη γραμμή P 1 P 2 Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P 1 P maxΥπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P 1 P max Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P max P 2Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P max P 2 b Εύρεση του σημείου P max Το P max μεγιστοποιεί την επιφάνεια του τριγώνου P max P 1 P 2Το P max μεγιστοποιεί την επιφάνεια του τριγώνου P max P 1 P 2 Σε περίπτωση ισοπαλίας, επιλέγεται το P max που μεγιστοποιεί τη γωνία P max P 1 P 2Σε περίπτωση ισοπαλίας, επιλέγεται το P max που μεγιστοποιεί τη γωνία P max P 1 P 2 b Τα σημεία μέσα στο τρίγωνο P max P 1 P 2 αγνοούνται εφεξής b Πως θα βρεθεί γεωμετρικά το σημείο P max και τα σημεία στα αριστερά της γραμμής P 1 P max ; Αλγόριθμος QuickHull (2) 24Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

25 b Πως θα βρεθεί γεωμετρικά το σημείο P max και τα σημεία στα αριστερά της γραμμής P 1 P max Δίνονται τα σημεία P 1 (x 1,y 1 ), P 2 (x 2,y 2 ), P max (x max,y max )Δίνονται τα σημεία P 1 (x 1,y 1 ), P 2 (x 2,y 2 ), P max (x max,y max ) Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσαςΤο εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας =x 1 y 2 +x max y 1 +x 2 y max –x max y 2 –x 2 y 1 -x 1 y max =x 1 y 2 +x max y 1 +x 2 y max –x max y 2 –x 2 y 1 -x 1 y max Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο P max είναι στα αριστερά της γραμμής P 1 P 2Το πρόσημο της έκφρασης είναι θετικό αν και μόνο αν το σημείο P max είναι στα αριστερά της γραμμής P 1 P 2 x1x1x1x1 y1y1y1y11 x2x2x2x2 y2y2y2y21 x max y max 1 Αλγόριθμος QuickHull (3) 25Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

26 b Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P 1 P 2 μπορεί να βρεθεί σε γραμμικό χρόνο b Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμηση: Χειρότερη περίπτωση: Θ(n 2 )Χειρότερη περίπτωση: Θ(n 2 ) Μέση περίπτωση: Θ(n log n)Μέση περίπτωση: Θ(n log n) b Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x, αυτό επιτυγχάνεται με κόστος Θ(n log n) b Άλλοι αλγόριθμοι για το κυρτό περίβλημα: Σάρωση του Graham, DCHullΣάρωση του Graham, DCHull Επίσης σε Θ(n log n) Αποδοτικότητα Αλγορίθμου QuickHull (4) 26Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

27 Δυαδική Αναζήτηση Πολύ αποδοτικός αλγόριθμος για αναζήτηση σε ταξινομημένο πίνακα: K vs vs A[0]... A[m]... A[n-1] Αν K = A[m], σταμάτησε (επιτυχημένη αναζήτηση. Διαφορετικά, συνέχισε την αναζήτηση με όμοιο τρόπο στον πίνακα A[0..m-1] αν K A[m] l  0; r  n-1 while l  r do m   (l+r)/2  if K = A[m] return m if K = A[m] return m else if K < A[m] r  m-1 else if K < A[m] r  m-1 else l  m+1 else l  m+1 return -1 27Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

28 Ανάλυση Δυαδικής Αναζήτησης b Χρονική αποδοτικότητα Χειρότερη περίπτωση: C w (n) = 1 + C w (  n/2  ), C w (1) = 1 Λύση: C w (n) =  log 2 (n+1)  Αυτό είναι πολύ γρήγορο: π.χ., C w (10 6 ) = 20Χειρότερη περίπτωση: C w (n) = 1 + C w (  n/2  ), C w (1) = 1 Λύση: C w (n) =  log 2 (n+1)  Αυτό είναι πολύ γρήγορο: π.χ., C w (10 6 ) = 20 b Βέλτιστη μέθοδος για αναζήτηση σε ταξινομημένο πίνακα. b Περιορισμοί: η είσοδος πρέπει να είναι ταξινομημένη και στη μορφή πίνακα, όχι, πχ, συνδεδεμένη λίστα. b ΟΧΙ καλό παράδειγμα τεχνικής «διαίρει και βασίλευε». b Υπάρχει ανάλογη τεχνική για τη συνεχή περίπτωση. 28Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

29 Αλγόριθμοι Δυαδικών Δένδρων Τα δυαδικά δένδρα έχουν έτοιμη τη δομή για αλγορίθμους διαίρει και βασίλευε. Π.χ., κλασικές διασχίσεις (προ/μετα/ενδο-διατεταγμένη) Algorithm Inorder(T) if T   a a Inorder(T left ) b c b c Inorder(T left ) b c b c print(root of T) d e d e print(root of T) d e d e Inorder(T right ) Inorder(T right ) Αποδοτικότητα: Θ (n) 29Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

30 Αλγόριθμοι Δυαδικών Δένδρων (2) Άλλο παράδειγμα: υπολογισμός ύψους h(T) = max{h(T L ), h(T R )} + 1 if T  and h(  ) = -1 h(T) = max{h(T L ), h(T R )} + 1 if T   and h(  ) = -1 Αποδοτικότητα: Θ(n) 30Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο


Κατέβασμα ppt "Αλγόριθμοι Διαίρει και Βασίλευε 1Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google