Να δοθεί ο ορισμός της πολυπλοκότητας αλγορίθμου.
Σκέψη / Μεθοδολογία: Το βιβλίο δεν δίνει μονολεκτικό τυπικό ορισμό στο εξαγόμενο κείμενο, αλλά τον εισάγει μέσα από τα παραδείγματα ταξινόμησης O(n²) και αναζήτησης O(n) — συνθέτουμε τον γενικό ορισμό από τη χρήση του συμβολισμού Ο σε αυτά τα παραδείγματα.
Λύση:
Ενδεικτική απάντηση: Η πολυπλοκότητα ενός αλγορίθμου εκφράζει τον ρυθμό με τον οποίο αυξάνεται το κόστος εκτέλεσής του (συνήθως ο αριθμός των βασικών πράξεων/συγκρίσεων) καθώς μεγαλώνει το μέγεθος εισόδου n. Συμβολίζεται με τον συμβολισμό Ο (π.χ. Ο(n) για γραμμική, Ο(n²) για τετραγωνική πολυπλοκότητα) και επιτρέπει τη σύγκριση αλγορίθμων ανεξάρτητα από τις λεπτομέρειες μιας συγκεκριμένης υλοποίησης ή πλατφόρμας.
Πρόσεξε:
Με τη βοήθεια ενός διαγράμματος να γίνει σύγκριση μεταξύ της λογαριθμικής, της γραμμικής και της τετραγωνικής πολυπλοκότητας.
Σκέψη / Μεθοδολογία: Δεδομένου ότι η λύση δίνεται σε γραπτή μορφή, αντικαθιστούμε το διάγραμμα με πίνακα τιμών για διαφορετικά n, που δείχνει την ίδια σχετική τάξη μεγέθους, και περιγράφουμε λεκτικά τη μορφή των τριών καμπυλών.
Λύση:
Ενδεικτική απάντηση:
Πίνακας ενδεικτικών τιμών (αντί διαγράμματος):
| n | log₂(n) | n | n² |
|---|---|---|---|
| 1 | 0 | 1 | 1 |
| 10 | ~3,3 | 10 | 100 |
| 100 | ~6,6 | 100 | 10.000 |
| 1.000 | ~10 | 1.000 | 1.000.000 |
Αν σχεδιάζαμε τις τρεις συναρτήσεις σε ένα διάγραμμα (άξονας x: το μέγεθος n, άξονας y: ο αριθμός πράξεων), η καμπύλη της λογαριθμικής πολυπλοκότητας Ο(log n) θα ήταν σχεδόν επίπεδη — αυξάνεται πολύ αργά ακόμη και για πολύ μεγάλα n. Η καμπύλη της γραμμικής πολυπλοκότητας Ο(n) θα ήταν ευθεία γραμμή με σταθερή κλίση. Η καμπύλη της τετραγωνικής πολυπλοκότητας Ο(n²) θα ανέβαινε πολύ πιο απότομα, ξεπερνώντας γρήγορα τις άλλες δύο καθώς μεγαλώνει το n. Γενικά ισχύει η σχέση Ο(log n) < Ο(n) < Ο(n²) για μεγάλα n, δηλαδή ο λογαριθμικός αλγόριθμος είναι ο πιο αποδοτικός και ο τετραγωνικός ο λιγότερο αποδοτικός από τους τρεις.
Πρόσεξε:
Ποια είναι η πολυπλοκότητα των λειτουργιών σε στοίβες και ουρές;
Σκέψη / Μεθοδολογία: Η ερώτηση συνδυάζει ύλη του Κεφαλαίου 3 (ορισμός στοίβας/ουράς) με την έννοια της πολυπλοκότητας του Κεφαλαίου 5. Οι βασικές λειτουργίες (ώθηση/απώθηση σε στοίβα, εισαγωγή/εξαγωγή σε ουρά) γίνονται πάντα στο ίδιο άκρο, χωρίς να χρειάζεται διάσχιση των υπόλοιπων στοιχείων.
Λύση:
Ενδεικτική απάντηση: Οι βασικές λειτουργίες τόσο της στοίβας (Εισαγωγή/push και Εξαγωγή/pop στην κορυφή) όσο και της ουράς (Εισαγωγή στο τέλος, Εξαγωγή από την αρχή) έχουν πολυπλοκότητα Ο(1) — σταθερού χρόνου. Αυτό συμβαίνει γιατί κάθε λειτουργία επενεργεί απευθείας σε συγκεκριμένη, γνωστή θέση (την κορυφή για τη στοίβα, τα δύο άκρα για την ουρά), χωρίς να χρειάζεται να διασχιστούν ή να μετακινηθούν τα υπόλοιπα στοιχεία της δομής, ανεξάρτητα από το πόσα στοιχεία n περιέχει αυτή τη στιγμή.
Πρόσεξε:
Ποια είναι η πολυπλοκότητα της σειριακής αναζήτησης;
Σκέψη / Μεθοδολογία: Άμεση ανάκληση του συμπεράσματος του §5.3.2: τόσο η επιτυχής όσο και η ανεπιτυχής σειριακή αναζήτηση έχουν πολυπλοκότητα Ο(n).
Λύση:
Απάντηση: Η σειριακή (γραμμική) αναζήτηση έχει πολυπλοκότητα τάξης Ο(n), τόσο στην επιτυχή όσο και στην ανεπιτυχή περίπτωση — δηλαδή ο αριθμός των συγκρίσεων που χρειάζονται αυξάνεται γραμμικά με το πλήθος n των στοιχείων του πίνακα.
Πρόσεξε:
