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

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

ΔΙΑΙΡΕΣΗ ΚΑΙ ΚΥΡΙΑΡΧΙΑ 1. 2 Διαίρεση και Κυριαρχία – Διάσπαση ενός προβλήματος σε αρκετά υποπροβλήματα. – Λύνουμε κάθε πρόβλημα ξεχωριστά. – Συνδυάζουμε.

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


Παρουσίαση με θέμα: "ΔΙΑΙΡΕΣΗ ΚΑΙ ΚΥΡΙΑΡΧΙΑ 1. 2 Διαίρεση και Κυριαρχία – Διάσπαση ενός προβλήματος σε αρκετά υποπροβλήματα. – Λύνουμε κάθε πρόβλημα ξεχωριστά. – Συνδυάζουμε."— Μεταγράφημα παρουσίασης:

1 ΔΙΑΙΡΕΣΗ ΚΑΙ ΚΥΡΙΑΡΧΙΑ 1

2 2 Διαίρεση και Κυριαρχία – Διάσπαση ενός προβλήματος σε αρκετά υποπροβλήματα. – Λύνουμε κάθε πρόβλημα ξεχωριστά. – Συνδυάζουμε τις λύσεις των υποπροβλημάτων για το μεγαλύτερο πρόβλημα. Συνηθισμένη χρήση. – Διάσπαση προβλήματος μεγέθους n σε δύο ίσα μέρη μεγέθους n/2. – Αναδρομική επίλυση των δύο υποπροβλημάτων. – Συνδυασμός των δύο λύσεων σε γραμμικό χρόνο. Αποτέλεσμα – Εξαντλητική αναζήτηση: n 2. – Διαίρεση και Κυριαρχια: nlogn. Divide et impera. Veni, vidi, vici. - Julius Caesar

3 υποπρόβλημα 2 μεγέθους n/2 υποπρόβλημα 1 μεγέθους n/2 μία λύση για το υποπρόβλημα 1 Η λύση για το αρχικό πρόβλημα μία λύση για το υποπρόβλημα 2 πρόβλημα μεγέθους n Διαίρεση και Κυριαρχία 3 Διαίρεση Κυριαρχία Συνδυασμός

4 Ταξινόμηση με συγχώνευση και γρήγορη ταξινόμηση Διασχίσεις δένδρων Πολλαπλασιασμός πινάκων – Αλγόριθμος του Strassen Πρόβλημα Εγγύτερου Ζεύγους Κυρτό περίβλημα - Αλγόριθμος QuickHull Παραδείγματα 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 Γενική Αναδρομή – Κύριο Θεώρημα

6 ΤΑΞΙΝΟΜΗΣΗ Quicksort ( Πολύπλοκη διαίρεση – εύκολος συνδυασμός ) Mergesort ( Εύκολη διαίρεση – πολύπλοκος συνδυασμός ) 6

7 Quicksort Είσοδος: ένας πίνακας με n στοιχεία (π.χ. ακέραιους): Αν ο πίνακας περιέχει ένα στοιχείο τότε επέστρεψε Αλλιώς – Επέλεξε ένα στοιχείο ως τον οδηγό. – Διαχώρισε τα στοιχεία σε δύο υποπίνακες: Στοιχεία μικρότερα ή ίσα με τον οδηγό Στοιχεία μεγαλύτερα του οδηγού – Αναδρομική κλήση Quicksort για δύο υποπίνακες – Επέστρεψε πίνακα Διαίρεση Συνδυασμός;;;; Κυριαρχία

8 Αλγόριθμος (1) 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 < r s  partition(A[l..r]) quicksort(A[l..s-1]) quicksort(A[s+1..r]) 8

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

10 Παράδειγμα Επιλογή οδηγού

11 Διαχωρισμός – Αναδρομή Πράσινο: οδηγός Κίτρινο: δείκτης μικρότερων στοιχείων Γαλάζιο: δείκτης μεγαλύτερων στοιχείων 740 Quicksort

12 Ανάλυση Θ(n 2 ) στη χειρότερη περίπτωση (γιατί;;;;) Θ(nlogn) στη καλύτερη περίπτωση (γιατί;;;) Θ(nlogn) στη μέση περίπτωση (εξού και quick…) (ΓΙΑΤΙ;;;;) 12

13 13 Mergesort – Διαίρεση του πίνακα σε δύο ίσους υποπίνακες. – Αναδρομική ταξινόμηση κάθε υποπίνακα. – Συνδυασμός (συγχώνευση) των δύο υποπινάκων ώστε να ταξινομηθεί ο μεγαλύτερος. συνδυασμός (συγχώνευση) κυριαρχία διαίρεση ALGORITHMS ALGORITHMS AGLORHIMST AGHILMORST O(n) 2T(n/2) O(1)

