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

Σχετικά έγγραφα
Αλγόριθµοι και Πολυπλοκότητα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2-1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τηλ , Fax: , URL:

Αναδρομή (Recursion) Πώς να λύσουμε ένα πρόβλημα κάνοντας λίγη δουλειά και ανάγοντας το υπόλοιπο να λυθεί με τον ίδιο τρόπο.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΤ ΟΙΚΟΝ ΕΡΓΑΣΙΑ 1 ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΔΟΣΗΣ: 22/02/10

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

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

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

Θεωρητικό Μέρος. 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: Αλγόριθµοι

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

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

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

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

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

(CLR, κεφάλαιο 32) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier

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

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Λυσεις Ασκησεων - Φυλλαδιο 1

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

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

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

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Κεφάλαιο 5ο: Εντολές Επανάληψης

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

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

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

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

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

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Transcript:

Πολυπλοκότητα Αλγορίθµων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εµπειρική Θεωρητική Ανάλυση Αλγορίθµων Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ( n) Αναδροµικές Εξισώσεις ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-1

Πολυπλοκότητα Αλγορίθµων Έννοιες: Πρόβληµα Αλγόριθµος Στιγµιότυπο (instance). Ένας αλγόριθµος πρέπει να ικανοποιεί τις εξής προϋποθέσεις: 1. πρέπει να εργάζεται σωστά για κάθε σύνολο δεδοµένων εισόδου, δηλ. για κάθε στιγµιότυπο του πεδίου ορισµού του προβλήµατος που λύνει. 2. πρέπει να είναι απoδοτικός. Υπάρχει ένα σύνολο σωστών αλγορίθµων για κάθε πρόβληµα. Όλοι οι αλγόριθµοι έχουν θεωρητικό ενδιαφέρον. Και πρακτικό ενδιαφέρον όµως παρουσιάζουν αυτοί που είναι αποδοτικοί, δηλαδή αυτοί που ελαχιστοποιούν: τον χρόνο που εκτελούνται, τον χώρο που χρησιµοποιούν. Στόχος: η ανάλυση και ο υπολογισµός της πολυπλοκότητας χρόνου και χώρου (time and space complexity) των αλγορίθµων και ο έλεγχος αν και πότε ένας αλγόριθµος είναι άριστος (optimal), δηλαδή ο πιο αποδοτικός για το πρόβληµα για το οποίο σχεδιάστηκε. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-2

Εµπειρική Θεωρητική Ανάλυση Αλγορίθµων Ένας αλγόριθµος µπορεί να µελετηθεί εµπειρικά µετρώντας τον χρόνο και τον χώρο εκτέλεσής του σε συγκεκριµένο υπολογιστή. Θεωρητικά µπορούµεναυπολογίσουµε το χρόνο και το χώρο που απαιτεί ο αλγόριθµος σαν συνάρτηση του µεγέθους των εξεταζοµένων στιγµιότυπων. Τυπικά, µέγεθος ενός στιγµιότυπου αντιστοιχεί στο µέγεθος της µνήµης που απαιτείται για αποθήκευση του στιγµιότυπου στον υπολογιστή. Για απλούστευση της ανάλυσης θα µετρούµε τοµέγεθος ως τον ακέραιο (ή τους ακέραιους) που αντιστοιχούν στο πλήθος των ποσοτήτων του στιγµιοτύπου. π.χ. Πρόβληµα: ταξινόµηση λίστας. Στιγµιότυπο: λίστα µε n στοιχεία. Μέγεθος: Πλεονεκτήµατα της θεωρητικής προσέγγισης υπολογισµού αποτελεσµατικότητας αλγορίθµων περιλαµβάνουν: 1. δεν εξαρτάται από το υλικό του Η/Υ (µνήµη, cache, κλπ) 2. δεν εξαρτάται από τη γλώσσα προγραµµατισµού ή το µεταφραστή 3. δεν εξαρτάται από τις ικανότητες του προγραµµατιστή. 4. είναι ΓΕΝΙΚΗ ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-3

