L02 · Ασυμπτωτική Ανάλυση
Η ερώτηση που θέλουμε να απαντήσουμε
Πώς επηρεάζεται η απόδοση ενός αλγόριθμου όταν ο όγκος των δεδομένων που λαμβάνει αυξάνεται;
Στη L01 είπαμε ότι η πολυπλοκότητα εκφράζεται ως συνάρτηση της διάστασης . Εδώ θα μάθουμε να συγκρίνουμε τέτοιες συναρτήσεις χωρίς να μας ενδιαφέρουν σταθεροί συντελεστές ή όροι χαμηλότερης τάξης — γιατί όταν το μεγαλώνει, μόνο ο κυρίαρχος όρος μετράει.
Γιατί δεν αρκούν οι σταθερές
Αυτό το παράδειγμα είναι ο λόγος που η ασυμπτωτική ανάλυση αγνοεί σταθερές. Αν η μία μέτρηση είναι και η άλλη , η σταθερά 100 είναι ασήμαντη μπροστά στη διαφορά «γραμμικό vs τετραγωνικό».
Οπτική σύγκριση συναρτήσεων
Πριν τους τυπικούς ορισμούς, ας νιώσουμε πώς συμπεριφέρονται οι κλασικές κλάσεις πολυπλοκότητας. Άναψε και σβήσε συναρτήσεις, και σύρε το εύρος του — δες πόσο γρήγορα ξεφεύγει η εκθετική και πόσο «πέφτει» η λογαριθμική:
Δύο πράγματα να προσέξεις: (1) η εκθετική καρφώνεται στο ταβάνι του διαγράμματος ενώ το είναι ακόμη μικρό — και ο μετρητής από κάτω εκτοξεύεται· (2) όσο μεγαλώνει το εύρος, οι υπο-τετραγωνικές καμπύλες (, , ) «ισιώνουν» οπτικά μπροστά στο . Αυτή η εικόνα είναι όλο το παιχνίδι της ασυμπτωτικής ανάλυσης.
Ο ορισμός — μια μηχανή με δύο κουμπιά
Πριν δούμε τα σύμβολα, ας στήσουμε τη μηχανική. Για να πούμε «T(n) ∈ O(f(n))» χρειαζόμαστε να βρούμε δύο πράγματα:
- μια σταθερά — το μέγεθος του «καπακιού» που βάζουμε πάνω από την , δηλαδή η ευθεία που χρησιμοποιούμε σαν άνω φράγμα.
- ένα κατώφλι — από ποιο και μετά μας ενδιαφέρει· τα πρώτα τα αγνοούμε.
Αν υπάρχει ζευγάρι τέτοιο ώστε για ΚΑΘΕ να ισχύει , λέμε ότι η T φράσσεται ασυμπτωτικά από την — ή ισοδύναμα ότι T ∈ O(f). Μπορεί στις πρώτες τιμές η T να ξεπερνά την · δεν μας πειράζει, αρκεί από κάποιο σημείο και μετά να σταματάει να το κάνει.
Δοκίμασε τη μηχανή. Παρακάτω η ίδια δοκιμάζεται σε τρεις διαφορετικές . Σύρε το και δες πότε εμφανίζεται η πράσινη ζώνη (η περιοχή από το και πέρα όπου η μπλε καμπύλη μένει κάτω από την πορτοκαλί) — και πότε όχι:
Η T και η f είναι ίδιας τάξης. Διάλεξε c ≥ 3 και ο όρος −100n δεν χρειάζεται καν να βοηθήσει — η ανισότητα ισχύει από n₀ = 1.
Τι να προσέξεις σε κάθε tab:
- Σφιχτό φράγμα — . Με η ανισότητα ισχύει αμέσως, από . Αν ρίξεις το κάτω από 3, ξαφνικά δεν υπάρχει κανένα — όσο δεξιά κι αν σύρεις, η μπλε ξαναπερνά την πορτοκαλί.
- Χαλαρό φράγμα — . Εδώ ΟΠΟΙΟΔΗΠΟΤΕ θετικό δουλεύει. Όσο μικρότερο το , τόσο πιο δεξιά μετακινείται το — αλλά πάντα υπάρχει.
- Αδύνατο φράγμα — . Όσο μεγάλο κι αν διαλέξεις, η τετραγωνική T τρώει τη γραμμική τελικά. Δεν υπάρχει κανένα . Αυτή είναι η εικόνα του «».
Τώρα ο τυπικός ορισμός — όλα τα παραπάνω σε συμπυκνωμένη μαθηματική γραφή. Έστω :
Δύο αντίστοιχοι ορισμοί για κάτω και ακριβές φράγμα:
Σε καθημερινή γλώσσα:
- — η T δεν αυξάνεται γρηγορότερα από την . Άνω φράγμα.
- — η T δεν αυξάνεται πιο αργά από την . Κάτω φράγμα.
- — η T αυξάνεται στον ίδιο ρυθμό με την (μέχρι σταθερά).
Οι τρεις περιπτώσεις, αλγεβρικά
Η εικόνα από το playground αξίζει και μια γρήγορη γραπτή απόδειξη — αυτή ακριβώς θα γράψεις στο εξεταστικό.
Η ιεραρχία πολυπλοκοτήτων — από σταθερό έως παραγοντικό
Οι κλάσεις που θα συναντάμε ξανά και ξανά, σε αυξανόμενο ρυθμό αύξησης:
Αυτή είναι ασυμπτωτική σειρά. Για μικρά τα νούμερα είναι κοντινά και η σειρά μπορεί να μην έχει «κλειδώσει» ακόμα. Δοκίμασε:
Δύο πράγματα ζητάμε από αυτό:
- Σύρε το προς τα δεξιά. Από και πέρα η σειρά κλειδώνει και μένει σταθερή για πάντα. Η μπάρα του ρουφάει όλο τον χώρο γιατί ο είναι τάξεις μεγέθους μεγαλύτερος από οποιαδήποτε πολυωνυμική έκφραση.
- Σύρε το προς τα αριστερά. Στο ή θα δεις «παράδοξα»: το μπορεί να είναι μεγαλύτερο από το , ή το μικρότερο από το . Η ασυμπτωτική σειρά δεν διεκδικεί τίποτα για τόσο μικρά — και ακριβώς για αυτό ο ορισμός έχει το μέσα του.
Wheat and chessboard — γιατί το εκθετικό είναι «καταστροφή»
Αυτό είναι το σε δράση. Αν ένας αλγόριθμος είναι , αρκεί να αυξήσεις το κατά 1 για να διπλασιαστεί ο χρόνος εκτέλεσης.
Η «πικρή πραγματικότητα»: γιατί δεν μας σώζουν οι ταχύτεροι υπολογιστές
Μια έντονη παρανόηση είναι ότι «οι αλγόριθμοι δεν έχουν τόση σημασία γιατί οι υπολογιστές γίνονται όλο και ταχύτεροι». Ας το ελέγξουμε με αριθμούς. Παρακάτω, κάθε γραμμή ξεκινά από ένα ρεαλιστικό «τώρα» (περίπου ό,τι χωράει σε 1 δευτερόλεπτο σε ένα μηχάνημα του 2025). Σύρε το από 1× ως 10⁹× και δες πόσο πιο μεγάλο πρόβλημα μπορείς να λύσεις στον ίδιο χρόνο:
Τι παρατηρείς:
- Για γραμμικό αλγόριθμο, 1000× μηχάνημα = 1000× μεγαλύτερη είσοδος. Πολλαπλασιαστικό κέρδος.
- Για , το κέρδος είναι · για , . Όσο μεγαλύτερος ο εκθέτης, τόσο μικρότερο το κέρδος — αλλά παραμένει πολλαπλασιαστικό.
- Για εκθετικό το κέρδος γίνεται αθροιστικό: . 1000× μηχάνημα = +10 στοιχεία. Ένα δισεκατομμύριο φορές ταχύτερο μηχάνημα = +30 στοιχεία.
- Για ακόμη και ένα δισεκατομμύριο φορές πιο γρήγορο μηχάνημα ξεκολλάει την είσοδο κατά λίγες μόνο μονάδες.
Ιδιότητες των τάξεων μεγέθους
Έστω . Όλα τα παρακάτω αποδεικνύονται κατευθείαν από τον ορισμό:
- — κάθε συνάρτηση «κυριαρχείται από τον εαυτό της».
- — και «είναι ίσης τάξης με τον εαυτό της».
- — οι σταθεροί συντελεστές απορροφώνται.
- — διπλασιάζοντας μια συνάρτηση δεν αλλάζει τάξη.
- — σε άθροισμα μετράει ο κυρίαρχος όρος.
- — οι τάξεις πολλαπλασιάζονται.
Επίσης:
- — και είναι δυϊκά.
- ΚΑΙ — θέλει και τις δύο κατευθύνσεις.
- — το είναι συμμετρικό.
- και — μεταβατικότητα.
Είναι κάθε δύο συναρτήσεις ασυμπτωτικά συγκρίσιμες;
Όχι. Υπάρχουν συναρτήσεις που η μία δεν είναι ούτε ούτε της άλλης. Ο κλασικός αντιπαραδείγμα στη βιβλιογραφία:
Σύρε τον δείκτη παρακάτω και δες πώς η g χορεύει πάνω και κάτω από τη γραμμική ευθεία f — κάθε φορά που το ανεβαίνει η g ξεπερνά, κάθε φορά που πέφτει η g υπολείπεται:
Σύρε το δείκτη και πρόσεξε: η g πάντα ξανα-ανεβαίνει πάνω από την f και ξανα-σκάβει κάτω της. Καμία σταθερά c δεν μπορεί να φράξει τη μία από την άλλη «τελικά» — αυτό σημαίνει ασύγκριτες: ούτε f ∈ O(g), ούτε g ∈ O(f).
Μοτίβο σκέψης: βρες το «καλύτερο» O
Πρακτικές ασκήσεις
Εναλλακτική προσέγγιση: οριακές σχέσεις
Η ανισότητα « από κάποιο » είναι ακριβής αλλά δύσχρηστη — πρέπει να μαντέψεις και . Πιο μηχανικά: παίρνεις το όριο του λόγου και διαβάζεις τη συμπεριφορά από αυτό. Έστω :
Διάλεξε ζευγάρι παρακάτω και δες το όριο να ξεδιπλώνεται. Ο πιο διδακτικός είναι ο : για μικρά το πολυώνυμο φαίνεται να «κερδίζει» (ο λόγος ανεβαίνει!), αλλά από το εκθετικό συντρίβει τον λόγο μέχρι το μηδέν. Αυτή είναι η εικόνα του «»:
Οι μεσαίες περιπτώσεις (όριο 0 ή ) δίνουν τους «αυστηρά μικρότερα» συμβολισμούς:
- → γράφουμε («μικρό-ο»). Διαβάζεται «η είναι αυστηρά μικρότερης τάξης από τη ».
- → γράφουμε («μικρό-ωμέγα»). Διαβάζεται «η είναι αυστηρά μεγαλύτερης τάξης».
Πιο τυπικά:
Η διαφορά «κάποιο » vs «κάθε » μοιάζει λεπτή στο χαρτί. Ο επόμενος πάγκος εργασίας σαρώνει 10–15 διαφορετικά και χρωματίζει καθένα πράσινο (η ανισότητα ισχύει) ή κόκκινο (δεν ισχύει):
Πρόσεξε στο tab « vs »: όσα είναι πράσινα, όσα κόκκινα. Υπάρχει ζευγάρι που δουλεύει (το π.χ.), άρα . Αλλά δεν δουλεύουν όλα τα (αρκεί να ρίξεις το κάτω από για να σπάσει), άρα . Στο δεύτερο tab (« vs ») κάθε — ακόμη και — είναι πράσινο. Πλήρες «κάθε», άρα .
Υπενθύμιση — Κανόνας του L'Hôpital
Πολλά από τα όρια που χρειαζόμαστε δίνουν απροσδιοριστία ή . Σε αυτές τις περιπτώσεις:
Αν και , και οι είναι παραγωγίσιμες, τότε:
Όταν η απροσδιοριστία επιμένει, εφαρμόζουμε ξανά. Το χρησιμοποιούμε αμέσως παρακάτω.
Δύο σημαντικά αποτελέσματα για τους ρυθμούς αύξησης
Στο LimitRatioPlot παραπάνω είδες τα δύο preset «» και «» να καταρρέουν στο μηδέν. Αυτά ΔΕΝ είναι τυχαία παραδείγματα — είναι στιγμιότυπα δύο γενικών θεωρημάτων που χρησιμοποιούμε διαρκώς:
Εκθετικό κυριαρχεί πάνω σε πολυωνυμικό
Κάθε εκθετική συνάρτηση με βάση μεγαλύτερη του 1 αυξάνεται γρηγορότερα από κάθε πολυωνυμική συνάρτηση.
Τυπικά, για κάθε και :
Πολυωνυμικό κυριαρχεί πάνω σε πολυλογαριθμικό
Μια συνάρτηση είναι πολυλογαριθμικά φραγμένη αν υπάρχει σταθερά με .
Κάθε πολυωνυμική συνάρτηση αυξάνεται γρηγορότερα από κάθε πολυλογαριθμική.
Τυπικά, για :
Η έννοια του βέλτιστου αλγορίθμου
Για ένα πρόβλημα ζητάμε τον καλύτερο αλγόριθμο που το επιλύει — αυτόν με την καλύτερη πολυπλοκότητα.
Πιο τυπικά: αν κάθε αλγόριθμος που επιλύει το έχει ασυμπτωτική πολυπλοκότητα — αυτό είναι κάτω φράγμα του προβλήματος — τότε ένας αλγόριθμος με πολυπλοκότητα είναι (ασυμπτωτικά) βέλτιστος: ακουμπάει το θεωρητικό όριο.
Κλείσιμο: πολλαπλασιασμός τετραγωνικών πινάκων
Ένα εξαιρετικό παράδειγμα του γιατί η ασυμπτωτική ανάλυση είναι ζωντανό ερευνητικό αντικείμενο.
Το χάσμα είναι από τα πιο διάσημα ανοιχτά προβλήματα. Η ιστορία του:
| Έτος | Ερευνητές | Πολυπλοκότητα |
|---|---|---|
| 1969 | Strassen | |
| 1986 | Coppersmith & Winograd | |
| 2011 | V. V. Williams | |
| 2023 | Williams, Xu, Xu, Zhou | |
| 2025 | Alman, Duan, Williams, Xu, Xu, Zhou |
Δεκαετίες μικρο-βελτιώσεων στον εκθέτη. Δεν ξέρουμε αν το είναι το πραγματικό κάτω φράγμα — αλλά πολλοί ερευνητές πιστεύουν ότι είναι και ότι κάποτε θα φτάσουμε εκεί.
Κλείδωσε τους ορισμούς
Πριν τα drills, μία κάρτα-μνήμης για να φύγεις από το κεφάλαιο με το σωστό «πακέτο» στο μυαλό:
Πρώτα ο ορισμός — συμπλήρωσε τα κενά χωρίς να κοιτάς πίσω:
Τώρα η ιεραρχία — βάλε τις κλάσεις στη σωστή σειρά:
Τι μάθαμε
Τι κρατάμε από αυτή τη διάλεξη
- : άνω, κάτω, και ακριβές ασυμπτωτικό φράγμα. Ο ορισμός βασίζεται σε σταθερά και αρχικό .
- Σταθερές δεν μετράνε: . Μόνο ο κυρίαρχος όρος μετράει.
- Πολυωνυμικό vs εκθετικό: η μεγάλη διαχωριστική γραμμή. Ταχύτερος υπολογιστής δεν σώζει εκθετικό αλγόριθμο.
- Ιεραρχία: .
- Όρια ως εργαλείο: → · → · → .
- L'Hôpital: λύνει σχεδόν όλα τα όρια που χρειαζόμαστε.
- Βέλτιστος αλγόριθμος: αν το κάτω φράγμα του προβλήματος είναι και υπάρχει αλγόριθμος , είναι ασυμπτωτικά βέλτιστος.
Ασκήσεις από εξετάσεις
Από τη θεωρία στην εξεταστική
23 άσκησεις που χρησιμοποιούν ως τελευταίο εργαλείο αυτή τη διάλεξη. Οι πρόσφατες εξεταστικές (2024/2025) φέρουν badge προτεραιότητας.
Ιούνιος 2025 · Θέμα 1.1 — Σύγκριση σταθερών συναρτήσεων
Αν και , κύκλωσε ποιες από τις παρακάτω σχέσεις ισχύουν:
(i) · (ii) · (iii) · (iv) · (v) · (vi) οι είναι μη-συγκρίσιμες.
Ιούνιος 2025 · Θέμα 1.2 — Πολυωνυμικό vs υπερπολυωνυμικό
Αν και , κύκλωσε ποιες σχέσεις ισχύουν: (i) · (ii) · (iii) · (iv) · (v) · (vi) μη-συγκρίσιμες.
Ιούνιος 2025 · Θέμα 1.3 — Άγνωστος εκθέτης
Αν , με , και , κύκλωσε ποιες σχέσεις ισχύουν: (i) · (ii) · (iii) · (iv) · (v) · (vi) μη-συγκρίσιμες.
Σεπτέμβριος 2025 · Θέμα 1.1 — Άθροισμα τετραγώνων vs n²log n
Αν και , κύκλωσε ποιες σχέσεις ισχύουν: (i) · (ii) · (iii) · (iv) · (v) · (vi) μη-συγκρίσιμες.
Σεπτέμβριος 2025 · Θέμα 1.2 — Αρμονικό άθροισμα vs log log n
Αν και , κύκλωσε ποιες σχέσεις ισχύουν: (i) · (ii) · (iii) · (iv) · (v) · (vi) μη-συγκρίσιμες.
Σεπτέμβριος 2024 · Θέμα 1.2 — Σ/Λ: f + g = Θ(max{f, g})
Χαρακτήρισε (Σ)ωστό ή (Λ)άθος: «Αν είναι θετικές συναρτήσεις με , τότε .»
Σεπτέμβριος 2024 · Θέμα 1.5 — Σ/Λ: 1 + 2 + … + n = Θ(n²)
Χαρακτήρισε (Σ)ωστό ή (Λ)άθος: .
Φροντιστηριακό Σετ #1 · Άσκηση 0 — Σ/Λ ασυμπτωτικού συμβολισμού
Χαρακτήρισε Σωστό / Λάθος: .
Φροντιστηριακό Σετ #1 · Άσκηση 1 — Διάταξη συναρτήσεων ανά ομάδα
Διάταξε τις ακόλουθες συναρτήσεις ως προς την πολυπλοκότητα χρόνου, ανά ομάδα (από τη μικρότερη στη μεγαλύτερη τάξη):
Ομάδα Α: · · · ·
Ομάδα Β: · · · ·
Ομάδα Γ: · · · ·
Φροντιστηριακό Σετ #1 · Άσκηση 3 — Πολυπλοκότητα με επαναλαμβανόμενο λογάριθμο
Υπολόγισε την πολυπλοκότητα χρόνου του αλγορίθμου:
begin algorithm
arg ← -1
for i ← 1 to n with step 1 do
m ← i
while m > 0 do
m ← log(m)
end while
for j ← 1 to m with step 1 do
arg ← i · i · j
end for
end algorithmΦροντιστηριακό Σετ #2 · Άσκηση 0 — Διάταξη συναρτήσεων κατά ρυθμό αύξησης
Διάταξε κάθε ομάδα συναρτήσεων σε αύξουσα σειρά ρυθμού αύξησης.
Ομάδα b: .
Ομάδα f: .
Φροντιστηριακό Σετ #2 · Άσκηση 1 — Αναμενόμενος χρόνος Σειριακής Αναζήτησης
Υπολόγισε τον αναμενόμενο χρόνο εκτέλεσης μίας Σειριακής (γραμμικής) Αναζήτησης σε διακριτά στοιχεία, όταν η πιθανότητα να βρίσκεται το ζητούμενο στη θέση είναι:
- θέσεις έως : η καθεμία με πιθανότητα ·
- θέσεις έως : η καθεμία με πιθανότητα ·
- θέσεις και : η καθεμία με πιθανότητα ·
- «δεν βρέθηκε»: με την υπόλοιπη πιθανότητα .
Φροντιστηριακό Σετ #2 · Άσκηση 2 — Σ/Λ για αθροίσματα
Χαρακτήρισε κάθε πρόταση Σωστό / Λάθος:
(α) · (β) · (γ) · (δ) .
Φροντιστηριακό Σετ #2 · Άσκηση 3 — Σ/Λ: συνεπαγωγές ασυμπτωτικών
Χαρακτήρισε Σωστό / Λάθος:
(α) · (β) .
Φροντιστηριακό Σετ #2 · Άσκηση 4 — Ασυμπτωτική τάξη και διάταξη συναρτήσεων
Βρες την ασυμπτωτική συμπεριφορά των παρακάτω συναρτήσεων, προσδιορίζοντας για κάθε μία αν είναι ή για κατάλληλες μη-αρνητικές ακέραιες τιμές των :
1. (α΄) · (β΄) · (γ΄) · (δ΄)
2. Να τις διατάξεις σε αύξουσα τάξη μεγέθους καθώς το τείνει στο άπειρο.
Φροντιστηριακό Σετ #2 · Άσκηση 5 — Τρεις ασυμπτωτικές κατατάξεις
Για καθεμία απάντησε ποια σχέση ισχύει:
(α) Η είναι , ή ; (β) Η είναι , ή ;
Φροντιστηριακό Σετ #2 · Άσκηση 6 — Πολυπλοκότητα εμφωλευμένων βρόχων
Υπολόγισε τη χρονική πολυπλοκότητα του παρακάτω αλγορίθμου:
Algorithm 1:
arg ← -1
για i ← 1 έως 2n (βήμα 1):
για j ← i έως i² (βήμα 1):
arg ← CALC(j)
procedure CALC(w):
res ← 0
για i ← 1 έως √w (βήμα 0.1):
res ← res + log(i)
return resΦροντιστηριακό Σετ #2 · Άσκηση 7 — Πίνακας ασυμπτωτικών σχέσεων
Για κάθε ζεύγος συναρτήσεων παρακάτω, ποιες σχέσεις ισχύουν ( ως προς ): ; (Σταθερές: .)
1) vs · 2) vs · 3) vs · 4) vs · 5) vs · 6) vs .
Φροντιστηριακό Σετ #4 · Επανάληψη E0 — Πολυπλοκότητα εμφωλευμένων βρόχων
Υπολόγισε την πολυπλοκότητα χρόνου του παρακάτω αλγορίθμου:
begin algorithm
arg ← -1
for i ← 1 to 2n with step 1 do
for j ← i to i² with step 1 do
arg ← CALC(j)
end algorithm
procedure CALC(w)
res ← 0
for i ← 1 to w^0.5 with step 0.1 do
res ← res + log(i)
return resΦροντιστηριακό Σετ #4 · Θέμα 4 — Πολυπλοκότητα δύο αλγορίθμων
Βρες την πολυπλοκότητα των παρακάτω αλγορίθμων. Δώσε σύντομη αιτιολόγηση.
Algorithm 1
arg ← 1
for i ← 1 to n with step 1 do
for j ← 1 to i with step 1 do
arg ← CALC(j)
procedure CALC(m)
i ← 1; s ← 1
while s ≤ m do
i ← i + 1
s ← s + i
return sAlgorithm 2
arg ← 0
for i ← 1 to n with step 1 do
for j ← 1 to n with step (2·j) do
arg ← CALC(j)
procedure CALC(m)
s ← m
while s ≤ (2·m) do
s ← s + 1
return sΦροντιστηριακό Σετ #11 — υπό μεταγραφή
Εκφώνηση δεν έχει ακόμα μεταγραφεί.
Ιούνιος 2023 · Θέμα 1 (Β ομάδας) — Σύγκριση εκθετικής με υπερ-πολυωνυμική
Θεωρούμε την με . Βρες αν είναι ή .
Ιούνιος 2023 · Θέμα 2Α — Κατάταξη της 2^√(log n)
Η συνάρτηση είναι , ή ;