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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 17: Επανάληψη για την ενδιάμεση εξέταση. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

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

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

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

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

ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014

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

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

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

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο

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

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

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

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

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

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Αναγωγές

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

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

Αριθμητική Ανάλυση & Εφαρμογές

ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX

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

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

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

Ψευδοκώδικας. November 7, 2011

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

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

ΚΕΦΑΛΑΙΟ 1ο: ΔΙΑΦΟΡΙΚΟΣ ΛΟΓΙΣΜΟΣ ΕΝΟΤΗΤΑ 3: ΟΡΙΑ - ΣΥΝΕΧΕΙΑ ΣΥΝΑΡΤΗΣΗΣ

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

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

Διακριτά Μαθηματικά. Άγγελος Κιαγιάς. aggelos. Τμήμα Πληροφορικής & Τηλεπικοινωνιών. π.

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

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

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

Φροντιστήριο #4 Λυμένες Ασκήσεις Μαθηματική Επαγωγή 13/3/2018

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

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

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

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

ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ

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

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

Μερικές φορές δεν μπορούμε να αποφανθούμε για την τιμή του άπειρου αθροίσματος.

με Τέλος πάντων, έστω ότι ξεκινάει ένα άλλο υποθετικό σενάριο που απλά δεν διευκρινίζεται. Για το i) θα έχουμε , 2

Μαθηματική Εισαγωγή Συναρτήσεις

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Transcript:

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

Διάλεξη 3: - Πολυπλοκότητα Αλγορίθμων / Επανάληψη Χρήσιμων Μαθηματικών Ορισμών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αλγόριθμοι, Κριτήρια Αξιολόγησης Αλγόριθμων, Γιατί αναλύουμε τους Αλγόριθμους - Εμπειρική Θεωρητική Ανάλυση Αλγορίθμων, Αρχή Σταθερότητας - Εργαλεία εκτίμησης πολυπλοκότητας: οι τάξεις Ο(), Ω(), Θ( ) - Γραφική Απεικόνιση Ο(), Ω(), Θ( ) - Παραδείγματα Ανάλυσης Πολυπλοκότητας - Χρήσιμοι μαθηματικοί ορισμοί - Μαθηματική Επαγωγή ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 3 Αλγόριθμοι Αλγόριθμος: είναι μια πεπερασμένη ακολουθία εντολών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, οι οποίες αν ακολουθηθούν επιτυγχάνεται κάποιο επιθυμητό αποτέλεσμα. Προγράμματα: Υλοποίηση αλγορίθμου σε μια γλώσσα προγραμματισμού Ένα σωστό πρόγραμμα δεν είναι αρκετό Τι είναι σημαντικό σε ένα Αλγόριθμο; Ορθότητα: όταν τα δεδομένα εισόδου ικανοποιούν τις αναγκαίες συνθήκες, τότε το πρόγραμμα τερματίζει με το αναμενόμενο αποτέλεσμα. Χρόνος Εκτέλεσης: Ο χρόνος που χρειάζεται το πρόγραμμα για να δημιουργήσει το αναμενόμενο αποτέλεσμα. Απαίτηση στην Μνήμη, Δίκτυο, Μαγνητικό Δίσκο (ανάλογα με την εφαρμογή): Τους υπολογιστικούς πόρους τους οποίους χρειάζεται η εφαρμογή, πέρα από τον επεξεργαστή, για να δημιουργηθεί το αναμενόμενο αποτέλεσμα.

Πολυπλοκότητα Αλγορίθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι -4 Υπάρχει ένα σύνολο σωστών αλγορίθμων για κάθε πρόβλημα. Όλοι οι αλγόριθμοι έχουν θεωρητικό ενδιαφέρον. Και πρακτικό ενδιαφέρον όμως παρουσιάζουν αυτοί που είναι αποδοτικοί, δηλαδή αυτοί που ελαχιστοποιούν: - τον χρόνο που εκτελούνται, - τον χώρο που χρησιμοποιούν. Στόχος: η ανάλυση και ο υπολογισμός της πολυπλοκότητας χρόνου και χώρου (tme ad space complexty) των αλγορίθμων και ο έλεγχος αν και πότε ένας αλγόριθμος είναι άριστος (optmal), δηλαδή ο πιο αποδοτικός για το πρόβλημα για το οποίο σχεδιάστηκε.