14 Αλγόριθμος (1) 14

15 Συγχώνευση (2) 15

16 16 Συγχώνευση AGLORHIMST ΑGHIL MORST

17 17 Η Αναδρομική Σχέση Έστω T(n) = πλήθος συγκρίσεων της Μergesort για είσοδο μεγέθους n. Αναδρομή: Λύση: T(n) = O(n log 2 n). Υπόθεση: το n είναι δύναμη του 2 και αντικαθιστούμε το  με =.

18 STRASSEN Πώς Πολλαπλασιάζουμε Πίνακες αναδρομικά 18

19 Πολλαπλασιασμός πινάκων αλά Strassen Ο 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 2 + M 4 M 1 + M 3 - M 2 + M 6 19

20 Υποπίνακες του Strassen M 1 = (A 00 + A 11 ) * (B 00 + B 11 ) M 2 = (A 10 + A 11 ) * B 00 M 3 = A 00 * (B 01 - B 11 ) M 4 = A 11 * (B 10 - B 00 ) M 5 = (A 00 + A 01 ) * B 11 M 6 = (A 10 - A 00 ) * (B 00 + B 01 ) M 7 = (A 01 - A 11 ) * (B 10 + B 11 ) 20

21 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 αντί για το Θ. 21 Γενική Αναδρομή – Κύριο Θεώρημα

22 Αποδοτικότητα του αλγορίθμου Strassen Αν το n δεν είναι δύναμη του 2, τότε οι πίνακες παραγεμίζονται με μηδενικά Πλήθος πολλαπλασιασμών; Πλήθος προσθέσεων; Αναδρομή; Άλλοι αλγόριθμοι έχουν βελτιώσει αυτό το αποτέλεσμα αλλά είναι ακόμη περισσότερο σύνθετοι Ο(n 2,3737 ) 22

23 ΠΛΗΣΙΕΣΤΕΡΟ ΖΕΥΓΟΣ 23

24 24 Πλησιέστερο Ζεύγος Ορισμός: Δοθέντων n σημείων στο επίπεδο βρες ένα ζεύγος με τη μικρότερη ευκλείδια απόσταση μεταξύ τους. Ωμή βία; 1-D εκδοχή: O(nlogn) αν τα σημεία είναι πάνω στην ευθεία. Υπόθεση: Δεν υπάρχουν σημεία με ίδια x συντεταγμένη.

25 25 Μία Πρώτη Προσπάθεια Διαίρεσης L

26 26 Μία Πρώτη Προσπάθεια Διαίρεσης  L

27 27 Αλγόριθμος – Καλύτερη Διαίρεση Διαίρεση: Μία κάθετη γραμμή L που διαιρεί έτσι ώστε n/2 σημεία σε κάθε πλευρά. L

28 28 Αλγόριθμος Διαίρεση: Μία κάθετη γραμμή L που διαιρεί έτσι ώστε να είναι n/2 σημεία σε κάθε πλευρά. Κυριαρχία: εύρεση πλησιέστερου ζεύγους σε κάθε πλευρά αναδρομικά L

29 29 Αλγόριθμος Διαίρεση: Μία κάθετη γραμμή L που διαιρεί έτσι ώστε να είναι n/2 σημεία σε κάθε πλευρά. Κυριαρχία: εύρεση πλησιέστερου ζεύγους σε κάθε πλευρά αναδρομικά. Συνδυασμός: εύρεση πλησιέστερου ζεύγους με ένα σημείο σε κάθε πλευρά. – Επιστροφή του πλησιέστερου από τα τρία ζεύγη L

30 30 Πλησιέστερο Ζεύγος Εύρεση πλησιέστερου ζεύγους με κάθε σημείο σε μία πλευρά, υποθέτοντας ότι η απόσταση είναι < δ  = min(12, 21) L

31 31 Πλησιέστερο Ζεύγος Εύρεση πλησιέστερου ζεύγους με κάθε σημείο σε μία πλευρά, υποθέτοντας ότι η απόσταση είναι < δ  L  = min(12, 21)

32  Πλησιέστερο Ζεύγος Εύρεση πλησιέστερου ζεύγους με κάθε σημείο σε μία πλευρά, υποθέτοντας ότι η απόσταση είναι < δ. – Ταξινόμηση σημείων στην 2  -λωρίδα με βάση την y συντεταγμένη. L  = min(12, 21)

33  Πλησιέστερο Ζεύγος Εύρεση πλησιέστερου ζεύγους με κάθε σημείο σε μία πλευρά, υποθέτοντας ότι η απόσταση είναι < δ. – Ταξινόμηση σημείων στην 2  -λωρίδα με βάση την y συντεταγμένη. – Έλεγχος αποστάσεων αυτών με σημεία το πολύ εντός 11 θέσεων στη λίστα!!! L  = min(12, 21)

