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

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

בדיוק כמו ב, גם משמשת לשני דברים: הקבוצה , או איבר הקבוצה .
שלוש הדוגמאות הקודמות נכתבות בד"כ כ, , ו.
הקבוצה
הקבוצה הנה החיתוך של ו. תבנית:מבנה תבנית

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