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



Σχετικά έγγραφα
Δομές Δεδομένων Ενότητα 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

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

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

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

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

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

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

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

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

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

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 18: Χρονική και Χωρική Πολυπλοκότητα

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ ΑΛΓΟΡΙΘΜΟΙ Δ Ι ΑΛΕΞΗ / 02/2016 ΔΙΔΑΣΚΩΝ ΚΩΣΤΑΣ ΚΟΛΟΜΒΑΤΣΟΣ

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

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

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι

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

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

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

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

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

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

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

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

Θέματα Προγραμματισμού Η/Υ

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση

Δομή Ηλεκτρονικού υπολογιστή

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

Τηλ , Fax: , URL:

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

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

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 4

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

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

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

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

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

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

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

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

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

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

Παραδείγµατα. Τάξη των Συναρτήσεων (1) Παράδειγµα (2) Να δειχθεί ότι 7n 2 = O(n 3 ). Ορέστης Τελέλης

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Transcript:

Δομές Δεδομένων (Data Structures) Ανάλυση - Απόδοση Αλγορίθμων Έλεγχος Αλγορίθμων. Απόδοση Προγραμμάτων. Χωρική/Χρονική Πολυπλοκότητα. Ασυμπτωτικός Συμβολισμός. Παραδείγματα.

Αλγόριθμοι: Βασικές Έννοιες Αλγόριθμος: μια μέθοδος ή μια διαδικασία που ακολουθείται για την επίλυση ενός προβλήματος (π.χ. αναζήτηση, ταξινόμηση, κλπ.). Ένας αλγόριθμος παίρνει την δεδομένα (input) ενός προβλήματος, εκτελεί λειτουργίες (π.χ. συναρτήσεις) και παρέχει αποτελέσματα (output). Ένα πρόβλημα μπορεί να επιλύεται με πολλούς εναλλακτικούς αλγορίθμους. Χρειάζεται να συγκρίνουμε τους αλγόριθμους μεταξύ τους. Το βασικότερο κριτήριο είναι ο χρόνος εκτέλεσης του προγράμματος.

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

Αλγορίθμοι Δομές Δεδομένων Επιλογή της κατάλληλης δομής δεδομένων (ΔΔ): 1. Αναλύουμε το πρόβλημα, καθορίζουμε τους περιορισμούς πόρων, στους οποίους πρέπει να υπόκειται μια λύση 2. Καθορίζουμε τις βασικές λειτουργίες που πρέπει να υποστηρίζονται Εισαγωγή δεδομένων: Είτε όλα τα δεδομένα εισάγονται από την αρχή ή παρεμβάλλονται ανάμεσα σε άλλες λειτουργίες. Πως γίνεται η διαχείριση των δεδομένων; Όλα τα δεδομένα υφίστανται επεξεργασία σε μια καθορισμένη σειρά ή επιτρέπεται τυχαία προσπέλαση; 3. Επιλέγουμε τη δομή δεδομένων που ικανοποιεί καλύτερα αυτούς τους περιορισμούς

Δομές Δεδομένων Μην Ξεχνάτε: Κάθε δομή δεδομένων έχει πλεονεκτήματα και μειονεκτήματα. Σπάνια μια δομή δεδομένων είναι καλύτερη από μια άλλη σε όλες τις περιπτώσεις. Μια δομή δεδομένων απαιτεί: Χώρο για κάθε αντικείμενο δεδομένων που αποθηκεύει Χρόνο για να εκτελέσει κάθε βασική λειτουργία Προγραμματιστική προσπάθεια Κάθε πρόβλημα έχει περιορισμούς ως προς το διαθέσιμο χώρο και χρόνο.

