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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ρυθιμός αύξησης συναρτήσεων

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

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

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

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

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

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

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

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

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

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

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

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

Εργαστηριακή Άσκηση 1

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

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

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

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

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

Περιεχόμενα. Περιεχόμενα

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

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

X = {(x 1, x 2 ) x 1 + 2x 2 = 0}.

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

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

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

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

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

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

Ταξινόμηση με συγχώνευση Merge Sort

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Transcript:

Αλγόριθμοι και Πολυπλοκότητα Ανάλυση Αλγορίθμων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ανάλυση Αλγορίθμων Η ανάλυση αλγορίθμων περιλαμβάνει τη διερεύνηση του τρόπου με τον οποίο κλιμακώνονται οι απαιτήσεις τους για πόρους, δηλαδή ο χώρος και ο χρόνος που χρησιμοποιούν, με την αύξηση του μεγέθους της εισόδου. Χαροκόπειο Πανεπιστήμιο 2/37

Αποδοτικότητα Χρειαζόμαστε έναν απτό ορισμό της αποδοτικότητας που να είναι ανεξάρτητος από πλατφόρμα υλοποίησης και στιγμιότυπο εισόδου, και ο οποίος θα κάνει πρόβλεψη για τα αυξανόμενα μεγέθη της εισόδου. Χαροκόπειο Πανεπιστήμιο 3/37

Χρόνοι Εκτέλεσης Χειρότερης Περίπτωσης Χρόνος χειρότερης περίπτωσης. Σκοπός είναι να βρούμε ένα άνω όριο για τον χρόνο ενός αλγορίθμου σε οποιαδήποτε είσοδο μεγέθους n. Αποτυπώνει αρκετά καλά την αποδοτικότητα στην πράξη. Δρακόντειο μέτρο, αλλά δύσκολο να βρούμε καλύτερη εναλλακτική. Ανάλυση μέσης περίπτωσης. Στην ανάλυση μέσης τιμής (average-case analysis) μελετάμε την απόδοση ενός αλγορίθμου ως προς τον μέσο όρο κάποιων "τυχαίων" στιγμιοτύπων. Δύσκολο (έως αδύνατο) να μοντελοποιήσουμε πραγματικά προβλήματα με κάποια τυχαία κατανομή. Ένας γρήγορος αλγόριθμος για μια κατανομή εισόδου μπορεί να είναι πολύ αργός σε άλλη κατανομή. Χαροκόπειο Πανεπιστήμιο 4/37

Χώροι Αναζήτησης και Κλιμάκωση Πως ποσοτικοποιούμε την έννοια του "εύλογου" χρόνου εκτέλεσης; Χώροι αναζήτησης. Ο χώρος αναζήτησης (search space), δηλαδή ο χώρος των λύσεων ενός προβλήματος, τείνει να αυξάνεται εκθετικά σε συνάρτηση με το μέγεθος της εισόδου n. Εάν το μέγεθος της εισόδου αυξηθεί κατά ένα, ο αριθμός των δυνατοτήτων αυξάνεται πολλαπλάσια. Ωμή βία. Για πολλά προβλήματα, υπάρχει ένας φυσικός αλγόριθμος ωμής βίας (brute force) που ελέγχει όλες τις δυνατές λύσεις. Συνήθως χρειάζεται χρόνο 2 n ή περισσότερο για εισόδους μεγέθους n. Απαγορευτικό στην πράξη. Χαροκόπειο Πανεπιστήμιο 5/37

Χώροι Αναζήτησης και Κλιμάκωση Πως ποσοτικοποιούμε την έννοια του "εύλογου" χρόνου εκτέλεσης; Χώροι αναζήτησης. Ο χώρος αναζήτησης (search space), δηλαδή ο χώρος των λύσεων ενός προβλήματος, τείνει να αυξάνεται εκθετικά σε συνάρτηση με το μέγεθος της εισόδου n. Εάν το μέγεθος της εισόδου αυξηθεί κατά ένα, ο αριθμός των δυνατοτήτων αυξάνεται πολλαπλάσια. Καλύτερη ιδιότητα κλιμάκωσης. Θα θέλαμε ένας καλός αλγόριθμος να έχει καλύτερη ιδιότητα κλιμάκωσης: όταν το μέγεθος εισόδου αυξάνεται κατά μια σταθερή ποσότητα -- για παράδειγμα, κατά 2 -- ο αλγόριθμος θα πρέπει να επιβραδύνεται μόνο κατά ένα σταθερό συντελεστή C. Χαροκόπειο Πανεπιστήμιο 5/37

Πολυωνυμικός Χρόνος Ιδιότητα "Καλού" Αλγορίθμου. Υπάρχουν απόλυτες σταθερές c > 0 και d > 0 έτσι ώστε για κάθε στιγμιότυπο εισόδου μεγέθους n, ο χρόνος εκτέλεσης φράσσεται από c n d στοιχειώδη υπολογιστικά βήματα 1. Λέμε ότι ο αλγόριθμος έχει πολυωνυμικό χρόνο εκτέλεσης (polynomial running time) ή ότι είναι ένας αλγόριθμος πολυωνυμικού χρόνου (polynomial-time algorithm). 1 Επίτηδες αόριστο, μπορείτε όμως να φανταστείτε μια εντολή γλώσσας assembly ή μια εντολή γλώσσας C. Χαροκόπειο Πανεπιστήμιο 6/37

Πολυωνυμικός Χρόνος Κλιμάκωση. Τα όρια πολυωνυμικού χρόνου έχουν την ιδιότητα κλιμάκωσης που αναζητούμε. Αν το μέγεθος εισόδου αυξηθεί από n σε 2n, το όριο του χρόνου εκτέλεσης αυξάνεται από c n d σε c (2n) d = c 2 d n d που είναι μια καθυστέρηση κατά ένα συντελεστή 2 d. To 2 d είναι μια σταθερά αφού το d είναι σταθερά. Χαροκόπειο Πανεπιστήμιο 7/37

Αποδοτικός Αλγόριθμος Ορισμός. Ένας αλγόριθμος είναι αποδοτικός αν έχει πολυωνυμικό χρόνο εκτέλεσης. Γιατί; Γιατί πραγματικά δουλεύει στην πράξη! Υπάρχει σημαντική διαφορά στην πράξη μεταξύ πολυωνυμικού χρόνου και εκθετικού. Συνήθως στην πράξη οι πολυωνυμικοί αλγόριθμοι έχουν μικρές σταθερές. Παρόλο που 1.33 10 23 n 100 είναι πολυώνυμο, στην πράξη δεν έχει νόημα. Μερικοί εκθετικοί (ή χειρότεροι) αλγόριθμοι χρησιμοποιούνται στην πράξη επειδή τα στιγμιότυπα χειρότερης-περίπτωσης φαίνεται πως είναι πολύ σπάνια. Χαροκόπειο Πανεπιστήμιο 8/37

Χρόνοι n n log 2 n n 2 n 3 n = 10 < 1 sec < 1 sec < 1 sec < 1 sec n = 30 < 1 sec < 1 sec < 1 sec < 1 sec n = 50 < 1 sec < 1 sec < 1 sec < 1 sec n = 100 < 1 sec < 1 sec < 1 sec 1 sec n = 1,000 < 1 sec < 1 sec 1 sec 18 λεπτά n = 10,000 < 1 sec < 1 sec 2 λεπτά 12 ημέρες n = 100,000 < 1 sec 2 sec 3 ώρες 32 έτη n = 1,000,000 1 sec 20 sec 12 ημέρες 31,710 έτη 1.5 n 2 n n! n = 10 < 1 sec < 1 sec 4 sec n = 30 < 1 sec < 18 λεπτά 10 25 έτη n = 50 < 11 λεπτά < 36 έτη n = 100 12,892 έτη 10 17 έτη n = 1,000 n = 10,000 n = 100,000 n = 1,000,000 Χρόνοι εκτέλεσης (στρογγυλεμένοι προς τα πάνω) διαφόρων αλγορίθμων, σε επεξεργαστή που εκτελεί ένα εκατομμύριο εντολές υψηλού επιπέδου το δευτερόλεπτο. Όταν ο χρόνος εκτέλεσης υπερβαίνει τα 10 25 έτη γράφουμε. Χαροκόπειο Πανεπιστήμιο 9/37

