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

Σχετικά έγγραφα
Δομές Δεδομένων (Data Structures)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

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

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

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

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

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

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

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

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

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

Ατμοσφαιρική Ρύπανση

Εκκλησιαστικό Δίκαιο

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

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

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

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

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

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

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

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

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

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

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

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

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

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

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

Παράκτια Τεχνικά Έργα

Εκκλησιαστικό Δίκαιο

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

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

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

Οικονομική Γεωργικών Εκμεταλλεύσεων

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

Ιδιότητες και Τεχνικές Σύνταξης Επιστημονικού Κειμένου

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

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

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

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

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

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

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

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

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

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

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

Εφηρμοσμένη Θερμοδυναμική

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

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

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

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

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

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 2: Θέματα Απόδοσης Απόστολος Παπαδόπουλος

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

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

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Θέματα Απόδοσης

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

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

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

Αλγόριθμοι και Προγράμματα Αλγόριθμος: μια μέθοδος ή μια διαδικασία που ακολουθείται για την επίλυση ενός προβλήματος. Μια συνταγή Ένας αλγόριθμος παίρνει την είσοδο ενός προβλήματος (συνάρτηση) και τη μετασχηματίζει στην έξοδο. Μια αντιστοίχιση της εισόδου στην έξοδο.. Ένα πρόβλημα μπορεί να επιλύεται με πολλούς εναλλακτικούς αλγορίθμους. 8

Ιδιότητες Αλγορίθμου Ένας αλγόριθμος έχει τις ακόλουθες ιδιότητες: Πρέπει να είναι ορθός. Πρέπει να αποτελείται από μια σειρά από σαφή βήματα. Πρέπει να αποτελείται από ένα πεπερασμένο αριθμό βημάτων. Πρέπει να είναι σαφές ποιο βήμα θα εκτελεστεί κάθε φορά. Πρέπει να τερματίζει. Ένα πρόγραμμα υπολογιστή είναι ένα στιγμιότυπο ή μια διακριτή αναπαράσταση για έναν αλγόριθμο σε μια προγραμματιστική γλώσσα. Μαθηματικό υπόβαθρο: Σύνολα, Αναδρομή, Επαγωγικές αποδείξεις, Λογάριθμοι, Αθροίσματα, Επαναληπτικές σχέσεις. 9

Απόδοση Αλγορίθμων Συνήθως υπάρχουν πολλοί τρόποι (αλγόριθμοι) για την επίλυση ενός προβλήματος. Πώς επιλέγουμε μεταξύ αυτών; Πρέπει να ικανοποιηθούν δύο (αντικρουόμενοι) στόχοι 1. Ο αλγόριθμος να είναι εύκολα κατανοητός, ενώ παράλληλα να είναι απλός τόσο ο προγραμματισμός του όσο και η αποσφαλμάτωση (debugging). Ο στόχος (1) αφορά τις Αρχές Προγραμματισμού. 2. Ο αλγόριθμος να κάνει αποδοτική χρήση των πόρων του υπολογιστή. Ο στόχος (2) αφορά τις και τη Θεωρία Αλγορίθμων. Όταν εστιάσουμε στο 2ο στόχο πώς μετράμε το κόστος του αλγορίθμου; 10

Μέτρηση Απόδοσης 1. Εμπειρική σύγκριση (τρέξιμο προγραμμάτων). 2. Ασυμπτωτική ανάλυση αλγορίθμων. Παράγοντες που επηρεάζουν το χρόνο εκτέλεσης ενός προγράμματος: Για τους περισσότερους αλγορίθμους, ο χρόνος τρεξίματος εξαρτάται από το μέγεθος της εισόδου. Ο χρόνος τρεξίματος εκφράζεται ως f(n) για κάποια συνάρτηση f πάνω στο μέγεθος n της εισόδου. 11

