Presentation is loading. Please wait.

Presentation is loading. Please wait.

יסודות מבני נתונים תרגול 4 : נוסחאות נסיגה (recurrences)

Similar presentations


Presentation on theme: "יסודות מבני נתונים תרגול 4 : נוסחאות נסיגה (recurrences)"— Presentation transcript:

1 יסודות מבני נתונים תרגול 4 : נוסחאות נסיגה (recurrences)

2 ניתוח סיבוכיות הזמן של אלגוריתם - נוסחאות נסיגה
מהו זמן ריצה של קטע קוד הבא ? function(n) { if (n ==1) return 1 a=0 for (i=1 to √n) a++; return a + function(n/2) } T(n) פעולות פעולה פעולה √n פעולות T(n/2) פעולות קיבלנו זמן ריצה T(n) = √n + T(n/2) הגדרה כזו נקראת נוסחת נסיגה - מתארת את  T(n) בעזרת T(n’)  עבור ערכי n’ קטנים מ n.

3 נוסחאות נסיגה – שיטת ההצבה
function(n) { if (n ==1) return 1 a=0 for (i=1 to √n) a++; return a + function(n/2) } שיטת הוכחה זו נקראת שיטת הצבה מנחשים את התוצאה, ומוכיחים באינדוקציה שהיא אכן נכונה. Substitution method Guess the form of the solution and prove it by induction. האם נכון ש T(n) = √n + T(n/2) = ϴ(√n) ? נוכיח את הטענה באינדוקציה. הנחת האינדוקציה: ∀n’< n T(n’) = ϴ(√n’) ∃ c1,c2 > 0, n0 ∀ n’ ≥ n0 c1 ∙ √n ≤ T(n’) ≤ c2 ∙ √n’ T(1) = 1 ≤ c2 ∙ √1 for c2 ≥ 1  T(1) = O(√1) T(1) = 1 ≥ c1 ∙ √1 for c1 ≤ 1  T(1) = Ω(√1)  T(1) = ϴ(√1) מקרה בסיס: מקרה כללי: T(n) = √n + T(n/2) ≤ √n + c2 ∙ √(n/2) = √n ∙ (c2/√2 + 1) ≤ c2 ∙ √n  let’s take c2 = 4  T(n) = O(√n) T(n) = √n + T(n/2) ≥ √n + c1 ∙ √(n/2) = √n ∙ (c1/√2 + 1) ≥ c1 ∙ √n  let’s take c1 = 1  T(n) = Ω(√n)  T(n) = ϴ(√n) (c1/√2 + 1) ≥ c1 (c1 + √2)/√2 ≥ c1  √2 ≥ c1 (√2-1)  c1 ≤ √2/(√2-1)  c1 ≤ 3.414… (c2/√2 + 1) ≤ c2 (c2 + √2)/√2 ≤ c2  √2 ≤ c2 (√2-1)  c2 ≥ √2/(√2-1)  c2 ≥ 3.414…

4 ניתוח סיבוכיות הזמן של אלגוריתם - נוסחאות נסיגה
מהו זמן ריצה של קטע קוד הבא ? function(n) { if (n ≤ 2) return 1 a=1 return a + function(√n) } T(n) פעולות פעולה פעולה T(√n) פעולות קיבלנו זמן ריצה T(n) = 1 + T(√n) גם הפעם קיבלנו נוסחת נסיגה - מתארת את  T(n) בעזרת T(n’)  עבור ערכי n’ קטנים מ n.

5 נוסחאות נסיגה – שיטת האיטרציה
function(n) { if (n ≤ 2) return 1 a=1 return a + function(√n) } שיטת הוכחה זו נקראת שיטת האיטרציה פורשים את הביטוי, מוצאים חוקיות, ומוכיחים את החוקיות. Iteration method Convert the recurrence into a summation and solve it. מהו הביטוי המפורש (ללא רקורסיה) לנוסחת הנסיגה T(n) = 1 + T(√n)? נמצא את הביטוי המפורש ע"י פרישת הנוסחא ומציאת חוקיות בה. T(n) = 1 + T(√n) = T(n1/4) = T(n1/8) = … = לפי תנאי בסיס הפונקציה עוצרת כאשר n^ (1/2i) = 2  log (n^ (1/2i)) = log 2 = 1  1/2i ∙ log n = 1  log n = 2i  log log n = log 2i = i ∙ log 2 = i

6 Fibonacci series fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)
Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2) Find a recursive algorithm for computing fib(n) and analyze its runtime Find an iterative algorithm for computing fib(n) and analyze its runtime

