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

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

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

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

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

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

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

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

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

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

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

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

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

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

Βασικές Έννοιες Δοµών Δεδοµένων

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

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

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

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

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

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

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

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

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

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

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

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Κεφάλαιο 4. Άπληστοι Αλγόριθµοι (Greedy Algorithms) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

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

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

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

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

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

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

Κεφάλαιο 4. Δυναµικός Προγραµµατισµός (Dynamic Programming) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

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

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

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

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

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

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

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

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

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

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

Τηλ , Fax: , URL:

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

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

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

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

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

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

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

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

ΗΥ240: οµές εδοµένων

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

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

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

Ουρά Προτεραιότητας: Heap

Κεφάλαιο 3. Γραφήµατα v1.1 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

Heapsort Using Multiple Heaps

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

Ενότητα 1 Εισαγωγή. ΗΥ240: Δοµές Δεδοµένων. Διδάσκουσα: Παναγιώτα Φατούρου

Κεφάλαιο 1. Εισαγωγή: Κάποια Αντιπροσωπευτικά Προβλήµατα. Έκδοση 1.3, 29/02/2012. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Δοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Εξαντλητική Απαρίθµηση

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

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

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

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

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

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

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

Αλγόριθμοι Εύρεσης Ομοιοτήτων Ακολουθιών

Κεφάλαιο 1. Εισαγωγή: Ευσταθές Ταίριασμα και άλλα Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.5, 30/10/2014

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

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

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

Προηγούµενο: Ανω Φράγµα στην Τάξη των Συναρτήσεων. Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων. Σύνοψη Ιδιοτήτων

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

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

Transcript:

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

2.1 Υπολογιστική Επιλυσιµότητα "For me, great algorithms are the poetry of computation. Just like verse, they can be terse, allusive, dense, and even mysterious. But once unlocked, they cast a brilliant new light on some aspect of computing." - Francis Sullivan

Υπολογιστική Επιλυσιµότητα As soon as an Analytic Engine exists, it will necessarily guide the future course of the science. Whenever any result is sought by its aid, the question will arise - By what course of calculation can these results be arrived at by the machine in the shortest time? - Charles Babbage Charles Babbage (1864) Analytic Engine (schematic) 3

Πολυωνυµικός Χρόνος (Polynomial-Time) Ωµή δύναµη ή ωµή βία (Brute force). Για πολλά µη τετριµµένα προβλήµατα, υπάρχει φυσικός αλγόριθµος διερεύνησης που χρησιµοποιεί ωµή δύναµη για να εξετάσει κάθε πιθανή λύση. Συνήθως απαιτεί χρόνο 2 N ή παραπάνω για εισόδους µεγέθους N. Unacceptable in practice. n! για ευσταθές ταίριασµα µε n άντρες και n γυναίκες Επιθυµητή ιδιότητα κλιµάκωσης (scaling property). Όταν διπλασιάζεται το µέγεθος της εισόδου, ο χρόνος εκτέλεσης του αλγορίθµου θα θέλαµε να αυξάνει µόνο κατά ένα σταθερό παράγοντα C. Υπάρχουν σταθερές c > 0 και d > 0 τέτοιες ώστε για κάθε είσοδο µεγέθους N, ο χρόνος εκτέλεσης να µην ξεπερνά τα c N d βήµατα. Ορισµός. Ένας αλγόριθµος είναι πολυωνυµικού χρόνου εάν ισχύει η παραπάνω ιδιότητα κλιµάκωσης. µπορούµε να επιλέξουµε C = 2 d 4

πρόβληµα και στιγµιότυπο προβλήµατος Πρόβληµα. Ένα παράδειγµα προβλήµατος είναι η εύρεση ευσταθούς ταιριάσµατος Στιγµιότυπο προβλήµατος. Το πρόβληµα εύρεσης ευσταθούς ταιριάσµατος µεταξύ των {Άννα, Βίκυ, Γιώτα} και {Φώτη, Χάρη, Τάκη} που είδαµε στο προηγούµενο µάθηµα είναι ένα στιγµιότυπο του προβλήµατος. Πρόβληµα. Η ταξινόµηση µιας ακολουθίας αριθµών Στιγµιότυπο προβλήµατος. Το πρόβληµα της ταξινόµησης της ακολουθίας αριθµών 31, 41, 59, 26, 41, 58 µάθηµα είναι ένα στιγµιότυπο του προβλήµατος της ταξινόµησης. 5

