ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο



Σχετικά έγγραφα
Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Σχεδίαση και Ανάλυση Αλγορίθμων

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Σχεδίαση και Ανάλυση Αλγορίθμων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Ταξινόμηση με συγχώνευση Merge Sort

Αλγόριθμοι Αναζήτησης

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

υναμικός Προγραμματισμός

Αλγόριθμοι ταξινόμησης

Δυναμικός Προγραμματισμός

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ασυμπτωτικός Συμβολισμός

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

Δυναμικός Προγραμματισμός

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

υναμικός Προγραμματισμός

Προχωρημένες έννοιες προγραμματισμού σε C

Λεξικό, Union Find. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Δομές Δεδομένων και Αλγόριθμοι

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

υναμικός Προγραμματισμός

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθµοι και Πολυπλοκότητα

(Γραμμικές) Αναδρομικές Σχέσεις

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Ασυμπτωτικός Συμβολισμός

Ουρά Προτεραιότητας: Heap

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

1η Σειρά Γραπτών Ασκήσεων

Δυναμικός Προγραμματισμός

Αλγόριθμοι Ταξινόμησης Μέρος 4

Ουρά Προτεραιότητας: Heap

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

Ουρά Προτεραιότητας: Heap

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

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

(Γραμμικές) Αναδρομικές Σχέσεις

Ασυμπτωτικός Συμβολισμός

Αλγόριθµοι και Πολυπλοκότητα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Εργαστηριακή Άσκηση 1

Ασυμπτωτικός Συμβολισμός

Αλγόριθµοι και Πολυπλοκότητα

Δομές Δεδομένων & Αλγόριθμοι

Union Find, Λεξικό. Δημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Ουρά Προτεραιότητας: Heap

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Δομές Δεδομένων και Αλγόριθμοι

a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

Δομές Δεδομένων & Αλγόριθμοι

Τεχνικές Σχεδιασμού Αλγορίθμων

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

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

Σχεδίαση και Ανάλυση Αλγορίθμων

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

Ταξινόµηση. Παύλος Εφραιµίδης. οµές εδοµένων και

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

Πολυπλοκότητα Αλγορίθµων

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης

Δομές Δεδομένων & Αλγόριθμοι

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι Ταξινόµησης

Transcript:

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

ιαίρει-και-βασίλευε Γενική μέθοδος σχεδιασμού αλγορίθμων: ιαίρεση σε ( 2) υποπροβλήματα (σημαντικά) μικρότερου μεγέθους. Ανεξάρτητη επίλυση υπο-προβλημάτων (αναδρομικά) (για μικρά υποπροβλήματα εφαρμόζονται στοιχειώδεις αλγόριθμοι). Σύνθεση λύσης αρχικού προβλήματος από λύσεις υποπροβλημάτων. Ισχυρή μέθοδος, με πολλές σημαντικές εφαρμογές! Ταξινόμηση: MergeSort, QuickSort. Πολλαπλασιασμός αριθμών, πινάκων, FFT. «Εκλέπτυνση»: υαδική αναζήτηση, QuickSelect, ύψωση σε δύναμη. (Εύκολη) ανάλυση με αναδρομικές σχέσεις. Μη γραμμικές, συγκεκριμένης μορφής. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 2

Πρόβλημα Ταξινόμησης Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1, α 2,..., α n ). Έξοδος : αναδιάταξη (α 1, α 2,..., α n ) με αριθμούς σε αύξουσα σειρά ( i α i α i+1 ). Στατική συλλογή δεδομένων (όχι εισαγωγή και διαγραφή). Θεμελιώδες αλγοριθμικό πρόβλημα. Πολλές εφαρμογές (περ. 25% υπολογιστικού χρόνου). Ταχύτατη αναζήτηση σε ταξινομημένα δεδομένα. Σημαντικές αλγοριθμικές ιδέες και τεχνικές. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 3

