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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ ΑΛΓΟΡΙΘΜΟΙ Δ Ι ΑΛΕΞΗ / 02/2016 ΔΙΔΑΣΚΩΝ ΚΩΣΤΑΣ ΚΟΛΟΜΒΑΤΣΟΣ

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

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 verse: στίχος terse: λακωνικός, λιτός allusive: υπαινικτικός

Υπολογιστική Επιλυσιμότητα 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

Ο Μηχανισμός των Αντικυθήρων (περίπου 100 π.χ.) http://en.wikipedia.org/wiki/antikythera_mechanism http://youtu.be/rlpvcjjtngk 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

Σχήμα 12.11 Γραφήματα των μαθηματικών παραστάσεων n, lg n, n lg n, και n 2 11

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

μεγάλες σταθερές Το γνωστό σύμπαν έχει περίπου 3 έως 100 10 22 αστέρια οργανωμένα σε πάνω από 80 * 10 9 γαλαξίες. Ο αριθμός των ατόμων του γνωστού σύμπαντος εκτιμάται σε περίπου 10 80. Πηγή: http://en.wikipedia.org/wiki/observable_universe 13

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

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

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

ασυμπτωτικοί συμβολισμοί Οι συνηθέστεροι συμβολισμοί είναι: Θ( ) Ο( ) Ω( ) Δύο πιο σπάνιοι συμβολισμοί είναι: ο( ) ω( ) 17

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

f(n)=ο(g(n)) Η συνάρτηση g(n) είναι ένα ασυμπτωτικό άνω φράγμα για τη συνάρτηση Τ(n). c g(n) Τ(n) n 0 19

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

f(n)=ω(g(n)) Η συνάρτηση g(n) είναι ένα ασυμπτωτικό κάτω φράγμα για τη συνάρτηση Τ(n). Τ(n) c g(n) n 0 21

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

f(n)=θ(g(n)) Η συνάρτηση Τ(n) είναι ασυμπτωτικά φραγμένη από επάνω και από κάτω από τη συνάρτηση g(n). c 2 g(n) Τ(n) c 1 g(n) n 0 23

ασυμπτωτικός ρυθμός αύξησης Ασυμπτωτικά άνω όρια. Η συνάρτηση 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) 24

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

Ιδιότητες Μεταβατικότητα. Εάν 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). 26

Απλές Ασκήσεις 1. Υποθέστε ότι έχετε πέντε αλγορίθμους με τους χρόνους εκτέλεσης i έως v αντίστοιχα. (Υποθέστε ότι πρόκειται για τους ακριβείς χρόνους εκτέλεσης.) i) n 2 ii) n 3 iii) 100 n 2 iv) n log n v) 2 n Πόσο βραδύτερος γίνεται καθένας από τους αλγορίθμους αν α) διπλασιαστεί το μέγεθος της εισόδου; β) αυξηθεί το μέγεθος της εισόδου κατά ένα; 2. Πάρτε την παρακάτω λίστα συναρτήσεων και ταξινομήστε την σε αύξουσα σειρά ως προς το ρυθμό αύξησης. Δηλαδή αν η συνάρτηση g(n) ακολουθεί αμέσως μετά τη συνάρτηση f(n) στη λίστα σας, τότε θα πρέπει να ισχύει ότι f(n) είναι O(g(n)). 10 n f 1 (n)=, f 2 (n)= n 1/3, f 3 (n)=n n, f 4 (n)=log 2 n, f 5 (n)= 2 log 2 n 27

ασυμπτωτικά όρια για κάποιες συνηθισμένες συναρτήσεις Πολυώνυμα. 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 ). κάθε εκθετική συνάρτηση αυξάνει πιο γρήγορα από οποιαδήποτε πολυωνυμική 28

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 } 30

γραμμικός χρόνος: 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. 31

χρόνος 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. Διατρέχουμε την ταξινομημένη λίστα, εντοπίζοντας το μέγιστο διάστημα μεταξύ διαδοχικών γεγονότων. 32

τετραγωνικός χρόνος (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 του βιβλίου 33

κυβικός χρόνος (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 } } 34

πολυωνυμικός χρόνος (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) (n k 1) k (k 1) (k 2) (2) (1) nk k! για συγκεκριμένο k, πχ. k=17, είναι πολυωνυμικό, όμως μπορεί να είναι μη πρακτικό για μεγάλα k 35

Εκθετικός Χρόνος Ανεξάρτητο σύνολο. Δίνεται γράφημα 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 } } 36

Αλγόριθμος, Άσκηση 6, σελίδα 98 37

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