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

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

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

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

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

Εξαντλητική Απαρίθµηση

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

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Τηλ , Fax: , URL:

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

Ταξινόμηση. 1. Ταξινόμηση του Shell. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

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

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

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

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

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

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

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

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

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

Μαθηµατική Επαγωγή. Ορέστης Τελέλης. Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

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

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

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

- εξίσωση που εκφράζει τον n-οστό όρο a n της ακολουθίας, - µέσω ενός ή περισσότερων όρων από τους a 0, a 1,..., a n 1, - για κάθε n n 0, όπου n 0 N.

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

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

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

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

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

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

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

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

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

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

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

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

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

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

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

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

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

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

Αρχή Εγκλεισµού-Αποκλεισµού (3 σύνολα) Αρχή Εκλεισµού-Αποκλεισµού Η Τάξη των Συναρτήσεων. Εφαρµογές. Παράδειγµα 1.

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

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

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

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.

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

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

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

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

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

Πολυπλοκότητα Αλγορίθµων

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

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

1η Σειρά Γραπτών Ασκήσεων

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

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

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Transcript:

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16

«Ζέσταµα» Να γράψετε τις συναρτήσεις σε σειρά αύξουσας τάξης. n + (log n) 2, n 100 + 2 n, n + (log n) 100, 2 n + n!, n 2 + 3 2n, 2 4n + n n2, n(log n) 2 + n 2 log n, n n + (log n) 10 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 2 / 16

Αλγόριθµοι «Ορισµός» Αλγόριθµος είναι µια πεπερασµένη ακολουθία σαφών οδηγιών (ϐηµάτων) για την εκτέλεση ενός υπολογισµού ή την επίλυση ενός προβλήµατος. ιόλου µαθηµατικός «ορισµός», µε υποκειµενικά και αναδροµικά στοιχεία: «σαφείς»: όχι αντικειµενικά σαφές. «οδηγίες»: είναι η οδηγία αλγόριθµος; είναι ο αλγόριθµος οδηγία; «υπολογισµός»: τί είναι; είναι η εκτέλεση αλγορίθµου; (που µε τη σειρά του είναι η εκτέλεση του υπολογισµού;) Επισήµως δεν έχουµε ορθό και πλήρη µαθηµατικό ορισµό του αλγορίθµου ιαθέτουµε ικανοποιητικό (µη πλήρη) ορισµό: Μηχανή ( Alan) Turing Η µελέτη του είναι αντικείµενο της Θεωρίας Υπολογισµού. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 3 / 16

Επιθυµητά Χαρακτηριστικά Αλγορίθµων Είσοδος: από ένα προδιαγεγραµµένο σύνολο τιµών εισόδου. Εξοδος: από ένα προδιαγεγραµµένο σύνολο τιµών εξόδου. Πληρότητα Περιγραφής: πλήρης και σαφής προδιαγραφή ϐηµάτων. Ορθότητα: παραγωγή ορθής εξόδου για δεδοµένη είσοδο. Πεπερασµένο Πλήθος Βηµάτων: εκτελέσιµων σε πεπερασµένο χρόνο. Γενικότητα: Ενας αλγόριθµος επιλύει ορθά όλα τα «στιγµιότυπα» ενός προβλήµατος και όχι µόνο ένα συγκεκριµένο (για συγκεκριµένη είσοδο). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 4 / 16

Υπολογιστική Πολυπλοκότητα Αλγορίθµου Ανω φράγµα πλήθους στοιχειωδών πράξεων που εκτελεί ο αλγόριθµος Χειρότερη περίπτωση χρόνου εκτέλεσης, για όλες τις δυνατές εισόδους. Η πολυπλοκότητα (χρόνος χειρότερης περίπτωσης) του αλγορίθµου: είναι συνάρτηση f(n) του µεγέθους n των δεδοµένων εισόδου, εκφράζεται από την τάξη O(f(n)) της συνάρτησης αυτής. Λέµε ότι ο αλγόριθµος: έχει πολυπλοκότητα O(f(n)), ή είναι χρόνου O(f(n)) ή έχει χρόνο (εκτέλεσης) χειρότερης περίπτωσης O(f(n)). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 5 / 16

Αλγόριθµος Εύρεσης Μεγίστου findmax(a 1, a 2,..., a n : ακέραιοι) 1. max := a 1 2. για i := 2 έως n 1. αν max < a i τότε max := a i 3. επίστρεψε max. Περιγραφή µε Ψευδοκώδικα int find_max(int a[],int n) { int max, i; max = a[0]; for(i = 1; i < n; i++) if (max < a[i]) max = a[i]; return max; } Υλοποίηση σε γλώσσα C Ενδεικτικές Στοιχειώδεις Πράξεις: Προσθέσεις, αφαιρέσεις, πολλαπλασιασµοί, διαιρέσεις. Αναθέσεις / Αναγνώσεις / Επιστροφές τιµών µεταβλητών. Συγκρίσεις (π.χ. σε if... else, σε while και σε do... while). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 6 / 16