Συγκριτικές Μέθοδοι Ταξινόμησης Αντιμετάθεση κάθε ζεύγους στοιχείων εκτός διάταξης (bubble sort). Εισαγωγή στοιχείου σε κατάλληλη θέση ταξινομημένου πίνακα (insertion sort). Επιλογή μεγαλύτερου στοιχείου και τοποθέτηση στο τέλος (selection sort, heapsort). Συγχώνευση ταξινομημένων πινάκων : ιαίρεση στη μέση, ταξινόμηση, συγχώνευση (mergesort). ιαίρεση σε μικρότερα και μεγαλύτερα από στοιχείο-διαχωρισμού και ταξινόμηση (quicksort). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 4

Συγκριτικοί Αλγόριθμοι Ταξινόμηση αποκλειστικά με συγκρίσεις και αντιμεταθέσεις στοιχείων. εν εκμεταλλεύονται τύπο δεδομένων (π.χ. αριθμούς, συμβολοσειρές) : γενική εφαρμογή. Ανάλυση : πλήθος συγκρίσεων. πλήθος αντιμεταθέσεων. Κάτω φράγμα #συγκρίσεων : Ω(n log n). Ταξινόμηση (με αλγόριθμους που δεν είναι συγκριτικοί) σε χρόνο Θ(n+k) για n φυσικούς αριθμούς στο { 1,..., k } (π.χ. bucket sort, radix sort). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 5

MergeSort MergeSort (ταξινόμηση με συγχώνευση): ιαίρεση ακολουθίας εισόδου (n στοιχεία) σε δύο υπο-ακολουθίες ίδιου μήκους (n / 2 στοιχεία). Ταξινόμηση υπο-ακολουθιών αναδρομικά. Συγχώνευση (merge) δύο ταξινομημένων υπο-ακολουθιών σε μία ταξινομημένη ακολουθία. mergesort(int A[], int left, int right) { if (left >= right) return; mid = (left + right) / 2; mergesort(a, left, mid); mergesort(a, mid+1, right); merge(a, left, mid, right); } Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 6

MergeSort Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 7

Συγχώνευση Συγχώνευση ταξινομημένων Α[left...mid] και A[mid+1...right] σε ταξινομημένο A[left...right]. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 8

Συγχώνευση Συγχώνευση ταξινομημένων Α[low...mid] και A[mid+1...up] σε ταξινομημένο A[low...up]. X[up low+1] A[low...up]; // προσωρινή αποθήκευση i : 0 <= i <= xmid // δείκτης αριστερό τμήμα j : xmid+1 <= j <= xup // δείκτης δεξιό τμήμα k : low <= k <= up // δείκτης στο συγχωνευμένο πίνακα Χ[i] : μικρότερο διαθέσιμο στοιχείο στο αριστερό τμήμα. Χ[j] : μικρότερο διαθέσιμο στοιχείο στο δεξιό τμήμα. while ((i <= xmid) && (j <= xup)) if (X[i] <= X[j]) A[k++] = X[i++]; else A[k++] =X[j++]; Όταν ένα τμήμα εξαντληθεί, αντιγράφουμε όλα ταστοιχείατουάλλουστοα[]. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 9

