Όπως αναφέρθηκε στην απάντηση στη συνδεδεμένη ερώτηση, ένας συνηθισμένος τρόπος για έναν αλγόριθμο να έχει χρονική πολυπλοκότητα O(log n) είναι αυτός ο αλγόριθμος να λειτουργεί με επανειλημμένη μείωση του μεγέθους της εισόδου με κάποιο σταθερό παράγοντα σε κάθε επανάληψη.
Τι σημαίνει το log n;
Το
O(log N) σημαίνει βασικά ο ο χρόνος ανεβαίνει γραμμικά ενώ το n ανεβαίνει εκθετικά. Έτσι, εάν χρειάζεται 1 δευτερόλεπτο για τον υπολογισμό 10 στοιχείων, θα χρειαστούν 2 δευτερόλεπτα για τον υπολογισμό 100 στοιχείων, 3 δευτερόλεπτα για τον υπολογισμό 1000 στοιχείων κ.ο.κ. Είναι O(log n) όταν κάνουμε διαίρεση και κατάκτηση τύπου αλγορίθμων, π.χ. δυαδική αναζήτηση.
Τι είναι το O και το log n;
Για την είσοδο του μεγέθους n, ένας αλγόριθμος του O(n) θα εκτελέσει βήματα ανάλογα με το n, ενώ ένας άλλος αλγόριθμος του O(log(n)) θα εκτελέσει βήματα χονδρικά log(n). Είναι σαφές ότι το log(n) είναι μικρότερο από το n, επομένως ο αλγόριθμος πολυπλοκότητας O(log(n)) είναι καλύτερος.
Πώς υπολογίζετε το log n;
Η ιδέα είναι ότι ένας αλγόριθμος είναι O(log n) εάν αντί να κάνετε κύλιση σε μια δομή 1 προς 1, διαιρέσετε τη δομή στη μέση ξανά και ξανά και κάνετε έναν σταθερό αριθμό πράξεων για κάθε διαίρεση. Οι αλγόριθμοι αναζήτησης όπου ο χώρος απαντήσεων διαχωρίζεται συνεχώς είναι O(log n).
Τι είναι το log n Square;
Καταγραφή ^2 (
) σημαίνει ότι είναι ανάλογο με το log του log για πρόβλημα μεγέθους
. Ημερολόγιο(
)^ 2 σημαίνει ότι είναιανάλογο με το τετράγωνο του log.