Ανάλυση Αλγορίθμων Θέλουμε να μπορούμε να υπολογίζουμε τον χρόνο εκτέλεσης ενός αλγορίθμου / και να τον βελτιώνουμε, προτού τον τρέξουμε σε κάποια μηχανή. Η σημερινή διάλεξη θα απαντήσει τις ερωτήσεις: Τι είναι η θεωρητική ανάλυση ενός αλγόριθμου; Ποια είναι τα κριτήρια ανάλυσης αλγορίθμων; Πως παριστάνουμε και υπολογίζουμε την απόδοση ενός αλγορίθμου με μαθηματικά εργαλεία; ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 5

Ανάλυση Αλγορίθμων Γιατί? Γιατί πρέπει να αναλύσουμε την πολυπλοκότητα ενός αλγορίθμου; Όταν ένα πρόγραμμα πρόκειται να επεξεργαστεί ένα μεγάλο όγκο δεδομένων, πρέπει να βεβαιωθούμε ότι θα τερματίσει σε αποδεκτά χρονικά πλαίσια. Αν ένας αλγόριθμος εύρεσης του πιο φθηνού εισιτηρίου σε ένα ηλεκτρονικό σύστημα αεροπορικών κρατήσεων θέλει μήνες για να εκτελεστεί, τότε το σύστημα δεν είναι χρήσιμο. Η θεωρητική ανάλυση, επιτρέπει σε ένα προγραμματιστή να υπολογίσει με την χρήση μαθηματικών εργαλείων τον αναμενόμενο χρόνο προτού κωδικοποιήσει το πρόγραμμα. Εάν ο αναμενόμενος χρόνος είναι πολύ μεγάλος, τότε θα σχεδιάσει κάποιο βελτιωμένο αλγόριθμο. ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 6

Εμπειρική Θεωρητική Ανάλυση Αλγορίθμων Ένας αλγόριθμος μπορεί να μελετηθεί: Εμπειρικά, μετρώντας το χρόνο και χώρο εκτέλεσής του σε συγκεκριμένο υπολογιστή. Μπορούμε να υλοποιήσουμε τον αλγόριθμο και να μετρήσουμε τον χρόνο με βιβλιοθήκες όπως την <tme.h> Θεωρητικά, μπορούμε να υπολογίσουμε το χρόνο και το χώρο που απαιτεί ο αλγόριθμος σαν συνάρτηση του μεγέθους των εξεταζομένων στιγμιότυπων. Τυπικά, μέγεθος ενός στιγμιότυπου αντιστοιχεί στο μέγεθος της μνήμης που απαιτείται για αποθήκευση του στιγμιότυπου στον υπολογιστή. Για απλούστευση της ανάλυσης θα μετρούμε το μέγεθος ως τον ακέραιο (ή τους ακέραιους) που αντιστοιχούν στο πλήθος των ποσοτήτων του στιγμιοτύπου. π.χ. Πρόβλημα: ταξινόμηση λίστας. Στιγμιότυπο: λίστα με στοιχεία. Μέγεθος: ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 7

Εμπειρική Θεωρητική Ανάλυση Αλγορίθμων Θεωρητική Ανάλυση Vs. Εμπειρική Ανάλυση Η θεωρητική ανάλυση: 1. δεν εξαρτάται από το υλικό του Η/Υ (μνήμη, cache, κλπ.). δεν εξαρτάται από τη γλώσσα προγραμματισμού ή το μεταφραστή 3. δεν εξαρτάται από τις ικανότητες του προγραμματιστή. 4. δεν απαιτεί την υλοποίηση του αλγόριθμου προτού την δοκιμή! 5. είναι ΓΕΝΙΚΗ ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 8

