ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Σχετικά έγγραφα
auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 3: Ωμή Βία. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγόριθμους

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Μηχανολογικό Σχέδιο Ι

Δομές Δεδομένων Ενότητα 2

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

Εισαγωγή στους Αλγορίθμους

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 11: Περιορισμοί της Αλγοριθμικής Ισχύος

Διοικητική Λογιστική

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 12: Αντιμετώπιση Περιορισμών Αλγοριθμικής Ισχύος

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

ΑΛΓΟΡΙΘΜΟΙ Ενότητα 10

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Αλγόριθµοι Divide-and- Conquer

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Ιστορία της μετάφρασης

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Βέλτιστος Έλεγχος Συστημάτων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Δομές Δεδομένων Ενότητα 1

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Διοικητική Λογιστική

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Ψηφιακή Επεξεργασία Εικόνων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στον δομημένο προγραμματισμό

Εισαγωγή στην Πληροφορική

Διοίκηση Επιχειρήσεων

Προγραμματισμός Η/Υ. 8 η ενότητα: Περιβαλλοντικά και μαθηματικά προβλήματα. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εκκλησιαστικό Δίκαιο

Διδακτική της Πληροφορικής

Βάσεις Περιβαλλοντικών Δεδομένων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Κβαντική Επεξεργασία Πληροφορίας

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 7: Αλγόριθμοι γραμμικής άλγεβρας

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Χωρικές σχέσεις και Γεωμετρικές Έννοιες στην Προσχολική Εκπαίδευση

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εκκλησιαστικό Δίκαιο

Ψηφιακή Επεξεργασία Εικόνων

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Προγραμματισμός Η/Υ. Αναζήτηση & Ταξινόμηση. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στους Υπολογιστές

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Δομές Δεδομένων Ενότητα 3

Τίτλος Μαθήματος: Εργαστήριο Φυσικής Ι

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Τεχνικό Σχέδιο - CAD

ΗΛΕΚΤΡΟΝΙΚΗ IΙ Ενότητα 6

Μηχανολογικό Σχέδιο Ι

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Μάρκετινγκ Αγροτικών Προϊόντων

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 4: Διαίρει και Βασίλευε Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Διαίρει και Βασίλευε Ταξινόμηση με Συγχώνευση, Γρήγορη Ταξινόμηση, Πολλαπλασιασμός κατά Strassen, Quickhull, Διάσχιση Δένδρων

Διαίρει και Βασίλευε Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος σε δύο ή περισσότερα μικρότερα στιγμιότυπα 2. Επιλύουμε τα μικρότερα στιγμιότυπα αναδρομικά 3. Βρίσκουμε τη λύση στο αρχικό (μεγαλύτερο) στιγμιότυπο συνδυάζοντας αυτές τις λύσεις 5

Διαίρει και Βασίλευε Πρόβλημα μεγέθους n υποπρόβλημα 1 μεγέθους n/2 υποπρόβλημα 2 μεγέθους n/2 μία λύση για το υποπρόβλημα 1 μία λύση για το υποπρόβλημα 2 Η λύση για το αρχικό πρόβλημα 6

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

Γενική αναδρομή του Διαίρει και Βασίλευε 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 αντί για το Θ. 8

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

Ταξινόμηση με συγχώνευση (2) Algorithm Mergesort(A[0..n-1]) // Sorts array A[0..n-1] by recursive mergesort // Input: An array A[0..n-1] of orderable elements // Output: Array A[0..n-1] sorted in nondecreasing order if n>1: copy A[0.. n/2-1] to B[0.. n/2-1] copy A[ n/2..n-1] to C[0.. n/2-1] Mergesort(B[0.. n/2-1]) Mergesort(C[0.. n/2-1]) Merge(B, C, A) 10

Ταξινόμηση με συγχώνευση (3) Algorithm Merge(B[0..p-1], C[0..q-1], A[0..p+q-1]) // Merges two sorted arrays into one sorted array // Input: Arrays B[0..p-1] and C[0..q-1] both sorted // Output: Sorted array A[0..p+q-1] of the elements of B and C i 0; j 0; k 0 while i < p and j < q do if B[i] C[j]: A[k] B[i]; i++ else A[k] C[j]; j++ k++ if i = p: copy C[j..q-1] to A[k..p+q-1] else copy B[i..p-1] to A[k..p+q-1] 11