Ασυμπτωτικός Ρυθμός Αύξησης Εκφράζουμε λοιπόν την έννοια ότι ο χρόνος εκτέλεσης ενός αλγορίθμου στη χειρότερη περίπτωση για εισόδους μεγέθους n αυξάνεται με ένα ρυθμό που είναι το πολύ ανάλογος κάποιας συνάρτησης f(n). Συνήθως περιγράφουμε έναν αλγόριθμο σε κάποια μορφή ψευδοκώδικα, μια ενδιάμεση μορφή μεταξύ γλώσσας προγραμματισμού και αγγλικών. Όταν δίνουμε ένα όριο για το χρόνο εκτέλεσης ενός αλγορίθμου, μετράμε γενικά τον αριθμό των βημάτων ψευδοκώδικα που εκτελούνται. Χαροκόπειο Πανεπιστήμιο 10/37

Ασυμπτωτικός Ρυθμός Αύξησης Βήματα Ένα βήμα ενός αλγορίθμου μπορεί να είναι εκχώρηση τιμής σε μεταβλητή αναζήτηση καταχώρησης σε πίνακα, έμμεση αναφορά (dereference) ενός δείκτη εκτέλεση μιας αριθμητικής λειτουργίας σε έναν ακέραιο σταθερού μεγέθους κ.τ.λ Δεν μας ενδιαφέρει όμως με τόση λεπτομέρεια, μιας και ο ακριβής χρόνος εκτέλεσης ενός τέτοιου βήματος είναι συνάρτηση της πλατφόρμας εκτέλεσης. Χαροκόπειο Πανεπιστήμιο 11/37

Ασυμπτωτικός Ρυθμός Αύξησης Θα μπορούσαμε να μετράμε τον χρόνο εκτέλεσης ενός αλγορίθμου με λεπτομέρεια, π.χ f(n) = 1.62n 2 + 3.5n + 8 Προβλήματα δύσκολο να είμαστε τόσο ακριβής θέλουμε να ταξινομήσουμε αλγορίθμους σε ευρείες κατηγορίες, και άρα μικρότερο επίπεδο αναλυτικότητας η πραγματική απόδοση εξαρτάται από την πλατφόρμα εκτέλεσης, π.χ ένα μηχάνημα μπορεί να χρειάζεται 25 εντολές μηχανής χαμηλού επιπέδου για να υλοποιήσει μια εντολή υψηλού επιπέδου ενώ ένα άλλο 50. διαφορετικά μηχανήματα έχουν διαφορετικές συχνότητες και άρα πέρνει διαφορετικό χρόνο να εκτελεστεί κάθε βήμα Χαροκόπειο Πανεπιστήμιο 12/37

Ασυμπτωτικός Ρυθμός Αύξησης Θέλουμε λοιπόν να εκφράσουμε το ρυθμό αύξησης του χρόνου εκτέλεσης και των άλλων λειτουργιών με έναν τρόπο που να μην επηρεάζεται από.1 σταθερούς παράγοντες.2 όρους χαμηλής τάξης π.χ για την συνάρτηση f(n) = 1.62n 2 + 3.5n + 8 θα θέλαμε να μπορούμε να πούμε πως αυξάνεται όπως η συνάρτηση n 2. Χαροκόπειο Πανεπιστήμιο 13/37

Ασυμπτωτικά Άνω Όρια big-oh notation Έστω T(n) μια συνάρτηση, π.χ ο χρόνος εκτέλεσης χειρότερης περίπτωσης ενός συγκεκριμένου αλγορίθμου για μια είσοδο μεγέθους n. Δεδομένου μιας άλλης συνάρτησης f(n) λέμε 2 ότι η T(n) είναι O(f(n)) αν, για αρκετά μεγάλο n, η συνάρτηση T(n) φράσσεται εκ των άνω από ένα σταθερό πολλαπλάσιο της f(n). Πολλές φορές γράφουμε T(n) = O(f(n)). 2 Διαβάζεται η T(n) είναι τάξης f(n). Χαροκόπειο Πανεπιστήμιο 14/37

Ασυμπτωτικά Άνω Όρια big-oh notation Ορισμός. Η T(n) είναι O(f(n)) αν υπάρχουν σταθερές c > 0 και n 0 0 έτσι ώστε, για όλα τα n n 0, να έχουμε 0 T(n) c f(n). c f(n) T (n) n n0 T (n) = O(f(n)) Προσοχή η σταθερά c πρέπει να λειτουργεί για όλα τα n, δεν μπορεί δηλαδή το c να εξαρτάται από το n. Χαροκόπειο Πανεπιστήμιο 15/37