Θεωρητική Ανάλυση Αλγορίθμων Κάνουμε χρήση μιας υψηλού επιπέδου περιγραφής του αλγόριθμου και όχι της υλοποίησης του δηλαδή χρήση Ψευδοκώδικα. Θα χαρακτηρίσουμε τον χρόνο εκτέλεσης του αλγόριθμου σαν συνάρτηση του μεγέθους των δεδομένων, N Η ανάλυση μας θα λάβει υπόψη όλες τις δυνατές εισόδους. π.χ. βρείτε τον αριθμό 5 σε ένα πίνακα ακέραιων. - Στην καλύτερη περίπτωση: το βρίσκουμε στην πρώτη θέση - Στην χειρότερη περίπτωση: δεν τον βρίσκουμε καθόλου Επομένως, ένας αλγόριθμος μπορεί να εκτελείται γρηγορότερα σε συγκεκριμένα σύνολα δεδομένων από ότι σε κάποια άλλα. Η εύρεση της μέσης περίπτωσης είναι συνήθως δύσκολη, για αυτό οι αλγόριθμοι μετριούνται με βάση την χειρότερη περίπτωση. Σε συγκεκριμένα πεδία (ar traffc cotrol, συστήματα πραγματικού χρόνου, κτλ), η γνώση της χειρότερης περίπτωσης είναι πολύ σημαντική ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 9

Παράδειγμα Ανάλυσης 1 Υποθέστε ότι θέλετε να βρείτε το μεγαλύτερο στοιχείο σε μια λίστα θετικών ακεραίων. t largest( t X[], t ){ } t curret, ; whle ( < ){ } f ( X[] > curret){ } curret X[]; // σημείωσε τον μεγαλύτερο 1; retur curret; Μέγεθος δεδομένων εισόδου: Στόχος: υπολογισμός του αριθμού βασικών πράξεων Χειρότερη Περίπτωση: εξέταση όλων των στοιχείων t() Βέλτιστη Περίπτωση: εξέταση όλων των στοιχείων t() ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 1