µέγεθος του προβλήµατος Παραδείγµατα. Πρόβληµα ταξινόµησης n ακεραίων αριθµών µέγεθος; n επηρεάζει το µέγεθος των αριθµών το µέγεθος του προβλήµατος; Πρόβληµα ευσταθούς ταιριάσµατος µε n άντρες και n γυναίκες µέγεθος; n; n άντρες και n γυναίκες, δηλαδή 2n; 2n άτοµα επί n προτιµήσεις για κάθε άτοµο, δηλαδή 2n 2 Άλλο; Μέγεθος του προβλήµατος και πολυπλοκότητα χρόνου. Εάν έχουµε έναν αλγόριθµο πολυπλοκότητας n 3 για το πρόβληµα του ευσταθούς ταιριάσµατος n αντρών µε n γυναίκες τότε µας ενδιαφέρει πως µετράµε το µέγεθος του προβλήµατος; 6

Πολυωνυµικός Χρόνος (Polynomial-Time) Ωµή δύναµη ή ωµή βία (Brute force). Για πολλά µη τετριµµένα προβλήµατα, υπάρχει φυσικός αλγόριθµος διερεύνησης που χρησιµοποιεί ωµή δύναµη για να εξετάσει κάθε πιθανή λύση. Συνήθως απαιτεί χρόνο 2 N ή παραπάνω για εισόδους µεγέθους N. Unacceptable in practice. n! για ευσταθές ταίριασµα µε n άντρες και n γυναίκες Επιθυµητή ιδιότητα κλιµάκωσης (scaling property). Όταν διπλασιάζεται το µέγεθος της εισόδου, ο χρόνος εκτέλεσης του αλγορίθµου θα θέλαµε να αυξάνει µόνο κατά ένα σταθερό παράγοντα C. Υπάρχουν σταθερές c > 0 και d > 0 τέτοιες ώστε για κάθε είσοδο µεγέθους N, ο χρόνος εκτέλεσης να µην ξεπερνά τα c N d βήµατα. Ορισµός. Ένας αλγόριθµος είναι πολυωνυµικού χρόνου εάν ισχύει η παραπάνω ιδιότητα κλιµάκωσης. µπορούµε να επιλέξουµε C = 2 d 7

ανάλυση χειρότερης περίπτωσης (worst-case analysis) Χρόνος εκτέλεσης χειρότερης περίπτωσης. Εύρεση άνω φράγµατος για τον µέγιστο δυνατό χρόνο εκτέλεσης του αλγορίθµου σε οποιαδήποτε από τις δυνατές εισόδους µεγέθους N. Γενικά, στην πράξη συλλαµβάνει µε επιτυχία την έννοια της αποδοτικότητας. Είναι δρακόντεια προσέγγιση, όµως δεν είναι εύκολο να βρεθεί εναλλακτική προσέγγιση για την ανάλυση της πολυπλοκότητας ενός αλγορίθµου. Χρόνος εκτέλεσης µέσης περίπτωσης. Εύρεση άνω φράγµατος για το χρόνο εκτέλεσης του αλγορίθµου σε τυχαία είσοδο ως συνάρτηση το µεγέθους N της εισόδου. Δύσκολο (ή ίσως και ανέφικτο) να µοντελοποιηθούν πραγµατικά στιγµιότυπα µε τυχαίες κατανοµές. Ένας αλγόριθµος προσαρµοσµένος για µία κατανοµή µπορεί να µην αποδίδει καλά σε διαφορετικές εισόδους. 8