Έλεγχος Αλγορίθμων: Σχεδιάζοντας Δεδομένα Ελέγχου 1) Μέθοδοι Μαύρου Κουτιού (ΜΜΚ): Ελέγχουμε κυρίως τη λειτουργία του προγράμματος. Π.χ. Διαμερίζουμε το χώρο δεδομένων (Ι/Ο) σε κλάσεις. Δεδομένα σε διαφορετικές κλάσεις εμφανίζουν διαφορετικές συμπεριφορές. 2) Μέθοδοι Άσπρου Κουτιού (ΜΑΚ): Ελέγχουμε κυρίως τον κώδικα. Κάλυψη Εντολών: Το σύνολο των ελέγχων θα πρέπει να προκαλεί την εκτέλεση κάθε εντολής προγράμματος τουλάχιστον 1 φορά. Κάλυψη Αποφάσεων: Απαιτούμε κάθε συνθήκη μέσα στο πρόγραμμα να πάρει και τις δύο πιθανές τιμές (true, false). Κάλυψη Μονοπατιών Εκτέλεσης: Απαιτούμε την κάλυψη/εκτέλεση όλων των μονοπατιών εκτέλεσης στο πρόγραμμα. Πολύ απαιτητική, συχνά αδύνατη συνθήκη.

Αποσφαλμάτωση (Debugging) Διαδικασία καθορισμού της αιτίας ασυμφωνίας μεταξύ επιθυμητής και παρατηρούμενης συμπεριφοράς. Τρόποι αποσφαλμάτωσης: Αναλύστε διεξοδικά το πρόβλημα - Χρησιμοποιήστε τη λογική Έλεγχος: ξεκινήστε από μια συνάρτηση/κλάση που είναι ανεξάρτητη από τις άλλες. Κατόπιν προχωρήστε σε περισσότερες. Επανασχεδιάσετε το πρόβλημα αφού πρώτα βρείτε το αίτιο. Βεβαιωθείτε ότι η διόρθωση δεν προκαλεί άλλα σφάλματα.

Απόδοση Προγραμμάτων Ορισμός: ποσό μνήμης (χωρική απόδοση) και χρόνου (χρονική απόδοση) υπολογιστή τα οποία απαιτούνται για να «τρέξει» το πρόγραμμα. Καθορισμός: (α) Ανάλυση απόδοσης: αναλυτικές μεθόδους (β) Μέτρηση απόδοσης: διεξάγουμε «πειράματα» Μέτρηση απόδοσης: a) Εμπειρική σύγκριση (τρέξιμο προγραμμάτων) b) Ασυμπτωτική ανάλυση αλγορίθμων Σχεδόν πάντα, ο χρόνος εκτέλεσης (τρεξίματος) εξαρτάται από το μέγεθος του προβλήματος (των δεδομένων), π.χ. μέγεθος λίστας, πινάκων, κλπ. Ο χρόνος εκτέλεσης εκφράζεται ως Τ(n) για κάποια συνάρτηση Τ πάνω στο μέγεθος n που δίνεται (input) κατά την εκτέλεση του προγράμματος.

Εμπειρική Σύγκριση - Τρέξιμο Προγραμμάτων Αναπτύσσουμε πρόγραμμα που επιλύει ένα πρόβλημα. Εκτελούμε-«τρέχουμε» το πρόγραμμα για διαφορετικό μέγεθος εισόδου και δεδομένων (input). Χρησιμοποιούμε συναρτήσεις που μετρούν τον πραγματικό χρόνο που απαιτείται για την εκτέλεση του προγράμματος. Σχεδιάζουμε τα αποτελέσματα.

Απόδοση Προγραμμάτων Χωρική Πολυπλοκότητα: ποσό μνήμης που απαιτείται Χώρος εντολών: ποσό μνήμης που απαιτούν οι εντολές. Εξαρτάται από: compiler, flags, hardware. Χώρος δεδομένων: ποσό μνήμης που απαιτείται για την: (α) αποθήκευση των τιμών όλων των σταθερών και μεταβλητών (β) Στοίβα περιβάλλοντος: κάθε φορά που καλείται μια συνάρτηση στη στοίβα περιβάλλοντος αποθηκεύονται: η διεύθυνση (θέση του προγρ/τος) επιστροφής, οι τιμές των τοπικών μεταβλητών και των τυπικών παραμέτρων τιμών και η δέσμευση (binding) όλων των παραμέτρων αναφοράς const. Ο χώρος που καταλαμβάνει ένα πρόγραμμα P συναρτήσει του μεγέθους του προβλήματος (n) είναι: S(n) = c + Sp(n) -- c: σταθερό μέρος -- Sp(n): μεταβλητό μέρος

