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

Σχετικά έγγραφα
Τηλ , Fax: , URL:

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

ΗΥ240: οµές εδοµένων. ιδάσκουσα: Παναγιώτα Φατούρου ΗΥ240 - Παναγιώτα Φατούρου 2

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

ΗΥ240: οµές εδοµένων

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

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

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

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

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

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

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

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

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

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

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

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

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

ρυθιμός αύξησης συναρτήσεων

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

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

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

Ενότητα 1 Εισαγωγή. ΗΥ240: Δοµές Δεδοµένων. Διδάσκουσα: Παναγιώτα Φατούρου

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

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

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

Ασκήσεις (2) Άσκηση 1

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

Δομές Δεδομένων (Data Structures)

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις

Μαθηµατικά για Πληροφορική

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

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

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

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

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

Διακριτά Μαθηματικά. Γιάννης Εμίρης. Τμήμα Πληροφορικής & Τηλεπικοινωνιών ΕΚΠΑ. Οκτώβριος

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

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

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

Δοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

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

5.1. Προσδοκώμενα αποτελέσματα

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

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

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

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

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

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

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

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

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

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

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

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

Κεφάλαιο 2 Ανάλυση Αλγορίθμων

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

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ

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

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

Θεωρητικό Υπόβαθρο. Περιεχόμενα Κεφαλαίου

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

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

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

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

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

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

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

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

Κεφάλαιο 2. Βασικά στοιχεία ανάλυσης αλγορίθμων. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

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

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Λυσεις Ασκησεων - Φυλλαδιο 1

Transcript:

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

ΕΝΟΤΗΤΑ 1 ΕΙΣΑΓΩΓΗ 1

εδοµένα Σύνολο από πληροφορίες που πρέπει να αποθηκευτούν σε έναν υπολογιστή Υπολογιστικό Μοντέλο ένας επεξεργαστής και µεγάλος χώρος µνήµης κάθε θέση µνήµης έχει µια αριθµητική διεύθυνση (διεύθυνση µνήµης) η µνήµη είναι τυχαίας προσπέλασης, δηλ., η πρόσβαση σε οποιαδήποτε θέση µνήµης (ανεξάρτητα από τη διεύθυνσή της) γίνεται µε την ίδια ταχύτητα 1

Τύποι εδοµένων Η πληροφορία κωδικοποιείται µε bits. Οι τύποι δεδοµένων µάς επιτρέπουν να ερµηνεύσουµε σωστά τα bits. Τύποι εδοµένων του υλικού αριθµοί, χαρακτήρες, στο υλικό Ιδεατοί Τύποι εδοµένων τύποι δεδοµένων σε επίπεδο γλώσσας προγραµµατισµού π.χ., boolean, packed array, string Αφηρηµένοι Τύποι εδοµένων τύποι δεδοµένων που ορίζονται από τον προγραµµατιστή (ανώτερου επιπέδου) Αντικειµενοστρεφής Προγραµµατισµός 2

Αφηρηµένος Τύπος εδοµένων αποτελείται από δύο µέρη: ένα ή περισσότερα πεδία ένα σύνολο λειτουργιών πάνω σε αυτά τα πεδία Παράδειγµα Αφηρηµένος τύπος: Σύνολο µε στοιχεία κάποιου τύπου (έστω key) Πεδία συλλογή στοιχείων τύπου key πλήθος στοιχείων συλλογής Λειτουργίες εισαγωγή στοιχείου (τύπου key) διαγραφή στοιχείου πληθάριθµος συνόλου ανήκει (στοιχείο σε σύνολο) ένωση συνόλων τοµή συνόλων 3

οµή εδοµένων καθορίζει τον τρόπο αποθήκευσης και επεξεργασίας των δεδοµένων Άρα, µια δοµή δεδοµένων περιλαµβάνει: ένα σύνολο αποθηκευµένων δεδοµένων µια αναπαράσταση της δοµής σε χαµηλότερο φυσικό επίπεδο ένα σύνολο από λειτουργίες που µπορούν να εκτελεστούν ένα σύνολο από αλγορίθµους, έναν για κάθε λειτουργία Βασικές λειτουργίες Προσπέλαση Εισαγωγή ιαγραφή Αναζήτηση Ταξινόµηση Αντιγραφή Συνένωση ιαχωρισµός Ποικίλες οµές εδοµένων πίνακες, λίστες, δέντρα, σωροί, γράφοι π.χ., τηλεφωνικός κατάλογος 4