Παράδειγμα Ανάλυσης Αν ήταν ταξινομημένη η λίστα (σε αύξουσα σειρά) τότε το μεγαλύτερο στοιχείο μπορεί να βρεθεί σε σταθερό χρόνο (δηλαδή πάντα το τελευταίο στοιχείο). t largest( t X[], t ){ f (<) retur -1; // error; retur X[-1]; } Μέγεθος δεδομένων εισόδου: Χειρότερη Περίπτωση: εξέταση τελευταίου στοιχείου t() 1 Βέλτιστη Περίπτωση: εξέταση τελευταίου στοιχείου t() 1 ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 11

Μονάδα Σύγκρισης της Αποδοτικότητας Η αρχή της σταθερότητας Δύο διαφορετικές υλοποιήσεις του ίδιου αλγορίθμου (σε διαφορετικές μηχανές ή σε διαφορετικές γλώσσες ή από διαφορετικούς προγραμματιστές) δεν διαφέρουν στο χρόνο εκτέλεσής τους περισσότερο από κάποιο σταθερό πολλαπλάσιο. δηλ. αν E 1 είναι o χρόνος εκτέλεσης της μίας υλοποίησης και E της άλλης, τότε ισχύει E 1 c E για κάποια σταθερά c. Για παράδειγμα έχουμε ένα πρόγραμμα το οποίο ταξινομεί ένα πίνακα μεγέθους Ν, στον υπολογιστή PC του σπιτιού μας σε χρόνο Ε1 και σε ένα ΙΒΜ Βlue Gee σε χρόνο Ε. Παρατηρούμε ότι ισχύει : Ε1 1,, * Ε Η σταθερά c1,, δεν εξαρτάται από το Ν αλλά από το περιβάλλον εκτέλεσης (μεταγλωττιστής, υλικό, λειτουργικό σύστημα, κτλ). Επομένως εάν αυξηθεί το Ν, τότε και πάλι θα εκτελείται 1,, πιο αργά στο PC μας ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 1

Σύγκριση Πολυπλοκότητας Αλγορίθμων Για την αξιολόγηση των διαφόρων αλγορίθμων χρησιμοποιούνται διάφορα μεγέθη. : μέγεθος του προβλήματος T(): Ο χρόνος εκτέλεσης T() Σύγκριση Πολυπλοκοτήτων t() Περιγραφή 1 (ένα) Σταθερός (costat) 3 c, log Γραμμικός (lear) Πολυωνυμικός (polyomal) Τετραγωνικός δευτεροβάθμιος (quadratc), π.χ., Shortest Path Djstra Κυβικός - τριτοβάθμιος (cubc), π.χ., All- Par-Shortest Path Floyd-Warshall Εκθετικός (expoetal) Λογαριθμικός (logarthmc) O(lg ) O() O( ) O( 3 ) O( ) ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 13

Ρυθμός Αύξησης μιας Συνάρτησης Ο ρυθμός αύξησης μιας συνάρτησης είναι σημαντικός όταν ο αριθμός των δεδομένων εισόδου N, είναι σημαντικά μεγάλος. Για 4 16 και 16 Για 1 1.6*1 3 και 1, Itel 9-895HK ~ 1 1 Istructos / secod (basc operatos) Θα ήθελε ~399 543 37 αιώνες να τελειώσει για 1 Εάν ένας αλγόριθμος εκτελείται σε και μια άλλη έκδοση πράξεις τότε για μικρές τιμές θα έχουν παρόμοιο χρόνο εκτέλεσης. Για μεγάλες τιμές αυτό βέβαια δεν ισχύει! ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 14

Ρυθμός Αύξησης μιας Συνάρτησης (συν.) ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 15 O() 1 3 5 1 5 1 Log 1.6 secod.7 secod.8 secod.9 secod.1 secod.15 secod.18 secod.6 secod.1 Secod.18 secod.3 secod.6 secod.3 secod.6 secod.6 secod.4 secod.54 secod.15 secod.6 secod 1.6 secods 6. secods 3.6 secod.48 secod.16 secod.75 secod 6. secods 1.5 mutes 1.66 ΩΡΕΣ 4.6 secod.96 secod 4.86 secod 37.5 secod 1. mutes 4.34 ΗΜΕΡΕΣ.3 ΜΗΝΕΣ 5.6 secod 19. secods.43 mutes 31.5 mutes 16.66 ΩΡΕΣ 6. ΧΡΟΝΙΑ ΑΙΩΝΕΣ.5 secod 5. secods 1.5 ΩΡΕΣ ΑΙΩΝΕΣ ΑΙΩΝΕΣ ΧΙΛ/ΔΕΣ ΑΙΩΝΕΣ ΧΙΛ/ΔΕΣ ΑΙΩΝΕΣ 3.3 secod 4.8 ΩΡΕΣ 3.1 ΧΡΟΝΙΑ ΧΙΛ/ΔΕΣ ΑΙΩΝΕΣ ΧΙΛ/ΔΕΣ ΑΙΩΝΕΣ ΗΛΙΚΙΑ ΓΗΣ ΗΛΙΚΙΑ ΓΑΛΑΞΙΑ!.36 mutes 1.5 ΩΡΕΣ ΑΙΩΝΕΣ ΧΙΛ/ΔΕΣ ΑΙΩΝΕΣ ΗΛΙΚΙΑ ΗΛΙΟΥ ΗΛΙΚΙΑ ΓΑΛΑΞΙΑ Μέγεθος Προβ/τος Προβλήματα Μικρού Μεγέθους Προβλήματα Μεσαίου Μεγέθους Προβλήματα Μεγάλου Μεγέθους

Εκθετικοί Αλγόριθμοι Number of partcles the Observable Uverse (quars, electros, ): ~3.8 x 1 8 Εκθετικοί αλγόριθμοι ΌΧΙ, No, Ne,,,לא Khôg, 没有, нет as much as possble https://www.popularmechacs.com/space/a759/how-may-partcles-are--the-etre-uverse/ ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 16

Σύγκριση Πολυπλοκότητας Αλγορίθμων Μόνο για πολύ μικρά Ν Προσπαθούμε να τους αποφεύγουμε log-log plot 51T Ο στόχος μας τις περισσότερες φορές 64T 8T 4T T T logarthmc costat Ιδανικοί! 1K K 4K 8K 51K sze Typcal orders of growth ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 17

Ρυθμός Αύξησης μιας Συνάρτησης (συν.) Σημειώστε ότι η τιμή μιας συνάρτηση, καθορίζεται κυρίως από τον μεγαλύτερο όρο για μεγάλες τιμές του. Π.χ. Ένας αλγόριθμος μας θέλει f() χρόνο για να ολοκληρώσει: f() 1* 3 4* 8 Για 1 f() 1,1,4,8 Χρησιμοποιώντας μόνο τον πιο μεγάλο όρο 1* 3 1,,, θα μπορούσαμε να υπολογίσουμε τον χρόνο εκτέλεσης του προγράμματος με 99.99% ακρίβεια! Επομένως τα 4* 8 είναι αχρείαστα στην ανάλυση μας ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 18

Τυπικός κώδικας για ρυθμούς αύξησης *Slde from: Sedgewc ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 19

Προβλήματα που μπορούμε να λύσουμε *Slde from: Sedgewc ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι Χρειαζόμαστε αλγόριθμους log N ή N log N για να μπορέσουμε να ακολουθήσουμε το νόμο του Moore

Μοντέλο Υπολογισμού της ανάλυσης μας Υπολογιστής που εκτελεί οδηγίες διαδοχικά (όχι παράλληλες μηχανές). Βασική πράξη θεωρούμε ότι είναι οποιαδήποτε πράξη της οποίας ο χρόνος εκτέλεσης είναι φραγμένος από κάποια σταθερά (δηλ. c, για κάποια σταθερά c). Π.χ., μαθηματικές πράξεις (πρόσθεση, αφαίρεση ), σύγκριση, καταχώρηση μεταβλητής, επιστροφή αποτελέσματος. Συνεπώς ο χρόνος εκτέλεσης μιας βασικής πράξης μπορεί να προσδιοριστεί ανεξάρτητα από το στιγμιότυπο (πχ 13 ή 13 θέλουν τον ίδιο ακριβώς χρόνο εκτέλεσης). Επειδή ορίζουμε το χρόνο εκτέλεσης ενός αλγορίθμου με την έννοια του σταθερού πολλαπλασίου c, για την ανάλυση θα χρειαστούμε μόνο τον αριθμό των βασικών πράξεων που εκτελούνται από ένα αλγόριθμο και όχι τον ακριβή χρόνο που απαιτούν η κάθε μια. Άρα για τον υπολογισμό του χρόνου εκτέλεσης ενός αλγόριθμου απλά μετρούμε τον αριθμό των βασικών πράξεων που εκτελεί. ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 1

Ασυμπτωτική Προσέγγιση: Bg-O Μας επιτρέπει να υπολογίσουμε τον ρυθμό αύξησης μιας συνάρτησης χωρίς να ανησυχούμε για: a) σταθερά πολλαπλάσια (c) ή b) για μικρότερους όρους, οι οποίοι έτσι και αλλιώς δεν επηρεάζουν τον χρόνο εκτέλεσης ενός προγράμματος. Επομένως δεν έχουμε να ανησυχούμε για το υλικό, μεταγλωττιστή, κτλ. με τα οποία θα εκτελεστεί ο αλγόριθμος μας. Η προσέγγιση Bg-O, μας επιτρέπει να ορίσουμε μια σχετική σειρά στις συναρτήσεις συγκρίνοντας τους επικρατέστερους όρους. π.χ. ένας αλγόριθμος θέλει f()1 17 4 πράξεις ενώ ένας άλλος θέλει g() 3 πράξεις τότε ξέρουμε ότι o πρώτος εκτελείται πιο γρήγορα για μεγάλες τιμές του ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 3 Εργαλεία Εκτίμησης Πολυπλοκότητας Ορισμός: Θεωρούμε συνάρτηση Τ(). Ορίζουμε f()μπορεί να είναι οποιαδήποτε συνάρτηση >,, log 1. Τ() Ο( f () ), αν υπάρχουν σταθερές c> και 1 ώστε Τ() cf(), για κάθε.. Τ() Ω( f() ), αν υπάρχουν σταθερές c> και 1 ώστε Τ()cf(), για κάθε. 3. Τ() Θ( f() ), αν Τ()Ο(f()) και Τ()Ω(f()). Αν Τ()Ο(f ()), τότε λέμε πως η συνάρτηση Τ είναι της τάξεως f(). Αν Τ() Ω(f ()), τότε λέμε πως η Τ είναι της τάξεως ωμέγα της f (). Αν Τ() Θ(f ()), τότε λέμε πως η Τ είναι της τάξεως θήτα της f (). (λέγεται και ακριβής τάξη)

