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





[עריכה] טרנזיטיביות
|
משפט: לכל |
הוכחה: דומה למה שראינו באדיטיביות.
[עריכה] שימוש בגבולות
|
משפט: לכל |
הוכחה: (1)
![\displaystyle \lim_{n \rightarrow \infty}[f(n)/g(n)] = 0 \Rightarrow](http://upload.wikimedia.org/math/e/5/7/e57fd2bb327ff3a3a906bd60e64ef175.png)




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

![\displaystyle \sum_{i = 1}^n[\Theta(i)]=](http://upload.wikimedia.org/math/7/f/9/7f922f0947a25b4eee166dbac641e3ea.png)


![\displaystyle \Theta\left(\sum_{i = 1}^n[i] \right)](http://upload.wikimedia.org/math/3/f/b/3fbfd16943fe82a6b3b14d51145ef781.png)
אבל
, מפני שזה טור חשבוני פשוט. לכן נקבל
. כלומר,
של פולינום ב
בעל דרגה 2. לסיכום, לכן, נקבל
.
[עריכה] סיכום
בחיפוש לינארי ובינרי ראינו דוגמות ראשונות של ניתוח אלגוריתמים. דף זה עסק בסדרי גדילה של פונקציות.
בהנתן אלגוריתם כלשהו, נוכל לשאול לגביו מספר שאלות, לדוגמה:
- מהו זמן הריצה של האלגוריתם במקרה הטוב ביותר?
- מהו זמן הריצה של האלגוריתם במקרה הגרוע ביותר?
- מהו זמן הריצה של האלגוריתם במקרה הממוצע? (לא נעסוק בכך בקורס זה, עם זאת).
לעתים נוכל לשאול שאלות מפורטות יותר אפילו:
- מהו זמן הריצה הטוב ביותר של חיפוש בינרי בהנחה שהאיבר נמצא במערך?
- מהו זמן הריצה הגרוע ביותר של חיפוש לינארי בהנחה שהאיבר אינו נמצא במערך?
בכל פעם שאנו מקבלים אלגוריתם ושאלה מסוג זה, התשובה הינה פונקציה (מתמטית) של
, גודל הקלט. נוכל להשתמש בקבוצות סדרי הגדילה שראינו כאן כדי לסווג את הפונקציה (המתמטית). כך לדוגמה, נוכל להגיד על אלגוריתם כלשהו "הוא פועל במקרה הגרוע ביותר בערך כמו פונקציה לינארית", או "הוא פועל במקרה הטוב ביותר פחות מאיזושהי פונקציה שורשית".
|
כדאי לדעת: במציאות, השאלות המעניינות ביותר לגבי אלגוריתמים הן לרוב זמן הריצה הגרוע והממוצע שלהם (זמן הריצה הטוב ביותר שלהם כמעט אף פעם לא מעניין). בקורס זה (שאינו מניח ידע בהסתברות), ננתח כמעט תמיד את זמן הריצה הגרוע של אלגוריתמים. |
| הפרק הקודם: חיפוש לינארי ובינרי |
סדרי גדילה תרגילים |
הפרק הבא: נוסחאות נסיגה |


? כן, מפני שעבור
,
.
שייכת ל
? כן, מפני שעבור
,
.
,
? אין לכך חשיבות: לפי הגדרת
שייכת ל
, כך שמתקיים
. אז
, שאינו נכון.
. הזכר שמשמעות
הנה קבוע חיובי כלשהו, ולכן ביטוי זה הנו למעשה
, עבור
. האם ביטוי זה
, עבור
. לרוב רושמים זאת כ
.

? כן, מפני שעבור
.
? כן, משום שעבור
.
.
? לא משום שנדרש זמן
עבור קלט בגודל 1, והפונקציות שנטפל בהן הנן מונוטוניות לא יורדות.

? כן, משום שעבור
? כן משום שהיא
לבין 


.
קיים, ו
, אז:


, ו
, אז מה קובע את סדר הגדילה בין
ו
?
