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



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

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

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

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

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )

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

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

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

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

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

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

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

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

Κεφάλαιο ΙII : Εργαστηριακές ασκήσεις που αφορούν εντολές ελέγχου της ροής ενός προγράµµατος.

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

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

Κεφάλαιο 7 Βασικά Θεωρήµατα του ιαφορικού Λογισµού

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή.

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Μοντελοποίηση προβληµάτων

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

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

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

Μάθηµα 5. Κεφάλαιο: ιαφορικός Λογισµός. Θεµατικές ενότητες: 1. Συνέχεια συνάρτησης

Μηχανική ΙI. Μετασχηµατισµοί Legendre. της : (η γραφική της παράσταση δίνεται στο ακόλουθο σχήµα). Εάν

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Βασικά στοιχεία της Java

Γνωριµία. οµές εδοµένων Εισαγωγή. Βιβλία Μαθήµατος. Επικοινωνία. ιδάσκων: Ορέστης Τελέλης. Ωρες γραφείου (502, Γρ.

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

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

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

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

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

1.7 ΙΑΙΡΕΣΗ ΠΟΛΥΩΝΥΜΩΝ

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

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

Η ΤΕΧΝΗ ΤΟΥ ΙΑΒΑΣΜΑΤΟΣ ΜΕΤΑΞΥ ΤΩΝ ΑΡΙΘΜΩΝ (ΠΑΡΕΜΒΟΛΗ ΚΑΙ ΠΡΟΣΕΓΓΙΣΗ)

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

Μεταγλωττιστές Βελτιστοποίηση

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

Κανόνες παραγώγισης ( )

ΔΕΙΓΜΑ ΠΡΙΝ ΤΙΣ ΔΙΟΡΘΩΣΕΙΣ - ΕΚΔΟΣΕΙΣ ΚΡΙΤΙΚΗ

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

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

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

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

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

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

( ) = inf { (, Ρ) : Ρ διαµέριση του [, ]}

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

Ανω Φράγµα στην Τάξη των Συναρτήσεων. Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων. Παράδειγµα (1/2) O( g(n) ) είναι σύνολο συναρτήσεων:

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

Θεωρητικό Μέρος. 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); } }

3 η δεκάδα θεµάτων επανάληψης

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

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

ΠαράδειγµαΠρογραµµατισµού

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής:

Προγραµµατισµός στην Basic

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΓΥΜΝΑΣΙΟ ΠΟΛΕΜΙΔΙΩΝ ΣΧ. ΧΡΟΝΙΑ

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

1 η δεκάδα θεµάτων επανάληψης

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

Certified Computer Programmer (CCP) Εξεταστέα Ύλη (Syllabus) Έκδοση 1.0

Επανάληψη για τις Τελικές εξετάσεις

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

1.1 ΣΥΝΑΡΤΗΣΕΙΣ. 1. Ορισµός. 2. Συµβολισµός. 3. Επεξήγηση συµβόλων. 4. Γραφική παράσταση της συνάρτησης f : A R

ΠΕΡΙΕΧΟΜΕΝΑ. ΠΡΟΛΟΓΟΣ... vii ΠΕΡΙΕΧΟΜΕΝΑ... ix ΓΕΝΙΚΗ ΒΙΒΛΙΟΓΡΑΦΙΑ... xv. Κεφάλαιο 1 ΓΕΝΙΚΕΣ ΕΝΝΟΙΕΣ ΑΠΟ ΤΗ ΣΤΑΤΙΣΤΙΚΗ

Μονώνυμα. Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος: «Σπουδές στην εκπαίδευση» ΜEd

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

Εισαγωγή στην πληροφορική

( x) (( ) ( )) ( ) ( ) ψ = 0 (1)

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

2. Στοιχεία Πολυδιάστατων Κατανοµών

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

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

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

a x (t) = d dt u x(t) = d dt dt x(t) )

Εκπαιδευτικό λογισµικό µονοβάθµιου ταλαντωτή Educational Single Degree Of Freedom Software. ESDOFsoftware

Transcript:

Ανάλυση Αλγορίθµων Είσοδος Αλγόριθµος Έξοδος Περιγραφή και Υλικό Ανάγνωσης Χρόνος εκτέλεσης (.) Ψευδοκώδικας (.) Μέτρηση των στοιχειωδών πράξεων (.) Ασυµπτωτική σηµειογραφία (.2) Ασυµπτωτική ανάλυση (.2) Μελέτη περιπτώσεων (.3.,.4) Ανάλυση Αλγορίθµων 2 Χρόνος Εκτέλεσης Οχρόνος εκτέλεσης ενός αλγορίθµου εξαρτάται από την είσοδο και συνήθως αυξάνεται µε το µέγεθος της εισόδου ύσκολο να καθοριστεί ένας µέσος χρόνος Επικεντρωνόµαστε στο χειρότερο χρόνο Πιο εύκολη ανάλυση Κρίσιµο για παιχνίδια, οικονοµικές και ροµποτικές εφαρµογές Ruig Time 2 8 6 4 2 best case average case worst case 2 3 4 Iput Size Πειραµατικές Μελέτες Γράψτε ένα πρόγραµµα που να υλοποιεί τον αλγόριθµο Τρέξτε το πρόγραµµα µε εισόδους διαφορετικού µεγέθους και περιεχοµένου Χρησιµοποιήστε µια µέθοδο όπως η System.curretTimeMillis() για να λάβετε µια ακριβή µέτρηση του πραγµατικού χρόνου εκτέλεσης Σχεδιάστε τα αποτελέσµατα Time (ms) 9 8 7 6 5 4 3 2 5 Iput Size Ανάλυση Αλγορίθµων 3 Ανάλυση Αλγορίθµων 4

Περιορισµοί των Πειραµάτων Πρέπει να υλοποιηθεί ο αλγόριθµος, πράγµα που µπορεί να είναι δύσκολο Τα αποτελέσµατα µπορεί να µην είναι ενδεικτικά του χρόνου εκτέλεσης µε άλλες εισόδους που δεν συµπεριλήφθηκαν στο πείραµα. Για να συγκριθούν δυο αλγόριθµοι πρέπει να χρησιµοποιηθούν τα ίδια περιβάλλοντα υλικού και λογισµικού Θεωρητική Ανάλυση Χρησιµοποιείται µια περιγραφή υψηλού επιπέδου του αλγορίθµου αντί κάποιας υλοποίησης Λαµβάνει υπ όψιν κάθε πιθανή είσοδο Μας επιτρέπει να εκτιµήσουµε την ταχύτητα ενός αλγορίθµου ανεξάρτητα από το περιβάλλον υλικού/λογισµικού Ανάλυση Αλγορίθµων 5 Ανάλυση Αλγορίθµων 6 Ψευδοκώδικας Υψηλού επιπέδου περιγραφή ενός αλγόριθµου Πιο δοµηµένο από την απλή γλώσσα Λιγότερο λεπτοµερές από ένα πρόγραµµα Η προτιµώµενη σηµειογραφία για την περιγραφή αλγορίθµων Αποκρύπτει τις λεπτοµέρειες του σχεδιασµού των προγραµµάτων Π.χ.: Να βρεθεί το µέγιστο στοιχείο ενός πίνακα Algorithm arraymax(a, ) Iput array A of itegers Output maximum elemet of A curretmax A[] for i to do if A[i] > curretmax the curretmax A[i] retur curretmax Λεπτοµέρειες Ψευδοκώδικα Έλεγχος ροής if the [else ] while do repeat util for do Εσοχές αντί για { } ήλωση µεθόδων Algorithm method (arg [, arg ]) Iput Output Κλήση µεθόδων var.method (arg [, arg ]) Τιµή επιστροφής retur expressio Εκφράσεις Καταχώρηση (όπως = στην Java) = Έλεγχος ισότητας (όπως == στην Java) 2 Εκθέτες και άλλες µαθηµατικές δοµές επιτρέπονται Ανάλυση Αλγορίθµων 7 Ανάλυση Αλγορίθµων 8 2

Στοιχειώδεις Πράξεις Βασικοί υπολογισµοί που εκτελεί ένας αλγόριθµος Αναγνωρίσιµοι στον ψευδοκώδικα Σε µεγάλο βαθµό ανεξάρτητοι από την γλώσσα προγραµµατισµού εν είναι σηµαντικός ένας ακριβής ορισµός (θα δούµε γιατί αργότερα) Παραδείγµατα: Υπολογισµός µιας έκφρασης Καταχώρηση τιµής σε µεταβλητή Idexig σε πίνακα Κλήση µεθόδου Επιστροφή από µέθοδο Ανάλυση Αλγορίθµων 9 Μέτρηση των Στοιχειωδών Πράξεων Ελέγχοντας τον ψευδοκώδικα, µπορούµε να βρούµε τον µέγιστο αριθµό των στοιχειωδών πράξεων που θα εκτελέσει ο αλγόριθµος σαν συνάρτηση του µεγέθους της εισόδου Algorithm arraymax(a, ) # operatios curretmax A[] 2 for i to do 2 + if A[i] > curretmax the 2( ) curretmax A[i] 2( ) { icremet couter i } 2( ) retur curretmax Total 7 Ανάλυση Αλγορίθµων Εκτίµηση του Χρόνου Εκτέλεσης Ο αλγόριθµος arraymax εκτελεί 7 στοιχειώδεις πράξεις στην χειρότερη περίπτωση Ορίζουµε a Ο χρόνος που απαιτείται για την γρηγορότερη στοιχειώδη πράξη b Ο χρόνος που απαιτείται για την αργότερη στοιχειώδη πράξη Έστω ότι T() είναι ο χρόνος εκτέλεσης χειρότερης περίπτωσης του arraymax. Έχουµε a (7 ) T() b(7 ) Εποµένως, ο χρόνος εκτέλεσης T() έχει όρια δυο γραµµικές συναρτήσεις Ρυθµός Αύξησης του Χρόνου Εκτέλεσης Αλλάζοντας το περιβάλλον υλικού/λογισµικού Επηρεάζεται ο T() κατά ένα σταθερό όρο, αλλά εν αλλάζει ο ρυθµός αύξησης του T() Ο γραµµικός ρυθµός αύξησης του χρόνου εκτέλεσης T() είναι µια εγγενής ιδιότητα του αλγορίθµου arraymax Ανάλυση Αλγορίθµων Ανάλυση Αλγορίθµων 2 3

Ρυθµοί Αύξησης Ρυθµοί αύξησης συναρτήσεων: Γραµµικός Τετραγωνικός 2 Κυβικός 3 T ( ) Σε µια γραφική παράσταση log-log, η κλίση της γραµµής αντιστοιχεί στον ρυθµό αύξησης της συνάρτησης E+3 E+28 E+26 E+24 E+22 E+2 E+8 E+6 E+4 E+2 E+ E+8 E+6 E+4 E+2 E+ Cubic Quadratic Liear E+ E+2 E+4 E+6 E+8 E+ Ανάλυση Αλγορίθµων 3 Σταθεροί Όροι Ορυθµός αύξησης δεν επηρεάζεται από σταθερούς όρους ή E+26 E+24 E+22 E+2 E+8 όρους χαµηλότερης E+6 τάξης E+4 E+2 Παραδείγµατα E+ 2 + 5 είναι µια E+8 γραµµική συνάρτηση E+6 5 2 + 8 είναι µια E+4 τετραγωνική συνάρτηση E+2 E+ T ( ) Quadratic Quadratic Liear Liear E+ E+2 E+4 E+6 E+8 E+ Ανάλυση Αλγορίθµων 4 Σηµειογραφία Ο() εδοµένου των συναρτήσεων f() και g(), λέµε ότιη f() είναι O(g()) αν υπάρχουν θετικοί σταθεροί αριθµοί c ad τέτοιοι ώστε f() cg() για Παράδειγµα: 2 + είναι O() 2 + c (c 2) /(c 2) Επιλέγουµε c = 3 και =,, 3 2+, Σηµειογραφία Ο() (συνέχεια) Παράδειγµα: η συνάρτηση 2 δεν είναι O() 2 c c Η παραπάνω ανισότητα δεν ικανοποιείται αφού ο c πρέπει να είναι σταθερός,,,,, ^2, Ανάλυση Αλγορίθµων 5 Ανάλυση Αλγορίθµων 6 4

Ο() και Ρυθµός Αύξησης Ησηµειογραφία Ο() θέτει ένα άνω όριο στο ρυθµό αύξησης µιας συνάρτησης Η δήλωση η f() είναι O(g()) σηµαίνει πως ο ρυθµός αύξησης της f() είναι το πολύ ίσος µε g() Μπορούµε να χρησιµοποιήσουµε την σηµειογραφία Ο() για να κατατάξουµε συναρτήσεις σύµφωνα µε τον ρυθµό αύξησης τους ρ.α. g() > ρ.α. f() ρ.α. f() > ρ.α. g() Ίδιος ρυθµ. αύξησης η f() είναι O(g()) Όχι η g() είναι O(f()) Όχι Ανάλυση Αλγορίθµων 7 Κατηγορίες Συναρτήσεων Έστω ότι µε {g()} δηλώνουµε την κατηγορία (το σύνολο) των συναρτήσεων οι οποίες είναι O(g()) Έχουµε {} { 2 } { 3 } { 4 } { 5 } όπου η σχέση περιεχοµένου είναι αυστηρή { 3 } { 2 } {} Ανάλυση Αλγορίθµων 8 Κανόνες Ο() Αν το f() είναι ένα πολυώνυµο βαθµού d, τότε f() είναι O( d ), δηλαδή,. Αφαιρούµε όρους χαµηλότερου βαθµού 2. Αφαιρούµε σταθερούς όρους Πρέπει να χρησιµοποιήσουµε την µικρότερη δυνατή κατηγορία συναρτήσεων Λέµε ότι η 2 είναι O() αντί για η 2 είναι O( 2 ) Πρέπει να χρησιµοποιήσουµε τηναπλούστερη έκφραση της κατηγορίας Λέµε ότι η 3 + 5 είναι O() αντί για η 3 + 5 είναι O(3) Ασυµπτωτική Ανάλυση Αλγορίθµου Ηασυµπτωτική ανάλυση ενός αλγορίθµου καθορίζει τον χρόνο εκτέλεσης σε σηµειογραφία Ο() Για να κάνουµε την ασυµπτωτική ανάλυση Βρίσκουµε τον αριθµό των στοιχειωδών πράξεων που εκτελούνται στην χειρότερη περίπτωση σαν συνάρτηση του µεγέθους της εισόδου Εκφράζουµε αυτή τη συνάρτηση σε σηµειογραφία Ο() Παράδειγµα: Προσδιορίσαµε ότι ο αλγόριθµος arraymax εκτελεί το πολύ 7 στοιχειώδεις πράξεις Λέµε ότι ο αλγόριθµος arraymax τρέχει σε χρόνο O() Αφού σταθεροί όροι και όροι χαµηλότερης τάξης εντέλει παραλείπονται, µπορούµε να τους παραβλέψουµε κατά τη µέτρηση των στοιχ. πράξεων Ανάλυση Αλγορίθµων 9 Ανάλυση Αλγορίθµων 2 5

Υπολογίζοντας Μέσους Όρους Προθέµατος (Prefix Averages) Θα επεξηγήσουµε περαιτέρω την ασυµπτωτική ανάλυση χρησιµοποιώντας δυο αλγορίθµους για µέσους όρους προθέµατος Ο i-οστός µέσος όρος προθέµατος ενός πίνακα X είναι ο µέσος όρος των πρώτων (i + ) στοιχείων του X A[i] = X[] + X[] + + X[i] Ο υπολογισµός του πίνακα A ο οποίος περιέχει τους µέσους όρους προθέµατος ενός άλλου πίνακα X έχει εφαρµογές στην οικονοµική ανάλυση 35 3 25 2 5 5 X A 2 3 4 5 6 7 Ανάλυση Αλγορίθµων 2 Μέσοι Όροι Προθέµατος (Τετραγωνικός χρόνος) Ο ακόλουθος αλγόριθµος υπολογίζει τους µέσους όρους προθέµατος σε τετραγωνικό χρόνο εφαρµόζοντας τον ορισµό Algorithm prefixaverages(x, ) Iput array X of itegers Output array A of prefix averages of X #operatios A ew array of itegers for i to do s X[] for j to i do + 2 + + ( ) s s + X[j] + 2 + + ( ) A[i] s / (i + ) retur A Ανάλυση Αλγορίθµων 22 Αριθµητική Πρόοδος Οχρόνος εκτέλεσης του prefixaverages είναι O( + 2 + + ) Το άθροισµα των πρώτων ακεραίων είναι ( + ) / 2 Παρατίθεται µια απλή οπτική απόδειξη αυτού Εποµένως, ο αλγόριθµος prefixaverages τρέχει σε χρόνο O( 2 ) 7 6 5 4 3 2 2 3 4 5 6 Ανάλυση Αλγορίθµων 23 Μέσοι Όροι Προθέµατος (Γραµµικός χρόνος) Ο ακόλουθος αλγόριθµος υπολογίζει µέσους όρους προθέµατος σε γραµµικό χρόνο κρατώντας ένα τρέχον άθροισµα Algorithm prefixaverages2(x, ) Iput array X of itegers Output array A of prefix averages of X #operatios A ew array of itegers s for i to do s s + X[i] A[i] s / (i + ) retur A Ο αλγόριθµος prefixaverages2 τρέχει σε χρόνο O() Ανάλυση Αλγορίθµων 24 6