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





נתמודד עם שתי הבעיות כך:
- שגיאות עיגול - מבעיה זו פשוט נתעלם. (בכלל, בנושא זה של נוסחאות נסיגה נתעלם משגיאות עיגול.) למעשה, אם נקבל נוסחה כגון
, אז נהפוך אותה ל
. - תנאי עצירה - כאן נקבע איזשהו ארגומנט עצירה כרצוננו, נניח 1 (או 2, או 1000), ונוכיח את הטענה החל מאותו ארגומנט עצירה. בעשותנו זאת, נוכל להסתמך על כך ש
(או
, או
).
|
עכשיו תורך:
|
[עריכה] הגישות לפתרון
ישנן שתי שיטות (עיקריות) לפתור נוסחאות נסיגה:
- דדוקציה - פורשים את הביטוי, מוצאים חוקיות, ומוכיחים את החוקיות.
- לעתים קרובות כדאי לבצע את הפרישה באופן גרפי. נראה זאת בפרישה.
- ישנן משפחות כלליות למדי של נוסחאות נסיגה, שפרישתן תניב אותה תוצאה. נראה זאת במשפט המאסטר.
- אינדוקציה - מנחשים את התוצאה, ומוכיחים באינדוקציה שהיא אכן נכונה. נראה זאת באינדוקציה.
[עריכה] פרישה
בשיטה זו פורסים את הביטוי יותר ויותר, ומנסים למצא חוקיות. לרוב כדאי לפרוס את הביטוי באופן גראפי, ולפעמים קוראים לזאת "שיטת העץ". פורשים את הביטוי לרמות, מוצאים את הסכום של כל רמה, ומסכמים.
|
דוגמה: נפרוש את נוסחת הנסיגה מהפרישה ברור שהתוצאה היא |
|
דוגמה: נפרוש את נוסחת הנסיגה מהפרישה ברור שהתוצאה היא |
כפי ששתי הדוגמאות האחרונות הראו, שימושי מאד לחשב גבהים של עצים המתאימים לנוסחאות נסיגה. להלן משפט שימושי החל לגבי סוגים נפוצים של נוסחאות נסיגה:
|
משפט: נתון |
בעזרת שתי הפרישות שראינו והמשפט האחרון, נוכל לפתור את נוסחאות הנסיגה האחרונות שראינו.
|
דוגמה: אם הוכחה: ראינו שאם |
|
דוגמה: אם הוכחה: ראינו שאם
כל שנותר הוא לשים לב ש
|
[עריכה] משפט המאסטר
לאחר שמבצעים פרישות רבות, מגיעים למסקנה שיש משפחות של נוסחאות נסיגה שפרישתן תוביל לאותם דברים. המשפט הבא נקרא בשם (היומרני במקצת) "משפט המאסטר", מפני שהוא פותר נוסחאות נסיגה רבות. אפשר להוכיח אותו בעזרת הפרישות שראינו ומעט אלגברה פשוטה.
|
משפט: נתון |
הנה דוגמה לשימוש במשפט המאסטר.
|
דוגמה: הוכח שאם
|
|
שימו לב: משפט המאסטר חל אך ורק על נוסחאות מהצורה |
[עריכה] אינדוקציה
משתמשים לרוב באינדוקציה כאשר יודעים מה אמור להיות הפתרון (לדוגמה, שאלה שמבקשת להוכיח פתרון ספיציפי, או נוסחת נסיגה דומה לאחת שכבר פתרנו).
|
דוגמה: נוכיח שאם הוכחה: נראה (באינדוקציה) שקיימים (מעבר האינדוקציה) נניח שהטענה נכונה עד (כולל)
(בסיס האינדוקציה) ננסה להראות שהטענה נכונה עבור
כאן נתקלנו בבעיה, כי ננסה שוב.(בסיס האינדוקציה) ננסה להראות שהטענה נכונה עבור
לסיכום, הוכחנו את הטענה לכל |
|
דוגמה: נוכיח שאם הוכחה: נראה (באינדוקציה) שקיימים (מעבר האינדוקציה) נניח שהטענה נכונה עד (כולל)
(בסיס האינדוקציה) ננסה להראות שהטענה נכונה עבור כלומר, בסיס האינדוקציה יחזיק אם נבחר |
| הפרק הקודם: סדרי גדילה |
נוסחאות נסיגה תרגילים |
הפרק הבא: מציאת סיבוכיות פסוודו-קוד |
מתארת את זמן הריצה של אלגוריתם (או חלקו) על קלט בגודל
. נוסחת נסיגה על
עבור ערכי
קטנים מ
הוא מספר שלם חיובי, ו
מתארת את זמן הריצה של אלגוריתם כלשהו על קלט בגודל
?
, כאשר
הוא גובה העץ. נוכל לפתור את התרגיל ברגע שנדע את גובה העץ (מיד נעסוק בכך).
.
, כאשר
, עבור שלם
וקבוע
כלשהם. יהי
.
.
, כאשר
.
.![\displaystyle T(n) = \sum_{i = 1}^h[\Theta(2^{i - 1})] =](http://upload.wikimedia.org/math/3/5/8/3580598d3472aa19ba3589269eb4b555.png)
![\displaystyle \Theta(\sum_{i = 1}^h[2^{i - 1}]) =](http://upload.wikimedia.org/math/d/2/b/d2bd15c02337bd14b0e3201d7db809bb.png)

. נקבל, לכן,


,
. נקבל
הוא פולינום ב
. נובע, לכן, מ


,
, ו
. נבחר
. אז
. מכאן אפשר לראות שמקרה 1 מתקיים, ולכן
(מה שמתאים למה שראינו לפני כן).
, אז
.
,
, כך שלכל
,
.
, ונראה שהיא נכונה גם עבור 



שנבחר, הביטוי האחרון קטן או שווה ל
.
:
.
חיובי ממש (בקורס זה).
ו
:

.
, עבור איזה
שנבחר.
, אז
.
.



.
. כאן נתקלנו בבעיה, כי 

. לסיכום, הוכחנו את הטענה לכל
שנבחר.