προσδιορισµός κριτηρίου αποδοτικότητας Ερώτηµα. Πότε θα λέµε ότι ένας αλγόριθµος είναι «αποδοτικός»; 1η Προσπάθεια. Ένας αλγόριθµος είναι αποδοτικός αν, µετά την υλοποίησή του, εκτελείται γρήγορα σε πραγµατικά στιγµιότυπα εισόδου. 2η Προσπάθεια. Ένας αλγόριθµος είναι αποδοτικός αν επιτυγχάνει, σε αναλυτικό επίπεδο, ποιοτικά καλύτερη απόδοση χειρότερης περίπτωσης από την αναζήτηση ωµής βίας. 3η Προσπάθεια. Ένας αλγόριθµος είναι αποδοτικός αν έχει πολυωνυµικό χρόνο εκτέλεσης. 9

Πολυωνυµικός χρόνος χειρότερης περίπτωσης (Worst-Case Polynomial-Time) Ορισµός. Ένας αλγόριθµος είναι αποδοτικός εάν είναι πολυωνυµικού χρόνου. Τεκµηρίωση: Φαίνεται να ισχύει στην πράξη! Προφανώς µια πολυπλοκότητα χρόνου 6.02 10 23 N 20 είναι µεν πολυωνυµική, είναι όµως πρακτικά µη αποδοτική. Στην πράξη, οι πολυωνυµικοί αλγόριθµοι που αναπτύσσουν οι ειδικοί, έχουν κατά κανόνα µικρές σταθερές και µικρούς εκθέτες. Το να αποφύγει κανείς την εκθετικής πολυπλοκότητας διερεύνηση όλων των πιθανών λύσεων µε ωµή δύναµη, κατά κανόνα απαιτεί την αξιοποίηση κάποιας κρίσιµης δοµής του προβλήµατος. Εξαιρέσεις. µέθοδος simplex, Unix grep Ορισµένοι πολυωνυµικοί αλγόριθµοι έχουν µεγάλες σταθερές ή/και εκθέτες, και έχουν µικρή πρακτική αξία. Ορισµένοι αλγόριθµοι εκθετικού χρόνου (ή ακόµα χειρότεροι) χρησιµοποιούνται ευρύτατα επειδή τα στιγµιότυπα στα οποία απαιτούν εκθετικό χρόνο είναι εξαιρετικά σπάνια 10

γιατί είναι σηµαντικοί οι ασυµπτωτικοί ρυθµοί αύξησης 11

2.2 ασυµπτωτικός ρυθµός αύξησης (asymptotic order of growth)

ασυµπτωτική πολυπλοκότητα Πολυπλοκότητα χειρότερης περίπτωσης MergeSort (συγχωνευτική ταξινόµηση): Θ(n lgn) BubbleSort (ταξινόµηση φυσαλίδων): Θ(n 2 ) Για αρκετά µεγάλο µέγεθος εισόδου n, η MergeSort υπερτερεί της BubbleSort Το παραπάνω συµπέρασµα προκύπτει ανεξάρτητα από τις πολλαπλασιαστικές σταθερές και τους όρους κατώτερης τάξης στην πολυπλοκότητα χρόνου. 13 ρυθµός αύξησης συναρτήσεων

ασυµπτωτική επίδοση Δεδοµένου ενός αλγορίθµου, για µεγάλα µεγέθη εισόδου µας ενδιαφέρει ο αυξητικός χαρακτήρας του χρόνου εκτέλεσης, δηλαδή η ασυµπτωτική επίδοση του αλγορίθµου. Ασχολούµαστε δηλαδή µε το ρυθµό αύξησης του χρόνου εκτέλεσης στην οριακή περίπτωση που το µέγεθος της εισόδου αυξάνει απεριόριστα. 14 ρυθµός αύξησης συναρτήσεων

ασυµπτωτικοί συµβολισµοί Οι συνηθέστεροι συµβολισµοί είναι: Θ( ) Ο( ) Ω( ) Δύο πιο σπάνιοι συµβολισµοί είναι: ο( ) ω( ) 15 ρυθµός αύξησης συναρτήσεων