Παραδείγµατα 1. t := 0 2. για i := 1 έως 3 2.1. για j := 1 έως 4 2.1.1. t := t + i j 1. Χρόνος: O(1) 1. t := 0 2. για i := 1 έως n 2.1. για j := 1 έως n 2.1.1. t := t + i + j 2. Χρόνος: O(n 2 ) 1. m := 0 2. για i := 1 έως n 2.1. για j := i + 1 έως n 2.1.1. m := max(ai aj, m) 3. Χρόνος: O(n 2 ) 1. i := 1 2. t := 0 3. όσο i n 3.1. t := t + i 3.2. i := 2 i 4. Χρόνος: O(log n) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 7 / 16

Επεξηγήσεις 1. 3 «εξωτερικές» επαναλήψεις, έκαστη αποτελούµενη από 4 «εσωτερικές»: σταθερός χρόνος σε κάθε «εσωτερική» επανάληψη. 2. n «εξωτερικές» επαναλήψεις, έκαστη αποτελούµενη από n «εσωτερικές» σταθερός χρόνος σε κάθε «εσωτερική» επανάληψη. 3. Η i-οστή «εξωτερική» επανάληψη έχει n i «εσωτερικές» επαναλήψεις: 1 + 2 + 3 + + (n 1) = n(n 1) 2 = O(n 2 ) 4. Στο τέλος της k-στής επανάληψης ϑα είναι i = 2 k : τερµατισµός όταν 2 k = n + 1 = k = log(n + 1) = O(log n). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 8 / 16

Υπολογιστική Πολυπλοκότητα: Κάτω Φράγµατα Εχει νόηµα ένα κάτω ϕράγµα Ω(g(n)) στην πολυπλοκότητα αλγορίθµων: είναι το κάτω ϕράγµα του χρόνου χειρότερης περίπτωσης. Ενας αλγόριθµος έχει πολυπλοκότητα Ω(g(n)) αν: υπάρχει οικογένεια εισόδων µεγέθους n τέτοια ώστε: ο χρόνος εκτέλεσης για αυτή την οικογένεια εισόδων να είναι Ω(g(n)). Αλγόριθµος µε πολυπλοκότητα O(f(n)) και Ω(f(n)), έχει πολυπλοκότητα Θ(f(n)). Ενα κάτω φράγµα για την πολυπλοκότητα του findmax: Εκτελεί πάντα τουλάχιστον n 1 επαναλήψεις ανεξάρτητα εισόδου. Επίσης σε κάθε επανάληψη εκτελεί πάντα µία σύγκριση (ανεξάρτητα εισόδου). Εποµένως ο αλγόριθµος έχει πολυπλοκότητα Ω(n) και, άρα, Θ(n). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 9 / 16

Κι άλλος αλγόριθµος εύρεσης µεγίστου Παράδειγµα Εκτέλεσης findmax2(a 1, a 2,..., a n : ακέραιοι) 1. για i := 1 έως n 1 1.1. αν a i > a i+1 τοτε tmp := a i+1 a i+1 := a i a i := tmp 2. επίστρεψε a n. Είσοδος: a 1 a 2 a 3 a 4 a 5 3 5 7 6 2 1η Επαν.: 3 5 7 6 2 2η Επαν.: 3 5 7 6 2 3η Επαν.: 4η Επαν.: 3 5 7 6 2 3 5 6 7 2 3 5 6 7 2 3 5 6 2 7 Εξετάζει τα στοιχεία στη σειρά i = 1,..., n 1: Αν a i > a i+1, ανταλλάσσει τα περιεχόµενα των a i και a i+1 Τελικά, προωθεί το µεγαλύτερο όλων στο τέλος (στη ϑέση a n ). Πολυπλοκότητα: Θ(n). n 1 επαναλήψεις O(1) χρόνου ανεξάρτητα εισόδου. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 10 / 16

Ταξινόµηση Φυσαλίδας (BubbleSort) BubbleSort(a 1, a 2,..., a n : ακέραιοι) 1. για i := n έως 2 1.1. findmax2(a 1,..., a i ) findmax2(a 1, a 2,..., a n : ακέραιοι) 1. για i := 1 έως n 1 1.1. αν a i > a i+1 τοτε tmp := a i+1 a i+1 := a i a i := tmp 2. επίστρεψε a n. Είσοδος: 1η Επαν.: 2η Επαν.: 3η Επαν.: 4η Επαν.: a 1 a 2 a 3 a 4 a 5 3 5 7 6 2 3 5 7 6 2 3 5 6 2 7 3 5 6 2 7 3 5 2 6 7 3 5 2 6 7 3 2 5 6 7 3 2 5 6 7 2 3 5 6 7 n 1 κλήσεις στον findmax2, µε είσοδο πίνακα µήκους n, n 1, n 2,..., 2. Αντίστοιχα ο findmax2 εκτελεί n 1, n 2,..., 1 επαναλήψεις O(1) χρόνου. Συνολικός χρόνος: 1 + 2 + + (n 2) + (n 1) = n(n 1)/2 = Θ(n 2 ). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 11 / 16