34 34 Πλησιέστερο Ζεύγος Έστω s i το σημείο στην 2  -λωρίδα με την i-οστή μικρότερη y συντεταγμένη. Αν |i–j|  12, τότε η απόσταση μεταξύ s i και s j είναι τουλάχιστον . Απόδειξη: – Δεν υπάρχουν 2 σημεία στο ίδιο ½  x ½  κουτί. – Δύο σημεία που απέχουν τουλάχιστον δύο γραμμές έχουν απόσταση  2(½  ). ▪   ½½ 2 γραμμές ½½ ½½ 39 i j

35 35 Αλγόριθμος Closest-Pair(p 1, …, p n ) { Compute separation line L such that half the points are on one side and half on the other side.  1 = Closest-Pair(left half)  2 = Closest-Pair(right half)  = min(  1,  2 ) Delete all points further than  from separation line L Sort remaining points by y-coordinate. Scan points in y-order and compare distance between each point and next 11 neighbors. If any of these distances is less than , update . return . } O(n log n) 2T(n / 2) O(n) O(n log n) O(n )

36 36 Ανάλυση Μπορούμε να πετύχουμε O(nlogn)? ΝΑΙ Ιδέα: Μην ταξινομείς τα σημεία στη λωρίδα από την αρχή κάθε φορά. – Κάθε αναδρομή επιστρέφει δύο λίστες: όλα τα σημεία διατεταγμένα ως προς x και όλα ως προς y. – Ταξινομούμε με συχγώνευση δύο ταξινομημένες λίστες.

37 ΚΥΡΤΑ ΠΕΡΙΒΛΗΜΑΤΑ

38 Κυρτό Σύνολο & Μη - κυρτό Σύνολο Μία επίπεδη περιοχή R είναι κυρτή αν και μόνο αν για κάθε ζεύγος σημείων p, q  R, το ευθύγραμμο τμήμα pq κείται εντός του R. Διαφορετικά το αποκαλούμε μη-κυρτό. Κυρτό p q R 1 p q R 2 Μη-κυρτό

39 Κυρτό Περίβλημα Το κυρτό περίβλημα CH(Q) ενός συνόλου Q είναι η μικρότερη κυρτή περιοχή που περιέχει το Q. Λαστιχάκι Όταν το Q είναι πεπερασμένο, το κυρτό του περίβλημα είναι το μοναδικό κυρτό πολύγωνο του οποίου οι κορυφές ανήκουν στο Q και περιέχει όλα τα σημεία του Q.

40 Το Πρόβλημα του Κυρτού Περιβλήματος Είσοδος: ένα σύνολο P = {p 1, p 2, …, p n } από σημεία Έξοδος: μία λίστα κορυφών του CH(P) σε ωρολόγια διάταξη. Παράδειγμα : Έξοδος: p 5, p 7, p 10, p 8, p 2, p 9 8 p p p p p p p p p p

41 Ακμές του Κυρτού Περιβλήματος Για κάθε ακμή και τα δύο άκρα p, q  P. p q Όλα τα υπόλοιπα σημεία του P κείνται στην ίδια πλευρά της ευθείας που ορίζεται από τα p και q

42 1 ος Αλγόριθμος Βασιζόμενοι σε αυτή την παρατήρηση μπορείτε να σκεφτείτε έναν αλγόριθμο; p q

43 Δεξιά ή Αριστερά της Ευθείας ; q p z

44 Σχετικά με τη Διάταξη Αντιωρολόγια διάταξη Ωρολόγια Διάταξη Συγγραμικά p p p p p p pp p 0 12

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

46 Υπολογισμός του κυρτού (επάνω) περιβλήματος για το S 1 – Βρίσκουμε το πιο απομακρυσμένο σημείο P max από τη γραμμή P 1 P 2 – Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P 1 P max – Υπολογίζουμε το περίβλημα για τα σημεία αριστερά της γραμμής P max P 2 Εύρεση του σημείου P max – Το P max μεγιστοποιεί την επιφάνεια του τριγώνου P max P 1 P 2 – Σε περίπτωση ισοπαλίας, επιλέγεται το P max που μεγιστοποιεί τη γωνία P max P 1 P 2 Τα σημεία μέσα στο τρίγωνο P max P 1 P 2 αγνοούνται εφεξής QuickHull 46 P1P1 P2P2 P max

47 Quickhull p1p1 p2p2 p3p3 p4p4 p5p5 p6p6 p7p7 p8p8 p9p9 p 10 p 11 p12p12 S1S1

