ΑΛΓΟΡΙΘΜΟΙ Άνοιξη 2017

Σχετικά έγγραφα
ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

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

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

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

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

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

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

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

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

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ

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

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

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

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

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

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

Αλγόριθμοι. Μάρθα Σιδέρη. epl333 lect

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

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

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

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

Πολλαπλασιασμός: αλγόριθμος

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

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

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

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

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

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

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

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

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

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

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

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

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

Αλγοριθμικές Τεχνικές

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

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

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

Αλγόριθμοι Χαμηλού Επιπέδου

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

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

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

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

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

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

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

Αναδρομικοί Αλγόριθμοι

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

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

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

Αλγόριθμοι Eλάχιστα μονοπάτια

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

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

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

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

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

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

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

1o Φροντιστήριο ΗΥ240

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

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

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον


Κεφάλαιο 4. Άπληστοι Αλγόριθµοι (Greedy Algorithms) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

Ταξινόμηση. 1. Στατιστικά Διάταξης 2. Στατιστικά σε Μέσο Γραμμικό Χρόνο. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

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

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

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

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

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

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

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

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

Υπολογιστική Πολυπλοκότητα

Υπολογιστικό Πρόβληµα

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

Transcript:

ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/if161/ Άνοιξη 2017 I. ΜΗΛΗΣ Ώρες Γραφείου: Δευτέρα, Παρασκευή 11:00-13:00 Κοδριγκτώνος 12, 3 ος οροφος (Κωδικός Εισόδου 4267) E-mail: milis@aueb.gr

Αλγόριθμοι Τους χρησιμοποιείτε καθημερινά Web search Text editors σε κάθε εφαρμογή που τρέχετε Έχετε ήδη γράψει πολλές φορές Μαθήματα προγραμματισμού Δομές δεδομένων Σε αυτό το μάθημα Συστηματική μελέτη Τεχνικές σχεδιασμού και ανάλυσης Υπόβαθρο Διακριτά Μαθηματικά Δομές Δεδομένων Πιθανότητες 2

Shortest path Dijkstra 1959 etwork flows Internet routing Avi Wigderson define Dijkstra(Graph G, ode s) S := {} Q := odes(g) while not empty(q) u := extractmin( Q ) S := S È u for each node v in neighbors( u ) if d(u) + w(u,v) < d(v) then d(v) := d(u) + w(u,v) pi(v) := u Distance (Delhi, Bangalore) Path (Delhi, Bangalore)

String matching Knuth-Morris-Pratt Boyer-Moore 1977 Text CAUCGCGCUUCGC String CGC algorithm kmp_search: input: T (text), P (pattern sought) define variables: Spell checking Text processing Genome Molecular Biology Web search m 0, i 0, M (the table) while m + i is less than length of T, do: if P[i] = T[m + i], let i i + 1 if i = length of P then return m otherwise, let m m + i - M[i], if i > 0 let i M[i] Text CAUCGCGCUUCGC Location X X X Avi Wigderson

Αλγόριθμοι Βήμα-βήμα ΣΑΦΕΙΣ διαδικασίες για τη λύση προβλημάτων (επακριβώς ορισμένες, μη-διφορούμενες, μηχανικές διαδικασίες) Στην περίπτωσή μας: προβλήματα που θα λυθούν από υπολογιστή (μετασχηματισμός της εισόδου στην επιθυμητή έξοδο) Ότι τρέχει στον υπολογιστή σας χρησιμοποιεί έναν αλγόριθμο Ανεξάρτητοι από γλώσσα, υλοποίηση, υπολογιστή Ο πυρήνας της Επιστήμης Υπολογιστών 5

Αλγόριθμοι και προβλήματα Σχεδιάζουμε αλγόριθμους για να λύσουν προβλήματα Προβλήματα που πρόκειται να λυθούν από υπολογιστή Επακριβώς ορισμένα, μη διφορούμενα ΠΡΟΒΛΗΜΑ ΕΙΣΟΔΟΣ/ΣΤΙΓΜΙΟΤΥΠΟ (IPUT/ISTACE): οι παράμετροι του προβλήματος, oι τιμές τους και πιθανοί περιορισμοί ή σχέσεις μεταξύ τους ΕΞΟΔΟΣ/ΕΡΩΤΗΣΗ (ΟUTPUT/QUESTIO): το αποτέλεσμα που ψάχνουμε 6