Συγχώνευση merge(int A[], int low, int mid, int up) { int xmid = mid-low, xup = up low; int i = 0, // δείκτης στο αριστερό τμήμα j = xmid+1, // δείκτης στο δεξιό τμήμα k = low; // δείκτης στο αποτέλεσμα X[up low+1] A[low...up]; // συγχώνευση μέχρι ένα τμήμα να εξαντληθεί while ((i <= xmid) && (j <= xup)) if (X[i] <= X[j]) A[k++] = X[i++]; else A[k++] = X[j++]; // αντέγραψε υπόλοιπα στοιχεία άλλου τμήματος if (i > xmid) for (int q = j; q <= xup; q++) A[k++] = X[q]; else for (int q = i; q <= xmid; q++) A[k++] = X[q]; Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 10

MergeSort: Ορθότητα Ορθότητα merge επειδή τα τμήματα είναι ταξινομημένα. Όταν ένα στοιχείο μεταφέρεται στον Α[], δεν υπάρχει μικρότερο διαθέσιμο στοιχείο στα δύο τμήματα. Ορθότητα mergesort αποδεικνύεται επαγωγικά : Βάση (ένα στοιχείο) τετριμμένη. ύο τμήματα σωστά ταξινομημένα (επαγωγική υποθ.) και συγχωνεύονται σωστά (ορθότητα merge) Σωστά ταξινομημένος πίνακας Α[]. mergesort(int A[], int left, int right) { if (left >= right) return; mid = (left + right) / 2; mergesort(a, left, mid); mergesort(a, mid+1, right); merge(a, left, mid, right); } Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 11

Χρόνος Εκτέλεσης Χρόνος εκτέλεσης merge (για n στοιχεία) : Θ(n) (γραμμικός) Θ(1) λειτουργίες για κάθε στοιχείο. Χρόνος εκτέλεσης αλγόριθμων «διαίρει-και-βασίλευε» με διατύπωση και λύση αναδρομικής εξίσωσης λειτουργίας. Τ(n) : χρόνος (χ.π.) για ταξινόμηση n στοιχείων. T(n /2): ταξινόμηση αριστερού τμήματος (n /2 στοιχεία). T(n /2): ταξινόμηση δεξιού τμήματος (n /2 στοιχεία). Θ(n) : συγχώνευση ταξινομημένων τμημάτων. T(n) = 2 T(n /2) + Θ(n), T(1) = Θ(1) Χρόνος εκτέλεσης ΜergeSort: T(n) =??? Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 12

έντρο Αναδρομής T(n) = 2 T(n /2) + Θ(n), Τ(1) = Θ(1) έντρο αναδρομής : Ύψος : Θ(log n) #κορυφών : Θ(n) 2 n T n cn T n cn T n cn cn cn Χρόνος / επίπεδο : Θ(n) T n T n T n T(n cn cn cn cn cn Συνολικός χρόνος : Θ(n log n). n n Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 13

Master Theorem Ανάλυση χρόνου εκτέλεσης αλγορίθμων «διαίρει-και-βασίλευε» με αναδρομικές σχέσεις της μορφής όπου α, b σταθερές και f(n) θετική συνάρτηση. Επίλυση με Θεώρημα Κυρίαρχου Όρου (Master Theorem) Ασυμπτωτικά μεγαλύτερος από f(n) και καθορίζει λύση. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 14

Master Theorem: Ειδικές Μορφές Όταν f(n) = Θ(n), δηλ. Αν με γ 1 + γ 2 < 1 ε, τότε Όταν f(n) = Θ(n d ), δηλ. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 15

Παραδείγματα Τ(n) = 9 T(n/3) + n. Τ(n) = T(2n/3) + 1. Τ(n) = 3 T(n/4) + nlogn. Τ(n) = 2 T(n/2) + n. Τ(n) = 2 T(n/2) + nlogn. εν εμπίπτει! Με δέντρο αναδρομής βρίσκουμε ότι T(n) = Θ(nlog 2 n). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 16

Πολλαπλασιασμός Αριθμών Υπολογισμός αθροίσματος x+y, x και y αριθμοί n-bits. Κλασσικός αλγόριθμος πρόσθεσης, χρόνος Θ(n). Υπολογισμός γινομένου x y, x και y αριθμοί με n-bits. Κλασσικός αλγόριθμος πολ/μού, χρόνος Θ(n 2 ). Καλύτερος αλγόριθμος; ιαίρει-και-βασίλευε: ιαίρεση: 4 πολλαπλασιασμοί (n / 2)-bits, 2 ολισθήσεις, 3 προσθέσεις. Χρόνος: Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 17

Πολλαπλασιασμός Αριθμών Όμως z m υπολογίζεται με 1 μόνο πολ/μο (n/2+1)-bits. 3 πολλαπλασιασμοί (n / 2)-bits, 2 ολισθήσεις, 6 προσθέσεις. Χρόνος: Παράδειγμα: 2576 7935 = 20440560 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 18

Πολλαπλασιασμός Πινάκων Υπολογισμός γινομένου C = A B. A, B τετραγωνικοί πίνακες n n. Εφαρμογή ορισμού: Χρόνος Θ(n 3 ) (n 2 στοιχεία, χρόνος Θ(n) για καθένα). ιαίρει-και-βασίλευε: 8 πολ/μοι και 4 προσθέσεις πινάκων Χρόνος: Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 19

Αλγόριθμος Strassen (1969) 7 πολ/μοι και 24 προσθέσεις πινάκων Χρόνος: Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 20

Υπολογισμός ύναμης (Diffie-Hellman) Συμφωνία Αλίκης και Βασίλη σε κρυπτογραφικό κλειδί. Εύα παρακολουθεί για να «κλέψει» το κλειδί. Α, Β συμφωνούν δημόσια σε πρώτο p και ακέραιο q < p. Εγνωρίζειp, q. Εμπλεκόμενοι αριθμοί είναι πολυψήφιοι (π.χ. 512 ψηφία). Α διαλέγει τυχαία και υπολογίζει Β διαλέγει τυχαία και υπολογίζει Α, Β ανταλλάσσουν q α, q b και τα μαθαίνει Ε. Α, B υπολογίζουν Κ (μόνοι τους). ΕδενξέρειΚ. Για Κ, Ε χρειάζεταια, b (δεν μεταδόθηκαν). Επίλυση διακριτού λογαρίθμου (πολύ δύσκολο). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 21

Υπολογισμός ύναμης Εφαρμογή υποθέτει αποδοτικό αλγόριθμο υπολογισμού, x, n, p πολυψήφιοι ακέραιοι. Υπολογισμός δυνάμεων με τη σειρά (1, 2, 3, ): αν μήκος 512 bits, χρειάζεται περίπου 2 512 πολ/μους!!! ιαίρει-και-βασίλευε (έστω n δύναμη του 2): Υπολογίζουμε αναδρομικά και #πολλαπλασιασμών: p με μήκος 512 bits: περίπου 2 10 πολ/μους. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 22

Προϋποθέσεις Εφαρμογής ιαίρεση σημαντικά ευκολότερη από επίλυση αρχικού. Σύνθεση σημαντικά ευκολότερη από επίλυση αρχικού. Υπο-στιγμιότυπα σημαντικά μικρότερα από αρχικό (π.χ. αρχικό μέγεθος n, υπο-στιγμ. μεγέθους n / c, c > 1). Ανεξάρτητα υπο-στιγμιότυπα που λύνονται από ανεξάρτητες αναδρομικές κλήσεις. Ίδια ή επικαλυπτόμενα υπο-στιγμιότυπα : σημαντική και αδικαιολόγητη αύξηση χρόνου εκτέλεσης. Επικαλυπτόμενα υπο-στιγμιότυπα : υναμικός Προγραμματισμός Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 23

(Αντι)παράδειγμα Υπολογισμός n-οστού όρου ακολουθίας Fibonacci. Χρόνος εκτέλεσης: long fibrec(long n) { if (n <= 1) return(n); return(fibrec(n-1) + fibrec(n-2)); } Λύση: Επικαλυπτόμενα στιγμ.: Εκθετικός χρόνος! Αλγόριθμος γραμμικού χρόνου; Καλύτερος αλγόριθμος; long fib(long n) { long cur = 1, prev = 0; for (i = 2; i <= n; i++) { cur = cur + prev; prev = cur prev; } return(cur); } Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 24

Ακολουθία Fibonacci Ακολουθία Fibonacci: Θεωρούμε πίνακα και Παρατηρούμε ότι Με επαγωγή αποδεικνύουμε ότι ιαίρει-και-βασίλευε: Υπολογισμός σε χρόνο Ο(log n) (όπως με αριθμούς). Υπολογίζω αναδρομικά το και Χρόνος: Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2015) ιαίρει-και-βασίλευε 25