Αλγόριθµοι Abu Ja far Mohammed ibn Musa al Kowarizmi (825 µ.χ.) Αλγόριθµος είναι ένα σύνολο εντολών οι οποίες είναι πεπερασµένες στον αριθµό, είναι αυστηρά καθορισµένες και εκτελέσιµες σε πεπερασµένο χρόνο, επιλύουν το πρόβληµα που µελετάµε. Άρα, ένας αλγόριθµος πρέπει να είναι σαφώς καθορισµένος να ολοκληρώνεται σε πεπερασµένο χρόνο να είναι εκτελέσιµος και αποτελεσµατικός Επίσης, ένας αλγόριθµος χαρακτηρίζεται από την είσοδό του (input) δεδοµένα προς επεξεργασία την έξοδό του (output) Πρόγραµµα αποτελέσµατα του αλγορίθµου υλοποίηση αλγορίθµου σε κάποια γλώσσα προγραµµατισµού 5

Οι αλγόριθµοι µπορούν να περιγραφούν σε φυσική γλώσσα µε διαγράµµατα ροής µε ψευδο-κώδικα µε κώδικα σε κάποια γλώσσα προγραµ- µατισµού Wirth: «Αλγόριθµοι + οµές εδοµένων = Προγράµµατα» Niklaus Emil Wirth (ηµ.γεν. 15 Φεβρουαρίου 1934): Ελβετός επιστήµονας της πληροφορικής, γνωστός κυρίως από τη σχεδίαση διαφόρων γλωσσών προγραµµατισµού, όπως π.χ. η Pascal, και από την πρωτοποριακή εργασία του στην τεχνολογία λογισµικού. Το 1984 του απονεµήθηκε το Turing Award για την ανάπτυξη πρωτοποριακών γλωσσών προγραµµατισµού. 6

Παράδειγµα 1: Αναζήτηση ενός στοιχείου x σε έναν ταξινοµηµένο πίνακα Α[1..n] Αλγόριθµος 1 Ξεκινώντας από το 1ο στοιχείο του πίνακα Α, έλεγξε κάθε στοιχείο του Α εάν είναι ίσο µε x µέχρι ή να βρεθεί το x ή να εξεταστούν όλα τα στοιχεία Αλγόριθµος 2 Ξεκινώντας από το 1ο στοιχείο του πίνακα Α, έλεγξε κάθε στοιχείο του Α εάν είναι ίσο µε x µέχρι ή να βρεθεί το x ή να βρεθεί κάποιο στοιχείο > x ή να εξεταστούν όλα τα στοιχεία Αλγόριθµος 3 b_search(x,1,n) b_search(x, L, R) /* υαδική Αναζήτηση*/ Αν L > R return( -1 ); /* δεν βρέθηκε */ I = (L+R)/2 ; t A[ I ]; Αν t = x return( I ); /* x = Α[Ι] */ Αν x < t /* επανάλαβε στο 1ο µισό */ return(b_search(x, L, I-1) ); Αν x > t /* επανάλαβε στο 2ο µισό */ return(b_search(x, I+1, R) ); 7

Παράδειγµα 2: Ύψωση ενός αριθµού x σε µια ακέραια δύναµη n > 0 Αλγόριθµος power1 (ψευδο-κώδικας) double power1(double x, int n) int j = 0; double y = 1; while (j < n) y = y*x; j = j+1; return y; Υλοποίηση του Αλγ. power1 στη γλώσσα C double power1(double x, int n) { int j; double y = 1.0; for (j = n; --j >= 0; ) y = y*x; } return y; 8

Κριτήρια Επιλογής Αλγορίθµων ταχύτητα απαιτούµενος χώρος µνήµης ευκολία προγραµµατισµού γενικότητα Η αποδοτικότητα ενός αλγόριθµου καθορίζεται κυρίως από την ταχύτητα και τον απαιτούµενο χώρο µνήµης. Είναι η Power1 ο πιο αποδοτικός αλγόριθµος για το πρόβληµα µας? Αλγόριθµος power2 double power2(double x, int n) double y; 1. if (n == 1) return x; 2. y = power2(x, n/2 ); 3. if n είναι άρτιος αριθµός 4. return y*y; 5. else /* περιττός αριθµός */ 6. return x*y*y; 9

