ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Σχετικά έγγραφα
Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Αλγόριθμοι. Μάρθα Σιδέρη. ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 20% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία.

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

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

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

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

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

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΚΟΙΝΟΥ ΔΙΑΙΡΕΤΗ

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

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

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Κρυπτογραφία. Έλεγχος πρώτων αριθών-παραγοντοποίηση. Διαφάνειες: Άρης Παγουρτζής Πέτρος Ποτίκας

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

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

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

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

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

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

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

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

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

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

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

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης. Οταν το πρόβλημα έχει πεπερασμ

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Σειρά Προβλημάτων 5 Λύσεις

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Δείκτες & Πίνακες Δείκτες, Πίνακες

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

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

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

2.1 Διαιρετότητα, ισοϋπόλοιποι αριθμοί. q Z, a = b q + r.

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

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

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

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

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

Στοιχεία Θεωρίας Αριθμών & Εφαρμογές στην Κρυπτογραφία

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

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

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

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

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

ΗΥ240 - Παναγιώτα Φατούρου 2

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

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

Αριθµοθεωρητικοί Αλγόριθµοι και το. To Κρυπτοσύστηµα RSA

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

Υπολογιστικά & Διακριτά Μαθηματικά

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια)

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

Ταξινόμηση. 1. Ταξινόμηση του Shell. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

Λύσεις 4ης Σειράς Ασκήσεων

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

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

Προγραμματισμός Ι (ΗΥ120)

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

Αλγεβρικές Δομές και Αριθμοθεωρία

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

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

ιαφάνειες παρουσίασης #4

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

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

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

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

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ. ΕΝΟΤΗΤΑ: Άλγεβρα των Πινάκων (1) ΔΙΔΑΣΚΩΝ: Βλάμος Παναγιώτης ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Transcript:

ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΛΓΟΡΙΘΜΩΝ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 1

Example: GCD συνάρτηση gcd(a,b) Είσοδος: Ακέραιοι α b>0 Έξοδος: ΜΚΔ των a,b while a <> b do if a > b: a=a b else: b=b a return a OΡΘΟΤΗΤΑ: if a>b then gcd(a,b) = gcd(a-b, b) Απόδειξη: Έστω g=gcd(a,b), και a=gx, b=gy. gcd(25,11) 25 11 14 11 3 11 3 8 3 5 3 2 1 2 1 1 Τότε οι x,y δεν έχουν κοινό παράγοντα (διαφορετικά ο g δεν θα ήταν ΜΚΔ). GCD(a-b,b) = GCD(gx-gy, gy) = GCD( g(x-y), gy ) = g διαφορετικά οι x,y θα είχαν κοινό παράγοντα, άτοπο Τερματισμός? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 2