Ασυμπτωτικά Άνω Όρια big-oh notation Έστω ένας αλγόριθμος του οποίου ο χρόνος εκτέλεσης έχει την μορφή για θετικές σταθερές p, q και r. T(n) = pn 2 + qn + r Παρατηρώντας πως για n 1 ισχύει qn qn 2 και r rn 2, μπορούμε να γράψουμε για όλα τα n 1. T(n) = pn 2 + qn + r pn 2 + qn 2 + rn 2 = (p + q + r)n 2 Ακριβώς ότι απαιτεί ο ορισμός του O( ) όπου c = p + q + r και άρα λέμε πως η συνάρτηση T(n) = O(n 2 ). Χαροκόπειο Πανεπιστήμιο 16/37

Ασυμπτωτικά Άνω Όρια big-oh notation Ο συμβολισμός O( ) εκφράζει μόνο ένα άνω όριο, και όχι τον ακριβή ρυθμό αύξησης της συνάρτησης. Όπως ισχυριστήκαμε πως T(n) = pn 2 + qn + r = O(n 2 ) μπορούμε να δείξουμε επίσης πως T(n) = O(n 3 ). Έχει συμβεί πολλές φορές να έχει αποδειχθεί ότι ένας αλγόριθμος έχει χρόνο εκτέλεσης O(n 3 ), και μετά από μερικά χρόνια με καλύτερη ανάλυση να αποδειχθεί πως ο ίδιος αλγόριθμος είναι στην πραγματικότητα O(n 2 ). Δεν υπήρχε πρόβλημα με το πρώτο αποτέλεσμα, ήταν ένα σωστό άνω όριο. Απλά δεν ήταν ο "αυστηρότερος" δυνατός χρόνος εκτέλεσης. Χαροκόπειο Πανεπιστήμιο 17/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα 2n 3 + 100n 2 + n O(n 3 ) Χαροκόπειο Πανεπιστήμιο 18/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα 2n 3 + 100n 2 + n O(n 3 ) Απόδειξη Αρκεί να βρούμε θετική σταθερά c και n 0 0 ώστε να ισχύει: 2n 3 + 100n 2 + n cn 3 Χαροκόπειο Πανεπιστήμιο 18/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα 2n 3 + 100n 2 + n O(n 3 ) Απόδειξη Αρκεί να βρούμε θετική σταθερά c και n 0 0 ώστε να ισχύει: Διαιρώντας με n > 1 έχουμε πως αρκεί 2n 3 + 100n 2 + n cn 3 2n 2 + 100n + 1 cn 2. Χαροκόπειο Πανεπιστήμιο 18/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα 2n 3 + 100n 2 + n O(n 3 ) Απόδειξη Αρκεί να βρούμε θετική σταθερά c και n 0 0 ώστε να ισχύει: Διαιρώντας με n > 1 έχουμε πως αρκεί 2n 3 + 100n 2 + n cn 3 2n 2 + 100n + 1 cn 2. Για n > 1 έχουμε όμως πως 2n 2 + 100n + 1 2n 2 + 100n 2 + n 2 103n 2. Άρα μπορούμε να θέσουμε c = 103 και n 0 = 1 > 0. Χαροκόπειο Πανεπιστήμιο 18/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα n O(2 n ) Χαροκόπειο Πανεπιστήμιο 19/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα n O(2 n ) Απόδειξη Πρέπει να βρούμε c > 0, n 0 > 0 ώστε να ισχύει n c 2 n. Χαροκόπειο Πανεπιστήμιο 19/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα n O(2 n ) Απόδειξη Πρέπει να βρούμε c > 0, n 0 > 0 ώστε να ισχύει n c 2 n. Παρατηρώντας τον τρόπο που μεγαλώνουν οι συναρτήσεις βλέπουμε πως για c = 1 και n 0 = 1 η ανισότητα ισχύει. Πρέπει όμως να αποδείξουμε πως παραμένει αλήθεια για κάθε n n 0 = 1. Χαροκόπειο Πανεπιστήμιο 19/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα n O(2 n ) Απόδειξη Πρέπει να βρούμε c > 0, n 0 > 0 ώστε να ισχύει n c 2 n. Παρατηρώντας τον τρόπο που μεγαλώνουν οι συναρτήσεις βλέπουμε πως για c = 1 και n 0 = 1 η ανισότητα ισχύει. Πρέπει όμως να αποδείξουμε πως παραμένει αλήθεια για κάθε n n 0 = 1. Έστω f(n) = 2 n n. Η συνάρτηση είναι συνεχής και παραγωγίσιμη. Η πρώτη παράγωγος είναι f (n) = ln(2) 2 n 1 και είναι θετική για κάθε n 1. Άρα η συνάρτηση f(n) είναι γνησίως αύξουσα για n 1 που σημαίνει πως παραμένει θετική για κάθε n n 0 = 1. Χαροκόπειο Πανεπιστήμιο 19/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα 1000000 O(1) Χαροκόπειο Πανεπιστήμιο 20/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα 1000000 O(1) Απόδειξη Πρέπει να δείξουμε πως υπάρχουν c > 0, n 0 > 0 ώστε για κάθε n n 0. 1000000 c 1 Χαροκόπειο Πανεπιστήμιο 20/37

Συμβολισμός μεγάλου όμικρον big-oh notation Θεώρημα 1000000 O(1) Απόδειξη Πρέπει να δείξουμε πως υπάρχουν c > 0, n 0 > 0 ώστε για κάθε n n 0. 1000000 c 1 Η σχέση ισχύει για c = 1000001 και n 0 = 1. Χαροκόπειο Πανεπιστήμιο 20/37

Συμβολισμός μεγάλου όμικρον Παράδειγμα Θεώρημα Για a > 0 ισχύει πως f(n) = an 2 + bn O(n 2 ). Χαροκόπειο Πανεπιστήμιο 21/37

Συμβολισμός μεγάλου όμικρον Παράδειγμα Θεώρημα Για a > 0 ισχύει πως f(n) = an 2 + bn O(n 2 ). Απόδειξη Πρέπει να βρούμε θετική σταθερά c και σταθερά n 0 0 ώστε an 2 + bn cn 2 για κάθε n n 0. Χαροκόπειο Πανεπιστήμιο 21/37

Συμβολισμός μεγάλου όμικρον Παράδειγμα Θεώρημα Για a > 0 ισχύει πως f(n) = an 2 + bn O(n 2 ). Απόδειξη Πρέπει να βρούμε θετική σταθερά c και σταθερά n 0 0 ώστε Επειδή an 2 + bn cn 2 για κάθε n n 0. an 2 + bn a n 2 + b n a n 2 + b n 2 = ( a + b )n 2 για n 1 μπορούμε να διαλέξουμε c = a + b και n 0 οποιαδήποτε θετική τιμή μεγαλύτερη ή ίση με ένα π.χ n 0 = 1. Χαροκόπειο Πανεπιστήμιο 21/37

Ασυμπτωτικά Κάτω Όρια Ω notation Συμπληρωματική σημειογραφία για τα κάτω όρια. Ορισμός. Η T(n) είναι Ω(f(n)) αν υπάρχουν σταθερές c > 0 και n 0 0 έτσι ώστε, για όλα τα n n 0, να έχουμε 0 c f(n) T(n). T (n) c f(n) n n0 T (n) = Ω(f(n)) Χαροκόπειο Πανεπιστήμιο 22/37

Ασυμπτωτικά Κάτω Όρια Ω notation Έστω πάλι η συνάρτηση T(n) = pn 2 + qn + r όπου p, q και r θετικές σταθερές. Μπορούμε να πούμε πως για n 1 ισχύει T(n) = pn 2 + qn + r pn 2 και άρα σύμφωνα με τον ορισμό της Ω( ) για c = p έχουμε πως T(n) = Ω(n 2 ). Μπορούμε επίσης να πούμε πως T(n) = Ω(n) αφού για n 1 ισχύει πως T(n) pn 2 pn. Χαροκόπειο Πανεπιστήμιο 23/37

Αυστηρά Ασυμπτωτικά Όρια Αν μπορούμε να δείξουμε πως T(n) = O(f(n)) και T(n) = Ω(f(n)) τότε έχουμε βρει το σωστό όριο. Ορισμός. Εάν μια συνάρτηση T(n) είναι και O(f(n)) και Ω(f(n)), λέμε ότι η T(n) είναι Θ(f(n)). Χαροκόπειο Πανεπιστήμιο 24/37

Αυστηρά Ασυμπτωτικά Όρια Ορισμός. Εάν μια συνάρτηση T(n) είναι και O(f(n)) και Ω(f(n)), λέμε ότι η T(n) είναι Θ(f(n)). c2 f(n) T (n) c1 f(n) n n0 T (n) = Θ(f(n)) Χαροκόπειο Πανεπιστήμιο 25/37

Ιδιότητες Μεταβατικότητα (transitivity) Αν f = O(g) και g = O(h) τότε f = O(h). Αν f = Ω(g) και g = Ω(h) τότε f = Ω(h). Αν f = Θ(g) και g = Θ(h) τότε f = Θ(h). Αθροίσματα συναρτήσεων Αν f = O(h) και g = O(h) τότε f + g = O(h). Αν f = Ω(h) και g = Ω(h) τότε f + g = Ω(h). Αν f = Θ(h) και g = Θ(h) τότε f + g = Θ(h). Χαροκόπειο Πανεπιστήμιο 26/37

Κάποιες Συνηθισμένες Συναρτήσεις Ασυμπτωτικά Όρια Πολυώνυμα. a 0 + a 1n +... + a d n d είναι Θ(n d ) εάν a d > 0. Ορισμός. Ένας αλγόριθμος είναι πολυωνυμικού χρόνου εαν ο χρόνος εκτέλεσης του T(n) είναι O(n d ) για κάποια σταθερά d, όπου η d είναι ανεξάρτητη από το μέγεθος της εισόδου. Χαροκόπειο Πανεπιστήμιο 27/37

Κάποιες Συνηθισμένες Συναρτήσεις Ασυμπτωτικά Όρια Λογάριθμοι. Θυμηθείτε πως log b n είναι ένας αριθμός x τέτοιος ώστε b x = n. Οι λογάριθμοι είναι συναρτήσεις που αυξάνονται πολύ αργά. Λήμμα Για κάθε b > 1 και κάθε x > 0, έχουμε log b n = O(n x ). Πολλές φορές δεν γράφουμε καθόλου την βάση του λογαρίθμου μιας και ισχύει η σχέση log a n = 1 log b a log b n Χαροκόπειο Πανεπιστήμιο 28/37

Κάποιες Συνηθισμένες Συναρτήσεις Ασυμπτωτικά Όρια Εκθετικές. Οι εκθετικές συναρτήσεις είναι της μορφής f(n) = r n για κάποια σταθερή βάση r. Για r > 1 η συνάρτηση έχει πολύ γρήγορη αύξηση. Λήμμα Για κάθε r > 1 και κάθε d > 0, έχουμε n d O(r n ). Χαροκόπειο Πανεπιστήμιο 29/37

Επισκόπηση Συνηθισμένων Χρόνων Εκτέλεσης Οι πιο συνηθισμένοι χρόνοι εκτέλεσης είναι οι εξής. σταθερός -- O(1) γραμμικός -- O(n) O(n log n) τετραγωνικός -- O(n 2 ) κυβικός -- O(n 3 ) πολυωνυμικός -- O(n d ) για d > 0 εκθετικός -- O(r n ) για r > 1 Χαροκόπειο Πανεπιστήμιο 30/37

Σταθερός Χρόνος O(1) Constant Time Σταθερός χρόνος είναι ο χρόνος που είναι ανεξάρτητος από το μέγεθος της εισόδου n. Λειτουργίες Στοίβας. Προσθήκη ενός στοιχείου σε μια στοίβα (PUSH). Push Pop Σε μία σωστά υλοποιημένη στοίβα, το μέγεθος δεν παίζει ρόλο. Ο χρόνος είναι ίδιος εαν η στοίβα έχει 100 στοιχεία ή 10 100 στοιχεία. Χαροκόπειο Πανεπιστήμιο 31/37