Απόδοση Προγραμμάτων Χρονική Πολυπλοκότητα: ο χρόνος που απαιτείται για την εκτέλεση ενός προγράμματος. Εξαρτάται από: πρόγραμμα (αλγόριθμο), υπολογιστή, compiler (software + hardware). T(n,P): χρόνος εκτέλεσης ενός προγράμματος μεγέθους n σε P επεξεργαστές. Εδώ θα αναφερθούμε στη περίπτωση εκτέλεσης σε 1 επεξεργαστή (σειριακό πρόγραμμα), T(n). Πιθανοί τύποι: (α) Μέτρηση πράξεων: m T( n) = cf i i( n) i= 1 Το άθροισμα είναι πάνω σε όλες τις βασικές πράξεις, π.χ. πρόσθεση, αφαίρεση, κλπ., F i είναι ο αριθμός των πράξεων και c i ο χρόνος που απιατείται για την εκτέλεση κάθε πράξης. Πολύ δύσχρηστος τύπος: μπορεί να χρησιμοποιηθεί μόνο σε απλά (σχετικά μικρά) προγράμματα.

Απόδοση Προγραμμάτων (β) Μέτρηση λειτουργιών: επιλέγουμε βασικές λειτουργιές (συναρτήσεις/κλάσεις/υπορουτίνες) ενός προγράμματος (π.χ. πολ/σμός πινάκων, εύρεση στοιχείου λίστας, κλπ) και μετράμε το χρόνο εκτέλεσης κάθε λειτουργίας. m Tl( n) = ti( n) i= 1 Το άθροισμα είναι πάνω σε όλες τις λειτουργίες (i=1,,m) που έχουμε επιλέξει. t i (n) είναι ο χρόνος εκτέλεσης κάθε λειτουργίας Προσοχή: ο συνολικός χρόνος εκτέλεσης συμπεριλαμβάνει και το χρόνο λειτουργιών που έχουμε αμελήσει: Tn ( ) = Tn ( ) + T ( n) l Προσπαθούμε να επιλέξουμε τις σημαντικότερες, και πιο χρονοβόρες, λειτουργίες του προγράμματος/αλγόριθμου: T l (n) >> T other (n) other

Ασυμπτωτική Εκτίμηση Ορισμός: Μας επιτρέπει την εξαγωγή χρήσιμων συμπερασμάτων για τη χωρική και χρονική πολυπλοκότητα των προγραμμάτων για μεγάλα n. Τάξη ή ρυθμός ανάπτυξης (Order or rate of growth) Σταθερό ~ 1 < Λογαριθμικό ~ logn < Γραμμικό ~ n < ~nlogn < Τετραγωνικό ~ n 2 < Κυβικό ~ n 3 < < Εκθετικό ~ 2 n Γραφική αναπαράσταση ρυθμού αύξησης Καλύτερος αλγόριθμος: μικρότερη τάξη μεγέθους. Αγνοούμε σταθερές, κρατάμε μόνο τον κυρίαρχο όρο.