Αλγόριθμοι Τρείς κρίσιμες ερωτήσεις για κάθε αλγόριθμο για ένα πρόβλημα: ΕΙΝΑΙ ΣΩΣΤΟΣ? - ΟΡΘΟΤΗΤΑ Δίνει τη σωστή απάντηση για κάθε επιτρεπτή είσοδο? Τερματίζει? ΕΙΝΑΙ ΓΡΗΓΟΡΟΣ? ΠΟΛΥΠΛΟΚΟΤΗΤΑ Πως την μετράμε? Αριθμός βημάτων = συνάρτηση T(n) του μήκους της εισόδου n ( # bits) ΥΠΑΡΧΕΙ ΚΑΛΥΤΕΡΟΣ? 7

Αλγόριθμοι Al Khwarizmi (780-850 μ.χ.) "Dixit algorizmi 12 ος αιώνας μ.χ. Δεκαδικό αριθμητικό σύστημα + οι πρώτοι αλγόριθμοι που μαθαίνουμε στο δημοτικό + άλλοι αλγόριθμοι x,p 53 +35 88 13 x 11 13 13 143 8

Αλγόριθμος πρόσθεσης 1 1 1 1 (κρατούμενο) 1 1 0 1 0 1 (53) à n bits + 1 0 0 0 1 1 (35) à n bits 1 0 1 1 0 0 0 (88) à n+1 bits Γιατί είναι σωστός ο αλγόριθμος? (ΟΡΘΟΤΗΤΑ) Το άθροισμα 3 μονοψήφιων αριθμών έχει 2 ψηφία (απόδειξη?) Πόσα βήματα/χρόνο χρειάζεται ο αλγόριθμος? (ΠΟΛΥΠΛΟΚΟΤΗΤΑ) Βήματα =n+1, Χρόνος: Τ(n) = c 1 n + c 2 = O(n) Αριθμοί 32/64 bits προστίθενται από τους υπολογιστές σε 1 βήμα! Μπορούμε να κάνουμε καλύτερα? ΟΧΙ: πρέπει τουλάχιστον να διαβάσουμε όλα τα ψηφία 9

Αλγόριθμος πολλαπλασιασμού 1 1 1 0 1 (13) à n bits x 1 0 1 1 (11) à n bits 1 1 0 1 (1101 επί 1) à n bits 1 1 0 1 (1101 επί 1, μετατοπισμένο 1 θέση) à n+1 bits 0 0 0 0 (1101 επί 0, μετατοπισμένο 2 θέσεις) + 1 1 0 1 (1101 επί 1, μετατοπισμένο 3 θέσεις) à 2n-1 bits 1 0 0 0 1 1 1 1 (143) à 2n bits Γιατί είναι σωστός ο αλγόριθμος? (ΟΡΘΟΤΗΤΑ) Η μετατόπιση αριστερά είναι πολλαπλασιασμός με τη βάση Πόσα βήματα/χρόνο χρειάζεται ο αλγόριθμος? (ΠΟΛΥΠΛΟΚΟΤΗΤΑ) Βήματα: n μετατοπίσεις + n-1 προσθέσεις 2 αριθμών x O(n) η κάθε μία Άρα T(n)=n+(n-1) n = O(n 2 ) Μπορούμε να κάνουμε καλύτερα? 10

Αλγόριθμος πολλαπλασιασμού 2 // Αναδρομική κλήση 11 x13=11+2(11 x 6) =11+2(2(11 x 3)) =11+2(2(11+2(11 x 1))) =11+2(2(11+2(11+2(11 x 0)))) 11

Αλγόριθμος πολλαπλασιασμού 2 // Αναδρομική κλήση 11 x13=11+2(11 x 6) =11+2(2(11 x 3)) =11+2(2(11+2(11 x 1))) =11+2(2(11+2(11+2(11 x 0)))) z=x+2z=143 z=2z=66 z=x+2z=33 z=x+2z=11 z=0 x,y 11,13 11,6 11,3 11,1 11,0 12

Αλγόριθμος πολλαπλασιασμού 2 ΟΡΘΟΤΗΤΑ: Η παραπάνω αναδρομική σχέση είναι σωστή (αυστηρή απόδειξη με επαγωγή) Αρκεί να τη μεταφράσουμε σωστά σε αλγόριθμο 13

Αλγόριθμος πολλαπλασιασμού 2 // Αναδρομική κλήση ΠΟΛΥΠΛΟΚΟΤΗΤΑ: n αναδρομικές κλήσεις (n=# bits) γιατί? σε κάθε μία: διαίρεση δια 2 (right shift) έλεγχος αρτιότητας (LSB) πολλαπλασιασμός επί 2 (left shift) μία πρόσθεση (εάν y περιττός) Άρα T(n) = n (3+ n) = Ο(n 2 ) και πάλι! 1 βήμα 1 βήμα 1 βήμα Ο(n) βήματα 14

Αλγόριθμοι πολλαπλασιασμού Και οι 2 είναι πολυπλοκότητας Ο(n 2 ) Μπορούμε να κάνουμε καλύτερα? Σε πρώτη ματιά θα λέγαμε όχι: Εύρεση n πολλαπλασίων του x (ένα για κάθε ψηφίο του y) Πρόσθεση αυτών των n πολλαπλασίων Άρα Ο(n 2 ) ΚΑΙ ΟΜΩΣ ΜΠΟΡΟΥΜΕ! Υπομονή λίγα μαθήματα Αριθμοί 32/64 bits πολλαπλασιάζονται από τους υπολογιστές σε 1 βήμα 15

Exponentiation συνάρτηση exp1(a,) Είσοδος: Μη-αρνητικοί ακέραιοι α, Ν Έξοδος: a Ν p = 1 for i = 1 to : p = p a return p OΡΘΟΤΗΤΑ: προφανής ΠΟΛΥΠΛΟΚΟΤΗΤΑ: Ν επαναλήψεις, Πολλαπλασιασμός σε ένα βήμα, Άρα Ο(Ν) Μέχρι τώρα: Πολυπλοκότητα = T(n), n: αριθμός bits δεδομένων ΑΥΤΗ ΜΑΣ ΕΝΔΙΑΦΕΡΕΙ Eδώ: Πολυπλοκότητα =T(), : τιμή δεδομένου ΤΗΝ ΘΕΛΟΥΜΕ ΣΑΝ ΣΥΝΑΡΤΗΣΗ του n: αριθμός bits του Ν 16

Exponentiation συνάρτηση exp1(a,): ΠΟΛΥΠΛΟΚΟΤΗΤΑ Ο(Ν) ΠΟΙΑ ΕIΝΑΙ Η ΣΧΕΣΗ Ν και n? (n =αριθμός bits του Ν) Πόσα ψηφία χρειάζονται για να γράψουμε το Ν? β-αδικό σύστημα Δυαδικό σύστημα: n = é n = log ( + 1) b ù n élog 2 ( + 1) ù Þ = O(2 ) Άρα συνάρτηση exp1(a,): ΠΟΛΥΠΛΟΚΟΤΗΤΑ O()=Ο(2 n ) ΕΚΘΕΤΙΚΗ ΣΤΟ n n=mhkoσ ΕΙΣΟΔΟΥ= αριθμός bits εισόδου/δεδομένων Μπορούμε να κάνουμε καλύτερα? O(log ) =O(n)? 17

Exponentiation a ì æ ï ç ï a è ï = í ï ï æ ç ï a a ç î è 2 ê ê ë 2 ö ø ú ú û 2 ö ø 2 if if is is even odd a 0 = 1 συνάρτηση exp2(a,) Είσοδος: Μη-αρνητικοί ακέραιοι α, Ν Έξοδος: a Ν if Ν=0: return 1 z = exp2 (a, ë / 2û ); if είναι άρτιος: return z 2 else: return az 2 OΡΘΟΤΗΤΑ: προφανής 18

Exponentiation συνάρτηση exp2(a,) Είσοδος: Μη-αρνητικοί ακέραιοι α, Ν Έξοδος: a Ν if Ν=0: return 1 z = exp2 (a, ë / 2û ); if είναι άρτιος: return z 2 else: return az 2 z=az 2 =a 13 a, a,13 z=z 2 =a 6 a,6 z=az 2 =a 3 a,3 z=az 2 =a a,1 z=1 a,0 19

Exponentiation συνάρτηση exp2(a,) Είσοδος: Μη-αρνητικοί ακέραιοι α, Ν Έξοδος: a Ν if =0: return 1 z= exp2 (a, ë / 2û) if είναι άρτιος: return z 2 else: return az 2 ΠΟΛΥΠΛΟΚΟΤΗΤΑ: k αναδρομικές κλήσεις για: (για την ακρίβεια élog ù+ 1 Πολλαπλασιασμός σε ένα βήμα,,,,..., = 1Þ k = log 2 3 k 2 2 2 2 επαναλήψεις) Άρα συνάρτηση exp2(a,): πολυπλοκότητα Ο(log Ν)=O(n) 20

Fibonacci numbers Leonardo da Pisa (Fibonacci) 1171-1249 Liber Abaci, 1202 Fibonacci numbers: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, F ì F ï = í 1 ï î 0-1 + F -2 if if if ³ 2 = 1 = 0 Αυξάνουν εκθετικά, F 0.694» 2 21

Fibonacci numbers συνάρτηση fib1() Είσοδος: Μη-αρνητικός ακέραιος n Έξοδος: F if <2: return return fib1(-1) + fib1(-2) OΡΘΟΤΗΤΑ: προφανής ΠΟΛΥΠΛΟΚΟΤΗΤΑ: T(): βήματα για τον υπολογισμό του F T(0) =1 T(1) =1 T() = T(-1) + T(-2) +2 (έλεγχος <2, πρόσθεση σε ένα βήμα) Τ() > F : εκθετική πολυπλοκότητα! Τ(200) >F 200» 2 138 22

Fibonacci numbers συνάρτηση fib1(6): Αναδροµικές κλήσεις 3 rd 2 nd 5 4 3 1 st call 12 th 6 18 th 3 4 17 th 2 23 rd 4 th 9 th 13 th 19 th 22 nd 3 2 2 1 2 1 1 0 5 th 2 1 1 0 1 0 16 th 1 0 24 th 25 th call 1 0 6 th 7 th 8 th 10 th 11 th 14 th 15 th 20 th 21 st Δυαδικό δένδρο Πλήρες μέχρι το επίπεδο ë/2û Þ > 2 ë/2û κόμβοι Þ Τ(n) > 2 ë/2û Γιατί? Υπολογίζει τις ίδιες τιμές πολλές φορές! Η ΕΦΑΡΜΟΓΗ ΤΗΣ ΑΝΑΔΡΟΜΗΣ ΔΕΝ ΕΙΝΑΙ ΠΑΝΤΑ ΧΡΗΣΙΜΗ 23

Fibonacci numbers συνάρτηση fib2() Είσοδος: Μη-αρνητικός ακέραιος Έξοδος: F Χρήση πίνακα f[0..] f[0]=0, f[1]:=1 For i=2 to : f[i]= f[i-1] + f[i-2] return f[] OΡΘΟΤΗΤΑ: προφανής ΠΟΛΥΠΛΟΚΟΤΗΤΑ: O(), πρόσθεση σε ένα βήμα ΜΗΚΟΣ ΕΙΣΟΔΟΥ=n= # bits = log => =2 n ΜΝΗΜΗ: Ν θέσεις, Ο() Άρα πολυπλοκότητα Ο(2 n ), ΕΚΘΕΤΙΚΗ στο Γίνεται με σταθερό αριθμό (3) θέσεων μνήμης? ΜΗΚΟΣ ΕΙΣΟΔΟΥ n 24

1. Ισχύει ότι και εύκολα προκύπτει ότι (αποδείξτε τα!) Άρα Πολυπλοκότητα : O(log Ν), πολλαπλασιασμοί άρρητων αριθμών. 2. Ισχύει ότι Πολυπλοκότητα : O(log Ν), πολλαπλασιασμοί ΜΟΝΟ ακεραίων ú û ú ê ë ê + = 2 1 5 ), ( F f exp2 25 Fibonacci numbers 2 5 1 ˆ and 2 5 1 where, 5 ˆ 5 - = + = - = f f f f F ú û ú ê ë ê + = ø ö ç ç è æ = 2 1 5 ή 5 n F round F f f 2 1 2 1 2 1 1 2 - + = - + + - = F F F )F F (F F

Primality συνάρτηση prime() Είσοδος: Μη-αρνητικός ακέραιος Έξοδος: ΝΑΙ/ΟΧΙ αν ο είναι/δεν είναι πρώτος for i=2 to é ù : if Ν mod i= 0: return OXI return AI OΡΘΟΤΗΤΑ: προφανής ΠΟΛΥΠΛΟΚΟΤΗΤΑ: If =2k: 1 βήμα If =3k: 2 βήματα If is prime: é ù βήµατα??? Διαφορετική πολυπλοκότητα για διαφορετικές εισόδους ίδιου μήκους! 26

Primality συνάρτηση prime() Είσοδος: Μη-αρνητικός ακέραιος Έξοδος: ΝΑΙ/ΟΧΙ αν ο είναι/δεν είναι πρώτος for i=2 to é ù : if (Ν mod i)= 0: return OXI return AI ΠΟΛΥΠΛΟΚΟΤΗΤΑ: ΣΤΗ ΧΕΙΡΟΤΕΡΗ O(Ν 1/2 ), έλεγχος if σε ένα βήμα n= # bits = log => =2 n ΠΕΡΙΠΤΩΣΗ Άρα πολυπλοκότητα Ο(2 n/2 ) Εκθετική στο MHΚΟΣ ΕΙΣΟΔΟΥ = n Γίνεται καλύτερα? ΝΑΙ, Ο(log 6 Ν), ΑKS primality test, 2002 27

Πολυπλοκότητα Υπάρχουν πολλοί είσοδοι με το ίδιο μήκος εισόδου, έστω n Πόσα βήματα χρειάζεται ο αλγόριθμος για μία τέτοια είσοδο? Καλύτερη περίπτωση (Best-case complexity) Ο ελάχιστος αριθμός βημάτων για τις εισόδους με μήκος n Καθόλου χρήσιμη Χειρότερη περίπτωση (Worst-case complexity) Ο μέγιστος αριθμός βημάτων για τις εισόδους με μήκος n Άνω όριο στην πολυπλοκότητα του προβλήματος Αυτή θα χρησιμοποιούμε στο μάθημα Μέση περίπτωση (Average case complexity) Ο μέσος αριθμός βημάτων για τις εισόδους με μήκος n Εξαρτάται από την κατανομή πιθανότητας των εισόδων Πολύ χρήσιμη στην πράξη 28

Example: MAX συνάρτηση max(a[1..n]) Είσοδος: Πίνακας αριθµών Α[1..n] Έξοδος: H θέση του µέγιστου στοιχείου του Α max= A[1], position=1 for i=2 to n: if A[i]>max: max=a[i], position=i return position ΠΟΛΥΠΛΟΚΟΤΗΤΑ Αριθμός βημάτων Καλύτερη περίπτωση=χειρότερη περίπτωση=μέση περίπτωση= Ο(n) ΜΗΚΟΣ ΕΙΣΟΔΟΥ? log A[1]+log A[2]+ + log A[n] nm, όπου Μ=32/64 bits (μήκος λέξης) Άρα ΜΗΚΟΣ ΕΙΣΟΔΟΥ= Ο(n)! To n εδώ είναι ΠΛΗΘΟΣ ΔΕΔΟΜΕΝΩΝ ΌΧΙ ΤΙΜΗ ΔΕΔΟΜΕΝΟΥ 29

Example: MAX, # assignments συνάρτηση max(a[1..n]) Είσοδος: Πίνακας αριθµών Α[1..n] Έξοδος: H θέση του µέγιστου στοιχείου του Α max= A[1], position=1 for i=2 to n: if A[i]>max: max=a[i], position=i return position ΠΟΛΥΠΛΟΚΟΤΗΤΑ T(n) = # of assignments (*) (*) Καλύτερη περίπτωση: Χειρότερη περίπτωση: T(n) = 1 : O(1) T(n) = n : O(n) Μέση περίπτωση:? 30

Example: MAX, # assignments συνάρτηση max(a[1..n]) Είσοδος: Πίνακας αριθµών Α[1..n] Έξοδος: H θέση του µέγιστου στοιχείου του Α max= A[1], position=1 for i=2 to n: if A[i]>max: max=a[i], position=i (*) return position Μέση περίπτωση (Average case) n! πιθανές διατάξεις των n αριθμών: ισοπίθανες T i = 1,0 : assignment in the i th iteration Pr [assignment in the i th iteration] = Pr [ A[j] < A[i], "j<i ] = 1/i Pr [no assignment in the i th iteration] = Pr [ $ j<i : A[j] > A[i] ] = (i-1)/i n Expected value rule æ ö çe( x) = å p k x k : è k= 1 ø 1 i -1 1 E[ T i ] = 1 + 0 = i i i 31

Example: MAX, # assignments συνάρτηση max(a[1..n]) Είσοδος: Πίνακας αριθµών Α[1..n] Έξοδος: H θέση του µέγιστου στοιχείου του Α max= A[1], position=1 for i=2 to n: if A[i]>max: max=a[i], position=i return position Μέση περίπτωση (Average case) n! πιθανές διατάξεις των n αριθμών: ισοπίθανες T i = 1,0 : assignment in the i th iteration T(n) : total # of assignments E [ T( n) ] é Eê ë n i= 1 T ( n) n n ù 1 Ti ú = E[ Ti ] = = H n = û i= 1 i= 1 i = å å å = n å i= 1 T i (*) 1 E( T i ) = i O(log n) Γραμμικότητα Αναμενόμενης Τιμής (Linearity of Expectation) 32

Λογάριθμοι k = log b n Þ b k = n, log b n, log 2 n = log n, log e n = lnn log b n = log log a a n b : log 2 n = log log 10 10 n 2 = 3.322 log 10 n Þ log b n = O(log n) 33

Λογάριθμοι log : Η δύναμη που πρέπει να υψωθεί το 2 για να δώσει το Ν Πόσες φορές πρέπει να υποδιπλασιαστεί το Ν για να δώσει 1? é log ù Πλήθος των bit στη δυαδική μορφή του Ν? é log( +1) ù Bάθος ενός πλήρους δυαδικού δένδρου με Ν κόμβους? 1 1 1 1 O(log ) 2 3 H = + + +! + = ë log û 34

Αλγόριθμοι Τρείς κρίσιμες ερωτήσεις για κάθε αλγόριθμο για ένα πρόβλημα: ΕΙΝΑΙ ΣΩΣΤΟΣ? - ΟΡΘΟΤΗΤΑ Δίνει τη σωστή απάντηση για κάθε είσοδο? Τερματίζει? ΠΟΣΟ ΧΡΟΝΟ/ΧΩΡΟ χρειάζεται? - ΠΟΛΥΠΛΟΚΟΤΗΤΑ Χρόνος ~ # βημάτων, Χώρος ~ # θέσεων μνήμης Συνάρτηση T(n) του μήκους της εισόδου n ( # bits) Ρυθμός αύξησης της T(n) όταν αυξάνεται το n (n ) Ασυμπτωτική συμπεριφορά της T(n) otations O, Ω, Θ, ο, ω,» ΜΠΟΡΟΥΜΕ ΝΑ ΚΑΝΟΥΜΕ ΚΑΛΥΤΕΡΑ? 35

Μάθημα Εισαγωγή - Ασυμπτωτικοί συμβολισμοί Τεχνικές σχεδίασης αλγορίθμων Διαίρει και Βασίλευε (Divide and Conquer) Άπληστοι αλγόριθμοι (Greedy algorithms) Δυναμικός Προγραμματισμός (Dynamic Programming) Εφαρμογή: Αλγόριθμοι γράφων Δύσκολα προβλήματα και ΝΡ-πληρότητα Στόχος: Να μάθετε να σκέπτεστε αλγοριθμικά (πρόβλημα-αλγόριθμος-ορθότητα-πολυπλοκότητα) Με πολλά παραδείγματα (μάθημα, φροντιστήριο, ασκήσεις) Προσωπική εξάσκηση Δεν υπάρχει διαχωρισμός θεωρίας ασκήσεων ΔΕΝ ΒΟΗΘΑ ΚΑΘΟΛΟΥ Η ΑΠΟΣΤΗΘΙΣΗ 36

Φροντιστήρια Ασκήσεις - Βοηθοί Δύο Τμήματα φροντιστηρίου Γιώργος Μπίρμπας (Υ.Δ.), Τετάρτη 1-3, Α24 Λίβια Χατζηελευθερίου (Υ.Δ.), Τετάρτη 5-7, Α23 Άλλοι βοηθοί Γιώργος Αμανατίδης (Υ.Δ.)? (Μεταπτυχιακός φοιτητής)? (Μεταπτυχιακός φοιτητής) 37

Βιβλία [DPV] S. Dasgupta, C.H. Papadimitriou, U.V. Vazirani : Algorithms http://www.cs.berkeley.edu/~vazirani/algorithms/ [CLRS] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein: Introduction to Algorithms [KT] J. Kleinberg, E.Tardos: Algorithm Design και WWW 38

Βαθμολογία Πρόοδοι 3 πρόοδοι: την ~5 η, 9 η και 11 η εβδομάδα του μαθήματος Διάρκεια 90 Προαιρετικές 12% +12%+12% του τελικού βαθμού (μόνο βελτίωση) Ασκήσεις? 3 +1 σειρές ασκήσεων Προαιρετικές 5% +5%+5% του τελικού βαθμού (μόνο βελτίωση) Τελική εξέταση Βαθμός τουλάχιστον 35/100 39

Οι αλγόριθμοι είναι δημιουργικό μάθημα! Καλό εξάμηνο! 40