Αλγόριθμοι και πολυπλοκότητα Ανάλυση αλγορίθμων

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

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

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

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

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

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

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

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

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

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

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

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

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

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

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 6: Αποτελεσματικότητα αλγορίθμων

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

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

Αλγόριθμοι και πολυπλοκότητα Η Άπληστη Μέθοδος

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

Ορισμός κανονικής τ.μ.

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

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

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

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

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

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

Δομημένος Προγραμματισμός

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

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

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

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

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

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

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

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

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

Πληροφορική ΙΙ Θεματική Ενότητα 5

Δομημένος Προγραμματισμός

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 1: Εκτιμητές και Ιδιότητες. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

Πληροφορική ΙΙ Ενότητα 1

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Ανάλυση αλγορίθμων Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών

Aνάλυση Αλγορίθμων Είσοδος Αλγόριθμος Έξοδος Ένας αλγόριθμος είναι μια βήμα προς βήμα διαδικασία επίλυσης ενός προβλήματος Ανάλυση Αλγορίθμων 1

Xρόνος τρεξίματος ( 1.1) Οι περισσότεροι αλγόριθμοι μετασχηματίζουν αντικέιμενα εισόδου σε αντικέιμενα εξόδου Ο χρόνος τρεξίματος ενός αλγορίθμοι συνήθως μεγαλώνει με το μέγεθος της εισόδου Ο χρόνος μέσης περίπτωσης είναι συνήθως δύσκολος να υπολογιστεί Επικεντρωνόμαστε στο χρόνο χείριστης περίπτωσης. Ευκολότερο στην ανάλυση Κρίσιμο σε εφαρμογές όπως παιχνίδια, ρομποτική, οικονομικά Running Time 120 100 80 60 40 20 0 best case average case worst case 1000 2000 3000 4000 Input Size Ανάλυση Αλγορίθμων 2

