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

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

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

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

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

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

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

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

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

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

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

Αλγοριθμικές Τεχνικές

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

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

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

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

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

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

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια)

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

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

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

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

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

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

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

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

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

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

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

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

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

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

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

Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης. Οταν το πρόβλημα έχει πεπερασμ

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος

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

Λύσεις 4ης Σειράς Ασκήσεων

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

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

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

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

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

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

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

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

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

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

a n = 3 n a n+1 = 3 a n, a 0 = 1

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

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

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

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

Διάλεξη 17: Συμφωνία με Βυζαντινά Σφάλματα. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μάθημα 20: Δυναμικός Προγραμματισμός (DP)

Προσεγγιστικοί Αλγόριθμοι

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 16: Αναγωγές

Κατανεμημένα Συστήματα Ι

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

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

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

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

Σειρά Προβλημάτων 5 Λύσεις

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

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Χαρακτηριστικά αναδροµής

num(m(w 1 ;... ; w k )) = f(num(w 1 ),..., num(w k ))

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε

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

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

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

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

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

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

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

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

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

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

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

Το 10ο πρόβλημα του Hilbert I

Φροντιστήριο 11 Λύσεις

Transcript:

Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 1 Αλγόριθμοι και Πολυπλοκότητα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Εισαγωγή Ας ξεκινήσουμε

Εισαγωγή Δημιουργούνται επομένως ερωτήματα όπως:

Εισαγωγή Τι είναι Αλγόριθμος? Αλγόριθμος Μέθοδος για την επίλυση ενός προβλήματος Δομή Δεδομένων Μέθοδος αποθήκευσης δεδομένων

Εισαγωγή Αλγόριθμος Πολλαπλασιασμού

Εισαγωγή Οι αλγόριθμοι προϋπάρχουν των υπολογιστών Αλγόριθμος του Ευκλείδη Αλγόριθμος του Ευκλείδη για υπολογισμό του μέγιστου κοινού διαιρέτη Βασίζεται στον κανόνα όπου είναι θετικοί ακέραιοι int Euclid(int x, int y) { if y==0 return x; return Euclid(y, x%y); } Παράδειγμα Euclid (128,40)= Euclid (40,8)= Euclid (8,0)= 8 Ευκλείδης (300 πχ)

Εισαγωγή Προβλήματα και Στιγμιότυπα Ορθότητα

Εισαγωγή Ορθότητα

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

Εισαγωγή Πολυπλοκότητα Πολυπλοκότητα Αλγόριθμου Άνω Φράγμα του Π = Απόδειξη ενός ελάχιστου χρόνου για την επίλυση του προβλήματος Π Κάτω Φράγμα του Π Βέλτιστος (optimal) Αλγόριθμος

Εισαγωγή Πρόβλημα Π Αλγόριθμος Άνω Φράγμα του προβλήματος Π Το Π απαιτεί χρόνο το ΠΟΛΥ T 1 (n)

Εισαγωγή Πρόβλημα Π Αλγόριθμος Άνω Φράγμα του προβλήματος Π Το Π απαιτεί χρόνο το ΠΟΛΥ T 1 (n) Το Π απαιτεί χρόνο ΤΟΥΛΑΧΙΣΤΟ T 2 (n) Θεώρημα Κάτω Φράγμα του προβλήματος Π

Εισαγωγή Πρόβλημα Π Αλγόριθμος Άνω Φράγμα του προβλήματος Π Το Π απαιτεί το χρόνο το ΠΟΛΥ T(n) Το Π απαιτεί το χρόνο ΤΟΥΛΑΧΙΣΤΟ T(n) Θεώρημα Κάτω Φράγμα του προβλήματος Π Βέλτιστος Αλγόριθμος

Εισαγωγή Πολυπλοκότητα Εμπειρική Θεωρητική!!!!!!!

Εισαγωγή Πολυπλοκότητα Εμπειρική

