מבני נתונים ואלגוריתמים - מחברת קורס/אלגוריתמים/נוסחאות נסיגה/תרגילים
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
תוכן עניינים |
[עריכה] נוסחת נסיגה עם שורש
[עריכה] שאלה
בנוסחת הנסיגה
,
מתארת את זמן הריצה של אלגוריתם כלשהו. אנא פתור את הנוסחה.
[עריכה] תשובה
נשתמש בפרישה.בעץ המתאים לנוסחה:
- צומת הראש מציין את
, והרמה הראשונה תורמת
. - ברמה הבאה, הצומת מציין את
, והרמה תורמת
. - ברמה הבאה אחריה, הצומת מציין את
, והרמה תורמת
.
החוקיות איננה מסובכת, ונוכל להוכיח את הטענה הבאה באינדוקציה פשוטה: ברמה ה
(כאשר ראש העץ נחשב ברמה ה0), הצומת מציין את
, והרמה תורמת
.
כדי למצוא את גובה העץ,
, נפתור
: 




כאמור, הרמה ה
תורמת
. נותר, לכן, לסכם את
: ![\displaystyle \sum_{i = 0}^{\log(\log(n))}[1/2^i \cdot \log(n)] =](http://upload.wikimedia.org/math/3/a/e/3aeefb5f58fb4c4008858060a324d914.png)
![\displaystyle \sum_{i = 0}^{\log(\log(n))}[1/2^i] \cdot \log(n) =](http://upload.wikimedia.org/math/b/c/c/bcc0713cff5b649498020149932ac0e9.png)


[עריכה] נוסחת נסיגה לבעיית "דג הסלמון"
[עריכה] שאלה
מתארת את זמן הריצה של אלגוריתם כלשהו. אנא הוכח שאם
אז
.
|
כדאי לדעת: נצטרך את פתרונה של נוסחת נסיגה זו בבעיית "דג הסלמון". |
[עריכה] תשובה
הוכחה: נוכיח באינדוקציה שקיים
כך ש
.
(מעבר האינדוקציה) נניח שהטענה נכונה עד (כולל)
, ונוכיח שהיא נכונה ל
. עפ"י נוסחת הנסיגה, ![\displaystyle T(n) = \sum_{i = 1}^{n - 1} [T(i)] + \Theta(n) \ge \sum_{i = 1}^{n - 1} [T(i)] + c' \cdot n](http://upload.wikimedia.org/math/4/9/4/494125eee8b958643c76e22a615c3541.png)
עבור
כלשהו. לכן, עפ"י הנחת האינדוקציה,
.
עפ"י הנוסחה לטור הנדסי,
![\displaystyle \sum_{i = 1}^{n - 1} [c \cdot 1.5^i] + c' \cdot n =](http://upload.wikimedia.org/math/a/f/9/af9fe2b460eb8fd2afbd3ef264f74a82.png)



אם ניקח
, אז הביטוי האחרון גדול מ
.
(בסיס האינדוקציה) היות ש
, אז
, עבור
כלשהו. נפתור
, ונקבל
.
האינדוקציה, לכן, נכונה עבור
, החל מ
.
[עריכה] נוסחת נסיגה לאיחוד קבוצות זרות על פי גודל
[עריכה] שאלה
אנא הוכחה את המשפט הבא:
|
משפט: פתרון |
|
כדאי לדעת: נצטרך את פתרונה של בעיה זו כשנדבר על מבני נתונים לקבוצות זרות. |
[עריכה] תשובה
נוכיח באינדוקציה שקיים
כך ש(עבור
-ים מספיק גדולים)
.
(מעבר האינדוקציה) עפ"י נוסחת הנסיגה והנחת האינדוקציה,
![\displaystyle T(n) = \max_{i = 1, \ldots, n / 2}[T(i) + T(n - i) + \Theta(i)] \le](http://upload.wikimedia.org/math/0/a/c/0acb90a46ba15448d7800e22bc113667.png)
![\displaystyle \max_{i = 1, \ldots, n / 2}[c \cdot i \cdot \log(i) + c \cdot (n - i) \cdot \log(n - i) + c' \cdot i]](http://upload.wikimedia.org/math/6/8/a/68a4165e9bafd105cf3012d93f3f8949.png)
עבור קבוע
כלשהו.
נגזור את הביטוי שבתוך ה
, ונקבל 
נגזור את הביטוי פעם שניה, ונקבל ביטוי חיובי. מכאן ברור שמקסימום הביטוי הוא כאשר
.
כאשר
, אז



(בסיס האינדוקציה) נפתור: 
ונווכח שהדבר נכון עבור
גדול מספיק.
[עריכה] נוסחות נסיגה פשוטות
[עריכה] שאלה
מתארת את זמן הריצה של אלגוריתם כלשהו.
- אנא הוכח שפתרון נוסחת הנסיגה
הוא
. - אנא הוכח שפתרון נוסחת הנסיגה
הוא
.
|
הנחיות להלן הנחיות לסעיף הראשון:
|
[עריכה] תשובה
[עריכה] 1
כרגיל, מותר לנו לקבוע ש
עבור קבוע
כלשהו, וזאת משום ש
מתארת את זמן הריצה של אלגוריתם.
נוכיח ש
. ליתר דיוק, נוכיח באינדוקציה שקיים
כך ש
.
הוכחה: (בסיס האינדוקציה) עבור
, נקבל
, כלומר כל שצריך הוא לבחור
המקיים
.
(מעבר האינדוקציה) נניח שהטענה נכונה עד (כולל)
, ונוכיח שהיא נכונה עד (כולל)
. מהצבה בנוסחת הנסיגה, נקבל 
עבור
, נקבל
.
לסיכום, עבור
, הן בסיס האינדוקציה והן מעבר האינדוקציה מתקיימים.
נוכיח ש
. ליתר דיוק, נוכיח באינדוקציה שקיים
כך ש
.
הוכחה: (בסיס האינדוקציה) עבור
, נקבל
, כלומר כל שצריך הוא לבחור
המקיים
.
(מעבר האינדוקציה) נניח שהטענה נכונה עד (כולל)
, ונוכיח שהיא נכונה עד (כולל)
. מהצבה בנוסחת הנסיגה, נקבל 
עבור
, נקבל
.
לסיכום, עבור
, הן בסיס האינדוקציה והן מעבר האינדוקציה מתקיימים.
[עריכה] 2
עלינו להוכיח שפתרון נוסחת הנסיגה
הוא
. אפשר לעשות זאת בכסעיף הקודם, אך נבחר לעשות זאת (שרירותית) בדדוקציה. נרשום 

[עריכה] חסמים עליונים ותחתונים למספר נוסחאות נסיגה
[עריכה] שאלה
אנא מצא חסמים עליונים ותחתונים (כלומר, מסוג
ו
) טובים ככל האפשר לפונקציה
בכל אחד מהסעיפים הבאים. (
מתארת את זמן הריצה של אלגוריתם כלשהו.)
.
.
, כאשר
הוא קבוע כלשהו.
[עריכה] תשובה
[עריכה] 1
, עפ"י מקרה 1 של משפט המאסטר.
[עריכה] 2
נפרוש את הנוסחה: 




![\displaystyle \sum_{i = 1}^n[\log(i)] =](http://upload.wikimedia.org/math/8/c/7/8c7511b09db4c4ecfc8d7da200a0bfcf.png)

(את המעבר האחרון ראינו בטורים שימושיים.)
[עריכה] 3
נגדיר
. בלי הגבלת הכלליות, נניח ש
. להלן עץ הפרישה המתקבל:
בעץ זה, לכל אחד מהצמתים המצויירים שני ילדים: אם הצומת מתאים לגודל
, אז הילד השמאלי מתאים ל
, והימני מתאים ל
,. מכאן אפשר לראות שמסלולים שמאליים בעץ קצרים יותר ממסלולים ימניים, כי
. לא כל הרמות בעץ מלאות, אם כן, מה שמקשה מעט על ניתוח הסיבוכיות. נגדיר כ
את אורך המסלול השמאלי ביותר, וכ
את אורך המסלול הימני ביותר.
קל לראות שכל רמה מלאה בעץ תורמת
. הרמה הראשונה תורמת
; הרמה השניה תורמת
, הרמה השלישית תורמת
; וכו'. (אפשר להראות זאת פורמאלית באינדוקציה.)
אפשר לראות, לכן, ש
חסומה מלמטה ע"י
, וחסומה מלמעלה ע"י
. אבל היות ש
וכן
, אז
.
[עריכה] נוסחת נסיגה שאיננה מתאימה למשפט המאסטר
[עריכה] שאלה
מתארת את זמן הריצה של אלגוריתם כלשהו, והיא פתרונה של נוסחת הנסיגה
. בנוסחה זו,
מספר שלם גדול ממש מ1,
מספר גדול ממש מ1, ו
היא פונקציה המקיימת
, עבור
שלם גדול ממש מ1. אנא הוכח
.
[עריכה] תשובה
נשתמש בעץ פרישה. ברמה הראשונה יש צומת יחיד, והוא תורם
. ברמה השניה יש
צמתים, וכל אחד מהם תורם
. ברמה ה
(בהנחה שהרמה הראשונה היא ב
), יש
צמתים, וכל אחד מהם תורם
. אנו יודעים שגובה העץ הוא
. נפשט: ![\displaystyle \sum_{i = 0}^h\left[ a^i \cdot f\left(\frac{n}{b^i}\right) \right] =](http://upload.wikimedia.org/math/e/f/5/ef564a447ed58314a35c84115d2cf3fa.png)
![\displaystyle \sum_{i = 0}^h \left[ a^i \cdot \Theta\left( \left(\frac{n}{b^i}\right)^{\log_b(a)} \cdot \log^k
\left(\frac{n}{b^i}\right) \right) \right] =](http://upload.wikimedia.org/math/8/f/2/8f2c1457a4c689c36dc8d8be97bd3cfc.png)
![\displaystyle \Theta\left( \sum_{i = 0}^h \left[ a^i \cdot \frac {n^{\log_b(a)}} {b^{i \cdot \log_b(a)}} \cdot \log^k
\left(\frac{n}{b^i}\right) \right] \right) =](http://upload.wikimedia.org/math/1/0/0/1000006b9063cc1d288800df9a36bccb.png)
![\displaystyle \Theta\left( \sum_{i = 0}^h \left[ a^i \cdot \frac {n^{\log_b(a)}} {a^i } \cdot \log^k \left(\frac{n}{b^i}\right)
\right] \right) =](http://upload.wikimedia.org/math/e/0/0/e000e8d815a06164a807c1b63f0086e6.png)
![\displaystyle \Theta\left( n^{\log_b(a)} \sum_{i = 0}^h \left[ \cdot \log^k \left(\frac{n}{b^i}\right) \right] \right) =](http://upload.wikimedia.org/math/f/2/6/f26f84fcbf3e969ebf6343453e927052.png)
![\displaystyle \Theta\left( n^{\log_b(a)} \sum_{i = 0}^h \left[ \left( \log(n) -i \cdot \log(b) \right)^k \right] \right) =](http://upload.wikimedia.org/math/a/d/e/ade5772995080beeb9dc709452d67b8b.png)
![\displaystyle \Theta\left( n^{\log_b(a)} \log(b)^k \sum_{i = 0}^h \left[ \left( \frac{\log(n)}{\log(b)} -i \right)^k \right] \right)](http://upload.wikimedia.org/math/d/3/7/d372a8676d5fdaa630bd80fa0f82ac47.png)
נשים לב שעפ"י חסמי האינטגרלים לטורים,
.
[עריכה] נוסחת נסיגה קלה
[עריכה] שאלה
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
[עריכה] תשובה
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
[עריכה] נוסחת נסיגה מנחוסה
[עריכה] שאלה
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
[עריכה] תשובה
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
![\displaystyle T(n) = \max_{1 \le i \le n / 2}[T(i) + T(n - i) + \Theta(i)]](http://upload.wikimedia.org/math/7/5/e/75e46d34e1accf263e30c2de7cc8aa94.png)

כלשהו.
מתקיים
. אנא הסבר מדוע בהכרח
. אנא מצא תנאי על
. אנא הסבר מדוע בהכרח
. אנא הסבר מה התנאי על 