Example: GCD συνάρτηση gcd(a,b) Είσοδος: Ακέραιοι α b>0 Έξοδος: ΜΚΔ των a,b while a <> b do if a > b: a=a b else: b=b a return a ΠΟΛΥΠΛΟΚΟΤΗΤΑ Καλύτερη περίπτωση: a=b: O(1) Χειρότερη περίπτωση: a >1, b=1: O(a) gcd(100,1) 100 1 99 1 98 1 2 1 1 1 100 Μήκος εισόδου (# bits): n = log a + log b 2 log a = O(log a) O(a)=O(2 n ) H συνάρτηση gcd(a,b) ΔΕΝ ΠΟΛΥΩΝΥΜΙΚΟΣ (στο n) αλγόριθμος ΥΠΑΡΧΕΙ πολυωνυμικός αλγόριθμος για τον ΜΚΔ? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 3

Example: GCD - O(log Ν) συνάρτηση Euclid(a,b) Είσοδος: Ακέραιοι α b>0 Έξοδος: ΜΚΔ των a,b if b=0: return a return Euclid(b, a mod b) gcd(25,11) 25 11 11 3 3 2 2 1 1 0 gcd(100,1) 100 1 1 0 OΡΘΟΤΗΤΑ: if a>b then gcd(a,b)= gcd(a mod b, b) k φορές Απόδειξη: a a= k b + a mod b, k : a mod b = a b b - -b b Θυμηθείτε ότι if a>b then gcd(a,b)= gcd(a-b, b) και εφαρμόστε το επαναληπτικά. Τερματισμός? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 4

Example: GCD - O(log Ν) συνάρτηση Euclid(a,b) Είσοδος: Ακέραιοι α b>0 Έξοδος: ΜΚΔ των a,b if b=0: return a return Euclid(b, a mod b) ΠΟΛΥΠΛΟΚΟΤΗΤΑ : if a b then a mod b < a/2 Απόδειξη if b a/2 then a mod b<b< a/2 if b >a/2 then a mod b=a-b < a/2 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 5

Example: GCD - O(log Ν) συνάρτηση Euclid(a,b) Είσοδος: Ακέραιοι α b 0 Έξοδος: ΜΚΔ των a,b if b=0: return a return Euclid(b, a mod b) gcd(25,11) 25 11 11 3 3 2 2 1 1 0 ΠΟΛΥΠΛΟΚΟΤΗΤΑ : if a b then a mod b < a/2 a b Κάθε δύο βήματα η τιμή και των b a mod b δύο παραμέτρων τουλάχιστον a mod b b mod (a mod b) υποδιπλασιάζεται (a/2) (b/2) Άρα πολυπλοκότητα 2 loga = O(log a) = O(n) Μήκος εισόδου (# bits) n = O(log a) Δοκιμάστε Euclid(F k+1,f k ) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 6

Example: Merge two sorted arrays - O(n) διαδικασία merge (A[1..p], B[1..q]) Είσοδος: Ταξινομημένοι πίνακες αριθμών Α, Β Έξοδος: Ταξινομημένος πίνακας C με όλα τα στοιχεία των Α,Β A[p+1]=, B[q+1]= i=1, j=1, n=p+q for k=1 to n: if A[i] B[j]: C[k]=A[i], i=i+1 else: C[k]=B[j], j=j+1 A: 2 4 5 7 B: 1 2 3 6 A: 2 4 5 7 B: 1 2 3 6 C=1 2 2 3 4 5 6 7 ΠΟΛΥΠΛΟΚΟΤΗΤΑ Χρόνος: Ο(n) Δεν γίνεται καλύτερα, πρέπει τουλάχιστον να διαβάσουμε/δούμε όλα τα στοιχεία των πινάκων (n=p+q) Χώρος: 2n=Ο(n), AΛΛΑ γίνεται με χώρο = n? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 7

Example: Selection Sort - O(n 2 ) Διαδικασία SelectionSort (A[1..n]) Είσοδος: Πίνακας αριθμών Α[1..n] Έξοδος: Ο πίνακας Α ταξινομημένος for i=n,n-1, 3,2: find the position p of max element in A[1..i] swap(a[p], A[i]) ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Θ(n 2 ) for i = n, n-1, n-2,, 3, 2 βήματα : n + n-1 + n-2 + + 3 + 2 Συνολικά: n i 2 i n i 1 (χειρότερη = καλύτερη = μέση περίπτωση) i n i βήματα: συνάρτηση max(a[1..n]) ( 2 n 1) 2 ( n ) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 8

Insertion Sort - O(n 2 ) Διαδικασία InsertionSort (A[1..n]) Είσοδος: Πίνακας αριθμών Α[1..n] Έξοδος: Ο πίνακας Α ταξινομημένος for i=2 to n: j = i while (A[j]<A[j-1] and j>1): swap (A[j], A[j-1]) j = j-1 Παράδειγμα: 5 12 7 20 6 3 5 12 7 20 6 3 5 7 12 20 6 3 5 7 12 20 6 3 5 6 7 12 20 3 3 5 6 7 12 20 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 9

Insertion Sort - O(n 2 ) Διαδικασία InsertionSort (A[1..n]) Είσοδος: Πίνακας αριθμών Α[1..n] Έξοδος: Ο πίνακας Α ταξινομημένος for i=2 to n: j = i while (A[j]<A[j-1] and j>1): swap (A[j], A[j-1]) j = j-1 ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Αριθμός επαναλήψεων Εξαρτάται από την είσοδο ( πόσο ταξινομημένη είναι) ΚΑΛΥΤΕΡΗ ΠΕΡΙΠΤΩΣΗ (BEST CASE) - Ο πίνακας είναι ήδη ταξινομημένος - 1 επανάληψη while για κάθε επανάληψη for - συνολικά n-1 επαναλήψεις (i=2 to n) - Ο(n) ΚΑΝΕΝΑ ΕΝΔΙΑΦΕΡΟΝ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 10

Insertion Sort - O(n 2 ) Διαδικασία InsertionSort (A[1..n]) Είσοδος: Πίνακας αριθμών Α[1..n] Έξοδος: Ο πίνακας Α ταξινομημένος for i=2 to n: j = i while (A[j]<A[j-1] and j>1): swap (A[j], A[j-1]) j = j-1 ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Αριθμός επαναλήψεων Εξαρτάται από την είσοδο ( πόσο ταξινομημένη είναι) ΧΕΙΡΟΤΕΡΗ ΠΕΡΙΠΤΩΣΗ (WORST CASE) - Ο πίνακας είναι αντίστροφα ταξινομημένος - για κάθε επανάληψη for (i=2 to n) i επαναλήψεις while (j=i,i-1, 2,1) n n n( n 1) 2 - συνολικά i i ( n ) 2 i 2 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL i 1 ΑΥΤΗ ΜΑΣ ΕΝΔΙΑΦΕΡΕΙ Σ ΑΥΤΟ ΤΟ ΜΑΘΗΜΑ 11

Insertion Sort - O(n 2 ) Διαδικασία InsertionSort (A[1..n]) Είσοδος: Πίνακας αριθμών Α[1..n] Έξοδος: Ο πίνακας Α ταξινομημένος for i=2 to n: j = i while (A[j]<A[j-1] and j>1): swap (A[j], A[j-1]) j = j-1 ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Αριθμός επαναλήψεων Εξαρτάται από την είσοδο ( πόσο ταξινομημένη είναι) ΜΕΣΗ ΠΕΡΙΠΤΩΣΗ (ΑVERAGE CASE) Κατανομή πιθανότητας των πιθανών εισόδων Αναμενόμενη (Expected) πολυπλοκότητα Χρήση πιθανοτήτων ΠΟΛΥ ΕΝΔΙΑΦΕΡΟΥΣΑ Εδώ και πάλι Ο(n 2 ) ΣΤΗΝ ΠΡΑΞΗ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 12

Ταξινόμηση (Sorting) SelectionSort InsertionSort Πολυπλοκότητα: Ο(n 2 ) Μήκος εισόδου: Μ=μέγιστο στοιχείο του πίνακα Α μήκος εισόδου n O(log M) log M =σταθερό, π.χ. log M =32 μήκος εισόδου = O(n) Μπορούμε να κάνουμε ταξινόμηση γρηγορότερα? ΝΑΙ: Ο(n logn) Ακόμη γρηγορότερα? ΟΧΙ! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 13

Example: Matrix Multiplication - O(n 3 ) ΕΙΣΟΔΟΣ: X και Y: n x n πίνακες ΕΞΟΔΟΣ: Z=X Y ij k 1 ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n 3 ) n Z X ik Y kj ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 14

Example: Matrix Multiplication - O(n 3 ) διαδικασία Mult (X[1..n,1..n], Y[1..n,1..n]) Είσοδος: Πίνακες αριθμών X, Y Έξοδος: Το γινόμενο Z = X Y for i=1 to n: for j=1 to n: Z[i,j]=0 for k=1 to n: Z[i,j]= Z[i,j]+X[i,k] Y[k,j] ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n 3 ) Πολλαπλασιασμός ενός πίνακα n x m επί έναν πίνακα m x q : Πολυπλοκότητα O(nmq) Γίνεται καλύτερα? ΝΑΙ, επόμενο μάθημα ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 15