Παραδείγματα Ρυθμού Αύξησης Παράδειγμα 1 (εύρεση του μέγιστου στοιχείου ενός πίνακα) int largest(int array[], int n) { int currlarge = 0; for (int i=1; i<n; i++) // Για κάθε val if (array[currlarge] < array[i]) currlarge = i; // αποθήκευση της θέσης return currlarge; // επιστροφή μεγαλύτερου } Παράδειγμα 2 ( χαζός υπολογισμός της έκφρασης n(n-1)) sum = 0; for (i=1; i<=n; i++) for (j=1; j<n; j++) sum++; } 12

Γραφική Αναπαράσταση Ρυθμού Αύξησης 13

Καλύτερη, Χειρότερη, Μέση Περίπτωση Διαφορετικές είσοδοι του ίδιου μεγέθους συνήθως απαιτούν διαφορετικό χρόνο τρεξίματος. Παράδειγμα: Σειριακή αναζήτηση ενός στοιχείου (του K) σε έναν πίνακα n ακεραίων: Ξεκινάμε από το πρώτο στοιχείο του πίνακα και εξετάζουμε στη σειρά κάθε στοιχείο, μέχρι να βρούμε το K. Ποια είναι η καλύτερη / χειρότερη / μέση περίπτωση; Αν και ο μέσος χρόνος δείχνει να είναι το πιο δίκαιο μέτρο, μπορεί να είναι δύσκολο να υπολογιστεί. 14

Ταχύτερος Υπολογιστής ή Ταχύτερος Αλγόριθμος; Τι συμβαίνει όταν αγοράζουμε έναν υπολογιστή 10 φορές ταχύτερο; n (n ): το μέγεθος εισόδου που μπορούμε να επεξεργαστούμε σε 1 ώρα με τον αργό (ταχύ) υπολογιστή, χρόνος που αντιστοιχεί σε έστω 10,000 (100,000) πράξεις. f(n) n n Αλλαγή n /n 10n 1,000 10,000 n = 10n 10.00 20n 500 5,000 n = 10n 10.00 5n log n 250 1,842 10 n < n < 10n 7.37 2n 2 70 223 n = 10n 3.16 2 n 13 16 n = n + 3 1.23 15

Συμβολισμός Όμικρον Κεφαλαίο (Ο) Ορισμός: f(n) = O(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c και n0 τέτοιες ώστε f(n) cg(n) για όλα τα n n0. Παράδειγμα: Ο αλγόριθμος... είναι O(n2) [καλύτερης, μέσης, χειρότερης] περίπτωσης. Ερμηνεία: Για όλα τα αρκετά μεγάλα σύνολα δεδομένων (δηλαδή n n0), ο αλγόριθμος πάντα τερματίζει σε λιγότερα από cg(n) βήματα στην [καλύτερη, μέση, χειρότερη] περίπτωση. Αποτελεί άνω όριο κόστους. 16

Συμβολισμός Όμικρον Κεφαλαίο (Ο) Ο συμβολισμός Ο δηλώνει ένα άνω όριο. Παράδειγμα: Εάν f(n) = 3n 2 τότε η f(n) είναι O(n 2 ). Επιθυμούμε όσο το δυνατό στενότερα όρια: Παρόλο που ισχύει ότι η συνάρτηση f(n) = 3n 2 είναι O(n 3 ), προτιμούμε O(n 2 ). 17

Παραδείγματα Χρήσης του Ο Παράδειγμα 1: Εύρεση της τιμής X σε έναν πίνακα (μέσο κόστος) f(n) = c s n/2. Για όλα τα n, c s n/2 c s n. Επομένως, f(n) είναι O(n) για n 0 =1 και c=c s Παράδειγμα 2: f(n) = c 1 n 2 + c 2 n στη μέση περίπτωση. c 1 n 2 + c 2 n c 1 n 2 + c 2 n 2 (c 1 + c 2 )n 2 για όλα τα n Άρα f(n) cn 2 για c = c 1 + c 2 και n 0 = 1 Επομένως, f(n) είναι O(n 2 ) εξ ορισμού Παράδειγμα 3: f(n) = c. Λέμε ότι είναι O(1) 18

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

Συμβολισμός Ωμέγα Κεφαλαίο (Ω) Ορισμός: f(n) = Ω(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c και n 0 τέτοιες ώστε f(n) cg(n) για όλα τα n n 0 Παράδειγμα: Ο αλγόριθμος... είναι Ω(n 2 ) [καλύτερης, μέσης, χειρότερης] περίπτωσης. Ερμηνεία: Για όλα τα αρκετά μεγάλα σύνολα δεδομένων (δηλαδή n n 0 ), ο αλγόριθμος πάντα τερματίζει σε περισσότερα από cg(n) βήματα στην [καλύτερη, μέση, χειρότερη] περίπτωση. Αποτελεί κάτω όριο κόστους. 20

Παράδειγμα Χρήσης του Ω f(n) = c 1 n 2 + c 2 n c 1 n 2 + c 2 n c 1 n 2 για όλα τα n Άρα f(n) cn 2 για c = c 1 και n 0 = 1. Επομένως, η f(n) είναι (n 2 ) εξ ορισμού. Θέλουμε το μεγαλύτερο κάτω όριο. 21

Συμβολισμός Θήτα Κεφαλαίο (Θ) Όταν τα Ο και ταυτιστούν, το δηλώνουμε αυτό με χρήση του συμβολισμού. Ορισμός: f(n) = Θ(g(n) αν και μόνο αν υπάρχουν θετικές σταθερές c 1, c 2 και n 0 τέτοιες ώστε c 1 g(n) f(n) c 2 g(n) για όλα τα n n 0 Παρατήρηση: Ένας αλγόριθμος λέμε ότι είναι Θ(g(n) εάν είναι ταυτόχρονα Ο(g(n) και Ω(g(n) 22

Κανόνες Απλοποίησης 1. Εάν f(n) = O(g(n)) και g(n) = O(h(n)), τότε f(n) = O(h(n)) 2. Εάν f(n) = O(kg(n)) για σταθερά k > 0, τότε f(n) = O(g(n)) 3. Εάν f1(n) = O(g1(n)) και f2(n) = O(g2(n)), τότε (f1 + f2)(n) = O(max(g1(n), g2(n))) 4. Εάν f1(n) = O(g1(n)) και f2(n) = O(g2(n)), τότε f1(n)f2(n) = O(g1(n)g2(n)) 23

Ασυμπτωτικές Ταυτότητες 24

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

Παραδείγματα (συν.) Παράδειγμα 4: υπολογισμός n 2 sum = 0; for (i=1; i<=n; i++) for (j=1; j<=n; j++) sum++; Σύγκριση 3 και 4: Υπολογισμός διαφορετικών εκφράσεων με ίδιο κόστος! Θ(n 2 ) Παράδειγμα 5: Παράδειγμα 6: sum = 0; for (k=1; k<=n; k*=2) for (j=1; j<=n; j++) sum++; Κόστος Θ(n log n) sum = 0; for (k=1; k<=n; k*=2) for (j=1; j<=k; j++) sum++; Κόστος Θ(n) 26

Παράδειγμα: Δυαδική Αναζήτηση Πόσα στοιχεία εξετάζουμε στη χειρότερη περίπτωση? Απάντηση: 4 (= log 2 16) 27

Δυαδική Αναζήτηση (συν.) // Επιστροφή της θέσης του στοιχείου με τιμή // x στον ταξινομημένο πίνακα a μεγέθους n. int BinarySearch(int a[], int n, int x) { int left = 0; int right = n-1; while (left <= right) { } int middle = (left + right) / 2; // όρια πίνακα // σταμάτα όταν τα // όρια ταυτιστούν if (x == a[middle]) return middle; if (x > a[middle]) left = middle + 1; else right = middle 1; // αναζήτηση στο δεξί ή αριστερό μισό, αντίστοιχα } return -1; // έλεγχος του μεσαίου στοιχείου // βρέθηκε // ένδειξη ότι δεν βρέθηκε 28

Χωρικά Όρια Κόστους Ισορροπία Μεταξύ Χρονικού / Χωρικού Κόστους Τα χωρικά όρια μπορούν επίσης να αναλυθούν με χρήση ασυμπτωτικής ανάλυσης. Χρόνος: Αλγόριθμος που επιλύει το πρόβλημα. Χώρος της δομής δεδομένων που απαιτείται για την υλοποίηση του αλγορίθμου. Μπορούμε να μειώσουμε το χρόνο εάν θελήσουμε να θυσιάσουμε το χώρο (και αντίστροφα). Σκεφτείτε (στην πορεία του μαθήματος) παραδείγματα... 29

Παράδειγμα I Έστω η συνάρτηση g(n) = n 2 + n + 10 Λέμε ότι g(n) = O(n 2 ), διότι μπορούμε να βρούμε μία σταθερά c, και έναν αριθμό n 0 έτσι ώστε n > n 0 n 2 + n + 10 < c n 2 Μπορείτε να βρείτε τιμές για τα c και n 0 ; Π.χ. c=15, n 0 =1 30

Παράδειγμα II Δίνεται ένας σάκος που περιέχει αριθμούς. Ζητείται να βρεθεί ο μεγαλύτερος αριθμός που υπάρχει στο σάκο. Κάθε φορά μπορούμε να βγάλουμε έναν αριθμό από το σάκο. Αν έχουμε n αριθμούς, ποια η πολυπλοκότητα χρόνου της μεθόδου; 31

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

Σημείωμα Αναφοράς Copyright, Απόστολος Παπαδόπουλος. «. Θέματα Απόδοσης». Έκδοση: 1.0. Θεσσαλονίκη 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.auth.gr/courses/ocrs389/

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

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: <Μαυρίδης Απόστολος> Θεσσαλονίκη, <Εαρινό εξάμηνο 2013-2014>

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα

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