Αποτελεσματικότητα Αλγορίθμου Θεωρητική Πολυπλοκότητα

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

Αποτελεσματικότητα Αλγορίθμου Εστιάζω στο Χρόνο Πολυπλοκότητα

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

Αποτελεσματικότητα Αλγορίθμου Πλεονεκτήματα Θεωρητική Προσέγγισης Ερώτημα

Βασικές Πράξεις Βασική Πράξη

Βασικές Πράξεις n-1 βασικές πράξεις

Βασικές Πράξεις

Βασικές Πράξεις α) [1, 3, 5, 2, 9, 7] b) [9, 3,7, 2, 1, 5] c) [5, 7, 1, 2, 9, 3] d) [7, 9, 5, 2, 3, 1] max = 9 Το πλήθος των συγκρίσεων S[i] > max είναι το ίδιο!!!

Βασικές Πράξεις α) [1, 3, 5, 2, 9, 7] x = 5 b) [9, 3,7, 2, 1, 5] c) [5, 7, 1, 2, 9, 3] d) [7, 9, 2, 4, 3, 1] Το πλήθος των συγκρίσεων S[index] <> x ΔΕΝ είναι το ίδιο!!!

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου 1 Πρόβλημα: Εύρεση του max στοιχείου Αλγόριθμος: Find_Max-1

1 Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου 2 Πρόβλημα: Εύρεση του max στοιχείου Αλγόριθμος: Find_Max-2

2 Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου 3 Πρόβλημα: Εύρεση του min-max στοιχείων Αλγόριθμος: Find_Min_Max-1

3 Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου 4 Πρόβλημα: Εύρεση του min-max στοιχείων Αλγόριθμος: Find_Min_Max-2

4 Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου 5 Πρόβλημα: Εύρεση δεύτερου max στοιχείου Αλγόριθμος: Find_Second_Max-1

5 Πολυπλοκότητα Χρόνου

Πολυπλοκότητα Χρόνου 6 Πρόβλημα: Εύρεση δεύτερου max στοιχείου Αλγόριθμος: Find_Second_Max-2

Πολυπλοκότητα Χρόνου 6 1.1.1

Ασυμπτωτική Πολυπλοκότητα Έως τώρα Ερώτημα Επόμενο Εύλογο Ερώτημα Υπολογισμός του πλήθους των Βασικών Πράξεων ενός αλγόριθμου - W(n) και A(n) Μήπως με αυτή την προσέγγιση της πολυπλοκότητα υπεισέρχονται στον υπολογισμό μας και παράγοντες οι οποίοι δεν μας διευκολύνουν να εκτιμήσουμε την αποτελεσματικότητα ενός αλγόριθμου; Είναι οι παράγοντες αυτοί τόσο σημαντικοί ώστε να μην μπορούν να αγνοηθούν;

Ασυμπτωτική Πολυπλοκότητα Ας αναφερθούμε στο πρώτο ερώτημα. Έστω Αλγόριθμος Α με πολυπλοκότητα W(n) = n 3 / 4 Αλγόριθμος B με πολυπλοκότητα W(n) = 10 n 2 Ισχύει n 3 / 4 < 10 n 2 για n < 40 Τότε Ο αλγόριθμος Α είναι αποτελεσματικότερος του Β. Όμως Χωρίς δυσκολία, παρατηρούμε ότι για μεγάλες τιμές του n (μέγεθος εισόδου) ο αλγόριθμος Β είναι πολύ πιο αποτελεσματικός από τον αλγόριθμο Α.

Πολυπλοκότητα Αλγορίθμου Παράδειγμα 3n 3 ΒΠ 19.500.000n ΒΠ Πρόβλημα π