Example: Maximum sub-array ΕΙΣΟΔΟΣ: Πίνακας αριθμών Α[1..n] ΕΞΟΔΟΣ: Υπο-πίνακας Α[p..q] με το μέγιστο άθροισμα στοιχείων Θέλουμε να βρούμε δείκτες τέτοιους ώστε το V ( p, q) δηλαδή, V ( p, q) V ( p', q'), Παράδειγμα: Ιστορία κερδών q i p p, q 0 p q n A( i) να είναι μέγιστο 1 p' q' n Year 1 2 3 4 5 6 7 8 9 Profit -3 2 1-4 5 2-1 3-1 Να βρεθεί η περίοδος ετών με το μεγαλύτερο κέρδος: V(5,8)=9 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 16

Example: Maximum sub-array - O(n 3 ) ΕΙΣΟΔΟΣ: Πίνακας αριθμών Α[1..n] ΕΞΟΔΟΣ: Υπο-πίνακας Α[p..q] με το μέγιστο άθροισμα στοιχείων Brute Force Υπολόγισε την τιμή V(i,j) για κάθε 1 i j n Επέστρεψε τη μέγιστη τιμή Vmax και τους δείκτες p,q Vmax=A(1), p=1, q=1 for i=1 to n: for j=i to n: V=0 for k=i to j: do V=V+A(k) if V>Vmax: Vmax= V, p=i, q=j return Vmax, p, q ΠΟΛΥΠΛΟΚΟΤΗΤΑ O(n 3 ) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 17