Μονάδα Έκφρασης της Αποδοτικότητας Η αρχή της σταθερότητας ύο διαφορετικές υλοποιήσεις του ίδιου αλγορίθµου (σε διαφορετικές µηχανές ή σε διαφορετικές γλώσσες ή από διαφορετικούς προγραµµατιστές) δεν διαφέρουν στον χρόνο εκτέλεσής τους περισσότερο από κάποιο σταθερό πολλαπλάσιο. δηλ. αν E 1 είναι o χρόνος εκτέλεσης της µίας υλοποίησης και E 2 της άλλης, τότε ισχύει E 1 = c E 2 για κάποια σταθερά c. Θα λέµε ότι ένας αλγόριθµος απαιτεί (ή εκτελείται σε) χρόνο t(n) αν υπάρχει σταθερά c και εφαρµογή του αλγορίθµου τέτοια ώστε, για κάθε στιγµιότυπο µεγέθους n, ο χρόνος εκτέλεσης του αλγορίθµου είναι µικρότερος ή ίσος του c t(n). t(n) Όνοµα Eίδη αλγορίθµων n γραµµικός n k c n πολυωνυµικός εκθετικός log k n λογαριθµικός ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-4

Μοντέλο Υπολογισµού Υπολογιστής που εκτελεί οδηγίες διαδοχικά. Βασική πράξη θεωρούµε ότι είναι οποιαδήποτε πράξη της οποίας ο χρόνος εκτέλεσης είναι φραγµένος από κάποια σταθερά (δηλ. c, γιακάποιασταθερά c). Συνεπώς ο χρόνος εκτέλεσης µιας βασικής πράξης είναι ανεξάρτητος από το µέγεθος ή τις παραµέτρους στιγµιότυπου οποιουδήποτε προβλήµατος. Επειδή ορίζουµε το χρόνο εκτέλεσης ενός αλγορίθµου µε την έννοια του σταθερού πολλαπλασίου, για την ανάλυση θα χρειαστούµε µόνο τον αριθµό των βασικών πράξεων που εκτελούνται από ένα αλγόριθµο και όχι τον ακριβή χρόνο που απαιτούν η κάθε µια από αυτές. Άρα για τον υπολογισµό του χρόνου εκτέλεσης ενός αλγόριθµου απλά µετρούµε τον αριθµό των βασικών πράξεων που εκτελεί. Με τον όρο "βασικές πράξεις" εννοούµε µαθηµατικές πράξεις (πρόσθεση, αφαίρεση ), σύγκριση, καταχώρηση µεταβλητής, επιστροφή αποτελέσµατος. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-5

Παράδειγµα Ανάλυσης 1 int largest( int X[], int n){ 1 int current=0; 2 int i=0; 3 while ( i < n ){ 4 if ( X[i] > current){ 5 current = X[i]; } 6 i = i+1; 7 } 8 return current; } Μέγεθος δεδοµένων εισόδου: n Στόχος: υπολογισµός του αριθµού βασικών πράξεων t(n) =... Μπορούµεναπούµε πως ο αλγόριθµος είναι άριστος; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-6

Γραµµική ιερεύνηση Παράδειγµα Ανάλυσης 2 int index( int X[],int n,int k){ 1 int i=0; 2 while (i < n and X[i]!= k) 3 i= i+1; 4 return i; } Μέγεθος δεδοµένων εισόδου: n t(n) =... ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-7

Ανάλυση Χειρίστης Περίπτωσης Αν D n είναι το σύνολο όλων των εισόδων (στιγµιοτύπων)µεγέθους n, και t(i) ο αριθµός βασικών πράξεων που εκτελούνται από τον αλγόριθµο γιακάθεi D n τότε ορίζουµετηνπολυπλοκότητα Χειρίστης Περίπτωσης του αλγορίθµου ως W(n) = max {t(i) I D n } ηλαδή, ο ορισµός δίνει ένα άνω φράγµα της πολυπλοκότητας του αλγορίθµου. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-8