( 1.6 ( μελέτη Πειραματική Γράψε ένα πρόγραμμα που να υλοποιεί έαν αλγόριθμο Τρέξε το πρόγραμμα με εισόδους διαφόρων μεγεθών και συνθέσεων Χρησιμοποίησε μια μέθοδο όπως η System.currentTimeMillis() για μία ακριβή μέτρηση του χρόνου τρεξίματος Κάνε το γράφημα των αποτελεσμάτων Time (ms) 9000 8000 7000 6000 5000 4000 3000 2000 1000 0 0 50 100 Input Size Ανάλυση Αλγορίθμων 3

Περιορισμοί των πειραμάτων Πρέπει να υλοποιηθεί ο αλγόριθμος, κάτι που συχνά είναι δύσκολο Τα αποτελέσματα μπορεί να μην είναι ενδεικτικά του χρόνου τρεξίματος σε άλλες εισόδους που δεν συμπεριελήφθησαν στο πείραμα Δύο αλγόριθμοι μπορούν να συγκριθούν μόνο σε ίδιο περιβάλλον υλικού και λογισμικού (hardware/software) Ανάλυση Αλγορίθμων 4

Θεωρητική Ανάλυση Χρησιμοποιέι μια high-level περιγραφή του αλγορίθμου αντί για υλοποίηση Εκφράζει το χρόνο τρεξίματος σαν συνάρτηση του μεγέθους της εισόδου Συνυπολογίζει όλες τις πιθανές εισόδους Μας επιτρέπει να υπολογίσουμε την ταχύτητα ενός αλγορίθμου ανεξάρτητα από το περιβάλλον υλικού/λογισμικού Ανάλυση Αλγορίθμων 5

( Ψευδοκώδικας( 1.1 High-level περιγραφή αλγορίθμου Πιοδομημένοςαποένα Αγγλικό ή Ελληνικό κείμενο. Λιγότερο λεπτομερής απότοπρόγραμμα Προτιμώμενη σημειογραφία για την περιγραφή αλγορίθμων Κρύβει προβλήματα σχεδιασμού προγραμμάτων Παράδειγμα: Εύρεση του μεγίστου στοιχείου ενός πίνακα ( n Algorithm arraymax(a, Input array A of n integers Output maximum element of A currentmax A[0] for i 1 to n 1 do if A[i] > currentmax then currentmax A[i] return currentmax Ανάλυση Αλγορίθμων 6

Λεπτομέρειες ψευδοκώδικα Έλεγχος ροής if then [else ] while do repeat until for do Indentation replaces braces Δήλωση μεθόδου ([ arg Algorithm method (arg [, Input Output Κλήση μεθόδου ([ arg var.method (arg [, Επιστρεφόμενη τιμή return expression Εκφράσεις Ανάθεση ( Java (όπως το = στην = Έλεγχος ισότητας ( Java (όπως το == στην n 2 Εκθέτες και μαθηματική τυποποίηση επιτρέπονται Ανάλυση Αλγορίθμων 7

Το μοντέλο Random Access Machine (RAM) A CPU Μία δυνητικά απερόριστη τράπεζα από κελιά μνήμης, κάθε ένα από τα οποία μπορεί να κρατήσει έναν αυθαίρετο αριθμό ή χαρακτήρα 0 12 Τα κελιά μνήμης είναι αριθμημένα και η πρόσβαση οποιουδήποτε από αυτά παίρνει μοναδιαίο χρόνο Ανάλυση Αλγορίθμων 8

Βασικές λειτουργίες Βασικοι υπολογισμοί που εκτελεί ένας αλγόριθμος Αναγνωρίσιμοι σε ψευδοκώδικα Ανεξάρτητοι από τη γλώσσα προγραμματισμού Ο ακριβής ορισμός δεν είναι σημαντικός Θεωρείται ότι παίρουν σταθερό χρόνο στο μοντέλο RAM Παραδείγματα: Υπολογισμός μιας έκφρασης Ανάθεση μιας τιμής σε μια μεταβλητή Αναφορά σε στοιχείο ενός πίνακα Κλήση μιας μεθόδου Επιστροφή από μια μέθοδο Ανάλυση Αλγορίθμων 9

Μέτρηση Βασικών ( 1.1 ) Λειτουργιών Παρατηρώντας τον ψευδοκώδικα, μπορούμε να καθορίσουμε ένα μέγιστο αριθμό βασικών λειτουργιών που εκτελούνται από έναν αλγόριθμο, σαν συνάρτηση του μεγέθους της εισόδου ( n Algorithm arraymax(a, # operations currentmax A[0] 2 for i 1 to n 1 do 2 + n if A[i] > currentmax then ( 1 2(n currentmax A[i] ( 1 2(n { increment counter i } ( 1 2(n return currentmax 1 Total 7n 1 Ανάλυση Αλγορίθμων 10

Εκτίμηση χρόνου τρεξίματος ΟαλγόριθμοςarrayMax εκτελεί 7n 1 βασικές λειτουργίες στη χειρότερη περίπτωση. Ορίζουμε: a = Χρόνος που χρειάζεται η πιο γρήγορη βασική λειτουργία b = Χρόνος που χρειάζεται η αργότερη βασική λειτουργία Έστω T(n) ο χρόνος χείριστης περίπτωσης του arraymax. Τότε : ( 1 b(7n a (7n 1) T(n) O χρόνος τρεξίματος T(n) είναι φραγμένος από δύο γραμμικές συναρτήσεις Ανάλυση Αλγορίθμων 11

Ρυθμός Ανάπτυξης του Χρόνου Τρεξίματος Η αλλαγή του υλικού/λογισμικού περιβάλλοντος Επηρεάζει τον T(n) κατα ένα σταθερό παράγοντα,αλλά Δεν αλλάζει το ρυθμό ανάπτυξηςτου ( T(n Ο γραμμικός ρυθμός ανάπτυξης του χρόνου τρεξίματος T(n) είναι μία εγγενής ιδιότητα του αλγορίθμου arraymax Ανάλυση Αλγορίθμων 12

Ρυθμοί Ανάπτυξης Ρυθμοί Ανάπτυξης Συναρτήσεων 1E+30 1E+25 Γραμμικός n 1E+20 Τετραγωνικός n 2 Κυβικός n 3 T(n) 1E+15 1E+10 1E+5 Cubic Quadratic Linear Σε ένα log-log διάγραμμα, η κλίση της ευθείας αντιστοιχεί στο ρυθμό ανάπτυξης της συνάρτησης 1E+0 1E+0 1E+4 1E+8 1E+12 n Ανάλυση Αλγορίθμων 13

Σταθεροί Παράγοντες Ορυθμός ανάπτυξης δεν επηρεάζεται από σταθερούς παράγοντες όρους κατώτερης τάξης Παραδείγματα 10 2 n + 10 5 είναι μια γραμμική συνάρτηση 10 5 n 2 + 10 8 n είναι μια ττραγωνική συνάρτηση T(n) 1E+28 1E+24 1E+20 1E+16 1E+12 1E+8 1E+4 1E+0 1E+0 1E+3 1E+6 1E+9 1E+12 n Column E Column D Column C Column B Ανάλυση Αλγορίθμων 14

( 1.2 ) Συμβολισμός Big-Oh Δοθείσων συναρτήσεων f(n) και g(n),λέμε ότι η f(n) είναι O(g(n)) αν υπάρχουν θετικές σταθερές c και n 0 τέτοιες ώστε f(n) cg(n) για n n 0 Παράδειγμα: Η 2n + 10 ( O(n είναι 2n + 10 cn (c 2) n 10 ( 2 10/(c n Διάλεξε c = 3 και n 0 = 10 10,000 1,000 100 10 1 1 10 100 1,000 n Column D Column C Column B Ανάλυση Αλγορίθμων 15

Big-Oh Παράδειγμα Παράδειγμα: η συνάρτηση n 2 δεν ( O(n είναι n 2 cn n c Η παραπάνω εξίσωση δεν μπορεί να ικανοποιηθεί αφού το c πρέπει να είναι σταθερά 1,000,000 100,000 10,000 1,000 100 10 1 1 10 100 1,000 n Column E Column D Column C Column B Ανάλυση Αλγορίθμων 16

Και άλλα Big-Oh Παραδείγματα 7n-2 ( O(n 7n-2 είναι Χρειάζεται c > 0 και n 0 1 τέτοια ώστε 7n-2 c n for n n 0 Αυτό ισχύει για c = 7 και n 0 = 1 3n 3 + 20n 2 + 5 ( 3 3n 3 + 20n 2 + 5 είναι O(n Χρειάζεται c > 0 και n 0 1 τέτοια ώστε 3n 3 + 20n 2 + 5 c n 3 για n n 0 Αυτό ισχύει για c = 4 και n 0 = 21 3 log n + log log n ( n 3 log n + log log n είναι O(log Χρειάζεται c > 0 και n 0 1 τέτοια ώστε 3 log n + log log n c log n for n n 0 Αυτό ισχύει για c = 4 και n 0 = 2 Ανάλυση Αλγορίθμων 17

Big-Oh and Growth Rate ΟσυμβολισμόςΒig-Oh δίνει ένα άνω όριο για το ρυθμό ανάπτυξης μίας συνάρτησης Ηδήλωση η f(n) είναι O(g(n)) σημαίνει ότι ο ρυθμός ανάπτυξης της f(n) δεν είναι μεγαλύτερος από το ρυθμό ( g(n ανάπτυξης της Μπορούμε ναχρησιμοποιήσουμε το συμβολισμό big-oh για να ιεραρχήσουμε συναρτήσεις ανάλογα με το ρυθμό ανάπτυξής τους (( O(f(n g(n) is (( O(g(n f(n) is g(n) grows more f(n) grows more Same growth Yes No Yes No Yes Yes Ανάλυση Αλγορίθμων 18

Κανόνες Big-Oh Αν η f(n) είναι πολυώνυμο βαθμού d, τότε η f(n) είναι O(n d ), δηλ, 1. Βγάζουμε τους όρους κατώτερης τάξης 2. Βγάζουμε τους σταθερούς όρους Χρησιμοποιούμε την μικρότερη δυνατή κλάση συναρτήσεων Λέμε η 2n είναι O(n) αντί για η 2n είναι O(n 2 ) Χρησιμοποιούμε την απλούστερη έκφραση της κλάσης Λέμε η 3n + 5 είναι O(n) αντί για η 3n + 5 είναι O(3n) Ανάλυση Αλγορίθμων 19

Ασυμπτωτική Ανάλυση Αλγορίθμου Η ασυμπτωτική ανάλυση αλγορίθμου καθορίζει τον χρόνο τρεξίματος σε συμβολισμό Big -Oh Εκτέλεση της ασυμπτωτικής ανάλυσης Βρίσκουμε το πλήθος βασικών λειτουργιών που εκτελούνται στη χείριστη περίπτωση σαν συνάρτηση του μεγέθους εισόδου Εκφράζουμε αυτή τη συνάρτηση με συμβολισμό Βig-Oh Παράδειγμα: Προσδιορίζουμε ότι ο arraymax εκτελεί το πολύ 7n 1 primitive λειτουργίες Λέμε ότι ο αλγόριθμος arraymax τρέχει σε O(n) χρόνο Αφού οι σταθεροί παράγοντες και οι όροι κατώτερης τάξης δεν συνυπολογίζονται, μπορούμε να τους αφαιρέσουμε χωρίς να μετρήσουμε τις βασικές λειτουργίες τους Ανάλυση Αλγορίθμων 20

Υπολογισμός Μέσων Όρων Προθεμάτων Παρουσιάζουμε την ασυμπτωτική ανάλυση με δυο αλγορίθμους για μέσους όρους προθεμάτων Ο i-οστός μέσος όρος προθεμάτων ενός πίνακα X είναι ο μέσος όρος των πρώτων (i + 1) στοιχείων του X: ( X[i])/(i+1 A[i] = (X[0] + X[1] + + Ο υπολογισμός του πίνακα A των μέσωνόρωνπροθεμάτωνενός πίνακαy X έχει εφαρμογές στην οικονομική ανάλυση 35 30 25 20 15 10 Ανάλυση Αλγορίθμων 21

ΜέσοςΌροςΠροθεμάτων ( Τετραγωνικός ) Ο ακόλουθος αλγόριθμος υπολογίζει τους μέσους όρους προθεμάτων σε τετραγωνικό χρόνο με εφαρμογή του ορισμού ( n Algorithm prefixaverages1(x, Input array X of n integers Output array A of prefix averages of X #operations A new array of n integers n for i 0 to n 1 do n s X[0] n for j 1 to i do ( 1 (n 1 + 2 + + s s + X[j] ( 1 (n 1 + 2 + + A[i] s / (i + 1) n return A 1 Ανάλυση Αλγορίθμων 22

Αριθμητική Πρόοδος Ο χρόνος τρεξίματος του prefixaverages1 είναι O(1 ( n + + 2 + Το άθροισμα των πρώτων n ακεραίων είναι n(n + 1) / 2 Υπάρχει μία απλή οπτική απόδειξη αυτού του γεγονότος Έτσι, ο αλγόριθμος prefixaverages1 τρέχει σε O(n 2 ) χρόνο 7 6 5 4 3 2 1 0 1 2 3 4 5 6 Ανάλυση Αλγορίθμων 23

ΜέσοςΌροςΠροθεμάτων ( Γραμμικός ) Ο ακόλουθος αλγόριθμος υπολογίζει τους μέσους όρους προθεμάτων σε γραμμικό χρόνο κρατώντας ένα τρέχον άθροισμα ( n Algorithm prefixaverages2(x, Input array X of n integers Output array A of prefix averages of X A new array of n integers n s 0 1 for i 0 to n 1 do n s s + X[i] n A[i] s / (i + 1) n return A #operations Ο αλγόριθμος prefixaverages2 τρέχει σε O(n) χρόνο Ανάλυση Αλγορίθμων 24

Μαθηματικά για ανασκόπηση ( 1.3.1 (Sec. Άθροιση ( 1.3.2 (Sec. Λογάριθμοι και Εκθέτες ( 1.3.3 (Sec. Τεχνικές Απόδειξης Βασικές Πιθανότητες (Sec. 1.3.4) Ιδιότητες λογαρίθμων: log b (xy) = log b x + log b y log b (x/y) = log b x - log b y log b xa = alog b x log b a = log x a/log x b Ιδιότητες εκθετικών: a (b+c) = a b a c a bc = (a b ) c ( b-c ) a b /a c = a b = a log a b b c = a c*log a b Ανάλυση Αλγορίθμων 25

Συγγενείς του Big-Oh big-omega Η f(n) είναι Ω(g(n)) αν υπάρχει σταθερά c > 0 και μία ακέραια σταθερά n 0 1 τέτοια ώστε f(n) c g(n) για n n 0 big-theta Η f(n) είναι Θ(g(n)) αν υπάρχουν σταθερές c > 0 και c > 0 και ακέραια σταθερά n 0 1 τέτοια ώστε c g(n) f(n) c g(n) για n n 0 little-oh f(n) είναι o(g(n)) αν, για κάθε σταθερά c > 0, υπάρχει μία ακέραια σταθερά n 0 0 τέτοια ώστε f(n) c g(n) για n n 0 little-omega Η f(n) είναι ω(g(n)) αν, για κάθε σταθερά c > 0, υπάρχει μία ακέραια σταθερά n 0 0 τέτοια ώστε f(n) c g(n) για n n 0 Ανάλυση Αλγορίθμων 26

Διαίσθηση για την Ασυμπτωτική Σημειογραφία Big-Oh Η f(n) είναι O(g(n)) αν η f(n) είναι ασυμπτωτικά less than or equal ( g(n to big-omega ( g(n f(n) is Ω(g(n)) if f(n) is asymptotically greater than or equal to big-theta ( g(n f(n) is Θ(g(n)) if f(n) is asymptotically equal to little-oh ( g(n f(n) is o(g(n)) if f(n) is asymptotically strictly less than little-omega ( g(n f(n) is ω(g(n)) if is asymptotically strictly greater than Ανάλυση Αλγορίθμων 27

Παραδείγματα Χρήσης των Συγγενών του Big-Oh ( 2 5n 2 είναι Ω(n Η f(n) είναι Ω(g(n)) αν υπάρχει μια σταθερά c > 0 και μία θετκή σταθερά n 0 1 τέτοια ώστε f(n) c g(n) για n n 0 Έστω c = 5 και n 0 = 1 ( Ω(n 5n 2 είναι Η f(n) είναι Ω(g(n)) αν υπάρχει μια σταθερά c > 0 και μία θετκή σταθερά n 0 1 τέτοια ώστε f(n) c g(n) για n n 0 Έστω c = 1 και n 0 = 1 ( ω(n 5n 2 είναι Η f(n) είναι ω(g(n)) αν, για κάθε σταθερά c > 0, υπάρχει μια θετική σταθερά n 0 0 τέτοια ώστε f(n) c g(n) για n n 0 Πρέπει 5n 02 c n 0 για δοσμένο c, το n 0 που ικανοποιεί τη σχέση είναι κάποιο n 0 c/5 0 Ανάλυση Αλγορίθμων 28

Τέλος Ενότητας

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

Σημειώματα

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

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Κρήτης, Ιωάννης Τόλλης 2015. «Αλγόριθμοι και πολυπλοκότητα. Ανάλυση αλγορίθμων». Έκδοση: 1.0. Ηράκλειο 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://opencourses.uoc.gr/courses/course/view.php?id=368

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