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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τηλ , Fax: , URL:

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

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

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

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

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

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

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

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

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

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

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

Προγραμματιστικές Τεχνικές

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

Αλγόριθμοι ταξινόμησης

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

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

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

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

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

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

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

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

Παράλληλοι Αλγόριθµοι

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

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

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

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

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

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

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

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

Αλγόριθµοι Ταξινόµησης

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

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

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

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

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

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

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

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

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

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

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

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)

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

Αλγόριθµοι Ταξινόµησης

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

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

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

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

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

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

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

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

Transcript:

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

Βασικές Έννοιες Για πληροφορίες για τις πιο κάτω προκαταρτικές/ βασικές έννοιες (τις οποίες αναµένεται ότι ήδη γνωρίζετε) µπορείτε να συµβουλευτείτε τα κεφάλαια Ι και ΙΙ του βιβλίου του µαθήµατος, Introduction to Algorithms, Cormen, Leiserson, Rivest, ή/και τις σηµειώσεις του ΕΠΛ3. Σειρές, σχέσεις, συναρτήσεις, λογάριθµοι Απόδειξη µε τη µέθοδο της επαγωγής Απόδειξη µε τη µέθοδο της αντίφασης Γράφοι, δένδρα και οι σχετικές έννοιες Αναδροµικές Εξισώσεις. Αλγόριθµοι Ταξινόµησης ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -

Τι είναι ένας αλγόριθµος; οθέντος ενός προβλήµατος, αλγόριθµος είναι µια καλάπροσδιορισµένη διαδικασία η οποία παρέχει τις οδηγίες σύµφωνα µε τις οποίες τα δεδοµένα του προβλήµατος µετασχηµατίζονται και συνδυάζονται για να προκύψει η λύση του προβλήµατος. al-khowarizmi, Πέρσης µαθηµατικός, 9ος αιώνας µ.χ. Αλγόριθµος του Ευκλείδη για υπολογισµό του µέγιστου κοινού διαιρέτη. Ένας αλγόριθµος πρέπει να αποτελείται από αντικειµενικές/ακριβείς οδηγίες. Και οι πιθανοτικοί αλγόριθµοι;; Η λήψη µιας πιθανοτικής απόφασης δεν είναι το ίδιο µε την λήψη µιας τυχαίας απόφασης. ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -3

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

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

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

Μοντέλο Υπολογισµού Στο µεγαλύτερο µέρος του µαθήµατος θα υποθέσουµε τη χρήση υπολογιστή που εκτελεί οδηγίες διαδοχικά, RAM (random-access machine). Αντιπαραθέστε το µοντέλο RAM µε έναµοντέλο το οποίο, χρησιµοποιώντας n> επεξεργαστές, έχει την δυνατότητα να εκτελεί m, n m 0, οδηγίες παράλληλα. Βασική πράξη θεωρούµε ότι είναι οποιαδήποτε πράξη της οποίας ο χρόνος εκτέλεσης είναι φραγµένος από κάποια σταθερά (δηλ. c, για κάποια σταθερά c). Συνεπώς ο χρόνος εκτέλεσης µιας βασικής πράξης είναι ανεξάρτητος από το µέγεθος ή τις παραµέτρους στιγµιότυπου οποιουδήποτε προβλήµατος. Επειδή ορίζουµε το χρόνο εκτέλεσης ενός αλγορίθµου µε την έννοια του σταθερού πολλαπλασίου, για την ανάλυση θα χρειαστούµε µόνο τον αριθµό των βασικών πράξεων που εκτελούνται από ένα αλγόριθµο και όχι τον ακριβή χρόνο που απαιτούν η κάθε µια από αυτές. Άρα για τον υπολογισµό του χρόνου εκτέλεσης ενός αλγόριθµου απλά µετρούµε τοναριθµό των βασικών πράξεων που εκτελεί. Με τον όρο "βασικές πράξεις" εννοούµε µαθηµατικές πράξεις (πρόσθεση, αφαίρεση ), σύγκριση, καταχώρηση µεταβλητής, επιστροφή αποτελέσµατος. ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -7

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

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

Εργαλεία Εκτίµησης Πολυπλοκότητας Ορισµός: Θεωρούµε συνάρτησητ(n). Ορίζουµε. Τ(n) Ο(f (n)), αν υπάρχουν σταθερές c και n 0 ώστε Τ(n) c f(n), για κάθε n n 0.. Τ(n) Ω(g(n)), αν υπάρχουν σταθερές c και n 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). ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -0

Εργαλεία Εκτίµησης Πολυπλοκότητας Θεώρηµα: Αν T O(f) και T O(g), τότε. T + T max (O(f),O(g)),. T T O(f g), 3. αν T(x) είναι πολυώνυµοβαθµού k τότε T(x) Θ(x k ), 4. log k n O(n) για κάθε σταθερά k. Απόδειξη του : Αφού T O(f) και T O(g) τότε υπάρχουν n,n,c,c τέτοια ώστε Τ (n) c f(n), για κάθε n n και Τ (n) c g(n), για κάθε n n. Θέτουµε c= c c και m= max(n, n ). Τότε Τ (n) Τ (n) c f(n) c g(n) = c f(n) g(n), για κάθε n m Εποµένως το ζητούµενο έπεται. ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -

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