Ασυμπτωτική Πολυπλοκότητα Από το παραπάνω παράδειγμα γίνεται σαφές ότι: Χρειαζόμαστε ένα τρόπο να εξασφαλίσουμε μερικές κατηγορίες συναρτήσεων οι οποίες ΕΞΑΛΕΙΦΟΥΝ ΜΗ-ΣΗΜΑΝΤΙΚΟΥΣ ΠΑΡΑΓΟΝΤΕΣ όπως σταθερές, μικρού μεγέθους εισόδους, κλπ.

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα

Ασυμπτωτική Πολυπλοκότητα Πολυπλοκότητα Ο(n 3 ) Πολυπλοκότητα Ο(n) Πρόβλημα π

Ασυμπτωτική Πολυπλοκότητα Αλγόριθμος: Find_Min_Max-1 W(n) = Ο(n) A(n) = Ο(n)

Ασυμπτωτική Πολυπλοκότητα Αλγόριθμος: Find_Min_Max-2 W(n) = Ο(n) A(n) = Ο(n)

Ασυμπτωτική Πολυπλοκότητα Αλγόριθμος: MinMax W(n) =??????

Ασυμπτωτική Πολυπλοκότητα Αναδρομική Σχέση

Αναδρομικές Σχέσεις Επίλυση Αναδρομικών Σχέσεων Επίλυση με Μαντεψιά Με Χρήση της Χαρακτηριστικής Εξίσωσης Με Επαναληπτική Αντικατάσταση Κύρια Μέθοδος (Master Method)

Αναδρομικές Σχέσεις Επίλυση της Αναδρομικής Σχέσης

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

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

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

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

Αναδρομικές Σχέσεις Επίλυση της Αναδρομικής Σχέσης

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

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

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

Αναδρομικές Σχέσεις Επίλυση της Αναδρομικής Σχέσης

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

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

Κύρια Μέθοδος ή Κύριο Θεώρημα Κύρια Μέθοδος (Master Method)

Κύρια Μέθοδος ή Κύριο Θεώρημα

Κύρια Μέθοδος ή Κύριο Θεώρημα Θεωρούμε ότι:

Κύρια Μέθοδος ή Κύριο Θεώρημα 1 εάν 2 εάν 3 εάν!!!

Κύρια Μέθοδος ή Κύριο Θεώρημα Παράδειγμα 1: και Ισχύει : 2

Κύρια Μέθοδος ή Κύριο Θεώρημα Παράδειγμα 2: και Ισχύει : 2

Κύρια Μέθοδος ή Κύριο Θεώρημα Παράδειγμα 3: και Ισχύει : 3

Κύρια Μέθοδος ή Κύριο Θεώρημα Παράδειγμα 4:??????

Κύρια Μέθοδος ή Κύριο Θεώρημα Παράδειγμα 4:

Άνω και Κάτω φράγματα Πρόβλημα Π?????? Αλγόριθμος Πόσο αποτελεσματικός είναι ο Αλγόριθμος που σχεδίασα για το πρόβλημα Π?

Άνω και Κάτω φράγματα Πολυπλοκότητα Αλγόριθμος Άνω Φράγμα του Π Κάτω Φράγμα του Π Θεώρημα Βέλτιστος Αλγόριθμος

Άνω και Κάτω φράγματα Πόσο αποτελεσματικός είναι ο Αλγόριθμος Α που επιλύει το Πρόβλημα Π? Πρόβλημα P 1. 2. Ανέλυσε τον αλγόριθμο Α και υπολόγισε μια συνάρτηση W A τέτοια ώστε: για κάθε είσοδο Ι μήκους n, Α απαιτεί το πολύ W A (n) πράξεις για την επίλυση του Π. Βρες μια συνάρτηση F και απέδειξε το εξής Θεώρημα: για κάθε αλγόριθμο Χ (ίδιας κλάσης) που επιλύει το πρόβλημα Π υπάρχει μια είσοδος μήκους n, για την οποία ο αλγόριθμος απαιτεί τουλάχιστο F(n) πράξεις.