48 Quickhull p1p1 p2p2 p3p3 p4p4 p5p5 p6p6 p7p7 p8p8 p9p9 p 10 p 11 p12p12 S1S1

49 Η εύρεση του πλέον απομακρυσμένου σημείου από την ευθεία P 1 P 2 μπορεί να βρεθεί σε γραμμικό χρόνο Έτσι προκύπτει η ίδια πολυπλοκότητα με τη γρήγορη ταξινόμηση: – Χειρότερη περίπτωση: Θ(n 2 ) – Μέση περίπτωση: Θ(n log n) Αν τα σημεία δεν είναι αρχικά ταξινομημένα στον άξονα x, αυτό επιτυγχάνεται με κόστος Θ(nlogn) Αποδοτικότητα QuickHull 49

50 Μείωση και Κυριαρχία 50

51 51 Μείωση και Κυριαρχία 1.Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο του ιδίου προβλήματος 2.Επιλύουμε το μικρότερο στιγμιότυπο 3.Επεκτείνουμε τη λύση του μικρότερου προβλήματος για να λύσουμε το αρχικό πρόβλημα Συναντάται και με τις δύο μορφές: «από κάτω προς τα πάνω (bottom-up» και «από πάνω προς τα κάτω (top-down)» Αναφέρεται επίσης και ως επαγωγική (inductive) ή επαυξητική (incremental) προσέγγιση

52 52 Μείωση κατά ένα: – Ταξινόμηση με εισαγωγή – Αλγόριθμοι αναζήτησης σε γράφους: DFS, BFS, τοπολογική ταξινόμηση – Αλγόριθμοι για τη δημιουργία διατάξεων, υποσυνόλων Μείωση κατά ένα σταθερό όρο: – Δυαδική αναζήτηση – Προβλήματα κίβδηλων νομισμάτων – Πολλαπλασιασμός αλά ρωσικά – Πρόβλημα του Josephus Μείωση κατά μεταβλητό μέγεθος: – Αλγόριθμος του Ευκλείδη – Το Πρόβλημα της Επιλογής – Αναζήτηση Παρεμβολής Παραδείγματα

53 53 Ποιά είναι η διαφορά ; Έστω το πρόβλημα της ύψωσης σε δύναμη: a n Ωμή Βία: Διαίρει και Βασίλευε: Μείωσε κατά ένα: Μείωσε κατά ένα σταθερό όρο:

54 ΜΕΙΩΣΗ ΚΑΤΑ ΕΝΑ Ταξινόμηση με Εισαγωγή Διασχίσεις Γράφων 54

55 55 Ταξινόμηση με Εισαγωγή

56 56 Ένα Βήμα της Ταξινόμησης με Εισαγωγή ταξινομημένοΕπόμενο προς εισαγωγή v ταξινομημένο < 10

57 Ταξινόμηση με Εισαγωγή Χρονική αποδοτικότητα C worst (n) = n(n-1)/2  Θ(n 2 ) C avg (n) ≈ n 2 /4  Θ(n 2 ) C best (n) = n - 1  Θ(n) (είναι γρήγορη και για σχεδόν ταξινομημένους πίνακες) Χωρική αποδοτικότητα: επιτόπιος αλγόριθμος (in-place) Ευστάθεια: ναι 57

58 58 Διάσχιση Γράφων Πολλά προβλήματα απαιτούν τη συστηματική επεξεργασία των κορυφών ενός γράφου Αλγόριθμοι διάσχισης γράφου: – Αναζήτηση κατά βάθος (depth-first search - DFS) – Αναζήτηση κατά πλάτος (breadth-first search - BFS)

59 DFS Το σύνολο των ακμών που χρησιμοποιούνται σε μία αναζήτηση DFS είναι οι ακμές ενός δένδρου. – Υλοποίηση με στοίβα Ο αλγόριθμος διακρίνει δύο ξένα μεταξύ τους σύνολα ακμών: – το σύνολο Τ των ακμών που περιέχονται στα δένδρα του δάσους και ονομάζονται δενδρικές ακμές – το σύνολο B=E-T των υπόλοιπων ακμών που ονομάζονται οπίσθιες ακμές 1/ 2/3/ 4/ 5/6/7/ 8/ Πώς βρίσκω αν ένας απλός γράφος είναι άκυκλος;

60 60 DFS Η DFS μπορεί να υλοποιηθεί με γράφους που αναπαρίστανται: – Πίνακα γειτνίασης: Θ(V 2 ) – Συνδεδεμένες λίστες γειτνίασης: Θ(V+E) Δίνει δύο διακριτές διατάξεις κορυφών: – καθώς οι κορυφές συναντώνται για πρώτη φορά (όταν ωθούνται σε μία στοίβα) – καθώς οι κορυφές συναντώνται για δεύτερη φορά (όταν απωθούνται από τη στοίβα) Εφαρμογές (Hopcroft-Tarjan): – Έλεγχος συνδεσιμότητας, εύρεση συνδεδεμένων συνιστωσών – Έλεγχος κύκλων, σημεία συναρμογής – Εύρεση του χώρου καταστάσεων του προβλήματος προς επίλυση (AI)

61 61 Αναζήτηση κατά Πλάτος (BFS) Εξερευνούμε το γράφο επισκεπτόμενοι όλους του γείτονες του τελευταίου επισκεφθέντος κόμβου Παρόμοια με τη διάσχιση κατά επίπεδα Χρήση ουράς (αντί στοίβα) Ακμές δένδρου – ακμές διασταύρωσης Εφαρμογές: όπως DFS, αλλά επίσης μπορούμε να βρούμε μονοπάτια από κόμβο σε κόμβο με το μικρότερο αριθμό ακμών

62 Παράδειγμα Όταν ο αλγόριθμος BFS σταματά, τότε σε κάθε κορυφή προσπελάσιμη από την κορυφή x έχει δοθεί μία επιγραφή με την απόστασή της από την x. Πολυπλοκότητα Ο(|Ε|), αν ο γράφος είναι υλοποιημένος με λίστα γειτνίασης

63 63 Η BFS έχει την ίδια αποτελεσματικότητα με τη DFS αναλόγως αν ο γράφος υλοποιείται με: – Πίνακες γειτνίασης: Θ(V 2 ) – Συνδεδεμένες λίστες γειτνίασης: Θ(V+E) Δίνει μόνο μία διάταξη των κορυφών (η σειρά εισαγωγής/εξαγωγής από την ουρά είναι ίδια) BFS

64 ΜΕΙΩΣΗ ΚΑΤΑ ΣΤΑΘΕΡΟ ΠΑΡΑΓΟΝΤΑ Δυαδική αναζήτηση Προβλήματα κίβδηλων νομισμάτων 64

65 Δυαδική Αναζήτηση Ψάχνουμε το 16 Δεν βρέθηκε!!!!! Αριθμός βημάτων: 4

66 Δυαδική Αναζήτηση Η αναδρομική που την περιγράφει είναι η T(n)=T(n/2)+1 (περίπου)

67 67 Μεταξύ n νομισμάτων με ίδια όψη, το ένα είναι κίβδηλο. Έστω ότι είναι ελαφρύτερο. Χωρίζουμε τα νομίσματα σε δύο κατηγορίες από n/2 νομίσματα, συν 1 νόμισμα αν το n είναι περιττός αριθμός Τι θα συμβεί αν χωρίσουμε σε 3 κατηγορίες? Κίβδηλο Νόμισμα

68 ΜΕΙΩΣΗ ΚΑΤΑ ΜΕΤΑΒΛΗΤΟ ΜΕΓΕΘΟΣ Το Πρόβλημα της Επιλογής Αναζήτηση Παρεμβολής 68

69 69 Στατιστικά διατάξεων: βρες τον k-οστό αριθμό Μία λύση είναι να ταξινομήσουμε και να επιλέξουμε τον k-οστό Καλύτερα να διαμερίσουμε όπως στη γρήγορη ταξινόμηση Επίδοση στην καλύτερη, χειρότερη και μέση περίπτωση Πρόβλημα Επιλογής

70 procedure find(left,right,k); 1. if left=right then return A[left] 2. else 3. i ← left; j ← right+1; pivot ← A[right]; 4. repeat 5. repeat i ← i+1 until A[i]>=pivot; 6. repeat j ← j-1 until A[j]<=pivot; 7. if i

71 Παράδειγμα k=5 left right k βρέθηκε: 5

72 Αναζήτηση Παρεμβολής Αντί να βρίσκουμε το μεσαίο στοιχείο προσεγγίζουμε την θέση του λίγο καλύτερα ως εξής: mid

73 Διαίσθηση Το βρήκαμε με τη μία, αλλά δεν είμαστε πάντα τόσο τυχεροί!!! Πολυπλοκότητα: Ο(n) στη χειρότερη περίπτωση. Πολυπλοκότητα: Ο(loglogn) στη μέση

74 Μετασχηματισμός και Κυριαρχία 74

75 75 Μετασχημάτισε και Κυριάρχησε Μπορούμε να επιλύσουμε ένα πρόβλημα με μετασχηματισμό σε: Ένα περισσότερο βολικό στιγμιότυπο του ιδίου προβλήματος (απλοποίηση στιγμιότυπου) – Προταξινόμηση, Gaussian απαλοιφή, αντιστροφή πίνακα, υπολογισμός ορίζουσας Μία διαφορετική αναπαράσταση του ίδιου στιγμιότυπου (αλλαγή αναπαράστασης) – Ισοζυγισμένα δυαδικά δένδρα, σωροί και ταξινόμηση με σωρό, υπολογισμός πολυωνύμου με τον κανόνα του Horner, γρήγορος μετασχηματισμός Fourier Ένα τελείως διαφορετικό πρόβλημα (αναγωγή προβλήματος) – Αναγωγή σε προβλήματα γράφων, γραμμικός προγραμματισμός

76 ΑΠΛΟΠΟΙΗΣΗ ΣΤΙΓΜΙΟΤΥΠΟΥ Προταξινόμηση Gaussian απαλοιφή Αντιστροφή πίνακα Υπολογισμός ορίζουσας 76

77 77 Προταξινόμηση Έ να στιγμιότυπο ενός προβλήματος επιλύεται μετασχηματίζοντάς το σε ένα απλούστερο/ευκολότερο στιγμιότυπο του ιδίου προβλήματος Προταξινόμηση: Πολλά προβλήματα με λίστες επιλύονται ευκολότερα αν οι λίστες είναι ταξινομημένες Μοναδικότητα στοιχείου Υπολογισμός της τυπικής τιμής (mode) Υπολογισμός επαναλαμβανόμενων στοιχείων Αναζήτηση Υπολογισμός του μέσου

78 78 Εύρεση Επαναλαμβανόμενων Στοιχείων Αλγόριθμος ωμής βίας: Θ(n 2 ) Αλγόριθμος με προταξινόμηση: – Ταξινόμηση με συγχώνευση: Θ(nlgn) – Σάρωσε τον πίνακα για την εύρεση ίδιων διαδοχικών στοιχείων: Θ(n) – Συνολικά: Θ(nlgn) Συμπέρασμα: η προταξινόμηση βελτιώνει σημαντικά

79 79 Έλεγχος της Τυπικής Τιμής Τυπική τιμή (mode) είναι το συχνότερο στοιχείο Ωμή βία: Σάρωσε τη λίστα, υπολόγισε τις συχνότητες, βρες τη μεγαλύτερη Algorithm PresortedMode Sort the array A i  0; modefrequency  0; while i ≤ n-1 do runlength  1; runvalue  A[i]; while i+runlength≤n-1 and A[i+runlength]=runvalue runlength  runlength+1 if runlength>modefrequency modefrequency  runlength, modevalue  runvalue i  i+runlength return modevalue Συμπέρασμα: η προταξινόμηση και πάλι βοηθά την επίδοση

80 80 Έλεγχος μοναδικότητας στοιχείου Αλγόριθμος ωμής βίας: Θ(n 2 ) Algorithm PresortedElementUniqueness Sort the array A for i  0 to n-2 do if A[i]=A[i+1] return false else return true Συμπέρασμα: η προταξινόμηση βελτιώνει την επίδοση

81 81 Το Πρόβλημα της Επιλογής Βρες το k-οστό μικρότερο στοιχείο μεταξύ των A[1],…,A[n] – Το ελάχιστο: k = 1 – Το μέγιστο: k = n – Τον μέσο: k = n/2 Αλγόριθμοι με προταξινόμηση – Ταξινόμησε τη λίστα – Επίστρεψε το A[k] Αλγόριθμοι με διαμερισμό (μείωσε και βασίλευε): – Με διαμερισμό τοποθέτησε τον pivot στη θέση A[s] – Αν s=k, τότε επίστρεψε A[s] – Αλλιώς αν sk, τότε επανάλαβε με την υπολίστα A[1],…,A[s-1]

82 82 Αλγόριθμοι με προταξινόμηση: Ω(nlgn) + Θ(1) = Ω(nlgn) Αλγόριθμοι με διαμερισμό (μείωσε και βασίλευε): – Χειρότερη περίπτωση: T(n) =T(n-1) + (n+1)  Θ(n 2 ) – Καλύτερη περίπτωση: Θ(n) – Μέση περίπτωση: T(n) =T(n/2) + (n+1)  Θ(n) – Bonus: βρίσκει επίσης τα k μικρότερα στοιχεία Ειδικές περιπτώσεις max, min: καλύτεροι και απλούστεροι γραμμικοί αλγόριθμοι (ωμή βία) Συμπέρασμα: η προταξινόμηση δεν βοηθά την περίπτωση αυτή Σημειώσεις στο Πρόβλημα της Επιλογής

83 Ένα Πρόβλημα (6.1.11) Το Πρόβλημα του Αναγραμματισμού. Δίνεται ένα λεξικό με 70,000 λέξεις. Γράψτε ένα πρόγραμμα που δοθείσης μίας λέξης ως είσοδο επιστρέφει όλους τους αναγραμματισμούς αυτής της λέξης που εμφανίζονται στο λεξικό.

84 84 Gaussian Απαλοιφή Δίνεται σύστημα δύο εξισώσεων με δύο αγνώστους a 11 x + a 12 y = b 1 a 21 x + a 22 y = b 2 Έχει μία μοναδική λύση εκτός αν οι συντελεστές είναι ανάλογοι Εκφράζουμε τη μία μεταβλητή ως συνάρτηση της άλλης και αντικαθιστούμε για να επιλύσουμε μία εξίσωση Τι συμβαίνει σε σύστημα με n εξισώσεις και n αγνώστους;

85 85 Μετασχηματίζουμε τη Ax=b σε A’x=b’, όπου ο πίνακας A’ είναι άνω τριγωνικός Η λύση είναι εφικτή με αντικατάσταση προς τα πίσω Βασικές πράξεις – Ανταλλαγή εξισώσεων – Αντικατάσταση μίας εξίσωσης με ένα πολλαπλάσιο (μη μηδενικό) – Αντικατάσταση μίας εξίσωσης με το άθροισμα ή τη διαφορά της εξίσωσης αυτής με το πολλαπλάσιο μίας άλλης Παράδειγμα: 2x 1 - x 2 + x 3 = 1 4x 1 + x 2 - x 3 = 5 x 1 + x 2 + x 3 = 0 Gaussian Απαλοιφή

86 86 Algorithm GaussElimination for i  1 to n do A[i,n+1]  b[i] for i  1 to n-1 do for j  i+1 to n do for k  i to n+1 do A[j,k]  A[j,k]- A[i,k]*A[j,i]/A[i,i] Προβληματική λύση αν το A[i,i] είναι 0 ή πολύ μικρό Gaussian Απαλοιφή

87 87 Algorithm GaussElimination2 for i  1 to n do A[i,n+1]  b[i] for i  1 to n-1 do pivotrow  i for j  i+1 to n do if |A[j,i]|>|A[pivot,i]| pivotrow  j for k  i to n+1 do swap(A[i,k],A[pivotrow,k]) for j  i+1 to n do temp  A[j,i]/A[i,i] for k  i to n+1 do A[j,k]  A[j,k]-A[i,k]*temp Gaussian Απαλοιφή (partial pivoting)

88 ΑΛΛΑΓΗ ΑΝΑΠΑΡΑΣΤΑΣΗΣ Ισοζυγισμένα δυαδικά δένδρα Σωροί και ταξινόμηση με σωρό Υπολογισμός πολυωνύμου με τον κανόνα του Horner Γρήγορος μετασχηματισμός Fourier 88

89 89 Ταξινόμηση Αλγορίθμων Αναζήτησης Στοιχειώδεις αλγόριθμοι αναζήτησης – Σειριακή αναζήτηση – Δυαδική αναζήτηση – Αναζήτηση δυαδικού δένδρου Αναζήτηση ισοζυγισμένου δένδρου – Δένδρα AVL (απλοποίηση έκφανσης) – Κόκκινα-μαύρα δένδρα (απλοποίηση έκφανσης) – Πολυκατευθυνόμενα ισοζυγισμένα δένδρα (δένδρα 2-3, δένδρα 2-3-4, B-δένδρα) (αλλαγή αναπαράστασης) Κατακερματισμός (αλλαγή αναπαράστασης) – Με αλυσίδες – Ανοικτής διευθυνσιοδότησης

90 Δένδρα Αναζήτησης Πολλαπλών Δρόμων 1.(a,b)–δένδρα: a. Οι κόμβοι μπορεί να περιέχουν από a-1 έως b-1 στοιχεία. b. Ένας κόμβος με k στοιχεία έχει k + 1 παιδιά c. Όλα τα φύλλα είναι στο ίδιο επίπεδο.

91 Παράδειγμα Ένα 2-3 δένδρο με 18 στοιχεία

92 Ενημέρωση Ένθεση: Αναζήτηση του σωστού φύλλου. Αν υπάρχει μόνο ένα στοιχείο σε αυτό απλά πρόσθεσε το καινούργιο. Αν δεν υπάρχει χώρος μεταφέρουμε το μεσαίο στοιχείο στον πατέρα και διασπάμε το παιδί σε δύο παιδιά μοιράζοντας αντίστοιχα τα στοιχεία.

93 Ένθεση Ένθεση(3);

94 Ένθεση Ενδιάμεσα

95 Ένθεση Τελική μορφή

96 Το Δένδρο Μεγαλώνει από τη Ρίζα Ένθεση(45)

97 Διάσπαση Ρίζας

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

99 Διαγραφή Διαγραφή(80) (αλλαγή με το επόμενη σε ενδοδιάταξη στοιχείο)

100 Διαγραφή Διαμοίραση

101 (2,4)- δένδρα Ένθεση: O(logn) Διαγραφή: O(logn) Αναζήτηση: O(logn) 1.Αναζήτηση 2.Ενημέρωση 3.Επαναζύγιση Πράξεις Ενημέρωσης: x ρίζα 1. Αναζήτηση(34) 2. Ένθεση(10) 3. Διαγραφή(21) 23

102 102 Ο κανόνας του Horner Α νακοινώθηκε στις αρχές του 19 ου αιώνα Κατά τον Knuth, η μέθοδος χρησιμοποιήθηκε από το Νεύτωνα Υπολογισμός του πολυωνύμου στο σημείο x p(x) = a n x n + a n-1 x n-1 + … + a 1 x + a 0 p(x) = ( … (a n x + a n-1 ) x + … )x + a 0 Παράδειγμα: υπολογισμός του p(x)=2x 4 -x 3 +3x 2 +x-5 στο x=3 p(x) = x (x (x (2x-1) + 3) + 1) - 5

103 103 Algorithm Horner(P[0..n],x) // Evaluate polynomial at a given point // Input: an array P[0..n] of coefficients and a number x //Output: the value of polynomial at point x p  P[n] for i  n-1 down to 0 do p  x*p + P[i] return p Αποτελεσματικότητα; Ο κανόνας του Horner (2)

104 ΑΝΑΓΩΓΗ ΠΡΟΒΛΗΜΑΤΟΣ Αναγωγή σε προβλήματα γράφων Γραμμικός προγραμματισμός 104

105 105 Ελάχιστο Κοινό Πολλαπλάσιο lcm(24,60)=120, lcm(11,5)=55 Παράδειγμα: 24 = 2 x 2 x 2 x 3 60 = 2 x 2 x 3 x 5 lcm(24,60) = (2x2x3) x 2 x 5 Αποτελεσματικότητα (απαιτείται λίστα πρώτων) lcm(m,n) = mn / gcd(m,n)

106 106 Μέτρηση Μονοπατιών σε Γράφο Το πλήθος των διαφορετικών μονοπατιών μήκους k>0 από τον κόμβο i στον κόμβο j ισούται με το στοιχείο (i,j) του πίνακα A k, όπου A ο πίνακας γειτνίασης Παράδειγμα Αποδοτικότητα

107 M= Τι σημασία έχει ο Μ 2 + Μ; M2=M2= Το άθροισμα Μ 1 +Μ 2 +…+Μ k υποδηλώνει το πλήθος των μονοπατιών από i σε j μήκους 1,2,…,k. Μέτρηση Μονοπατιών σε Γράφο

108 108 Μείωση σε Προβλήματα Γράφων Εφαρμόζεται σε πλήθος προβλημάτων παιχνιδιών και γρίφων Κτίζουμε το γράφο του χώρου καταστάσεων Παράδειγμα: χωρικός, λύκος, κατσίκα, λάχανο

109 Ο Λύκος, η Κατσίκα και το Λάχανο … 109 Ένας ταξιδιώτης έχει έναν λύκο, μία κατσίκα και ένα λάχανο που πρέπει να περάσει από ένα ποτάμι. Το πρόβλημα είναι ότι αν μείνουν μόνα τους, ο λύκος τρώει το κατσίκι, ή το κατσίκι τρώει το λάχανο. Η βάρκα χωράει μόνο δύο, ένας εκ των οποίων είναι ο ταξιδιώτης. Πώς θα τα περάσει ο ταξιδιώτης απέναντι;

110 Ο Λύκος, η Κατσίκα και το Λάχανο … 110 ( ΛυΚΤΛα,0) (ΛυΛα,ΤΚ)(ΛυΛαΤ,Κ)(Λα,ΛυΤΚ)(ΛαΤΚ,Λυ) (Λυ,ΛαΤΚ)(ΛυΤΚ,Λα)(Κ,ΛυΤΛα)(ΚΤ,ΛυΛα) (0,ΛυΚΤΛα)


Κατέβασμα ppt "ΔΙΑΙΡΕΣΗ ΚΑΙ ΚΥΡΙΑΡΧΙΑ 1. 2 Διαίρεση και Κυριαρχία – Διάσπαση ενός προβλήματος σε αρκετά υποπροβλήματα. – Λύνουμε κάθε πρόβλημα ξεχωριστά. – Συνδυάζουμε."

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


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