Upload
others
View
19
Download
0
Embed Size (px)
Citation preview
יסודות מבני נתונים
(recurrences)נוסחאות נסיגה : 4תרגול
Marina Kogan Sadetsky – 11.2015
Fibonacci series
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
Fibonacci series
אם מניחים , אחדמספר הצאצאים של זוג ארנבים השתמש בסדרה כדי לתאר את י'פיבונאצ
מספר , באוכלוסייה כזו. ממליט מדי חודש זוג נוסף, שכל זוג ארנבים שהגיע לגיל חודשיים
.Fn-יהיה שווה לn-בחודש הזוגות הארנבים
1240-1170איטליה
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, …
Fibonacci series
recFib(n) if (n ≤ 1) return nelse return recFib(n-1) + recFib(n-2)
נוסחת נסיגהקיבלנו
:אלגוריתם רקורסיבי
3.
=
= 1∙(2(n-1)/2-1 -1)/(2-1)= 2(n-3)/2 -1
Fibonacci series
recFib(n) if (n ≤ 1) return nelse return recFib(n-1) + recFib(n-2)
קצב , לאומת
2קטן פי nהירידה של
2
Iterative solution
𝑇 𝑛 = 𝑂(𝑛)
iterFib (n) allocate f[0..n]f[0] = 0f[1] = 1for (i=2 ; i ≤ n ; i++)
f[i] = f[i-1] + f[i-2]return f[n]
Fibonacci series
nפעולות
T(n)פעולות
~נוסחת נסיגהקיבלנו
Iterative solution
𝑇 𝑛 = 𝑂(𝑛)
iterFib (n) allocate f[0..n]f[0] = 0f[1] = 1for (i=2 ; i ≤ n ; i++)
f[i] = f[i-1] + f[i-2]return f[n]
Fibonacci series
Recursive solution
recFib(n) if (n ≤ 1) return nelse return recFib(n-1) + recFib(n-2)
??למה כזה הבדל בזמן ריצה
.ואיטרציה לא, אותו חישוב יותר מפעם אחתרקורסיה עושה : תשובה
~
ניתוח סיבוכיות הזמן של אלגוריתםשיטת האב–נוסחאות נסיגה
קריאות aמבצע
רקורסיביות
כל קריאה על
n/bקלט בגודל בנוסף מבזבז
f(n)זמן
:פותרת נוסחאות נסיגה רקורסיביות מהצורה( מאסטר)שיטת האב
ניתוח סיבוכיות הזמן של אלגוריתם1דוגמא –שיטת האב
:כך שϵ > 0האם קיים
ϵ = 0.1למשל , כן
?
ניתוח סיבוכיות הזמן של אלגוריתם2דוגמא –שיטת האב
:האם נכון להגיד ש
זה מתקיים באופן טריוויאלי, כן
?
ניתוח סיבוכיות הזמן של אלגוריתם3דוגמא –שיטת האב
?:כך שϵ > 0האם קיים
ϵ = 2למשל , כן
:כך שc < 1 > 0האם קיים ?
זה נכון לכל, כן
ניתוח סיבוכיות הזמן של אלגוריתם4דוגמא –שיטת האב
1
n log n ≠ O(n 1-ϵ )n log n ≠ ϴ (n)n log n ≠ Ω (n1+ϵ)
:זה לא מקרה ראשון
:גם לא מקרה שני:גם לא שלישי
Question 1 - Find Maximum - recursive function
left right
6369812458319
left right
458319
leftright
6369812
left
319
right left
458
right
left =
19
right
3
left = right
return 19
return 3return max(19, 3) = 19
return max(19, 58) = 58
return max(58, 98) = 98
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);
Question 1
T(n)פעולות
T(n/2)פעולות
T(n/2)פעולות
נוסחת נסיגהקיבלנו
Question 1
.נפתור את הנוסחה בשיטת האיטרציה
f(n) = 1= O(n 1-ϵ ) for each ϵ > 0 (case 1) T(n) = ϴ(n)
.י משפט האב"נפתור את הנוסחה ע