Γραφική Απεικόνιση Βg-O ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4 1 H συνάρτηση f(x) είναι O(g(x)) Δηλαδή υπάρχουν σταθερές c> και 1 ώστε: f() cg(), για κάθε. H συνάρτηση x x1 είναι Ο(x )

Γραφική Απεικόνιση Βg-Ω και Bg-Θ ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 5 H συνάρτηση f() ε Ω(g()) Δηλαδή υπάρχουν σταθερές c> και 1 ώστε: f()cg(), για κάθε. H συνάρτηση f() ε Θ(g()) Δηλαδή υπάρχουν σταθερές c >,c > και 1 ώστε: c.g() f() c.g(), για κάθε.

Παραδείγματα Βg-O Παράδειγμα 1 7-3 είναι Ο() Τεκμηρίωση Πρέπει να δείξουμε ότι υπάρχει c>, o 1 έτσι ώστε: 7-3 c*, Για c7, o 1 η παραπάνω ανισότητα ικανοποιείται, επομένως 7-3 είναι Ο() π.χ., 7*1-3 7*1 (4 7) 7*-3 7* (11 14) 7*3-3 7*3 (18 1) κοκ ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 6

Παραδείγματα Βg-O Παράδειγμα 3 1log5 είναι Ο( 3 ) ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 7 Τεκμηρίωση Πρέπει να δείξουμε ότι υπάρχει c>, o 1 έτσι ώστε 3 1log5 c* 3 3 1log5 3 1 3 5 3 3 1 3 5 3 35 3 (>1) Για c35, o 1 η παραπάνω ανισότητα ικανοποιείται, επομένως 3 1log5 είναι Ο( 3 )