Ανάλυση Μέσης Περίπτωσης Υποθέτουµεπωςµπορούµε να αντιστοιχίσουµε µια πιθανότητα p(i) σε κάθε είσοδο I D n. Ορίζουµετην πολυπλοκότητα Μέσης Περίπτωσης ως A ( n) = p( I ) t( I ) I D n ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-9

Εργαλεία Εκτίµησης Πολυπλοκότητας Ορισµός: ΘεωρούµεσυνάρτησηΤ(n). Ορίζουµε 1. Τ(n) Ο(f (n)), αν υπάρχουν σταθερές c > 0 και n 0 0 τέτοιες ώστε Τ(n) c f(n), για κάθε n n 0. Αν Τ(n) Ο(f (n)), τότε λέµε πωςησυνάρτησητ είναι της τάξεως f(n). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-10

Γραφική Απεικόνιση T(n) Ο(f(n)) c f(n) T(n) n 0 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-11

Εργαλεία Εκτίµησης Πολυπλοκότητας Ορισµός: Θεωρούµε συνάρτησητ(n). Ορίζουµε 1. Τ(n) Ο(f (n)), αν υπάρχουν σταθερές c > 0 και n 0 0 τέτοιες ώστε Τ(n) c f(n), για κάθε n n 0. 2. Τ(n) Ω(g(n)), αν υπάρχουν σταθερές c > 0 και n 0 0 τέτοιες ώστε Τ(n) c g(n), για κάθε n n 0. Αν Τ(n) Ο(f (n)), τότε λέµε πωςησυνάρτησητ είναι της τάξεως f(n). Αν Τ(n) Ω(f (n)), τότε λέµε πωςητ είναι της τάξεως ωµέγα της f (n). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-12

Γραφική Απεικόνιση T(n) Ω(g(n)) T(n) c g(n) n 0 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-13

Εργαλεία Εκτίµησης Πολυπλοκότητας Ορισµός: Θεωρούµε συνάρτησητ(n). Ορίζουµε 1. Τ(n) Ο(f (n)), αν υπάρχουν σταθερές c > 0 και n 0 0 τέτοιες ώστε Τ(n) c f(n), για κάθε n n 0. 2. Τ(n) Ω(g(n)), αν υπάρχουν σταθερές c > 0 και n 0 0 τέτοιες ώστε Τ(n) c g(n), για κάθε n n 0. 3. Τ(n) Θ(h(n)), αν Τ(n) Ο(h(n)) και Τ(n) Ω(h(n)). Αν Τ(n) Ο(f (n)), τότε λέµε πωςησυνάρτησητ είναι της τάξεως f(n). Αν Τ(n) Ω(f (n)), τότε λέµε πωςητ είναι της τάξεως ωµέγα της f (n). Αν Τ(n) Θ(f (n)), τότε λέµε πωςητ είναι της τάξεως θήτα της f (n). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-14

Γραφική Απεικόνιση T(n) Θ(h(n)) c 2 h(n) T(n) c 1 h(n) n 0 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-15

Εργαλεία Εκτίµησης Πολυπλοκότητας 1. Αν T 1 O(f) και T 2 O(g), τότε a) T 1 + T 2 max (O(f),O(g)), b) T 1 T 2 O(f g) 2. Aν f O(g) και g O(h), τότε f O(h) (παρόµοια ισχύει για Ω και Θ) 3. f O(g) αν και µόνο αν g Ω(f) 4. f Θ(g) αν και µόνο αν g Θ(f) 5. Aν T(x) είναι πολυώνυµο βαθµού k τότε T(x) O(x k ) 6. log k n O(n) για κάθε σταθερά k. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-16