Άνω και Κάτω φράγματα Πόσο αποτελεσματικός είναι ο Αλγόριθμος Α που επιλύει το Πρόβλημα Π? Πρόβλημα P 1. Άνω Φράγμα $ A, " I, A(I) = P(I) & Time(A,I) T upper ( I ) 2. Κάτω Φράγμα " A, $ I, A(I) = P(I) or Time(A,I) T lower ( I )

Άνω και Κάτω φράγματα Ο(n 4 ) Αλγόριθμος 1 Πρόβλημα Π Πολυπλοκότητας Ο(n) Ο(n 3 ) Αλγόριθμος 2 Ο(n 2 ) Αλγόριθμος 3 Ο(n) Αλγόριθμος 4 Ω(n) Θεώρημα 3 Άνω Φράγμα Κάτω Φράγμα Ω(logn ) Θεώρημα 2 Ω(1) Θεώρημα 1

Άνω και Κάτω φράγματα Ο(n 4 ) Αλγόριθμος 1 Ο(n 3 ) Αλγόριθμος 2 ΚΕΝΟ Ω(n 2 ) Θεώρημα 4 Πρόβλημα Π Πολυπλοκότητας Ο(n 3 ) Άνω Φράγμα Κάτω Φράγμα Ω(n) Θεώρημα 3 Ω(logn ) Θεώρημα 2 Ω(1) Θεώρημα 1

Άνω και Κάτω φράγματα Πρόβλημα Παράδειγμα Εύρεση του ΜΑΧ στοιχείου από ένα σύνολο S, με S =n και στοιχεία τύπου type(s). Κλάση Αλγορίθμων: Βασικές Πράξεις: Αλγόριθμοι που Συγκρίνουν και Αντιγράφουν στοιχεία τύπου type(s). Σύγκριση ενός στοιχείου του S με οποιοδήποτε άλλο στοιχείο τύπου type(s).

Άνω και Κάτω φράγματα Άνω Φράγμα Παράδειγμα Αλγόριθμος: Find_Max Το πλήθος των Βασικών Πράξεων (S[i]>max) είναι ακριβώς n-1, και επομένως W Find_Max (n) = n-1.

Άνω και Κάτω φράγματα Άνω Φράγμα Παράδειγμα Αλγόριθμος: Find_Max Υπάρχει Ταχύτερος Αλγόριθμος!!! Το πλήθος των Βασικών Πράξεων (S[i]>max) είναι ακριβώς n-1, και επομένως W Find_Max (n) = n-1.

Άνω και Κάτω φράγματα Κάτω Φράγμα Παράδειγμα Υπολόγισε ένα ελάχιστο πλήθος Βασικών Πράξεων που απαιτούνται για την επίλυση του Προβλήματος Έστω ένα σύνολο S με n στοιχεία τύπου type(s). Υποθέτουμε ότι όλα τα στοιχεία είναι διαφορετικά. Μπορούμε να κάνουμε αυτή την υπόθεση γιατί το κάτω φράγμα αποδεικνύεται για την χειρίστη-περίπτωση και επομένως όλες οι είσοδοι είναι αποδεκτές.

Άνω και Κάτω φράγματα Κάτω Φράγμα Παράδειγμα Υπολόγισε ένα ελάχιστο πλήθος Βασικών Πράξεων που απαιτούνται για την επίλυση του Προβλήματος Στο σύνολο S, που έχει n διαφορετικά στοιχεία, υπάρχουν n-1 που δεν είναι max. Ένα στοιχείο x του S, ΔΕΝ είναι max μόνο εάν είναι μικρότερο από ένα τουλάχιστο στοιχείο y του S (x<y). Στη σύγκριση (x<y), το στοιχείο x είναι ο ηττημένος, και το στοιχείο y είναι ο νικητής.

Άνω και Κάτω φράγματα Κάτω Φράγμα Παράδειγμα Υπολόγισε ένα ελάχιστο πλήθος Βασικών Πράξεων που απαιτούνται για την επίλυση του Προβλήματος Άρα, n-1 στοιχεία πρέπει να νικηθούν συγκρινόμενα. Προσοχή: με οποιοδήποτε Αλγόριθμο και αν επινοήσουμε!!! Κάθε σύγκριση έχει μόνο ένα ηττημένο (και φυσικά μόνο ένα νικητή ). Άρα, πρέπει να τουλάχιστο n-1 συγκρίσεις!!!

Άνω και Κάτω φράγματα Κάτω Φράγμα Παράδειγμα Υπολόγισε ένα ελάχιστο πλήθος Βασικών Πράξεων που απαιτούνται για την επίλυση του Προβλήματος Αυτό σημαίνει ότι, εάν υπάρχουν δύο ή περισσότεροι μη-ηττημένοι όταν οποιοσδήποτε Αλγόριθμος τερματίσει, τότε δεν θα μπορεί να εντοπίσει το max. Άρα, F(n) = n-1 είναι ένα κάτω-φράγμα για το πλήθος των απαιτούμενων συγκρίσεων!!!

Κλάσεις Πολυπλοκότητας Πολυπλοκότητα

Κλάσεις Πολυπλοκότητας Πολυπλοκότητα

Κλάσεις Πολυπλοκότητας Πολυπλοκότητα

Κλάσεις Πολυπλοκότητας Πολυπλοκότητα

Κλάσεις Πολυπλοκότητας Πολυπλοκότητα

Κλάσεις Πολυπλοκότητας Πολυπλοκότητα Ενότητα Αλγόριθμοι και Πολυπλοκότητα

Ερωτήματα - Προβληματισμοί Ιστορία των Sissa και Moore

Ερωτήματα - Προβληματισμοί Ιστορία του Sissa Σύμφωνα με την παράδοση όταν κάποτε ο ηγεμόνας της περιοχής που ζούσε ο βραχμάνος Σίσσα κάλεσε αυτόν για να επιδείξει το παιγνίδι που είχε εφεύρει, τόσο πολύ γοητεύτηκε απ αυτό που ρώτησε τον Σίσσα τι θα ήθελε ως ανταμοιβή. Τότε ο σοφός εκείνος ζήτησε

Ερωτήματα - Προβληματισμοί Το αίτημα του Sissa Το σιτάρι που χρειάζονταν ανέρχονταν σε 18.446.744.073.709.551.615 κόκκους, που αυτοί εκπεφρασμένοι σε βάρος, έχοντας ότι το βάρος ενός κόκκου ίσο με 0, 053 γραμμάρια, ισοδυναμούσαν στη τεράστια ποσότητα των 977.677.436.907 τόνων!

Ερωτήματα - Προβληματισμοί Ιστορία του Moore Νόμος του Moore 1965 Ως «Νόμος του Μουρ» ονομάζεται η παρατήρηση πως ο αριθμός των τρανζίστορ ενός πυκνού ολοκληρωμένου κυκλώματος διπλασιάζεται κάθε δύο χρόνια.

Ερωτήματα - Προβληματισμοί Ιστορία του Moore Νόμος του Moore 1965 Διατηρεί την ισχύ του αξιοσημείωτα καλά επί 40 χρόνια!!!

Ερωτήματα - Προβληματισμοί Ιστορία του Moore Νόμος του Moore 1965

Ερωτήματα - Προβληματισμοί Ιστορία του Moore Νόμος του Moore 1965 Ο Νόμος του Moore δίνει αντικίνητρα για την ανάπτυξη πολυωνυμιών αλγορίθμων??? Εάν ένας αλγόριθμος είναι εκθετικός, γιατί να μην περιμένουμε μέχρι να τον κάνει εφικτό ο Νόμος του Moore!!! Συμβαίνει το αντίθετο!!! Ο Νόμος του Moore αποτελεί ένα τεράστιο κίνητρο για την ανάπτυξη αποδοτικών αλγορίθμων!!!!