Ιδιότητες Bg-O Στις περισσότερες περιπτώσεις μας ενδιαφέρει μόνο το άνω φράγμα (χείριστη περίπτωση εκτέλεσης ενός αλγορίθμου), δηλαδή το O. Η συνάρτηση O έχει τις ακόλουθες ιδιότητες: 1. O(XY) O(X) O(Y) max (O(X),O(Y)). O(X*Y) O(X)*O(Y) O(X * Y) 3. O(c * X) O(X) (c σταθερά > ) Ισχύει η ακόλουθη σειρά 1< log< < log< < 3 < <!< < είναι ασυμπτωτικά μικρότερο Παράδειγμα Έστω ότι ένας αλγόριθμος έχει την ακόλουθη συνάρτηση αύξησης f() 16 log 3 7 Τότε απλοποιούμε την συνάρτηση αύξησης ως εξής 16 log (διαγράφουμε τις μικρότερες τιμές του Κανόνας 1) log (διαγράφουμε τις σταθερές Κανόνας 3) δηλαδή f() Ο( log) ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 8

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 9 Παραδείγματα Ιδιοτήτων Bg-O Παραδείγματα: 15 3 Ο() *( 7 ) Ο( 7 ) 134 Ο(1) ( 7 )*m Ο( 7 m ) 5 O( ) 5lg 4 Ο(lg) Προφανώς, κατά την ανάλυση αλγορίθμων στόχος μας είναι αυτά τα όρια να είναι όσο το δυνατό πιο ακριβή. Εάν 7-4 είναι Ο(), τότε προφανώς 7-4 είναι Ο( ), Ο( 3 ), Ο( 4 ),. Ωστόσο, οι χαρακτηρισμοί bg-o πρέπει να είναι όσο το δυνατό πιο μικρής τάξης. (δηλαδή το Ο() είναι το πιο στενό άνω όριο).

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 3 Ασυμπτωματική Ανάλυση Ασυμπτωματικά Μικρότερο (Asymptotcally Smaller) < σημαίνει: είναι ασυμπτωματικά μικρότερο. Έστω ότι q() και p(), δυο μη-αρνητικές συναρτήσεις. q( ) Το q() < p(), εάν ισχύει: lm - p( ) To p() ασυμπτωματικά επικρατεί (domates) το q(). Παράδειγμα 1: Αποδείξτε ότι ισχύει 17< 3 6 lm - 1 7 3 6 1 7 6 3 3 3