Example: Maximum sub-array - O(n 2 ) ΕΙΣΟΔΟΣ: Πίνακας αριθμών Α[1..n] ΕΞΟΔΟΣ: Υπο-πίνακας Α[p..q] με το μέγιστο άθροισμα στοιχείων Re-use of data i j j+1 V ( i, j) V ( i) V ( i 1)... V ( j 1) V ( V ( i, j 1) Vmax=A(1), p=1, q=1 for i=1 to n: V=0 for j=i to n: V=V+A[j] if V>Vmax: Vmax= V, p=i, q=j return Vmax, p, q j) V ( i, j 1) A( j) ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n 2 ) ΓΙΝΕΤΑΙ ΚΑΛΥΤΕΡΑ? ΝΑΙ! Ο(nlogn) και ακόμη Ο(n)! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 18

Example: k-subset Sum - O(n k ) ΕΙΣΟΔΟΣ: Σύνολο S θετικών ακεραίων, ακέραιος Μ ΕΞΟΔΟΣ: Υπάρχει υποσύνολο ΑS, με k στοιχεία, A =k, και άθροισμα στοιχείων =M? k: σταθερά Brute force for κάθε υποσύνολο Α S, Α =k: V=0 for κάθε στοιχείο x A: V=V+x if V=M then return YES return NO Πόσα υποσύνολα Α S, Α =k, έχει ένα σύνολο με n στοιχεία? n k ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Σταθερός χρόνος O(1) Α =k = σταθερά = O(n k ) k: σταθερά ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 19

Example: Subset Sum - O(2 n ) ΕΙΣΟΔΟΣ: Σύνολο S θετικών ακεραίων, ακέραιος Μ ΕΞΟΔΟΣ: Υπάρχει υποσύνολο ΑS με άθροισμα στοιχείων =M? Brute force for κάθε υποσύνολο Α S: V=0 for κάθε στοιχείο x A: V=V+x Δ if V=M then return YES return NO ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(n2 n ) Πόσα υποσύνολα έχει ένα σύνολο με n στοιχεία? Δυναμοσύνολο: 2 n A =O(n) Χρόνος Ο( n) Γίνεται καλύτερα? ΝΑΙ Ο(nM) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 20