Γραμμικός Χρόνος Linear Time Γραμμικός χρόνος. Ο χρόνος εκτέλεσης είναι ανάλογος με το μέγεθος εισόδου. Υπολογισμός μέγιστου. Υπολογισμός του μέγιστου των n αριθμών a 1,..., a n. Algorithm 1: Εύρεση Μέγιστου max = a 1 for i = 2 έως n do if a i > max then θέσε max = a i end end Χαροκόπειο Πανεπιστήμιο 32/37

Γραμμικός Χρόνος Linear Time Συγχώνευση. Συνδυασμός δύο ταξινομημένων λιστών a 1, a 2,..., a n και b 1, b 2,..., b n σε μια ταξινομημένη λίστα. ταξινοµηµένος πίνακας a α) επιλογή µικρότερου ϐ) αντιγραφή σε άλλο πίνακα c γ) µετακίνηση δείκτη ταξινοµηµένος πίνακας b Algorithm 2: Merge i = 1, j = 1 while καμία άδεια λίστα do if a i b j then πρόσθεσε το a i στην έξοδο και αύξησε το i else πρόσθεσε το b j στην έξοδο και αύξησε το j end end πρόσθεσε όλα τα στοιχεία της μη άδειας λίστας στην έξοδο Χαροκόπειο Πανεπιστήμιο 33/37

O(n log n) Χρόνος Προκύπτει συχνά στους αλγορίθμους "διαίρει και βασίλευε" που θα εξετάσουμε αργότερα. Ταξινόμηση. Οι αλγόριθμοι mergesort (ταξινόμηση συγχώνευσης) και heapsort (ταξινόμηση σωρού) κάνουν O(n log n) συγκρίσεις. Χαροκόπειο Πανεπιστήμιο 34/37

Τετραγωνικός Χρόνος: O(n 2 ) Quadratic Time Τετραγωνικός Χρόνος. Απαρίθμηση όλων των δυνατών ζευγών ενός συνόλου στοιχείων. Κοντινότερο ζεύγος σημείων. Με είσοδο n σημείων στο επίπεδο (x 1, y 1 ),..., (x n, y n ), θέλουμε να βρούμε το ζεύγος σημείων που έχουν την μικρότερη απόσταση. Algorithm 3: Κοντινότερο ζεύγος σημείων min = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 for i = 1 έως n do for j = 1 + 1 έως n do d = (x i x j ) 2 + (y i y j ) 2 if d < min then min=d end end end Γίνεται και πιο γρήγορα! Χαροκόπειο Πανεπιστήμιο 35/37

Κυβικός Χρόνος: O(n 3 ) Qubic Time Πολλαπλασιασμός Πινάκων. Έστω 2 πίνακες A και B μεγέθους n n. c 11 c 12 c 1n a 11 a 12 a 1n b 11 b 12 b 1n c 21 c 22 c 2n a 21 a 22 a 2n b 21 b 22 b 2n........ =................ c n1 c n2 c nn a n1 a n2 a nn b n1 b n2 b nn for ( i = 0 ; i < n ; i ++ ) for ( j = 0 ; j < n ; j ++ ) for ( k = 0, c [ i ] [ j ] = 0. 0 ; k < n ; k++ ) c [ i ] [ j ] += a [ i ] [ k ] * b [ k ] [ j ] ; Γίνεται και πιο γρήγορα! Χαροκόπειο Πανεπιστήμιο 36/37

Εκθετικός Χρόνος Exponential Time Δύο συνηθισμένα όρια είναι τα O(2 n ) και O(n!). Ανεξάρτητο Σύνολο. Δεδομένου ενός γραφήματος G(V, E) βρείτε το μεγαλύτερο ανεξάρτητο σύνολο. Algorithm 4: Μέγιστο Ανεξάρτητο Σύνολο: Ωμή Βία for κάθε υποσύνολο κόμβων S do Έλεγξε αν το S είναι ανεξάρτητο σύνολο if S είναι μεγαλύτερο ανεξάρτητο σύνολο από το μέχρι τώρα then Κατάγραψε το μέγεθος του S ως τρέχον μέγιστο end end Ένα σύνολο μεγέθους n έχει 2 n υποσύνολα. Ο έλεγχος κάθε υποσυνόλου πέρνει χρόνο O(n 2 ) και άρα ο αλγόριθμος χρειάζεται O(n 2 2 n ). Χαροκόπειο Πανεπιστήμιο 37/37