Αλγόριθµοι και Προβλήµατα Τι σηµαίνουν Ο αλγόριθµος Α είναι της τάξης Ο,Θ(f(n)), Το πρόβληµα Π είναι της τάξης Ο,Θ(f(n)); Ο αλγόριθµος Bubblesort είναι της τάξης Θ(n²) Τρέχει σε χρόνο n² Το πρόβληµα ταξινόµησης n στοιχείων είναι της τάξης Ο(n lg n) Υπάρχει αλγόριθµος για το πρόβληµα µε χρόνο εκτέλεσης Ο(n lg n) Το πρόβληµα ταξινόµησης n στοιχείων είναι της τάξης Θ(n lg n) Υπάρχει αλγόριθµος για το πρόβληµα µε χρόνο εκτέλεσης Θ(n lg n) και δεν υπάρχει πιο αποδοτικός αλγόριθµος. Το πρόβληµα πολλαπλασιασµού n-αψήφιων ακεραίων είναι της τάξης O(n ²) Υπάρχει αλγόριθµος για το πρόβληµα µε χρόνο εκτέλεσης O(n²). ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -3

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

Παραδείγµατα. int k=0; for ( int i=0; i<n; i++) for ( int j=0; j<n; j++) k++;. int k=0; for ( int i=; i<n; i = *i) for ( int j=; j<n; j++) k++ 3. int sum=0; for ( int i=0; i<n; i++) for ( int j=0; j<i*i; j++) sum++; ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -5

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

Γραµµική - υαδική ιερεύνηση εδοµένα Εισόδου: Πίνακας Χ µε 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 -; i++; return -; } Χρόνος εκτέλεσης: Εξαρτάται από το που (και αν) ο k βρίσκεται στον Χ[n]. Χείριστη περίπτωση: Μέση περίπτωση: ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -7

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

Ο Αλγόριθµος Ταξινόµησης InsertionSort void ΙnsertionSort(int A[], int n){ int temp; } for (int i=; i<=n; i++){ temp=a[i]; for (int j=i;(j>)&&(temp < A[j-]); j--) A[j]=A[j-]; A[j]=temp; } Χρόνος Εκτέλεσης Χειρίστης Περίπτωσης: ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -9

Ανάλυση Μέσης Περίπτωσης Έστω ότι έχουµε n στοιχεία, το καθένα διαφορετικό από όλα τα άλλα. Υπάρχουν n! διαφορετικές τοποθετήσεις των στοιχείων. Έστω ότι είναι όλες εξίσου πιθανές. Για να υπολογίσουµε τον χρόνο εκτέλεσης µέσης περίπτωσης µπορούµε. να προσθέσουµε τους χρόνους που απαιτούνται για τις ταξινοµήσεις της κάθε µιας από τις πιθανές τοποθετήσεις και να διαιρέσουµε δια n!, ή. να αναλύσουµε άµεσα το χρόνο εκτέλεσης µέσης περίπτωσης επιχειρηµατολογώντας πιθανοτικά: Για κάθε i n, θεωρήστε τον υποπίνακα Α[..i]. Ορίζουµε τη συνάρτηση θέση(i) που για κάθε i µας δίνει τη θέση στην οποία θα βρισκόταν το στοιχείο Α[i] αν ο πίνακας Α[..i] ήταν ταξινοµηµένος. π.χ. Αν Α=[4,,,5,7,3] τότε θέση[3]=. ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -0

Ανάλυση Μέσης Περίπτωσης Παρατήρηση: Αν όλες οι τοποθετήσεις των στοιχείων του πίνακα Α είναι εξίσου πιθανές, τότε όλες οι τιµές της συνάρτησης θέση(i), οι οποίες µπορεί να ανήκουν στο σύνολο [..i] είναι επίσης εξίσου πιθανές. Αυτή η ιδιότητα ισχύει κάθε φορά που εκτελούµε τον εσωτερικό βρόχο του InsertionSort. Αν θέση(i) = k, τότε ο εσωτερικός βρόχος θα εκτελεστεί i-k+ φορές. Άρα ο µέσος όρος βηµάτων κατά την i-οστή εκτέλεση του εξωτερικού βρόχου είναι i i + ci = ( i k + ) = i k = Και ο συνολικός µέσος όρος βηµάτων είναι n i = c i n = i = i + ( n )( n + 4) = = Θ ( n ) 4 ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -

Ανάλυση Αναδροµικού Αλγόριθµου The Towers of Hanoi Η πιο κάτω διαδικασία µεταφέρει τους m πιο µικρούς δακτυλίους από τη στήλη i στη στήλη j. void Hanoi(m,i,j){ if m>0 then Hanoi(m-, i, 6-i-j); move top ring from rod i to rod j Hanoi(m-, 6-i-j, j) } Έστω Τ(n) ο χρόνος εκτέλεσης της διαδικασίας Hanoi µε δεδοµένο εισόδου m=n. Τότε έχουµε T ( n) = 0, T(n-) +, if n = 0 otherwise ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -

ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα -3 Ανάλυση Αναδροµικού Αλγόριθµου Λύση της αναδροµικής εξίσωσης µε την µέθοδο της επανάληψης: Μπορεί να αποδειχθεί ότι ο αλγόριθµος είναι άριστος για το πρόβληµα. δηλ. ότι το πρόβληµα είναι της τάξης Θ( n ).... 0 = + = + = = + + = + + = + = = n n n- n i i n- ) T(n ) ) T(n ( ) T(n T(n)