συµβολισµός Ο( ) Παράδειγµα. Ο χρόνος εκτέλεσης χειρότερης περίπτωσης της BubbleSort είναι T(n)=Ο(n 2 ) Τι σηµαίνει αυτό; Για δεδοµένη συνάρτηση g(n), το Ο(g(n)) δηλώνει το σύνολο των συναρτήσεων: Ο(g(n)) = {f(n): θετικές σταθερές c και n 0 : 0 f(n) cg(n) n n 0 } 16 ρυθµός αύξησης συναρτήσεων

f(n)=ο(g(n)) Η συνάρτηση g(n) είναι ένα ασυµπτωτικό άνω φράγµα για τη συνάρτηση f(n). c g(n) f(n) n 0 17 ρυθµός αύξησης συναρτήσεων

συµβολισµός Ω( ) Παράδειγµα. Ο χρόνος εκτέλεσης χειρότερης περίπτωσης της BubbleSort είναι T(n)=Ω(n 2 ). Τι σηµαίνει αυτό; Για δεδοµένη συνάρτηση g(n), το Ω(g(n)) δηλώνει το σύνολο των συναρτήσεων: Ω(g(n)) = {f(n): θετικές σταθερές c και n 0 : 0 cg(n) f(n) n n 0 } 18 ρυθµός αύξησης συναρτήσεων

f(n)=ω(g(n)) Η συνάρτηση g(n) είναι ένα ασυµπτωτικό κάτω φράγµα για τη συνάρτηση f(n). f(n) c g(n) n 0 19 ρυθµός αύξησης συναρτήσεων

συµβολισµός Θ( ) Παράδειγµα. Ο χρόνος εκτέλεσης χειρότερης περίπτωσης της bubblesort είναι T(n)=Θ(n 2 ) Τι σηµαίνει αυτό; Για δεδοµένη συνάρτηση g(n), το Θ(g(n)) δηλώνει το σύνολο των συναρτήσεων: Θ(g(n)) = {f(n): θετικές σταθερές c 1,c 2 και n 0 : 0 c 1 g(n) f(n) c 2 g(n) n n 0 } 20 ρυθιµός αύξησης συναρτήσεων Δοµές Δεδοµένων και Αλγόριθµοι

f(n)=θ(g(n)) Η συνάρτηση f(n) είναι ασυµπτωτικά φραγµένη από επάνω και από κάτω από τη συνάρτηση g(n). c 2 g(n) f(n) c 1 g(n) n 0 21 ρυθµός αύξησης συναρτήσεων

ασυµπτωτικός ρυθµός αύξησης Ασυµπτωτικά άνω όρια. Η συνάρτηση T(n) είναι O(f(n)) εάν υπάρχουν σταθερές c > 0 και n 0 0 τέτοιες ώστε n n 0 να ισχύει T(n) c f(n). Ο( ) c f(n) T(n) Ασυµπτωτικά κάτω όρια. Η συνάρτηση T(n) είναι Ω(f(n)) εάν υπάρχουν σταθερές c > 0 και n 0 0 τέτοιες ώστε n n 0 να ισχύει T(n) c f(n). Ω( ) n 0 T(n) c f(n) Αυστηρά ασυµπτωτικά όρια. Η συνάρτηση T(n) είναι Θ(f(n)) εάν η T(n) είναι και O(f(n)) και Ω(f(n)). Παράδειγµα: T(n) = 32n 2 + 17n + 32. T(n) είναι O(n 2 ), O(n 3 ), Ω(n 2 ), Ω(n), and Θ(n 2 ). T(n) δεν είναι O(n), Ω(n 3 ), Θ(n), or Θ(n 3 ). Θ( ) n 0 n 0 c 2 f(n) T(n) c 1 f(n) 22

