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

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

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

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

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

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

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

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

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

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

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

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

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

Συνδετικότητα γραφήματος (graph connectivity)

Περιεχόμενα. Περιεχόμενα

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

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

Ουρά Προτεραιότητας (priority queue)

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

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

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

n ίδια n διαφορετικά n n 0 n n n 1 n n n n 0 4

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

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

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

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

a n + 6a n a n 2 + 8a n 3 = 0, a 0 = 1, a 1 = 2, a 2 = 8

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

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

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

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

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

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

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

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

Ουρά Προτεραιότητας (priority queue)

- ΟΡΙΟ - ΣΥΝΕΧΕΙΑ ΣΥΝΑΡΤΗΣΗΣ ΕΝΟΤΗΤΑ 6: ΜΗ ΠΕΠΕΡΑΣΜΕΝΟ ΟΡΙΟ ΣΤΟ

Αντισταθμιστική ανάλυση

Τυχαιοκρατικοί Αλγόριθμοι

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

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

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

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

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

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

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

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

Αριθμοθεωρητικοί Αλγόριθμοι

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER

Fast Fourier Transform

Εργαστήριο 2: Πίνακες

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

Σχεδίαση & Ανάλυση Αλγορίθμων

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

Διδάσκων: Παναγιώτης Ανδρέου

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

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Απαντήσεις. Θέμα 1 ο. Α. α) v1. Άρα v1

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

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

Αναδρομικοί Αλγόριθμοι

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Διδάσκων: Παναγιώτης Ανδρέου

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Transcript:

Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική ανάλυση Πειραματική ανάλυση

Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Πότε μπορούμε να είμαστε ευχαριστημένοι από την απόδοση ενός αλγόριθμου; Θεωρητική ανάλυση Πειραματική ανάλυση

Ανάλυση αλγορίθμων Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση - απαιτεί γνώση της κατανομής εισόδου - όταν η κατανομή δεν είναι γνωστή (κάτι που συμβαίνει συχνά!), συνήθως υποθέτουμε ομοιόμορφη κατανομή - πιθανοκρατικοί αλγόριθμοι διαμορφώνουν την κατανομή εισόδου Χειρότερη περίπτωση - ισχύει για κάθε είσοδο - κοντά στην αναμενόμενη όταν συμβαίνει συχνά, αλλά μπορεί να είναι απαισιόδοξη όταν συμβαίνει σπάνια