Εργαλεία Εκτίµησης Πολυπλοκότητας Απόδειξη του 1(b): Αφού T 1 O(f) και T 2 O(g) τότε υπάρχουν n 1,n 2,c 1,c 2 τέτοια ώστε Τ 1 (n) c 1 f(n), για κάθε n n 1 και Τ 2 (n) c 2 g(n), για κάθε n n 2. Θέτουµε c= c 1 c 2 και m= max(n 1, n 2 ). Tότε Τ 1 (n) Τ 2 (n) c 1 f(n) c 2 g(n) = c f(n) g(n), για κάθε n m. Εποµένως το ζητούµενο έπεται. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-17

Εργαλεία Εκτίµησης Πολυπλοκότητας Παραδείγµατα: 15n + 32 Ο(n) 1324 Ο(1) 5n 2 Θ(n 2 ) 2n 2 + 4n + 2 O(n 2 ), O(n 3 ), Με αυτό το τρόπο µπορούµεναεκφράζουµεανώτερα(τάξη Ο) και κατώτερα όρια (τάξη Ω) του χρόνου εκτέλεσης ενός αλγορίθµου. Προφανώς, κατά την ανάλυση αλγορίθµων, στόχος µαςείναιαυτάταόρια να είναι όσο το δυνατό πιο ακριβή. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-18

Υπολογισµός Χρόνου Εκτέλεσης 1. Οχρόνος που απαιτείται για την εκτέλεση µιας εντολής for είναι το πολύ ο χρόνος εκτέλεσης του βρόχου επί τον αριθµό επαναλήψεων του βρόχου. 2. Φωλιασµένοι βρόχοι: Η ανάλυση γίνεται από τα µέσα προς τα έξω. 3. Ο χρόνος εκτέλεσης της εντολής S ; S παίρνει χρόνο ίσο του αθροίσµατος των χρόνων εκτέλεσης των S και S. 4. Ο χρόνος εκτέλεσης της εντολής if b then S else S παίρνει χρόνο µικρότερο του αθροίσµατος των χρόνων εκτέλεσης των b, S και S. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-19

Παραδείγµατα 1. int k=0; for ( int i=0; i<n; i++) for ( int j=0; j<n; j++) k++; 2. int k=0; for ( int i=1; i<n; i = 2*i) for ( int j=1; j<n; j++) k++ 3. int sum=0; for ( int i=0; i<n; i++) for ( int j=0; j<i*i; j++) sum++; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-20

Λύση παραδείγµατος 3 Παρατηρούµε ότι ο χρόνος εκτέλεσης του εσωτερικού βρόχου εξαρτάται από την τιµή i, η οποία καθορίζεται από τον εξωτερικό βρόχο. Ο πιο κάτω πίνακας δείχνει το πόσες φορές εκτελείται ο εσωτερικός βρόχος, Ν(i), σαν συνάρτηση του i: i 0 1 2 n-1 N(i) 0 1 4 (n-1)² Άρα Ν(i)=i². Ο χρόνος εκτέλεσης του προγράµµατος είναι ίσος µε το άθροισµα του χρόνου εκτέλεσης κάθε επανάληψης του εσωτερικού βρόχου, δηλαδή: n T( n ) = = i 1 0 i 2 n( n 1)( 2n 1) = Θ( n 6 3 ) ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-21

Γραµµική - υαδική ιερεύνηση εδοµένα Εισόδου: Πίνακας Χ µε n στοιχεία, ταξινοµηµένος από το µικρότερο στο µεγαλύτερο, και ακέραιος k. Στόχος: Να εξακριβώσουµε αν το k είναι στοιχείο του Χ. Γραµµική ιερεύνηση: εξερευνούµε τον πίνακα από τα αριστερά στα δεξιά. int linear( int X[], int n, int k){ int i=0; while ( i < n ) if (X[i] == k) return i; if (X[i] > k) return -1; i++; return -1; } Χρόνος εκτέλεσης: Eξαρτάται από το που (και αν) ο k βρίσκεται στον Χ[n]. Xείριστη περίπτωση: ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-22