Συµβολισµοί Καταχρηστική χρήση του συµβόλου ισότητας. T(n) = O(f(n)). Δεν ισχύει η συµµετρική ιδιότητα για την ισότητα: f(n) = 5n 3 ; g(n) = 3n 2 f(n) = O(n 3 ) = g(n) όµως f(n) g(n). Πιο σωστό θα ήταν να γράφουµε: T(n) O(f(n)). Μια πρόταση που δε θα είχε νόηµα. Κάθε αλγόριθµος ταξινόµησης που βασίζεται µόνο στην πράξη της σύγκρισης στοιχείων απαιτεί τουλάχιστον O(n log n) συγκρίσεις. Είναι ασύµβατη η δήλωση κάτω ορίου µε το σύµβολο Ο( ) που χρησιµοποιείται µόνο για άνω όρια. Επειδή θέλουµε να δηλώσουµε κάτω όριο θα έπρεπε να χρησιµοποιήσουµε το Ω( ). 23

Ιδιότητες Μεταβατικότητα. Εάν 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 = O(h) τότε f + g = Θ(h). 24

ασυµπτωτικά όρια για κάποιες συνηθισµένες συναρτήσεις Πολυώνυµα. a 0 + a 1 n + + a d n d είναι Θ(n d ) εάν a d > 0. Πολυωνυµικός χρόνος. Ο χρόνος εκτέλεσης είναι O(n d ) όπου d είναι µια σταθερά ανεξάρτητη από το µέγεθος n. Λογάριθµοι. O(log a n) = O(log b n), σταθερές a, b > 0. µπορούµε να παραλείψουµε να δηλώσουµε συγκεκριµένη βάση σε ασυµπτωτικά όρια Λογάριθµοι. x > 0, log n = O(n x ). ο λογάριθµος αυξάνει πιο αργά από οποιοδήποτε πολυώνυµο Εκθετικές συναρτήσεις. r > 1 και d > 0, n d = O(r n ). κάθε εκθετική συνάρτηση αυξάνει πιο γρήγορα από οποιαδήποτε πολυωνυµική 25

2.4 Επισκόπηση συνηθισµένων χρόνων εκτέλεσης

γραµµικός χρόνος (linear time): O(n) Γραµµικός χρόνος. Ο χρόνος εκτέλεσης είναι το πολύ το γινόµενο ενός σταθερού παράγοντα µε το µέγεθος της εισόδου. Παράδειγµα: Εύρεση του µεγίστου. Να βρεθεί ο µέγιστος από τους αριθµούς a 1,, a n. max a 1 for i = 2 to n { if (a i > max) } max a i 27

γραµµικός χρόνος: O(n) Συγχώνευση (merge). Να συγχωνευτούν δύο διατεταγµένες λίστες A = a 1,a 2,,a n και B = b 1,b 2,,b n σε µία ενιαία διατεταγµένη λίστα. i = 1, j = 1 while (both lists are nonempty) { if (a i b j ) append a i to output list and increment i else(a i b j )append b j to output list and increment j } append remainder of nonempty list to output list Ισχυρισµός. Η συγχώνευση δύο λιστών µεγέθους n η καθεµία απαιτεί χρόνο O(n). Απόδειξη. Μετά από κάθε σύγκριση, το µέγεθος της λίστας εξόδου αυξάνει κατά 1. 28

χρόνος O(n log n) Χρόνος O(n log n). Εµφανίζεται συχνά σε αλγορίθµους διαίρει και βασίλευε (divide-and-conquer). στα αγγλικά αναφέρεται και ως linearithmic time Ταξινόµηση. Mergesort (συγχωνευτική ταξινόµηση) και heapsort (ταξινόµηση σωρού) είναι αλγόριθµοι ταξινόµησης που απαιτούν O(n log n) συγκρίσεις. Πρόβληµα: Μέγιστο κενό διάστηµα. Δίνονται n χρονικές στιγµές x 1,, x n κατά τις οποίες συµβαίνει κάποιο γεγονός (πχ. ανάγνωση ενός αρχείου). Ποιο είναι το µέγιστο χρονικό διάστηµα στο οποίο δεν έχουµε κανένα γεγονός; Λύση πολυπλοκότητας O(n log n). Ταξινοµούµε τους χρόνους x 1,, x n. Διατρέχουµε την ταξινοµηµένη λίστα, εντοπίζοντας το µέγιστο διάστηµα µεταξύ διαδοχικών γεγονότων. 29