Ερωτήματα - Προβληματισμοί Ιστορία του Moore Νόμος του Moore 1965 Ορίστε γιατί!!! Ένας αλγόριθμος Ο(2 n ) για το πρόβλημα SAT είχε στη διάθεσή του 1 ώρα, θα μπορούσε να λύσει το πρόβλημα με 25 μεταβλητέ το 1975, με 31 μεταβλητές το 1985, με 38 μεταβλητές το 1995, και με περίπου 45 μεταβλητές με τους σημερινού Η/Υ.

Ερωτήματα - Προβληματισμοί Ιστορία του Moore Νόμος του Moore 1965 Αρκετή Πρόοδος!!! Κάθε επιπλέων μεταβλητή απαιτεί ΕΝΑΜΙΣΗ χρόνο αναμονής!!!!!! Αντίθετα. Το μέγεθος των στιγμιότυπων που επιλύονται από έναν αλγόριθμο Ο(n) ή ένα αλγόριθμο Ο(n logn) ΕΚΑΤΟΝΤΑΠΛΑΣΙΑΖΕΤΕ κάθε δεκαετία!!!!!!

Ερωτήματα - Προβληματισμοί Ιστορία των Sissa και Moore Οι Εκθετικοί Αλγόριθμοι παρουσιάζουν πολυωνυμική αργή πρόοδο!!! ενώ οι Πολυωνυμικοί Αλγόριθμοι παρουσιάζουν εκθετικά γρήγορα πρόοδο!!!

Ερωτήματα - Προβληματισμοί Πολυπλοκότητα Αλγόριθμοι Πολυωνυμικοί Εκθετικοί Ο(n k ), k 1 Πολυωνυμικό Χρόνο Εκτέλεσης Ο(c n ), c >1 Εκθετικό Χρόνο Εκτέλεσης

Ερωτήματα - Προβληματισμοί???? Πρόβλημα π

Ερωτήματα - Προβληματισμοί Ακολουθία Fibonacci εάν εάν εάν

