Branch and bound — שיטת הענפים והגבולות
שיטת הענפים והגבולות (באנגלית: Branch and Bound, בקיצור B&B או BnB) היא פרדיגמה כללית לבניית אלגוריתמים מדויקים לפתרון בעיות אופטימיזציה דיסקרטית וקומבינטורית, ובפרט בעיות NP-קשות[1]. השיטה מהווה אסטרטגיית סריקה מכוונת, שבה כל קבוצת הפתרונות האפשריים מחולקת ברצף לתת-קבוצות (ענפים), ועבור כל אחת מהן מחושבות הערכות (גבולות) לערך פונקציית המטרה. הערכות אלו מאפשרות להשמיט (לגזום) אותן תת-קבוצות שבוודאות אינן מכילות פתרונות אופטימליים, מה שמצמצם משמעותית את מרחב החיפוש[2].
השיטה הוצעה לראשונה על ידי א. לנד וא. דויג בשנת 1960 לפתרון בעיות תכנות שלמות[3]. מאז הפכה לאחד הגישות הבסיסיות ביותר בחקר פעולות ובמדעי המחשב. המאפיין המרכזי של השיטה הוא גמישותה: היא אינה אלגוריתם ספציפי, אלא מסגרת (framework) אסטרטגית ברמה גבוהה, המותאמת למבנה הבעיה הנפתרת.
מרכיבים מרכזיים של השיטה
בבסיס השיטה עומדות שלוש פעולות יסודיות, המיושמות על תת-קבוצות של מרחב הפתרונות, המאורגנות כעץ חיפוש.
- ענפים (באנגלית: Branching) — תהליך החלוקה הרקורסיבית של קבוצת הפתרונות האפשריים הנוכחית למספר תת-קבוצות קטנות יותר, בדרך כלל זרות . כל תת-קבוצה כזו מתאימה לתת-בעיה חדשה ומיוצגת כצומת בן בעץ החיפוש. לדוגמה, בבעיות תכנות שלמות, הענפים נוצרים לרוב לפי משתנה בעל ערך שבור בפתרון הרלקסציה הליניארית.
- חישוב גבולות (באנגלית: Bounding) — עבור כל צומת בעץ החיפוש (כלומר, עבור כל תת-בעיה) מחושבת הערכה לערך פונקציית המטרה. עבור בעיית מינימום, זוהי גבול תחתון (lower bound), המהווה הערכה מובטחת מלמטה לכל פתרון בתת-קבוצה הנתונה. לרוב הערכה זו מתקבלת על ידי פתרון הרלקסציה של תת-הבעיה המקורית — גרסה מפושטת שבה חלק מהאילוצים הקשים (כגון אילוץ שלמות) מוסרים זמנית. הנפוצה ביותר היא רלקסציה ליניארית (LP).
- גיזום (באנגלית: Pruning) — תהליך הסרת צמתים (ועצי המשנה התואמים להם) מהשיקול, שבוודאות אינם יכולים להכיל פתרון אופטימלי. צומת נגזם באחד מהמקרים הבאים:
- גיזום לפי גבול: הגבול התחתון של הצומת הנתון אינו טוב יותר (כלומר, גדול או שווה לבעיית מינימום) מערכו של הפתרון האפשרי הטוב ביותר שנמצא עד כה, המכונה רקורד (incumbent).
- גיזום לפי אפשרות: פתרון הרלקסציה של הצומת אפשרי לבעיה המקורית (לדוגמה, כל המשתנים שלמים). פתרון זה מושווה לרקורד הנוכחי, ואם הוא טוב יותר, הרקורד מתעדכן. אין צורך בהמשך ענפים מצומת זה.
- גיזום לפי חוסר פתרון: תת-הבעיה התואמת לצומת אינה מכילה פתרונות אפשריים.
אלגוריתם כללי
האלגוריתם המוכלל של שיטת הענפים והגבולות לבעיית מינימום ניתן לתיאור בשלבים הבאים:
- אתחול: מציאת פתרון אפשרי ראשוני (לדוגמה, בעזרת היוריסטיקה) וקביעת ערכו כגבול עליון ראשוני (רקורד) . יצירת תור של צמתים פעילים המכיל את הצומת השורש (הבעיה המקורית).
- לולאה ראשית: כל עוד התור אינו ריק:
- בחירת צומת מתוך בהתאם לאסטרטגיית החיפוש (לדוגמה, חיפוש לעומק או לפי הערכה הטובה ביותר).
- פתרון הרלקסציה לצומת זה, תוך קבלת גבול תחתון .
- גיזום הצומת, אם .
- אם פתרון הרלקסציה אפשרי לבעיה המקורית, עדכון הרקורד: .
- אם הצומת לא נגזם והפתרון אינו אפשרי, ביצוע ענפים, חלוקתו לצמתים בנים והוספתם לתור .
- סיום: כאשר התור מתרוקן, האלגוריתם מסתיים. הפתרון שנמצא, המתאים לרקורד , הוא האופטימום הגלובלי.
תכונות ומשפטים מרכזיים
- נכונות והתכנסות: האלגוריתם מבטיח מציאת פתרון אופטימלי גלובלי במספר סופי של צעדים, בתנאי שקבוצת הפתרונות האפשריים סופית ושנוהל הענפים הוא מתכנס (כלומר, שבחלוקה רקורסיבית תת-הקבוצות "מתכווצות" לנקודות)[4].
- אסטרטגיית חיפוש: יעילות האלגוריתם תלויה מאוד באסטרטגיית בחירת הצומת הבא לענפים (לדוגמה, חיפוש לעומק, חיפוש לרוחב, חיפוש לפי ההערכה הטובה ביותר) ובבחירת המשתנה לענפים. פותרים מודרניים משתמשים לרוב באסטרטגיות היברידיות[5].
דוגמאות
- בעיית תכנות שלמות: יישום קלאסי של השיטה. כרלקסציה משמשת תכנות ליניארי. הענפים נוצרים לפי משתנה שבור , תוך יצירת שתי תת-בעיות עם אילוצים נוספים ו-.
- בעיית הסוכן הנוסע: מרחב הפתרונות הוא כל מחזורי ההמילטון האפשריים בגרף. הענפים יכולים להתבצע לפי קשתות (הכללת/הסרת קשת מהמסלול). כגבולות תחתונים ניתן להשתמש בפתרונות בעיות פשוטות יותר, כגון בעיית ההקצאה או בניית עץ פורש מינימלי[6].
מושגים קשורים ויישומים
- שיטת הענפים והחתכים (Branch-and-Cut): שיטה היברידית המשלבת B&B עם שיטת המישורים החותכים. בכל צומת של עץ החיפוש, בנוסף לפתרון הרלקסציה, נוצרים אי-שוויונות נוספים (חתכים) המחזקים את הגבול התחתון, מה שמוביל לגיזום יעיל יותר של ענפים.
- חיפוש עם נסיגה (Backtracking): שיטת הענפים והגבולות ניתן לראות כהכללה של אלגוריתם זה לבעיות אופטימיזציה.
- קיצוץ אלפא-בטא: אנלוגיה מושגית המשמשת בעצי משחק לגיזום ענפים שהפסדם ודאי.
ראו גם
- תכנות שלמות
- אופטימיזציה קומבינטורית
- בעיית הסוכן הנוסע
- בעיה NP-קשה
- שיטת הסימפלקס
הערות
[1] [2] [3] [4] [5] [6] </references>
- ↑ 1.0 1.1 Wikipedia contributors. (2025). Branch and bound. In Wikipedia, The Free Encyclopedia. Retrieved 2025-10-26, from https://en.wikipedia.org/wiki/Branch_and_bound
- ↑ 2.0 2.1 Wikipedia contributors. (2023). Метод ветвей и границ. In Русская Википедия. Retrieved 2025-10-26, from https://ru.wikipedia.org/wiki/Метод_ветвей_и_границ
- ↑ 3.0 3.1 Land, A. H.; Doig, A. G. (1960). An automatic method of solving discrete programming problems. Econometrica, 28(3), 497–520. DOI: 10.2307/1910129. URL: https://www.jstor.org/stable/1910129
- ↑ 4.0 4.1 Conitzer, V. (2008). Solving (mixed) integer programs using branch and bound. Duke University, Department of Computer Science. URL: https://courses.cs.duke.edu/spring08/cps296.2/branch_and_bound.pdf
- ↑ 5.0 5.1 Maudet, G.; Danoy, G. (2024). Search Strategy Generation for Branch and Bound Using Genetic Programming. arXiv preprint arXiv:2412.09444. DOI: 10.48550/arXiv.2412.09444. URL: https://arxiv.org/abs/2412.09444
- ↑ 6.0 6.1 Little, J. D. C.; Murty, K. G.; Sweeney, D. W.; Karel, C. (1963). An Algorithm for the Traveling Salesman Problem. Operations Research, 11(6), 972–989. DOI: 10.1287/opre.11.6.972. URL: https://dspace.mit.edu/bitstream/handle/1721.1/46907/branchboundmetho00litt.pdf