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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μάρκετινγκ Αγροτικών Προϊόντων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενδεικτικές λύσεις ασκήσεων

Τεχνικό Σχέδιο - CAD

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

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

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

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

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

ΔΡΔ: Διαγράμματα Ροής Δεδομένων

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

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

Φυσική Οπτική (Ε) Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 1: Υπολογισμός εστιακής απόστασης θετικού φακού από την μετατόπισή του. Αθανάσιος Αραβαντινός

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

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

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

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

Τεχνικό Σχέδιο - CAD

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

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

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΗ ΛΟΓΙΣΤΙΚΗ

Κβαντική Φυσική Ι. Ενότητα 19: Εισαγωγή στα τετραγωνικά δυναμικά. Ανδρέας Τερζής Σχολή Θετικών Επιστημών Τμήμα Φυσικής

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

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

Αγροτικός Τουρισμός. Ενότητα 9 η : Εκπαιδευτικές τεχνικές στον τουρισμό. Όλγα Ιακωβίδου Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

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

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

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

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

Μάρκετινγκ Αγροτικών Προϊόντων

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος)

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

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

Transcript:

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

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

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

Ανάλυση Αλγορίθμων Είσοδος Αλγόριθμος Έξοδος

Περιγραφή και Υλικό Ανάγνωσης Χρόνος εκτέλεσης ( 1.1) Ψευδοκώδικας ( 1.1) Μέτρηση των στοιχειωδών πράξεων ( 1.1) Ασυμπτωτική σημειογραφία ( 1.2) Ασυμπτωτική ανάλυση ( 1.2) Μελέτη περιπτώσεων ( 1.3.1, 1.4) Ανάλυση Αλγορίθμων 5

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

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

Περιορισμοί των Πειραμάτων Πρέπει να υλοποιηθεί ο αλγόριθμος, πράγμα που μπορεί να είναι δύσκολο Τα αποτελέσματα μπορεί να μην είναι ενδεικτικά του χρόνου εκτέλεσης με άλλες εισόδους που δεν συμπεριλήφθηκαν στο πείραμα. Για να συγκριθούν δυο αλγόριθμοι πρέπει να χρησιμοποιηθούν τα ίδια περιβάλλοντα υλικού και λογισμικού Ανάλυση Αλγορίθμων 8

Θεωρητική Ανάλυση Χρησιμοποιείται μια περιγραφή υψηλού επιπέδου του αλγορίθμου αντί κάποιας υλοποίησης Λαμβάνει υπ όψιν κάθε πιθανή είσοδο Μας επιτρέπει να εκτιμήσουμε την ταχύτητα ενός αλγορίθμου ανεξάρτητα από το περιβάλλον υλικού/λογισμικού Ανάλυση Αλγορίθμων 9

Ψευδοκώδικας Υψηλού επιπέδου περιγραφή ενός αλγόριθμου Πιο δομημένο από την απλή γλώσσα Λιγότερο λεπτομερές από ένα πρόγραμμα Η προτιμώμενη σημειογραφία για την περιγραφή αλγορίθμων Αποκρύπτει τις λεπτομέρειες του σχεδιασμού των προγραμμάτων Π.χ.: Να βρεθεί το μέγιστο στοιχείο ενός πίνακα Algorithm arraymax(a, n) 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 Ανάλυση Αλγορίθμων 10

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

Στοιχειώδεις Πράξεις Βασικοί υπολογισμοί που εκτελεί ένας αλγόριθμος Αναγνωρίσιμοι στον ψευδοκώδικα Σε μεγάλο βαθμό ανεξάρτητοι από την γλώσσα προγραμματισμού Δεν είναι σημαντικός ένας ακριβής ορισμός (θα δούμε γιατί αργότερα) Παραδείγματα: Υπολογισμός μιας έκφρασης Καταχώρηση τιμής σε μεταβλητή Indexing σε πίνακα Κλήση μεθόδου Επιστροφή από μέθοδο Ανάλυση Αλγορίθμων 12

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

Εκτίμηση του Χρόνου Εκτέλεσης Ο αλγόριθμος arraymax εκτελεί 7n 1 στοιχειώδεις πράξεις στην χειρότερη περίπτωση Ορίζουμε a Ο χρόνος που απαιτείται για την γρηγορότερη στοιχειώδη πράξη b Ο χρόνος που απαιτείται για την αργότερη στοιχειώδη πράξη Έστω ότι T(n) είναι ο χρόνος εκτέλεσης χειρότερης περίπτωσης του arraymax. Έχουμε a (7n 1) T(n) b(7n 1) Επομένως, ο χρόνος εκτέλεσης T(n) έχει όρια δυο γραμμικές συναρτήσεις Ανάλυση Αλγορίθμων 14

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

Ρυθμοί Αύξησης Ρυθμοί αύξησης συναρτήσεων: Γραμμικός n Τετραγωνικός n 2 Κυβικός n 3 T(n) 1E+29 1E+27 1E+25 1E+23 1E+21 1E+19 1E+17 1E+15 1E+13 1E+11 1E+9 1E+7 1E+5 1E+3 1E+1 Σε μια γραφική παράσταση log-log, η κλίση της γραμμής αντιστοιχεί στον ρυθμό αύξησης της συνάρτησης 1E-1 Cubic Quadratic Linear 1E-1 1E+1 1E+3 1E+5 1E+7 1E+9 Ανάλυση Αλγορίθμων 16 n