Ερωτήματα - Προβληματισμοί Ακολουθία Fibonacci Οι αριθμοί Fibonacci αυξάνουν σχεδόν το ίδιο γρήγορα με τις δυνάμεις του 2 Για παράδειγμα: αποτελείται ήδη από 21 ψηφία!!! Γενικά:

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+ Fib1(n-2)

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1) + Fib1(n-2) Ερωτήματα Μόνο 3!!! 1 2 3 Είναι σωστός; Πόσο χρόνο επαιτεί (ως συνάρτηση του μεγέθους n της εισόδου); Μπορούμε να τον βελτιώσουμε;

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 1 Είναι σωστός; Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Ακαδημαϊκή ερώτηση!!! καθώς ο αλγόριθμος Fib1 είναι ακριβώς ο ορισμός του Fibinacci για το F n. Καμία σοβαρή δική μας σκέψη!!!

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 2 Πόσο χρόνο επαιτεί; Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Έστω T(n) το πλήθος των υπολογιστικών βημάτων (βασικών πράξεων) που απαιτούνται για τον υπολογισμό της Fib1(n).

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 2 Πόσο χρόνο επαιτεί; Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2)

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 2 Πόσο χρόνο επαιτεί; Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Πολύ άσχημα νέα!!! Ο χρόνος εκτέλεσης του αλγόριθμου αυξάνει το ίδιο γρήγορα με τους αριθμούς Fibonacci!!! Εκθετικό ως προς το n

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 2 Πόσο χρόνο επαιτεί; Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Τι σημαίνει αυτό?... Πόσο κακός είναι ο Fib1? υπολογιστικά βήματα Earth Simulator της NEC με ταχύτητα 40 τρισεκατομμύρια βήματα/sec Η συνάρτηση Fib1(200) απαιτεί sec

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 2 Πόσο χρόνο επαιτεί; Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Η συνάρτηση Fib1(200) απαιτεί sec Εάν ξεκινήσει σήμερα τον υπολογισμό, αυτός θα συνεχιζόταν και μετά την μετατροπή του ήλιου μας σε κόκκινο γίγαντα!!!!

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Η ταχύτητα των Η/Υ διπλασιάζεται περίπου κάθε 18 μήνες (Νόμος του Moore) Ίσως τότε ο αλγόριθμος Fib1 να εκτελείται πολύ πιο γρήγορα στους Η/Υ του επόμενου έτους!!!! Ο χρόνος εκτέλεσης του Fib1(n) είναι ανάλογος του 2 0.694n (1.6) n Σήμερα το Fib1(100), το επόμενο έτος το Fib1(101), το επόμενο το Fib1(102), Ένα μόνο όρο κάθε έτος!!!!!

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Γιατί ο αλγόριθμός μας είναι τόσο αργός? Πρέπει να τον μελετήσουμε και να απαντήσουμε την ερώτηση!!!!????

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2)

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2)

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2)

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2)

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib1 3 Μπορούμε να τον βελτιώσουμε; Fib1(n) if n=0 then return 0 if n=1 then return 1 return Fib1(n-1)+Fib1(n-2) Ιδέα!!! Να αποθηκεύουμε τα ενδιάμεσα αποτελέσματα!!!!

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib2 Fib2(n) if n=0 then return 0 Δημιούργησε έναν πίνακα f[0..n] Θέσε f[0]=0 και f[1]=1 for i=2 to n do f[i]=f[i-1]+f[i-2] return f[n] f 0 1 2 3 4 5 6 7 8 0 1 1 2 3 5 8

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib2 1 Είναι σωστός; Η ορθότητα προκύπτει άμεσα από τον ορισμό του F n Fib2(n) if n=0 then return 0 Δημιούργησε έναν πίνακα f[0..n] Θέσε f[0]=0 και f[1]=1 for i=2 to n do f[i]=f[i-1]+f[i-2] return f[n] 2 Πόσο χρόνο επαιτεί; Ο εσωτερικός βρόχος έχει 1 μόνο υπολογιστικό βήμα και εκτελείται n-1 φορές Τώρα με τον Fib2(n) μπορούμε να υπολογίσουμε όχι μόνο τον όρο αλλά και τον!!!

Ερωτήματα - Προβληματισμοί Αλγόριθμος Fib2 3 Μπορούμε να τον βελτιώσουμε; ΝΑΙ!!! Fib2(n) if n=0 then return 0 Δημιούργησε έναν πίνακα f[0..n] Θέσε f[0]=0 και f[1]=1 for i=2 to n do f[i]=f[i-1]+f[i-2] return f[n] Ιδέα!!! Πολλαπλασιασμός Πινάκων!!!! Αλγόριθμος Fib3

Ερωτήματα - Προβληματισμοί Προβλήματα με Πολυωνυμική Λύση Πολυωνυμικοί Αλγόριθμοι Ο(n k ), k 1 Πολυωνυμικό Χρόνο Εκτέλεσης

Ερωτήματα - Προβληματισμοί Προβλήματα με Εκθετική Λύση Εκθετικοί Αλγόριθμοι Ο(c n ), c >1 Εκθετικό Χρόνο Εκτέλεσης

Ερωτήματα - Προβληματισμοί Προβλήματα Μη-επιλύσιμα ΔΕΝ ΥΠΑΡΧΕΙ ΚΑΝΕΝΑΣ ΑΛΓΌΡΙΘΜΟΣ

Ερωτήματα - Προβληματισμοί Προβλήματα Μη-επιλύσιμα Με δεδομένη μια πολυωνυμική εξίσωση πολλών μεταβλητών, όπως για παράδειγμα η εξίσωση υπάρχουν ακέραιες τιμές των x, y, z οι οποίες να την ικανοποιούν;