Ασυμπτωτικός Συμβολισμός O (Όμικρον κεφαλαίο): Άνω φράγμα στην τάξη μεγέθους Ορισμός: f(n) = O(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c και n 0 τέτοιες ώστε f(n) cg(n) για όλα τα n n 0 { } O( f ) = g : N N c > 0, m : f ( n) cg( n), n m Παράδειγμα: 10n 2 + 30n 2 logn = O(n 2 logn)=o(n 3 ), 10-200 n 2 O(n) Ερμηνεία: Για όλα τα αρκετά μεγάλα σύνολα δεδομένων (δηλαδή n n 0 ), ο αλγόριθμος πάντα τερματίζει σε λιγότερα από cg(n) βήματα στην [καλύτερη, μέση, χειρότερη] περίπτωση. Επιθυμούμε όσο το δυνατό στενότερα όρια: παρόλο που η συνάρτηση f(n) = 8n 4 είναι O(n 6 ), προτιμούμε O(n 4 ) Παράδειγμα 2: f(n) = c 1 n + c 2 n 2 + c 3 n 3, ισχύει: c 1 n + c 2 n 2 + c 3 n 3 (c 1 + c 2 + c 3 )n 3 για όλα τα n, Άρα f(n) cn 3 για c = c 1 + c 2 + c 3. Επομένως, f(n) είναι O(n 3 ).

Ασυμπτωτικός Συμβολισμός Ω (Ωμέγα κεφαλαίο): Κάτω φράγμα στην τάξη μεγέθους Ορισμός: f(n) = Ω(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c και n 0 τέτοιες ώστε f(n) cg(n) για όλα τα n n 0 { } Ω ( f ) = g : N N c > 0, m : f ( n) cg( n), n m Παράδειγμα: 30n 2 logn = Ω(n 2 logn )=Ω(n 2 ), 10 200 n 2 Ω(n 3 ) Ερμηνεία: Για όλα τα αρκετά μεγάλα σύνολα δεδομένων (δηλαδή n n 0 ), ο αλγόριθμος πάντα τερματίζει σε περισσότερα από cg(n) βήματα στην [καλύτερη, μέση, χειρότερη] περίπτωση. Θέλουμε το μεγαλύτερο κάτω όριο. Παράδειγμα 2: f(n) = c 1 n + c 2 n 2 + c 3 n 3, ισχύει: c 1 n + c 2 n 2 + c 3 n 3 c 3 n 3 για όλα τα n, Άρα f(n) cn 3 για c = c 3 και n 0 = 1. Επομένως, f(n) είναι Ω(n 3 ).

Ασυμπτωτικός Συμβολισμός Θ (Θήτα κεφαλαίο): Άνω και κάτω φράγμα στην τάξη μεγέθους Όταν τα Ο και Ω ταυτιστούν, το δηλώνουμε αυτό με χρήση του συμβολισμού Θ. Ορισμός: f(n) = Θ(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c 1, c 2 και n 0 τέτοιες ώστε c 1 g(n) f(n) c 2 g(n) για όλα τα n n 0 { } Θ ( f) = g: N N c, c( c > c) > 0, m: cgn ( ) f( n) cgn ( ), n m 1 2 2 1 1 2 Παράδειγμα: c 1 n 2 + c 2 n 4 + c 3 n 4 logn = Θ(n 4 logn ) Παρατήρηση: Ένας αλγόριθμος λέμε ότι είναι Θ(g(n) εάν είναι ταυτόχρονα Ο(g(n) και Ω(g(n).

Ασυμπτωτικός Συμβολισμός ο (όμικρον μικρό): Άνω στην τάξη μεγέθους που δεν είναι ακριβές { } ο ( f ) = g : N N c > 0, m : f ( n) < cg( n), n m Παράδειγμα: 5n 3 logn = ο(n 4 ), 100n 3 ο(n 3 ) f( n) lim = 0 n gn ( ) ω (ωμέγα μικρό): Κάτω στην τάξη μεγέθους που δεν είναι ακριβές { } ω ( f ) = g : N N c > 0, m : f ( n) > cg( n), n m f( n) lim = + n gn ( ) Παράδειγμα: 10n 4 logn = ω(n 4 ), 100n 3 ω(n 3 ), 100n 3 =ω(n 2 )= ω(n 2 logn)

Ασυμπτωτικός Συμβολισμός Εξ ορισμού ισχύει: f(n) = O(g(n)) ~ ασυμπτωτικά, μεγάλα n f(n) g(n) f(n) = Ω(g(n)) ~ ασυμπτωτικά, μεγάλα n f(n) g(n) f(n) = Θ(g(n)) ~ ασυμπτωτικά, μεγάλα n f(n) g(n) f(n) = ο(g(n)) ~ ασυμπτωτικά, μεγάλα n f(n) < g(n) f(n) = ω(g(n)) ~ ασυμπτωτικά, μεγάλα n f(n) > g(n) Ασυμπτωτικά: a) Εάν f(n) = O(g(n)) και g(n) = O(h(n)), τότε f(n) = O(h(n)) b) Εάν f(n) = O(kg(n)) για σταθερά k > 0, τότε f(n) = O(g(n)) c) Εάν f 1 (n) = O(g 1 (n)) και f 2 (n) = O(g 2 (n)), τότε (f 1 + f 2 )(n) = O(max(g 1 (n), g 2 (n))) d) Εάν f 1 (n) = O(g 1 (n)) και f 2 (n) = O(g 2 (n)), τότε f 1 (n)f 2 (n) = O(g 1 (n)g 2 (n))

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

Ασυμπτωτικός Συμβολισμός Η καλύτερη περίπτωση για τον αλγόριθμό μου είναι n=1 επειδή αυτό είναι το γρηγορότερο. ΛΑΘΟΣ! Το Ο αναφέρεται σε ένα αυξανόμενο ρυθμό (rate) καθώς το n τείνει στο. Η καλύτερη περίπτωση ορίζεται ως: ποια είσοδος μεγέθους n είναι φθηνότερη από όλες τις εισόδους μεγέθους n.

Ασυμπτωτικός Συμβολισμός Παράδειγμα 1: a = b; Αυτή η ανάθεση παίρνει σταθερό χρόνο c, οπότε είναι Θ(1) Παράδειγμα 2a: υπολογισμός n(n+1)/2 sum = 0; for (i=1; i<=n; i++) sum += i; Παράδειγμα 2b: (εναλλακτικός) υπολογισμός n(n+1)/2 sum = 0; for (i=1; i<=n; i++) for (j=1; j<=i; j++) sum++; Σύγκριση 2a και 2b: Υπολογισμός ίδιας έκφρασης με διαφορετικό κόστος! Θ(n) έναντι Θ(n 2 )

Ασυμπτωτικός Συμβολισμός Αν ξέρουμε ότι ένας αλγόριθμος έχει πολυπλοκότητα O(n) σε ένα σύστημα Pentium IV στα 3 GHz, πόση είναι η πολυπλοκότητα σε ένα σύστημα Pentium III στα 500 ΜHz; Note: Η πολυπλοκότητα ενός αλγορίθμου είναι ανεξάρτητη του υπολογιστή (hardware).

Μέτρηση Απόδοσης: Μελέτη Προγράμματος Μέτρηση απόδοσης: καθορισμός των πραγματικών χωρικών/χρονικών απαιτήσεων Μελέτη προγράμματος: Best case scenario (καλύτερη περίπτωση): μικρότερη τιμή που μπορεί να πάρει ο χρόνος εκτέλεσης T(n) για οποιαδήποτε είσοδο (input) με δεδομένο μέγεθος n. Worse case scenario (χειρότερη περίπτωση): μεγαλύτερη τιμή που μπορεί να πάρει ο χρόνος εκτέλεσης T(n) για οποιαδήποτε είσοδο (input) με δεδομένο μέγεθος n. Expected/Average case scenario (αναμενόμενη/μέση περίπτωση): αναμενόμενη/μέση τιμή που μπορεί να πάρει ο χρόνος εκτέλεσης T(n) για οποιαδήποτε είσοδο (input) με δεδομένο μέγεθος n.

Βιβλιογραφία Δομές Δεδομένων, Π. Μποζάνης, Εκδόσεις Τζιόλα 2006. Δομές Δεδομένων, Αλγόριθμοι και Εφαρμογές στη C++, S. Sahni, Εκδόσεις Τζιόλα, 2004. Δομές Δεδομένων, Έννοιες, Τεχνικές και Αλγόριθμοι, Γ.Φ. Γεωργακόπουλος., Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 2002. Αλγόριθμοι σε C, Μέρη 1-4 (Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση, Αναζήτηση), Robert Sedgewick, Τρίτη Αμερικάνικη Έκδοση, Εκδόσεις Κλειδάριθμός 2005. Εισαγωγή στους αλγορίθμους Τόμος Ι, T.H. Cormen, C.E. Leiserson, R.L. Rivest, Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 2006.