Γραµµική - υαδική ιερεύνηση υαδική ιερεύνηση: βρίσκουµε το µέσο του πίνακα και αποφασίζουµε αν το k ανήκει στο δεξιό ή το αριστερό µισό. Επαναλαµβάνουµε την ίδια διαδικασία στο "µισό" που µας ενδιαφέρει. int binary( int X[],int n,int k){ int low = 0, high = n-1; int mid; while ( low < high ){ mid = (high + low)/2; if (X[mid] < k) low = mid + 1; else if (X[mid] > k) high=mid-1; else return mid; } return -1; } Χρόνος εκτέλεσης; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-23

Αναδροµικές διαδικασίες Αν σε κάθε επανάληψη µιας αναδροµικής διαδικασίας το µέγεθος του προβλήµατος µειώνεται κατά µια σταθερά τιµή, και ο χρόνος εκτέλεσης κάθε επανάληψης είναι Τ, τότε έχουµε αλγόριθµο τάξης: Ο(Τ n) Αν σε κάθε επανάληψη ενός αναδροµικού αλγορίθµου το µέγεθος του προβλήµατος µοιράζεται κατά µια σταθερά τιµή, και ο χρόνος εκτέλεσης κάθε επανάληψης είναι Τ, τότε έχουµε αλγόριθµο τάξης: Ο(Τ log n) ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-24

Αριθµοί Fibonacci Αναδροµικές ιαδικασίες int Fib( int N) { if (N <= 1) return 1; else return Fib(N-1) + Fib(N-2); } Ας υποθέσουµεπωςτο Fib(n) υπολογίζεται από τον αλγόριθµο σεχρόνοτ(n). Τότε T(0) = 1 T(1) = 1 T(k) = T(k-1) + T(k-2) + 2 Αναλύοντας την πιο πάνω αναδροµική σχέση µπορούµενααποδείξουµεπως n n 3 5 T( n ) 2 3 Άρα ο αλγόριθµος είναι εκθετικός. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-25

Αριθµοί Fibonacci Αναδροµικές ιαδικασίες long int Fib2(int n){ long int res [ max ]; if (n >= max) return Error; res [0] = res [1] = 1; for (i = 2; i<= n; i++) res [i] = res[i-1] + res [i-2]; return res[n] } Αποφεύγοντας επανάληψη υπολογισµών, ο πιοπάνωαλγόριθµος είναι γραµµικός, δηλ. εκτελείται σε χρόνο τάξης O(n). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-26

Αναδροµικές Εξισώσεις Όπως είδαµε στην περίπτωση της διαδικασίας Fib, o υπολογισµός του χρόνου εκτέλεσης µιας αναδροµικής διαδικασίας συνήθως συνεπάγεται τον προσδιορισµό και τη λύση κάποιας αναδροµικής εξίσωσης. Για τους σκοπούς του µαθήµατος συνιστώνται οι πιο κάτω τεχνικές για την επίλυση αναδροµικών εξισώσεων. 1. Η µέθοδος της επαγωγής. 2. Η µέθοδος της αντικατάστασης. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-27

Μέθοδος της επαγωγής 1. Προβλέπουµε µια συνάρτηση f(n) ως λύση της εξίσωσης, και 2. Επαληθεύουµε τη λύση µε επαγωγή προσδιορίζοντας κατάλληλα τις σταθερές. Παράδειγµα Έχουµε την αναδροµική εξίσωση Τ(n) = 2 T(n/2) + n, T(1) = 1 n 2 ΠροβλέπουµεότιΤ(n) O(n²). ηλαδή, θα πρέπει να υπάρχουν σταθερά c και τιµή m τέτοιες ώστε για κάθε n>m Τ(n) cn² Θα αποδείξουµε το πιο πάνω επαγωγικά. Για n=1 και c>=1 η πρόταση ισχύει. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-28