Κανόνες L Hobtal ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 31

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 3 Ασυμπτωματική Ανάλυση (συν.) Παράδειγμα : Αποδείξτε ότι ισχύει < e lm - e e Με χρήση κανόνων de L'Hôptal e Παράδειγμα 3: Αποδείξτε ότι ισχύει l < (llog e ) 1 l 1 lm 1 - Με χρήση κανόνων de L'Hôptal

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 33 Παράδειγμα Ανάλυσης Υποθέστε ότι θέλετε να βρείτε την θέση κάποιου στοιχείου K σε μια λίστα Χ[] (μήκους ). t dex( t X[],t,t ){ 1 t ; whle ( < ) { 3 f (X[]) // tem foud 4 retur ; 5 1; } 6 retur error; } Μέγεθος δεδομένων εισόδου: 3 1 7 9 5 Χειρότερη Περίπτωση: εξέταση όλων των στοιχείων (π.χ. ψάχνουμε το 5) t() > O() Βέλτιστη Περίπτωση: το στοιχείο βρίσκετε στην θέση 1 (π.χ. ψάχνουμε το 3) t() 1 > Ω(1) Άρα εκτός από το μέγεθος εισόδου και το ίδιο το στιγμιότυπο εισόδου παίζει κάποιο σημαντικό ρόλο στην ανάλυση κάποιου αλγορίθμου (ή συνάρτησης) Χ 7? > θέση

Ανάλυση Χειρίστης Περίπτωσης Στις περισσότερες περιπτώσεις, μας ενδιαφέρει η ανάλυση χείριστης περίπτωσης, επειδή μας δίδει ένα άνω φράγμα στον χρόνο εκτέλεσης ενός αλγόριθμου. Αν D είναι το σύνολο όλων των εισόδων (στιγμιότυπων*) μεγέθους, και t(i) ο αριθμός βασικών πράξεων που εκτελούνται από τον αλγόριθμο για κάθε ID τότε ορίζουμε την : Πολυπλοκότητα Χειρίστης Περίπτωσης: W() max {t(i) I D } Δηλαδή, ο ορισμός δίνει ένα άνω φράγμα (upper boud) της πολυπλοκότητας του αλγορίθμου. * D { {3,1,7,,9,5}, {1,3,7,,9,5},., (6!7 διατάξεις) } ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 34

Ανάλυση Μέσης Περίπτωσης Υποθέτουμε πως μπορούμε να αντιστοιχίσουμε μια πιθανότητα p(i) σε κάθε είσοδο ID. Ορίζουμε την πολυπλοκότητα Μέσης Περίπτωσης ως A σ D p(i). t(i) Παράδειγμα: Ψάχνουμε το 3 σε μια λίστα (6 αριθμών) To 3 μπορεί να βρίσκεται σε μια από τις πιο κάτω θέσεις: Ι 1 {3,x,x,x,x,x} Ι {x,3,x,x,x,x} Ι 3 {x,x,3,x,x,x} Ι 4 {x,x,x,3,x,x} Ι 5 {x,x,x,x,3,x} Ι 6 {x,x,x,x,x,3} Υποθέτουμε ότι και οι 6 καταστάσεις έχουν πιθανότητα εμφάνισης p(i)1/ Πολυπλοκότητα Μέσης Περίπτωσης 1/ * (1 πράξη) 1/ * ( πράξεις) 1/ * (3 πράξεις) 1/ * (4 πράξεις) 1/ * (5 πράξεις) 1/ * (6 πράξεις) A 1 σ D 1 ((1) ) 1 t(i): αριθ. βασικών πράξεων p(i): Πιθανότητα εμφάνισης στιγμιοτύπου ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 35

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 36 Παράδειγμα 1: Υπολογισμός Χρόνου Εκτέλεσης Υποθέστε ότι ένα πρόβλημα επιλύνεται με τον πιο κάτω κώδικα: t ; for (; <; ) ; // Ανάλυση ; // H βασική πράξη η οποία χρειάζεται Ο(1) χρόνο Ο αλγόριθμος εκτελεί την βασική πράξη φορές 1 O αλγόριθμος έχει πολυπλοκότητα της τάξης O() Στην βέλτιστη περίπτωση χρειάζεται Ω() > O() & Ω() > Θ()

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 37 Επανάληψη Χρήσιμων Μαθηματικών Ορισμών Ορισμός 1: log x a b ff x b a Χρήσιμοι νόμοι λογάριθμων: log ab log a log b log a b b. log a log ab log a log b log a b (log c b) (log c a) b log b x x log a a 1 log (log ) log * log log log log xlog log 1 (commo), log e (l - atural), log (lg - bary) π.χ., log 1 log 1 log δεν ορίζεται Ορισμός : π.χ., x max{ a a x,t( a)} x m{ a a x,t( a)} 63 11 (floor) (celg) 5.7 6, 5.1634 5

Ακολουθίες και Αθροίσματα ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 38 1 1 * 1 1 1 log 1 log log - - - - Το οποίο προκύπτει αλλιώς ως: Άθροισμα Γεωμετρικής Προόδου 1 1... /4 / 1 1 1 6 1) 1)( ( 1) ( log 1 1 - - - - a a a

Μαθηματική Επαγωγή Στόχος Να αποδειχθεί ότι η (μαθηματική) πρόταση Π() ισχύει για κάθε. Μέθοδος 1. Επαληθεύουμε πως η Π ισχύει για,. Υποθέτουμε πως η Π ισχύει για και 3. Αποδεικνύουμε πως η Π ισχύει για 1. Παραλλαγές Αντί του, σε ορισμένες περιπτώσεις ενδιαφερόμαστε για a, όπου το a είναι κάποιος ακέραιος. Στο δεύτερο βήμα: Υποθέτουμε πως η Π ισχύει για και αποδεικνύουμε πως η Π ισχύει για 1. ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 39

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4 Λογική πίσω από την Μαθηματική Επαγωγή Έστω ότι κάποιος ισχυρίζεται ότι ο ακόλουθος τύπος ισχύει πάντα Καλούμαστε να αποδείξουμε (δηλαδή να δείξουμε ότι για κάθε τιμή του Χ ισχύει) η να το διαψεύσουμε (ότι δηλ., υπάρχει κάποια τιμή του που κάνει αναληθή τον ισχυρισμό. Δοκιμή για 1 : (1*)/ 1 το οποίο είναι το ίδιο με το 1! Δοκιμή για : (*3)/ 3 το οποίο είναι το ίδιο με το 1! Δοκιμή για 3 : (3*4)/ 6 το οποίο είναι το ίδιο με το 13! Δοκιμή για 4 : (4*5)/ 1 το οποίο είναι το ίδιο με το 134!. ( 1) Ας υποθέσουμε ότι ισχύει και για Μπορούμε να δείξουμε ότι ισχύει και για 1 με βάσει την προηγούμενη υπόθεση; Εάν ναι τότε το έχουμε αποδείξει. Εάν όχι τότε δεν το έχουμε διαψεύσει, απλά δεν έχουμε βρει την απάντηση!

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 41 Παράδειγμα 1 Τυπική Απόδειξη Να αποδείξετε ότι. Απόδειξη: Θα αποδείξουμε με τη μέθοδο της μαθηματικής επαγωγής την πρόταση Π() ( 1) ( 1) 1. Επαληθεύουμε την Π() ως εξής: ( 1). Υποθέτουμε ότι ισχύει η Π(), δηλαδή ότι ( 1) 3. Και θα αποδείξουμε ότι ισχύει η Π(1): Επαγωγική υπόθεση 1 ( 1) ( 1) ( ( 1) 1) ( ( 1) 1)( )

Παράδειγμα Τυπική Απόδειξη Να αποδείξετε ότι Απόδειξη: Θα αποδείξουμε με τη μέθοδο της μαθηματικής επαγωγής την πρόταση Π() 1. Επαληθεύουμε την Π() ως εξής:. Υποθέτουμε ότι ισχύει η Π(), δηλαδή ότι 3. Και θα αποδείξουμε ότι ισχύει η Π(1): ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4 3 4 ( 1) 3 4 ( 1) 4 1) ( 3 3 4 ( 1) 4 1) 1) (( 1) ( 4 ) ( 1) ( 4 4) 4 ( 1) ( 4 1)) ( 4 ( 1) ( 4 1)) ( 4 ( 1) ( 4 1) ( 4 1) ( 1) ( 4 1) ( 1) ( 3 3 3 3 1 3 4 1) 1) (( 1) ( 1 3

ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 43 Παράδειγμα 3 Τυπική Απόδειξη Να αποδείξετε ότι για >7. Απόδειξη: 3! Θα αποδείξουμε με τη μέθοδο της μαθηματικής επαγωγής την πρόταση Π() 3! για >7. 3 7 187 7! 1. Επαληθεύουμε την Π(7) ως εξής:. 54. Υποθέτουμε ότι ισχύει η Π(), δηλαδή ότι 3!. 3. Και θα αποδείξουμε ότι ισχύει η Π(1): 3 1 ( 1)! 3 1 3.3 3.! ( 1).! ( 1)! [Επαγωγική υπόθεση] [Για >7 ισχύει πάντα (1>3)] [Το οποίο είναι το ζητούμενο]