τετραγωνικός χρόνος (quadratic time): O(n 2 ) Τετραγωνικός χρόνος. Για παράδειγµα, η απαρίθµηση όλων των δυνατών ζευγών n στοιχείων, απαιτεί χρόνο O(n 2 ) Πρόβληµα: Κοντινότερο ζεύγος σηµείων. Δίνεται λίστα µε n σηµεία στο επίπεδο (x 1, y 1 ),, (x n, y n ). Να βρεθεί το κοντινότερο ζεύγος σηµείων. Μια λύση σε χρόνο O(n 2 ). Δοκιµάζουµε όλα τα δυνατά ζεύγη σηµείων. min (x 1 - x 2) 2 + (y 1 - y 2) 2 for i = 1 to n { for j = i+1 to n { d (x i - x j ) 2 + (y i - y j ) 2 if (d < min) min d } } χρειάζεται να πάρουµε την τετραγωνική ρίζα για το d; Παρατήρηση. Αν και το Ω(n 2 ) µοιάζει αναπόφευκτο, υπάρχει αλγόριθµος που επιτυγχάνει καλύτερο χρόνο. κεφάλαιο 5 του βιβλίου 30

κυβικός χρόνος (cubic time): O(n 3 ) Κυβικός χρόνος. Για παράδειγµα, η απαρίθµηση όλων των δυνατών τριάδων n στοιχείων, απαιτεί χρόνο O(n 3 ). Πρόβληµα: Ξένα σύνολα. Δίνονται n υποσύνολα S 1,, S n του συνόλου {1, 2,, n}. Υπάρχει σε αυτά ζευγάρι υποσυνόλων που είναι ξένα µεταξύ τους; Λύση σε χρόνο O(n 3 ). Για κάθε ζευγάρι υποσυνόλων, εξετάζουµε εάν είναι ξένα µεταξύ τους. foreach set S i { foreach other set S j { foreach element p of S i { determine whether p also belongs to S j } if (no element of S i belongs to S j ) report that S i and S j are disjoint } } 31

πολυωνυµικός χρόνος (polynomial time): O(n k ) Time Ανεξάρτητο σύνολο µεγέθους k. Δίνεται γράφηµα G. Υπάρχει σύνολο k κόµβων τέτοια ώστε να µην υπάρχει καµία ακµή µεταξύ τους; Λύση σε χρόνο O(n k ). Απαριθµούµε όλα τα υποσύνολα k κόµβων. το k είναι σταθερά foreach subset S of k nodes { check whether S in an independent set if (S is an independent set) report S is an independent set } } Έλεγχος εάν το S είναι ανεξάρτητο σύνολο = O(k 2 ). Πλήθος των υποσυνόλων µε k στοιχεία = O(k 2 n k / k!) = O(n k ). n = k n (n 1) (n 2) L (n k +1) k (k 1) (k 2) L (2) (1) nk k! για συγκεκριµένο k, πχ. k=17, είναι πολυωνυµικό, όµως µπορεί αν µην είναι πρακτικό 32

Εκθετικός Χρόνος Ανεξάρτητο σύνολο. Δίνεται γράφηµα G. Ποιο είναι το µέγιστο µέγεθος ανεξαρτήτου συνόλου του G; Λύση σε χρόνο O(n 2 2 n ). Απαριθµούµε όλα τα υποσύνολα. S* φ foreach subset S of nodes { check whether S in an independent set if (S is largest independent set seen so far) update S* S } } 33

πηγές/αναφορές Κεφάλαιο 2, Σχεδίαση Αλγορίθµων, J. Kleinberg and E. Tardos, Ελληνική έκδοση από τις Εκδ. Κλειδάριθµος Κεφάλαιο 3, Εισαγωγή στους αλγόριθµους, T. Cormen, C. Leiserson, R. Rivest and C. Stein, Ελληνική έκδοση από τις Πανεπιστηµιακές Εκδ. Κρήτης 34