Ταξινόµηση Παρεµβολής (InsertionSort) InsertionSort( a 1, a 2,..., a n : ακέραιοι ) 1. για i := 2 έως n: 1.1. tmp := a i 1.2. j := i 1.3. όσο j > 1 και a j 1 tmp: 1.3.1. a j := a j 1 1.3.2. j = j 1 1.4. a j := tmp 2. επίστρεψε a Είσοδος: 1η Επαν.: 2η Επαν.: 3η Επαν.: 4η Επαν.: a 1 a 2 a 3 a 4 a 5 23 12 58 7 10 23 12 58 7 10 12 23 58 7 10 12 23 58 7 10 12 23 58 7 10 12 23 58 7 10 7 12 23 58 10 7 12 23 58 10 7 10 12 23 58 Για κάθε ϑέση i = 2,..., n της ακολουθίας µπορεί να «σπρώξει» το a i το πολύ µέχρι i 1 ϑέσεις προς την αρχή της. εκτελεί το πολύ µέχρι i 1 επαναλήψεις «όσο» (O(1) χρόνου έκαστη). Χρόνος: το πολύ 1 + 2 + + n 1, άρα O(n 2 ) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 12 / 16

Κάτω Φράγµα Πολυπλοκότητας InsertionSort Αν η είσοδος είναι ήδη ταξινοµηµένη (σε αύξουσα σειρά): η εσωτερική δοµή επανάληψης «όσο» δεν εκτελείται. ο συνολικός χρόνος του αλγορίθµου είναι O(n). Οικογένεια Εισόδων Χειρότερης Περίπτωσης: ακολουθία µήκους n σε «ανάποδη» σειρά (ϕθίνουσα). Ο αλγόριθµος υποχρεώνεται να «σπρώχνει» το a i µέχρι την αρχή της. Τότε εκτελεί ακριβώς (άρα και τουλάχιστον): 1 + 2 + + n 1 = Ω(n 2 ) ϕορές τις στοιχειώδεις πράξεις εντός της δοµής επανάληψης όσο. Εποµένως ο αλγόριθµος έχει χρόνο χειρότερης περίπτωσης Θ(n 2 ). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 13 / 16

Γραµµική Αναζήτηση LinearSearch {x : ακέραιος, a 1, a 2,..., a n : διαφορετικοί ακέραιοι} 1. i := 1 2. όσο i n και x a i 2.1. i := i + 1 3. αν i n τότε pos := i διαφορετικά pos := 0 4. επίστρεψε pos Ο αλγόριθµος εξετάζει το πολύ όλα τα στοιχεία της ακολουθίας εισόδου Χρόνος χειρότερης περίπτωσης: O(n). Είσοδοι χειρότερης περίπτωσης: ακολουθίες µήκους n µε a n = x και a i x για i = 1,..., n 1. ακολουθίες µήκους n µε a i x για i = 1,..., n. Εποµένως ο αλγόριθµος έχει χρόνο χειρότερης περίπτωσης Θ(n). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 14 / 16

Υπολογισµός Τιµής Πολυωνύµου Πολυώνυµο n-οστού ϐαθµού: p(x) = a n x n + a n 1 x n 1 + + a 2 x 2 + a 1 x + a 0 a n 0 Ενας «κακός» αλγόριθµος: Poly( x, a 0, a 1,..., a n 1, a n ) 1. p := a 0 2. για i := 1 έως n 2.1 y := 1 2.2 για k := 1 έως i 2.2.1 y := y x 2.3 p := p + a i y 3. επίστρεψε p Στην i-οστή «εξωτερική» επανάληψη: i «εσωτερικές» επαναλήψεις, για τον υπολογισµό του x i. Συνολικός χρόνος n i=1 i = Θ(n2 ) Ανεξάρτητος εισόδου. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 15 / 16

Υπολογισµός Τιµής Πολυωνύµου ύο αλγόριθµοι χρόνου Θ(n) (ανεξάρτητα εισόδου): Poly1( x, a 0, a 1,..., a n 1, a n ) 1. power := 1 2. y := a 0 3. για i := 1 έως n 3.1. power := power x 3.2. y := y + a i power 4. επίστρεψε y Horner( x, a 0, a 1,..., a n 1, a n ) 1. y := a n 2. για i := 1 έως n 2.1. y := y x + a n i 3. επίστρεψε y Poly1: 3n αριθµητικές πράξεις. Σχήµα Horner: 2n αριθµητικές πράξεις. Σχήµα Horner: p(x) = ( ( (a n x + a n 1 )x + a n 2 )x + )x + a 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 16 / 16