16
יסודות מבני נתונים תרגול4 : נוסחאות נסיגה(recurrences) Marina Kogan Sadetsky – 11.2015

םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

יסודות מבני נתונים

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

Marina Kogan Sadetsky – 11.2015

Page 2: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

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

Page 3: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

Fibonacci series

אם מניחים , אחדמספר הצאצאים של זוג ארנבים השתמש בסדרה כדי לתאר את י'פיבונאצ

מספר , באוכלוסייה כזו. ממליט מדי חודש זוג נוסף, שכל זוג ארנבים שהגיע לגיל חודשיים

.Fn-יהיה שווה לn-בחודש הזוגות הארנבים

1240-1170איטליה

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, …

Page 4: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

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

Page 5: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

Fibonacci series

recFib(n) if (n ≤ 1) return nelse return recFib(n-1) + recFib(n-2)

קצב , לאומת

2קטן פי nהירידה של

2

Page 6: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(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)פעולות

~נוסחת נסיגהקיבלנו

Page 7: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(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

Recursive solution

recFib(n) if (n ≤ 1) return nelse return recFib(n-1) + recFib(n-2)

??למה כזה הבדל בזמן ריצה

.ואיטרציה לא, אותו חישוב יותר מפעם אחתרקורסיה עושה : תשובה

~

Page 8: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

ניתוח סיבוכיות הזמן של אלגוריתםשיטת האב–נוסחאות נסיגה

קריאות aמבצע

רקורסיביות

כל קריאה על

n/bקלט בגודל בנוסף מבזבז

f(n)זמן

:פותרת נוסחאות נסיגה רקורסיביות מהצורה( מאסטר)שיטת האב

Page 9: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

ניתוח סיבוכיות הזמן של אלגוריתם1דוגמא –שיטת האב

:כך שϵ > 0האם קיים

ϵ = 0.1למשל , כן

?

Page 10: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

ניתוח סיבוכיות הזמן של אלגוריתם2דוגמא –שיטת האב

:האם נכון להגיד ש

זה מתקיים באופן טריוויאלי, כן

?

Page 11: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

ניתוח סיבוכיות הזמן של אלגוריתם3דוגמא –שיטת האב

?:כך שϵ > 0האם קיים

ϵ = 2למשל , כן

:כך שc < 1 > 0האם קיים ?

זה נכון לכל, כן

Page 12: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

ניתוח סיבוכיות הזמן של אלגוריתם4דוגמא –שיטת האב

1

n log n ≠ O(n 1-ϵ )n log n ≠ ϴ (n)n log n ≠ Ω (n1+ϵ)

:זה לא מקרה ראשון

:גם לא מקרה שני:גם לא שלישי

Page 13: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)
Page 14: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

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

Page 15: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

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)פעולות

נוסחת נסיגהקיבלנו

Page 16: םינותנ ינבמ תודוסי - BGUfds161/wiki.files/ps4-2015.pdf · Fibonacci series Fibonacci series is defined as follows: fib (0) = 0 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

Question 1

.נפתור את הנוסחה בשיטת האיטרציה

f(n) = 1= O(n 1-ϵ ) for each ϵ > 0 (case 1) T(n) = ϴ(n)

.י משפט האב"נפתור את הנוסחה ע