שאלת מבחן במבוא למדעי המחשב - אוניברסיטת תל אביב 2019 - סיבוכיות זמן
ציינו את סיבוכיות הזמן במקרה הגרוע של שלוש הפונקציות הבאות, כתלות ב-n, אורך רשימת הקלט L. תנו תשובה במונחים אסימפטוטיים. התעלמו מגודלם של המספרים המעורבים בחישוב. אין צורך להסביר.
מהי סיבוכיות הזמן של כל אחת מהפונקציות?
מהי סיבוכיות הזמן של כל אחת מהפונקציות?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת תל אביבמועד ב2019סמסטר א
★★★★★
סיבוכיות זמןלולאותרקורסיהמעקב אחר קוד
עבור f1: שימו לב שה-
עבור f2: הלולאה החיצונית O(n), הפנימית O(i) ≈ O(n), ו-while הוא O(log n).
עבור f3: פתרו את נוסחת הנסיגה T(n) = T(2n/3) + O(n).
in על רשימה הוא O(n), וה-append לא משנה את range כי n נקבע מראש.עבור f2: הלולאה החיצונית O(n), הפנימית O(i) ≈ O(n), ו-while הוא O(log n).
עבור f3: פתרו את נוסחת הנסיגה T(n) = T(2n/3) + O(n).
f1: הלולאה רצה n פעמים. בכל איטרציה,
f2: הלולאה החיצונית רצה O(n) פעמים. עבור כל i, הלולאה הפנימית רצה O(i) פעמים. בתוך הלולאה הפנימית, ה-while רץ O(log n) פעמים. סה"כ: . הסיבוכיות היא O(n² log n).
f3: נוסחת הנסיגה: T(n) = T(2n/3) + O(n) (כי חיתוך הרשימה L[0:(2*n)//3] לוקח O(n)). לפי משפט המאסטר (או פתיחה): T(n) = O(n) + O(2n/3) + O(4n/9) + ... = O(n · (1 + 2/3 + 4/9 + ...)) = O(n · 3) = O(n).
i in L לוקח O(n) (חיפוש ברשימה). לכן הסיבוכיות היא O(n²).f2: הלולאה החיצונית רצה O(n) פעמים. עבור כל i, הלולאה הפנימית רצה O(i) פעמים. בתוך הלולאה הפנימית, ה-while רץ O(log n) פעמים. סה"כ: . הסיבוכיות היא O(n² log n).
f3: נוסחת הנסיגה: T(n) = T(2n/3) + O(n) (כי חיתוך הרשימה L[0:(2*n)//3] לוקח O(n)). לפי משפט המאסטר (או פתיחה): T(n) = O(n) + O(2n/3) + O(4n/9) + ... = O(n · (1 + 2/3 + 4/9 + ...)) = O(n · 3) = O(n).