Μέθοδος της επαγωγής: Παράδειγµα Υπόθεση της επαγωγής: Έστω ότι Τ(k) ck² για κάθε m<k<n. Θα αποδείξουµεότιτ(n) cn² προσδιορίζοντας κατάλληλα τη σταθερά c. Eχουµε: T(n) = 2 T(n/2) + n 2 c(n/2)² + n = (c/2) n² + n = c n² - ((c/2) n² - n) Άρα Τ(n) cn² αν (c/2) n² - n 0. ηλαδή, αν c 2/n (n>0). Για να ισχύει η ανισότητα αρκεί c 2. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-29

Μέθοδος της επαγωγής: Παράδειγµα Αποδείξαµε ότιτ(n) O(n²). Μπορούµεόµως να βρούµε ακριβέστερη λύση ΠροβλέπουµεότιΤ(n) O(nlgn). ηλαδή, θα αποδείξουµε την ύπαρξη σταθεράς c και τιµής m τέτοιες ώστε για κάθε n>m Τ(n) c n lg n Θα αποδείξουµε το πιο πάνω επαγωγικά. Βάση της επαγωγής: για n=2, το ζητούµενο ισχύει για οποιαδήποτε τιµή c 2. Υπόθεση της επαγωγής: Έστω ότι Τ(k) c k lgkγια κάθε k<n. Θα αποδείξουµε ότιτ(n) c n lgn προσδιορίζοντας κατάλληλα τη σταθερά c. Eχουµε: T(n) = 2 T(n/2) + n 2c n/2 lg (n/2) + n = c n (lg n -1) + n = c n lg n - (cn - n) Άρα Τ(n) c n lg n αν c n - n 0. ηλαδή, αν c 2 (n>0). Eποµένως Τ(n) Ο(n lg n). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-30

Mέθοδος της αντικατάστασης Χρησιµοποιούµετοβήµα της αναδροµής επανειληµµένα, ώστε να εκφράσουµετο Τ(n) ως συνάρτηση που περιέχει µόνο τη βασική περίπτωση, δυνάµεις του n και σταθερές τιµές. Παράδειγµα Έχουµε την αναδροµική εξίσωση Τ(n) = 4 T(n/2) + n, T(1) = 1 για κάθε n 2 Τότε, αντικαθιστώντας το Τ(n/2) µε τηντιµή του παίρνουµε Τ(n) = 4 T(n/2) + n = 4(4 T(n/4) + n/2) + n = 4² Τ(n/4) + 2n + n = 4³ Τ(n/8) + 2² n + 2n + n =... ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-31

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-32 Mέθοδος της αντικατάστασης - Παράδειγµα ιακρίνουµε τηγενικήµορφή Υποθέτουµεότιτοn είναι δύναµη του2 και k=lg n. Tότε n n... n n T n ) T( i i i + + + + = 2 2 2 4 1 n n ) n(n n n ) ( n n n... n n T n ) T( k k k i i k k k k = + = + = + = + + + + = = 2 2 2 1 0 1 2 1 1 2 1 2 2 2 4 2 2 2 4

Εργασία 1 Να λύσετε τις πιο κάτω αναδροµικές εξισώσεις: T(1) = 1 Τ(n) = 2 T(n/2) +1000n ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-33

Εργασία 2 T(1) = 1 T(n) = 7 T(n/2) + 18n² ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-34

Εργασία 3 Nα υπολογίσετε τον χρόνο εκτέλεσης της παρακάτω αναδροµικής διαδικασίας λύνοντας οποιαδήποτε αναδροµική εξίσωση συναντήσετε. recursive1(int n){ int sum=0; for ( int i=1; i <= n; i++) sum++; if (n>1) return recursive1(n/2); else return 1; } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-35

Εργασία 4 Nα υπολογίσετε τον χρόνο εκτέλεσης της παρακάτω αναδροµικής διαδικασίας λύνοντας οποιαδήποτε αναδροµική εξίσωση συναντήσετε. recursive2(int n){ int sum=0; for ( int i=1; i <= n; i++) sum++; if (n>1) return (recursive2(n/2) + recursive2(n/2)); else return 1; } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-36