יהי אלגוריתם וקלט . נאמר כי זמן הריצה של על הוא מספר פקודות המכונה שהאלגוריתם מבצע על הקלט . נסמנו ב-.
- מתעלמים מהבדלי המהירות בין פקודות שונות.
- מתעלמים מהבדלי מהירות והבדלי פקודות בין מכונה למכונה.
- עושים את זה ככה על מנת להימנע מעומס פרטים וכדי שנוכל לעבוד באופן יעיל.
האורך של הקלט יסומן כמובן ב-.
בתוכנית המסכמת איברי מערך , אורך הקלט הוא מספר איברי המערך.
יהי אלגוריתם ויהי .
נאמר כי זמן הריצה הגרוע ביותר של עבור קלט שגודלו מוגדר ע"י:
עבור קלט שהוא מערך בגודל נסכם את איברי המערך:
sum = 0;
for (i = 0; i < n; i++)
sum = sum + a[i];
זמן הריצה הגרוע ביותר של אלגוריתם זה מקיים:
כאשר הוא מספר הפעולות בכל איטרציה של הלולאה ו- הוא מספר הפעולות מחוץ ללולאה.
נבדוק האם מספר מסויים הוא ראשוני ע"י חלוקה בכל האיברים עד אליו:
for (i = 2; i < num; i++)
if (num % i == 0) return false;
return true;
למספר זוגי תתבצע איטרציה אחת בלבד ולכן .
עבור מספר ראשוני יהיו מלאאא איטרציות .
⟸ זמן הריצה הגרוע ביותר לקלט באורך ספרות יהיה .
⟸ באופן כללי יותר לקלט באורך ספרות מתקיים .
ההגדרות הבסיסיות
יהיו .
נאמר שהפונקציה נמצאת בקבוצת הפונקציות אם קיימים קבועים כך שלכל מתקיים: .
כמו כן, נאמר ש- מהווה חסם עליון אסימפטוטי לפונקציה ונסמן זאת ע"י . (במקום הסימון הקבוצתי )
לכל קבועים מתקיים: משום ש:
ומכיוון ש- הוא קבוע שאינו תלוי ב- נקבל ישירות כי לכל .
לכל מתקיים:
הוכחה:
יהי אזי:
לפיכך נבחר ו- ואז לפי הגדרה .
∎
נאמר כי לכל חיובי מתקיים: וזאת כך:
כל פונקציה לוגריתמית גדלה לאט יותר מכל חזקה חיובית של . (אפילו )
נראה כעת למה :
נניח בשלילה שקיימים קבועים כך שלכל מתקיים: .
נחלק ב- ונקבל: ונוציא לוגריתם בבסיס משני האגפים: .
סתירה לכך שלכל אי השוויון לא נכון. לכן, .
האם עבור קבוע? לא, בכלל לא.
על מנת להוכיח זאת נחשב את הגבול:
נקבל אם כן את השלבים הבאים:
נעבור לשלילה ונחליף את ב- ואת ב- ואז נקבל כי:
התשובה שלילית. אינו חסום ע"י שום פולינום . כלומר .
סיבוכיות זמן
גודל הקלט שלנו הוא: .
מחשבים איברים במטריצת התוצאה, כאשר כל איבר מחושב לפי ההגדרה:
סיבוכיות הזמן כפונקציה של היא (ביצוע של פעולות כפל וחיבור עבור כל אחת מה- איברים)
חיפוש בינארי המוכר יהיה בעל סיבוכיות זמן המוגדרת בעזרת נוסחת הנסיגה הבאה:
כאשר . נאמר אם כן כי:
עבור פיסת הקוד:
S = 0;
for (i = 1; i < n; i++)
for (j = 0; j < n; j += i)
S++;
באנליזה גסה היינו אומרים כי .
באנליזה עדינה יותר היינו מגלים כי:
- עבור מתבצעות פעולות.
- עבור מתבצעות פעולות.
- עבור מתבצעות פעולות.
- עד עבורו מתבצעות פעולות.
סה"כ פעולות:
כאשר נקרא המספר ההרמוני ה-.
מהטענה הנ"ל נקבל כי .
ניתוח אסימפטוטי מתאר התנהגות עבור קלטים גדולים מאוד ()
עבור גדלי קטל קטנים ומעשיים, הקבועים הכפליים עשויים להכריע!