Σταθεροί Όροι Ο ρυθμός αύξησης δεν επηρεάζεται από σταθερούς όρους ή όρους χαμηλότερης τάξης Παραδείγματα T(n) 10 2 n + 10 5 είναι μια γραμμική συνάρτηση 10 5 n 2 + 10 8 n είναι μια τετραγωνική συνάρτηση 1E+25 Quadratic 1E+23 Quadratic 1E+21 Linear 1E+19 Linear 1E+17 1E+15 1E+13 1E+11 1E+9 1E+7 1E+5 1E+3 1E+1 1E-1 1E-1 1E+2 1E+5 1E+8 n Ανάλυση Αλγορίθμων 17

Σημειογραφία Ο() Δεδομένου των συναρτήσεων f(n) και g(n), λέμε ότι η f(n) είναι O(g(n)) αν υπάρχουν θετικοί σταθεροί αριθμοί c and n 0 τέτοιοι ώστε 10,000 1,000 100 3n 2n+10 n f(n) cg(n) για n n 0 Παράδειγμα: 2n + 10 είναι O(n) 2n + 10 cn (c 2) n 10 n 10/(c 2) 10 1 1 10 100 1,000 n Επιλέγουμε c 3 και n 0 10 Ανάλυση Αλγορίθμων 18

Σημειογραφία Ο() (συνέχεια) Παράδειγμα: η συνάρτηση n 2 δεν είναι O(n) n 2 cn n c Η παραπάνω ανισότητα δεν ικανοποιείται αφού ο c πρέπει να είναι σταθερός 1,000,000 100,000 10,000 1,000 100 10 1 n^2 100n 10n n 1 10 100 1,000 n Ανάλυση Αλγορίθμων 19

Ο() και Ρυθμός Αύξησης Η σημειογραφία Ο() θέτει ένα άνω όριο στο ρυθμό αύξησης μιας συνάρτησης Η δήλωση η f(n) είναι O(g(n)) σημαίνει πως ο ρυθμός αύξησης της f(n) είναι το πολύ ίσος με g(n) Μπορούμε να χρησιμοποιήσουμε την σημειογραφία Ο() για να κατατάξουμε συναρτήσεις σύμφωνα με τον ρυθμό αύξησης τους η f(n) είναι O(g(n)) η g(n) είναι O(f(n)) ρ.α. g(n) > ρ.α. f(n) Ναι Όχι ρ.α. f(n) > ρ.α. g(n) Όχι Ναι Ίδιος ρυθμ. αύξησης Ναι Ναι Ανάλυση Αλγορίθμων 20

Κατηγορίες Συναρτήσεων Έστω ότι με {g(n)} δηλώνουμε την κατηγορία (το σύνολο) των συναρτήσεων οι οποίες είναι O(g(n)) Έχουμε {n} {n 2 } {n 3 } {n 4 } {n 5 } όπου η σχέση περιεχομένου είναι αυστηρή {n 3 } {n 2 } {n} Ανάλυση Αλγορίθμων 21

Κανόνες Ο() Αν το 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) Ανάλυση Αλγορίθμων 22

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

Υπολογίζοντας Μέσους Όρους Προθέματος (Prefix Averages) Θα επεξηγήσουμε περαιτέρω την ασυμπτωτική ανάλυση χρησιμοποιώντας δυο αλγορίθμους για μέσους όρους προθέματος Ο i-οστός μέσος όρος προθέματος ενός πίνακα X είναι ο μέσος όρος των πρώτων (i + 1) στοιχείων του X A[i] X[0] + X[1] + + X[i] 15 Ο υπολογισμός του πίνακα A ο 10 οποίος περιέχει τους μέσους όρους προθέματος ενός άλλου πίνακα X 5 έχει εφαρμογές στην οικονομική ανάλυση 0 35 30 25 20 X A 1 2 3 4 5 6 7 Ανάλυση Αλγορίθμων 24

Μέσοι Όροι Προθέματος (Τετραγωνικός χρόνος) Ο ακόλουθος αλγόριθμος υπολογίζει τους μέσους όρους προθέματος σε τετραγωνικό χρόνο εφαρμόζοντας τον ορισμό Algorithm prefixaverages1(x, n) 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 + 2 + + (n 1) s s + X[j] 1 + 2 + + (n 1) A[i] s / (i + 1) n return A 1 Ανάλυση Αλγορίθμων 25

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

Μέσοι Όροι Προθέματος (Γραμμικός χρόνος) Ο ακόλουθος αλγόριθμος υπολογίζει μέσους όρους προθέματος σε γραμμικό χρόνο κρατώντας ένα τρέχον άθροισμα Algorithm prefixaverages2(x, n) 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 1 Ο αλγόριθμος prefixaverages2 τρέχει σε χρόνο O(n) #operations Ανάλυση Αλγορίθμων 27

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