7 Fibonacci series פיבונאצ'י השתמש בסדרה כדי לתאר את מספר הצאצאים של זוג ארנבים אחד, אם מניחים שכל זוג ארנבים שהגיע לגיל חודשיים, ממליט מדי חודש זוג נוסף. באוכלוסייה כזו, מספר זוגות הארנבים בחודש ה-n יהיה שווה ל- Fn. איטליה 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, …

8 Fibonacci series . if (n ≤ 1) return n
recFib(n) { if (n ≤ 1) return n else return recFib(n-1) + recFib(n-2) } אלגוריתם רקורסיבי : קיבלנו נוסחת נסיגה = = 1∙(2(n-1)/2-1 -1)/(2-1) = 2(n-3)/2 -1 . 3

9 Fibonacci series recFib(n) { if (n ≤ 1) return n
else return recFib(n-1) + recFib(n-2) } לאומת , קצב הירידה של n קטן פי 2 2

10 Fibonacci series Iterative solution 𝑇 𝑛 =𝑂(𝑛) ~ iterFib (n) {
allocate f[0..n] f[0] = 0 f[1] = 1 for (i=2 ; i ≤ n ; i++) f[i] = f[i-1] + f[i-2] return f[n] } T(n) פעולות n פעולות ~ קיבלנו נוסחת נסיגה

11 Fibonacci series למה כזה הבדל בזמן ריצה ??
Iterative solution 𝑇 𝑛 =𝑂(𝑛) Recursive solution recFib(n) { if (n ≤ 1) return n else return recFib(n-1) + recFib(n-2) } iterFib (n) { allocate f[0..n] f[0] = 0 f[1] = 1 for (i=2 ; i ≤ n ; i++) f[i] = f[i-1] + f[i-2] return f[n] } ~ למה כזה הבדל בזמן ריצה ?? תשובה: רקורסיה עושה אותו חישוב יותר מפעם אחת, ואיטרציה לא.

12 ניתוח סיבוכיות הזמן של אלגוריתם נוסחאות נסיגה – שיטת האב
שיטת האב (מאסטר) פותרת נוסחאות נסיגה רקורסיביות מהצורה: מבצע a קריאות רקורסיביות כל קריאה על קלט בגודל n/b בנוסף מבזבז f(n) זמן

13 ניתוח סיבוכיות הזמן של אלגוריתם שיטת האב – דוגמא 1
? האם קיים ϵ > 0 כך ש: כן, למשל ϵ = 0.1

14 ניתוח סיבוכיות הזמן של אלגוריתם שיטת האב – דוגמא 2
? האם נכון להגיד ש: כן, זה מתקיים באופן טריוויאלי

15 ניתוח סיבוכיות הזמן של אלגוריתם שיטת האב – דוגמא 3
? האם קיים ϵ > 0 כך ש: כן, למשל ϵ = 2 ? האם קיים 0 < c < 1 כך ש: כן, זה נכון לכל

16 ניתוח סיבוכיות הזמן של אלגוריתם שיטת האב – דוגמא 4
1 n log n ≠ O(n 1-ϵ ) n log n ≠ ϴ (n) n log n ≠ Ω (n1+ϵ) זה לא מקרה ראשון: גם לא מקרה שני: גם לא שלישי:

17 Question 1 - Find Maximum - recursive function
6 36 98 12 4 58 3 19 left right 4 58 3 19 6 36 98 12 return max(58, 98) = 98 left right left right 3 19 4 58 return max(19, 58) = 58 left right left right return 19 19 3 return max(19, 3) = 19 return 3 left = right left = right

18 Question 1 public static int findMax(int [ ] arr) } return FindMax(arr,0, arr.length-1); { public static int findMax( int a[ ], int left, int right )} int middle; int max_l, max_r; if ( left == right ) return a[left]; else } middle = (left + right) / 2; max_l = FindMax( a, left, middle); max_r = FindMax( a, middle+1, right); return Math.max(max_l, max_r); T(n) פעולות T(n/2) פעולות T(n/2) פעולות קיבלנו נוסחת נסיגה

19 Question 1 נפתור את הנוסחה ע"י משפט האב. f(n) = 1= O(n 1-ϵ ) for each ϵ > 0  (case 1) T(n) = ϴ(n) נפתור את הנוסחה בשיטת האיטרציה.

20 08/04/2013 Amihai Savir 2014


Download ppt "יסודות מבני נתונים תרגול 4 : נוסחאות נסיגה (recurrences)"

Similar presentations


Ads by Google