Μαθηµατικό Υπόβαθρο Μονοτονία Συναρτήσεων Ακέραια Μέρη πραγµατικών αριθµών x, x Πολυώνυµα Πολυωνυµικές Συναρτήσεις f(x) = a n x n + a n-1 x n-1 + + a 1 x + a 0 Λογάριθµοι & Εκθέτες lg n = log 2 n ln n = log e n lg k n = (lg n) k lg lg n = lg(lg n) Αλλαγή βάσης: log a x = (log a b) (log b x) Παραγοντικά n! Άθροισµα όρων γεωµετρικής ή αριθµητικής προόδου 10

Ορθότητα Αλγορίθµων Χρήσιµο εργαλείο: Μαθηµατική Επαγωγή Παράδειγµα1 (Βασική Μέθοδος Επαγωγής) Ορθότητα Αλγορίθµου Power1 double power1(double x, int n) int j = 0; double y = 1; while (j < n) y = y*x; j = j+1; return y; Επαγωγή στο πλήθος επαναλήψεων του βρόχου. Αρκεί να δείξουµε ότι y k = x k όπου y k ισούται µε την τιµή της µεταβλητής y κατά την ολοκλήρωση της k-οστής επανάληψης του βρόχου (k 1). 11

Βάση επαγωγής k = 1. Αρχικά, y = 1 και η επανάληψη του βρόχου δίνει y 1 = y*x = x 1, όπως θέλουµε. Επαγωγική Υπόθεση Έστω ότι για κάποιο t (t 1), y t = x t. Επαγωγικό Βήµα Θα δείξουµε την πρόταση για k = t+1 δηλαδή, ότι: y t+1 = x t+1. Από αλγόριθµο: Aπό επαγωγική υπόθεση: y t+1 = y t * x y t = x t Άρα, y t+1 = x t+1, όπως θέλουµε. Άρα y k = x k για κάθε k 1. 12

Παράδειγµα 2 (Ισχυρή Εκδοχή Επαγωγής) Αιγυπτιακός Πολλαπλασιασµός Έστω: { 0, αν y = 0 m(x,y)= m(x+x, y/2), αν y άρτιος & y 0 x + m(x, y-1), διαφορετικά Θα δείξουµε ότι m(x,y) = x*y, ακέραιο x,y 0 Απόδειξη: Επαγωγή στο y 0. Βάση της επαγωγής Αν y = 0, m(x,y) = 0, αλλά και x*y = 0. Ισχύει. Επαγωγική Υπόθεση Υποθέτουµε ότι m(x,y) = x*y, y: 0 y t. Επαγωγικό Βήµα Θα δείξουµε ότι m(x,t+1) = x*(t+1). t+1 περιττός: m(x,t+1) = x + m(x,(t+1)-1). Eπαγ. Υπόθ. (t t): m(x,t) = x*t Άρα: m(x,t+1) = x + x*t = x*(t+1). t+1 άρτιος: m(x,t+1) = m(x+x, (t+1)/2). Eπαγ.Υπόθ.((t+1)/2 t): m(x+x,(t+1)/2) = (x+x)*(t+1)/2 Άρα: m(x,t+1) = (x+x) * (t+1)/2 = x*(t+1). Άρα: m(x,y) = x*y, ακέραιο x, y 0 13

Ανάλυση Αλγορίθµων Μας ενδιαφέρει να εκτιµηθεί ο χρόνος εκτέλεσης δηλ., το πλήθος βασικών βηµάτων/εντολών που εκτελούνται πολυπλοκότητα χρόνου ο απαιτούµενος χώρος µνήµης πολυπλοκότητα χώρου Εµπειρικός τρόπος µέτρησης της επίδοσης Θετικά : απλότητα Αρνητικά : αφορά το συγκεκριµένο σύνολο δεδοµένων στο οποίο εφαρµόζεται ο αλγόριθµος ο χρόνος εκτέλεσης εξαρτάται από το υλικό, τη γλώσσα προγραµµατισµού και τον µεταφραστή, αλλά και από το πόσο ικανός είναι ο προγραµµατιστής 14

Θεωρητικός τρόπος µέτρησης της επίδοσης εκφράζεται ως συνάρτηση του µεγέθους του προβλήµατος Παράδειγµα: Σε ένα πρόβληµα αναζήτησης ενός αριθµού x σε έναν πίνακα, το µέγεθος του προβλήµατος είναι: 1 + το πλήθος των στοιχείων του πίνακα Η πολυπλοκότητα χρόνου/χώρου επικεντρώνεται στην τάξη µεγέθους (αγνοώντας σταθερούς συντελεστές). στη χειρότερη περίπτωση (worst case) ο µέγιστος χρόνος εκτέλεσης για κάθε είσοδο µεγέθους n (και είναι συνάρτηση του n) στη µέση περίπτωση (average case) 15

Ανάλυση Αλγορίθµων Σειριακή Αναζήτηση σε Πίνακα Είσοδος: αριθµός x και ένας πίνακας Α[0..n-1] Έξοδος: η θέση του x στον πίνακα A, αν το x βρίσκεται στον πίνακα A, και 1 διαφορετικά. int s_search(double x, double A[n]) { int i; 1. i = 0; 2. while (i < n) 3. if (A[i] == x) 4. break; 5. else i = i+1; 6. if (i < n) 7. return i; /* το x βρίσκεται στο A[i] */ 8. return 1; /* το x δεν βρέθηκε */ } Ποιος είναι ο καλύτερος χρόνος εκτέλεσης; Ποιος είναι ο χειρότερος χρόνος εκτέλεσης; 16

Τάξη Πολυπλοκότητας Χρόνου Μας ενδιαφέρει µόνο ο όρος µέγιστης τάξης στη συνάρτηση της πολυπλοκότητας χρόνου: Από το άθροισµα an+b µας ενδιαφέρει µόνο ο κυρίαρχος όρος an, αφού ο άλλος όρος δεν είναι σηµαντικός για µεγάλες τιµές του n. Αγνοούµε επίσης τον συντελεστή a, αφού οι σταθεροί παράγοντες είναι λιγότερο σηµαντικοί για µεγάλες τιµές του n. Συνεπώς: Η πολυπλοκότητα χρόνου της s_search() είναι γραµµικής τάξης (Ο(n)). Η µελέτη της πολυπλοκότητας για πολύ µεγάλα n (όριο συνάρτησης πολυπλοκότητας όταν το n τείνει στο άπειρο) ονοµάζεται ασυµπτωτική µελέτη. Συνήθως, ένας αλγόριθµος που είναι ασυµπτωτικά ο πιο αποτελεσµατικός, είναι η καλύτερη επιλογή για όλες εκτός από πολύ µικρές εισόδους. 17

Ανάλυση Αλγορίθµων Συµβολισµός Ο Έστω f(n) και g(n) δύο συναρτήσεις. Η f(n) είναι Ο(g(n)), ή f(n) = O(g(n)), αν υπάρχουν θετική πραγµατική σταθερά c και ακέραιος n 0 0: για κάθε n n 0 να ισχύει: 0 f(n) cg(n) Παράδειγµα Έστω f(n) = an 2 +bn, όπου a,b θετικές σταθερές. Ισχύει f(n) = O(n 2 ); Ψάχνουµε για c & n 0 τ.ω. an 2 + bn cn 2, για κάθε n n 0 cn 2 an 2 + bn (c-a)n 2 bn 0 n [(c-a)n b] 0 (c-a)n - b 0 Αν επιλέξουµε c = a+1 και οποιοδήποτε n 0 b, η ανισότητα (c-a)n - b 0 ισχύει. Εναλλακτικά, εάν επιλέξουµε c = 2a και οποιοδήποτε n 0 b/α, η ανισότητα (c-a)n - b 0 ισχύει και πάλι. 18

Συµβολισµός Ω Έστω f(n) και g(n) δύο συναρτήσεις. Η f(n) είναι Ω(g(n)), ή f(n) = Ω(g(n)), αν υπάρχουν θετική πραγµατική σταθερά c και ακέραιος n 0 0: για κάθε n n 0 να ισχύει: 0 cg(n) f(n) Παράδειγµα Θα αποδείξουµε ότι f(n) = an 2 +bn = Ω(n). an 2 + bn cn an 2 + (b-c)n 0 an + b-c 0. Aν επιλέξουµε c = b ισχύει ότι an 0, για κάθε n 0. Άρα για c = b & n 0 = 0, ισχύει ότι f(n) cn για κάθε n n 0. Εναλλακτικά, εάν επιλέξουµε c = 2b και οποιοδήποτε n 0 b/α, η ανισότητα an + b-c 0 ισχύει και πάλι. 19

Συµβολισµός Θ Έστω f(n) και g(n) δύο συναρτήσεις. Η f(n) είναι Θ(g(n)), ή f(n) = Θ(g(n)), αν f(n) = O(g(n)) και f(n) = Ω(g(n)). Παράδειγµα Για να δείξουµε ότι f(n) = an 2 +bn = Θ(n 2 ), αρκεί να αποδείξουµε ότι f(n) = an 2 +bn = Ω(n 2 ) (ήδη δείξαµε ότι f(n) = Ο(n 2 )). Ψάχνουµε για c > 0 & n 0 0, τ.ω. an 2 + bn cn 2, για κάθε n n 0 cn 2 an 2 + bn (c-a)n 2 bn 0 n [(c-a)n b] 0 (c-a)n -b 0. Aν επιλέξουµε c = a/2 > 0 ισχύει ότι (c-a)n - b = -an/2 - b 0, για κάθε n 0. Άρα για c = a/2 & n 0 = 0, ισχύει ότι f(n) c n 2 για κάθε n n 0. 20

Τάξη Πολυπλοκότητας Συµβολισµοί Ο, Ω, Θ Σχηµατικά 21

Συνήθεις Κατηγορίες Πολυπλοκότητας Χρόνου Θ(1): σταθερή πολυπλοκότητα Θ(logn): λογαριθµική πολυπλοκότητα Θ(n): γραµµική πολυπλοκότητα Θ(n logn): πολυπλοκότητα n log n (συνήθης πολυπλοκότητα βέλτιστων αλγορίθµων ταξινόµησης) Θ(n 2 ): τετραγωνική πολυπλοκότητα Θ(n 3 ): κυβική πολυπλοκότητα Θ(n k ), για κάποιο συγκεκριµένο ακέραιο k: πολυωνυµική πολυπλοκότητα Θ(2 n ): εκθετική πολυπλοκότητα 22

Ιδιότητες Ο, Ω, Θ Ανακλαστική Ιδιότητα f(n) = Ο(f(n)) f(n) = Ω(f(n)) f(n) = Θ(f(n)) Μεταβατική Ιδιότητα f(n)=ο(g(n)) & g(n)=ο(h(n)) f(n) = Ο(h(n)) f(n)=ω(g(n)) & g(n)=ω(h(n)) f(n) = Ω(h(n)) f(n)=θ(g(n)) & g(n)=θ(h(n)) f(n) = Θ(h(n)) Συµµετρική Ιδιότητα f(n) = Θ(g(n)) αν και µόνο αν g(n) = Θ(f(n)) Αντίστροφη Συµµετρική Ιδιότητα f(n) = O(g(n)) αν και µόνο αν g(n) = Ω(f(n)) Καλή άσκηση για το σπίτι Αποδείξτε τις παραπάνω ιδιότητες. ----------------------------------------------------------------------------------------- 23

Απλές Αναδροµικές Σχέσεις Παράδειγµα 1. Έστω: f(1) = 1 και f(n) = f(n-1) + n αν n > 1. O υπολογισµός ενός µη-αναδροµικού τύπου για την f(n) είναι απλός: f(n) = f(n-1) + n = f(n-2) + (n-1) + n =... = f(1) + 2 +... + (n-1) + n = 1 + 2 +... + (n-1) + n = (n+1) n / 2 Παράδειγµα 2. Έστω ότι f(0) = 1 και f(n) = 2 f(n-1) για n > 0. Υπολογισµός µη-αναδροµικού τύπου για f(n): f(n) = 2 f(n-1) = 2 2 f(n-2) =... = 2 n f(0) = 2 n. ----------------------------------------------------------------------------------------- 24

Αναδροµές τύπου «ιαίρει και Βασίλευε» υαδική Αναζήτηση Κάθε µια από τις αναδροµικές κλήσεις εξετάζει περίπου το µισό πίνακα. Αν T(n) : µέγιστος δυνατός χρόνος εκτέλεσης σε πίνακα µε n στοιχεία, τότε όπου c σταθερά. Επίσης, έστω T(1) = d. T(n) = T(n/2) + c Αν n = 2 k, τότε Τ(2 k ) = c + T(2 k-1 ) = c + c + T(2 k-2 ) = 2 c + T(2 k-2 ) =... = k c + T(2 0 ) = k c + T(1) = k c + d. Αφού n = 2 k, άρα k = log(n) και T(n) = c log(n) + d = Ο(log(n)) ----------------------------------------------------------------------------------------- 25