Ταξινόμηση με συγχώνευση (4) 4 2 8 1 3 9 5 6 4 2 8 1 3 9 5 6 4 2 8 1 3 9 5 6 4 2 8 1 3 9 5 6 2 4 1 8 3 9 5 6 1 2 4 8 3 5 6 9 1 2 3 4 5 6 8 9 12

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

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

Γρήγορη Ταξινόμηση (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<r s partition(a[l..r]) quicksort(a[l..s-1]) quicksort(a[s+1..r]) 15

Γρήγορη Ταξινόμηση (3) Algorithm Partition(A[l..r]) // Partitions a subarray by using its first element as pivot // Input: a subarray A[l..r], l<r // Output: A partition of A[l..r] with the split position returned as this function s value p A[l]; i l; j r+1; repeat repeat i i+1 until A[i] p repeat j j-1 until A[j] p swap(a[i],a[j]) until i j swap(a[i],a[j]) //εξουδετέρωση αλλαγής όταν i j swap(a[l],a[j]) return j 16

Γρήγορη Ταξινόμηση (4) Παράδειγμα 5 3 1 9 8 2 4 7 Ποιά είναι η σειρά των κλήσεων συναρτήσεων? 17

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

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

Πολλαπλασιασμός μεγάλων ακεραίων (2) Βασική παρατήρηση: α) 23*14 = (2*1)10 2 +(2*4+3*1)10 1 + (3*4) 10 0 = (2*1)10 2 +[(2+3)*(1+4)-2*1-3*4]10 1 + (3*4) 10 0 β) 2135 *4014 = 21 40 10 4 + (21 14 + 35 40) 10 2 + 35 14 = 21 40 10 4 + [(21+35) (40+14) 21*40-35*14] 10 2 + 35 14 Γενικώς: a=a 1 a 0, b=b 1 b 0 και ζητείται c=a*b: c = a*b = c 2. 10 n + c 1. 10 n/2 + c 0. 10 0 όπου 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 ) Αναδρομική εξίσωση: M(n) = 3M(n/2), M(1) = 1 Αποδοτικότητα; M(n) = 3 log 2n = n log 23 n 1.585 20

Πολλαπλασιασμός πινάκων αλά Strassen Ο Strassen παρατήρησε [1969] ότι το γινόμενο δύο πινάκων A και B (μεγέθους 2 n x2 n ) μπορεί να υπολογισθεί ως εξής: C 00 C 01 C 10 C 11 = A 00 A 01 A 10 A 11 B 00 B 01 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 21

Υποπίνακες του 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 ) 22

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

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

Το πρόβλημα του πλησιέστερου Γεωμετρική εξήγηση ζεύγους (2) Αναδρομή T(n) = 2T(n/2) + M(n) Αποδοτικότητα O(n logn) Βελτιστότητα 25

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

Αλγόριθμος QuickHull (2) Υπολογισμός του κυρτού (επάνω) περιβλήματος για το 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 αγνοούνται εφεξής Πως θα βρεθεί γεωμετρικά το σημείο P max και τα σημεία στα αριστερά της γραμμής P 1 P max ; 27

Αλγόριθμος QuickHull (3) Πως θα βρεθεί γεωμετρικά το σημείο P max και τα σημεία στα αριστερά της γραμμής P 1 P max Δίνονται τα σημεία P 1 (x 1,y 1 ), P 2 (x 2,y 2 ), P max (x max,y max ) Το εμβαδόν του τριγώνου είναι μισό του μεγέθους της ορίζουσας x 1 y 1 1 x 2 y 2 1 x max y max 1 = 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 28

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

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

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

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

Δυαδικών Δένδρων (2) Άλλο παράδειγμα: υπολογισμός ύψους T L T R h(t) = max{h(t L ), h(t R )} + 1 if T and h( ) = -1 Αποδοτικότητα: Θ(n) 33

Σημείωμα Αναφοράς Copyright, Ιωάννης Μανωλόπουλος, Αναστάσιος Γούναρης. «.». Έκδοση: 1.0. Θεσσαλονίκη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.auth.gr/courses/ocrs417/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο [1] http://creativecommons.org/licenses/by-nc-sa/4.0/

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: Ανδρέας Κοσματόπουλος Θεσσαλονίκη, Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.00.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.