Ερωτήματα - Προβληματισμοί Προβλήματα Μη-επιλύσιμα Το πρώτο μη-επιλύσιμο πρόβλημα ανακαλύφθηκε το 1936 από τον Alan Turing, τότε φοιτητής των μαθηματικών στο Cambridge της Αγγλίας. Το Πρόβλημα του Τερματισμού Όταν το διατύπωσε ο Turing δεν υπήρχαν Η/Υ ή γλώσσες προγραμματισμού. Εμφανίστηκαν αργότερα ακριβώς επειδή είχε αυτή την λαμπρή και ευφυή ιδέα ο Turing.

Ερωτήματα - Προβληματισμοί Προβλήματα Μη-επιλύσιμα Πρόβλημα Τερματισμού Έστω ότι σας δίνεται ένα πρόγραμμα P στην αγαπημένη σας γλώσσα προγραμματισμού, μαζί με μια είσοδο X. Μπορείτε να απαντήσετε εάν το πρόγραμμα Π με την είσοδο X θα μπορέσει ποτέ να τερματίσει! Θα θέλαμε να είχαμε έναν Αλγόριθμο, ας τον ονομάσουμε terminates(p,x), ο οποίος μετά από υπολογισμούς θα μας έλεγε εάν το P με είσοδο Χ θα τερματίσει την εκτέλεσή του. Πως θα γράφατε το πρόγραμμα terminates(p,x)

Ερωτήματα - Προβληματισμοί Προβλήματα Μη-επιλύσιμα Πρόβλημα Τερματισμού Λοιπόν, δεν μπορείτε!... Τέτοιος αλγόριθμος δεν υπάρχει!!! Να και η απόδειξη: Υποθέστε ότι είχατε το πρόγραμμα terminates(p,x). Τότε θα μπορούσατε να το χρησιμοποιήσετε ως υποπρόγραμμα του ακόλουθου κακού προγράμματος: paradox(z: file) 1. if terminates(z,z) goto 1

Ερωτήματα - Προβληματισμοί Προβλήματα Μη-επιλύσιμα Πρόβλημα Τερματισμού paradox(z: file) 1. if terminates(z,z) goto 1 Παρατηρήστε τι κάνει το πρόγραμμα paradox: Τερματίζει, εάν και μόνο εάν το πρόγραμμα z δεν τερματίζει με είσοδο z. Και εάν εκτελούσαμε το πρόγραμμα paradox(paradox); Θα μπορούσε ποτέ να τερματίσει; Ή όχι; Καμία απάντηση δεν είναι δυνατή!!!!

Ερωτήματα - Προβληματισμοί Προβλήματα Μη-επιλύσιμα Πρόβλημα Τερματισμού Καταλήξαμε σε αντίφαση υποθέτοντας ότι υπάρχει αλγόριθμος που μπορεί να πει εάν ένα πρόγραμμα τερματίζει. Επομένως αυτό το πρόβλημα δεν μπορεί να λυθεί με κανένα αλγόριθμο!!! Όλα αυτά μας λένε κάτι σημαντικό για τον προγραμματισμό: ποτέ δεν θα αυτοματοποιηθεί, και πάντοτε θα βασίζεται στην πειθαρχεία, την επινοητικότητα, και την σοβαρή μελέτη!!!

Ερωτήματα - Προβληματισμοί Στόχος ο Σχεδιασμός Αποτελεσματικών Αλγορίθμων Τεχνικές Σχεδίασης Αναδρομή (recursion) Διαίρει και κυρίευε (divide and conquer) Δυναμικός προγραμματισμός (dynamic programming) Απληστία (greedy algorithms) Τυχαιοποίηση (randomization) Αντιστάθμιση (amortization)

Τέλος Ενότητας Ευχαριστώ για τη Συμμετοχή σας!!! Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros