כפי שהוזכר בתשובה לשאלה המקושרת, דרך נפוצה לאלגוריתם למורכבות זמן O(log n) היא שהאלגוריתם הזה יפעל על ידי קיצוץ חוזר ונשנה של גודל הקלט. לפי גורם קבוע כלשהו בכל איטרציה.
מה המשמעות של log n?
O(log N) פירושו בעצם הזמן עולה באופן ליניארי בעוד ה-n עולה אקספוננציאלית. אז אם לוקח שנייה אחת לחשב 10 אלמנטים, ייקח 2 שניות לחשב 100 אלמנטים, 3 שניות לחשב 1000 אלמנטים וכן הלאה. זה O(log n) כאשר אנו מחלקים וכיבושים מסוג אלגוריתמים, למשל חיפוש בינארי.
מהו O and log n?
עבור קלט בגודל n, אלגוריתם של O(n) יבצע שלבים פרופורציונליים ל-n, בעוד אלגוריתם אחר של O(log(n)) יבצע שלבים בערך log(n). ברור ש-log(n) קטן מ-n ולכן אלגוריתם המורכבות O(log(n)) עדיף.
איך מחשבים יומן n?
הרעיון הוא שאלגוריתם הוא O(log n) אם במקום לגלול במבנה 1 על 1, אתה מחלק את המבנה לחצי שוב ושוב ועושה מספר קבוע של פעולות עבור כל פיצול. אלגוריתמי חיפוש שבהם מרחב התשובה מפוצל כל הזמן הם O(log n).
מה זה log n Square?
Log ^2 (
) פירושו שהוא פרופורציונלי ל- log של log עבור בעיה בגודל
. Log(
)^ 2 אומר שזהפרופורציונלי ל- square של log.