Ανάλυση αλγορίθμων Πειραματική ανάλυση του χρόνου εκτέλεσης public static void main() { long starttime = System.currentTimeMillis(); // run algorithm... long endtime = System.currentTimeMillis(); long totaltime = endtime - starttime; }

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

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Πόσος χρόνος απαιτείται ανά εντολή; Ποια είναι η συχνότητα εκτέλεσης της κάθε εντολής;

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Χρόνος εκτέλεσης:

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Χρόνος εκτέλεσης:

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Χρόνος εκτέλεσης:

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Χρόνος εκτέλεσης:

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Χρόνος εκτέλεσης:

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Χρόνος εκτέλεσης: ασυμτωτικά γραμμική

Είναι η μελέτη του ρυθμού αύξησης του χρόνου εκτέλεσης (ή άλλης παραμέτρου απόδοσης) ως συνάρτηση του μεγέθους της εισόδου Παράδειγμα: Υπολογισμός εσωτερικού γινομένου Θέλουμε να εξαλείψουμε τις επουσιώδεις λεπτομέρειες z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Χρόνος εκτέλεσης: ασυμτωτικά γραμμική

Εξετάζουμε τη συμπεριφορά των συναρτήσεων όσο αυξάνει το μέγεθος της εισόδου

Συμβολισμός Θ ασυμτωτικά αυστηρό φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε

Συμβολισμός Θ ασυμτωτικά αυστηρό φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Παράδειγμα 1: Πρέπει να βρούμε θετικές σταθερές και, τέτοιες ώστε για κάθε.

Συμβολισμός Θ ασυμτωτικά αυστηρό φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Παράδειγμα 1: Πρέπει να βρούμε θετικές σταθερές και, τέτοιες ώστε (Σ) για κάθε.

Συμβολισμός Θ ασυμτωτικά αυστηρό φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Παράδειγμα 1: Πρέπει να βρούμε θετικές σταθερές και, τέτοιες ώστε (Σ) για κάθε. Θέλουμε που ισχύει όταν Επίσης θέλουμε και Έχουμε Επιλέγοντας έχουμε Άρα για και ικανοποιείται η συνθήκη (Σ).

Συμβολισμός Θ ασυμτωτικά αυστηρό φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Παράδειγμα 2: Έστω ότι Τότε υπάρχουν θετικές σταθερές και με για κάθε. Δηλαδή για κάθε. Αυτό είναι αδύνατο για σταθερό.

Παράδειγμα: Η παρακάτω συνάρτηση εξετάζει τον πίνακα a με Ν ακέραιους και βρίσκει πόσες τριάδες δίνουν άθροισμα μηδέν static public int counttriples(int[] a, int N){ int count=0; for (int i=0; i<n; i++) for (int j=i+1; j<n; j++) for (int k=j+1; k<n; k++) if ( a[i]+a[j]+a[k] == 0) count++; return count; } Δοκιμάζει όλες τις τριάδες με

Παράδειγμα: Η παρακάτω συνάρτηση εξετάζει τον πίνακα a με Ν ακέραιους και βρίσκει πόσες τριάδες δίνουν άθροισμα μηδέν static public int counttriples(int[] a, int N){ int count=0; for (int i=0; i<n; i++) for (int j=i+1; j<n; j++) for (int k=j+1; k<n; k++) if ( a[i]+a[j]+a[k] == 0) count++; return count; } Δοκιμάζει όλες τις τριάδες με τριάδες χρόνος εκτέλεσης

Συμβολισμός O ασυμτωτικό άνω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε

Συμβολισμός O ασυμτωτικό άνω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Π.χ., ισχύει

Συμβολισμός O ασυμτωτικό άνω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Π.χ., ισχύει Προφανώς

Συμβολισμός O ασυμτωτικό άνω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Έστω ότι για τις συναρτήσεις και υπάρχει το όριο και έχει τιμή για κάποια σταθερά Τότε

Συμβολισμός O ασυμτωτικό άνω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Έστω ότι για τις συναρτήσεις και υπάρχει το όριο και έχει τιμή για κάποια σταθερά Τότε Παράδειγμα επειδή

Συμβολισμός O ασυμτωτικό άνω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Έστω ότι για τις συναρτήσεις και υπάρχει το όριο και έχει τιμή για κάποια σταθερά Τότε Παράδειγμα επειδή

Συμβολισμός Ω ασυμτωτικό κάτω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε

Συμβολισμός Ω ασυμτωτικό κάτω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Έστω ότι για τις συναρτήσεις και υπάρχει το όριο και έχει τιμή για κάποια σταθερά Τότε Ισχύει

Συμβολισμός Ω ασυμτωτικό κάτω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Έστω ότι για τις συναρτήσεις και υπάρχει το όριο και έχει τιμή για κάποια σταθερά Τότε Παράδειγμα επειδή

Συμβολισμός Ω ασυμτωτικό κάτω φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Έστω ότι για τις συναρτήσεις και υπάρχει το όριο και έχει τιμή για κάποια σταθερά Τότε Παράδειγμα επειδή

Συμβολισμός Θ ασυμτωτικά αυστηρό φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε

Συμβολισμός Θ ασυμτωτικά αυστηρό φράγμα : Υπάρχουν θετικές σταθερές και τέτοιες ώστε για κάθε Ισχύει αν και μόνο αν και Έστω ότι για τις συναρτήσεις και υπάρχουν τα όρια, όπου και για κάποια σταθερά. Τότε

Συμβολισμός o ασυμτωτικά μη αυστηρό άνω φράγμα : Για οποιαδήποτε σταθερά, υπάρχει σταθερά τέτοια ώστε για κάθε Παράδειγμα: αλλά Έστω ότι για τις συναρτήσεις και υπάρχει το όριο όπου. Τότε

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

Προσοχή! Ακόμα και δύο γνησίως αύξουσες συναρτήσεις μπορεί να έχουν πολλά σημεία τομής

Προσοχή! Δεν είναι όλες οι συναρτήσεις ασυμπτωτικά συγκρίσιμες π.χ., και

Ιδιότητες Μεταβατικότητα: και Αυτοπάθεια: Συμμετρία: όταν και μόνο όταν

Ιδιότητες Μεταβατικότητα: και Αυτοπάθεια: Συμμετρία: όταν και μόνο όταν Μεταβατικότητα και αυτοπάθεια ισχύουν και για τους συμβολισμούς Ο, Ω, ο και ω. Στη θέση της συμμετρίας έχουμε: όταν και μόνο όταν

Παραδείγματα Θέλουμε να διατάξουμε τις παρακάτω συναρτήσεις ως προς το ρυθμό αύξησης, από τη μικρότερη ως τη μεγαλύτερη

Παραδείγματα Θέλουμε να διατάξουμε τις παρακάτω συναρτήσεις ως προς το ρυθμό αύξησης, από τη μικρότερη ως τη μεγαλύτερη Έχουμε Για και Γενικά Διάταξη

Παραδείγματα Θέλουμε να διατάξουμε τις παρακάτω συναρτήσεις ως προς το ρυθμό αύξησης, από τη μικρότερη ως τη μεγαλύτερη Έχουμε Για Έχουμε Διάταξη

Παραδείγματα Θέλουμε να διατάξουμε τις παρακάτω συναρτήσεις ως προς το ρυθμό αύξησης, από τη μικρότερη ως τη μεγαλύτερη Έχουμε Για Έχουμε Διάταξη

Παραδείγματα Θέλουμε να διατάξουμε τις παρακάτω συναρτήσεις ως προς το ρυθμό αύξησης, από τη μικρότερη ως τη μεγαλύτερη Έχουμε Για Έχουμε Διάταξη

Παραδείγματα Θέλουμε να διατάξουμε τις παρακάτω συναρτήσεις ως προς το ρυθμό αύξησης, από τη μικρότερη ως τη μεγαλύτερη Έχουμε Για Έχουμε Διάταξη

Παραδείγματα Θέλουμε να διατάξουμε τις παρακάτω συναρτήσεις ως προς το ρυθμό αύξησης, από τη μικρότερη ως τη μεγαλύτερη Επομένως έχουμε

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

Πρακτικές πολυπλοκότητες λογαριθμική κλίμακα

Χρήσιμες συναρτήσεις στην ανάλυση αλγορίθμων κάτω ακέραιο μέρος : μεγαλύτερος ακέραιος άνω ακέραιο μέρος : μικρότερος ακέραιος φυσικός λογάριθμος : τέτοιο ώστε δυαδικός λογάριθμος : τέτοιο ώστε ακέραιος δυαδικός λογάριθμος : (αριθμός δυαδικών ψηφίων στη δυαδική αναπαράσταση του ) - 1 Ν-οστός αρμονικός αριθμός

Χρήσιμες συναρτήσεις στην ανάλυση αλγορίθμων διωνυμικοί συντελεστές για μικρή σταθερά Προσέγγιση Stirling Γεωμετρικό άθροισμα

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν.

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (15+1)/2 = 8 α 8 = 56 < v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (15+1)/2 = 8 α 8 = 56 < v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (9+15)/2 = 12 α 12 = 128 > v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (9+15)/2 = 12 α 12 = 128 > v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (9+11)/2 = 10 α 10 = 90 < v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (9+11)/2 = 10 α 10 = 90 < v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (11+11)/2 = 11 α 11 = 102 < v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v =111 θέση μέσου στοιχείου = (11+11)/2 = 11 α 11 = 102 < v

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. θέση στοιχείο 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Το v δεν υπάρχει στην ακολουθία. Βρήκαμε όμως το αμέσως μικρότερο στοιχείο.

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. public static int binarysearch(int a[], int v, int l, int r) { while (r>=l) { int m=(l+r)/2; if (v==a[m]) return m; if (v<a[m]) r=m-1; else l=m+1;} return -1; }

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. Ανάλυση: Έστω Τ(n) ο χρόνος της αναζήτησης σε ακολουθία n στοιχείων.

Παράδειγμα: Δυαδική Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα Δυαδική αναζήτηση: προϋποθέτει να έχει γίνει ταξινόμηση της ακολουθίας δηλαδή τέτοιο ώστε Κάθε βήμα είτε βρίσκει το v είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας που απομένουν. Ανάλυση: Έστω Τ(n) ο χρόνος της αναζήτησης σε ακολουθία n στοιχείων. Ισχύει χειρότερη περίπτωση

Αναζήτηση Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Χρόνος δυαδικής αναζήτησης = Με πίνακες διασποράς επιτυγχάνουμε (Προσεχώς σε μερικές εβδομάδες...) χρόνο.

Αναζήτηση Εύρεση προκατόχου Μας δίνεται μία ακολουθία από n ακέραιους και ένας ακέραιος Θέλουμε να βρούμε τον μεγαλύτερο τέτοιο ώστε Χρόνος δυαδικής αναζήτησης = Καλύτερος δυνατός ασυμπτωτικός χρόνος όταν βασιζόμαστε μόνο σε πράξεις σύγκρισης (>,<,=). Με πιο περίπλοκες δομές μπορούμε να πετύχουμε χρόνο.

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

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

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

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

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

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

Αναδρομικές σχέσεις Παράδειγμα: Ακολουθιακή αναζήτηση και απαλοιφή ενός στοιχείου μέχρι να μείνει κενή ακολουθία. Έστω Τ(n) ο χρόνος εκτέλεσης για ακολουθία n στοιχείων στη χειρότερη περίπτωση. Ισχύει Με επαγωγή: Θέλουμε να δείξουμε ότι δηλαδή ότι για κάποια θετική σταθερά c. Η βάση της επαγωγής είναι που ισχύει για Επαγωγικό βήμα: Έστω Έχουμε

Αναδρομικές σχέσεις Παράδειγμα: Ακολουθιακή αναζήτηση και απαλοιφή ενός στοιχείου μέχρι να μείνει κενή ακολουθία. Έστω Τ(n) ο χρόνος εκτέλεσης για ακολουθία n στοιχείων στη χειρότερη περίπτωση. Ισχύει Με επαγωγή: Επίσης ισχύει. Θα δείξουμε επαγωγικά ότι για κάποια θετική σταθερά c. Η βάση της επαγωγής είναι που ισχύει για Επαγωγικό βήμα: Έστω Έχουμε που ισχύει για

Αναδρομικές σχέσεις Παράδειγμα: Ακολουθιακή αναζήτηση και απαλοιφή ενός στοιχείου μέχρι να μείνει κενή ακολουθία. Έστω Τ(n) ο χρόνος εκτέλεσης για ακολουθία n στοιχείων στη χειρότερη περίπτωση. Ισχύει Άρα έχουμε και

Αναδρομικές σχέσεις Παράδειγμα: Με τη μέθοδο της αντικατάστασης λαμβάνουμε

Αναδρομικές σχέσεις Παράδειγμα: Με τη μέθοδο της αντικατάστασης λαμβάνουμε

Αναδρομικές σχέσεις Παράδειγμα: Εναλλακτικά έχουμε: Τότε Άρα οπότε