הרצאה 5

Local Search
1
‫מה שונה בחיפוש לוקלי?‬
‫‪ IDA* ‬ו *‪ A‬מחפשים מסלול הכי זול אל המטרה‬
‫‪ ‬לפעמים בעיית החיפוש היא אחרת‪:‬‬
‫‪ ‬נתון תיאור של המטרה‬
‫‪ ‬עלינו למצוא מצב שמתאים לתיאור זה‬
‫‪ ‬המסלולים שאנחנו רואים בתהליך החיפוש אינם חשובים‬
‫‪ ‬במקרים אלו ניתן להשתמש בחיפוש לוקלי‬
‫‪ ‬דוגמה‪:‬‬
‫‪ ‬איך לחבר לוח זמנים במכון לב‪ ,‬כך שלא תהיינה סתירות‬
‫‪ ‬תיאור של מטרה‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫לכל הרצאה\מעבדה יש חדר ומועד‬
‫בכל נקודת זמן יש לכל היותר הרצאה\מעבדה אחת בכל חדר‬
‫אף מרצה\מתרגל\סטודנט לא יכול להיות בשני חדרים בו‪-‬זמנית‬
‫‪ ‬מצב‪ :‬השמה של חדר ומועד לכל ההרצאות ולכל המעבדות‬
‫‪ ‬שימו לב שלא מעניין אותנו המסלול (כלומר‪ ,‬כיצד הגענו למטרה)‬
‫‪2‬‬
‫כיצד חיפוש לוקלי פועל‬
‫‪ ‬חיפוש לוקלי פועל באופן הבא‪:‬‬
‫‪ ‬מתחילים ממצב כלשהוא‬
‫‪ ‬מנסים לשפר את המצב כדי שהוא יהיה יותר דומה למצב המטרה‬
‫‪ ‬השיפורים האלו הם "תיקונים מקומיים"‬
‫‪ ‬יתרונות של חיפוש לוקלי‪:‬‬
‫‪ ‬חסכוני בזיכרון‬
‫‪ ‬לפעמים אפשר לפתור מהר מאד בעיות ש *‪ IDA‬ו *‪ A‬היו דורשים‬
‫זמן רב לפתור‬
‫‪3‬‬
‫מה נלמד על חיפוש לוקלי‬
‫‪ ‬היום נלמד שני אלגוריתמים לחיפוש לוקלי‪:‬‬
‫‪( Hill-Climbing ‬טיפוס גבעה)‬
‫‪Simulated Annealing ‬‬
‫‪4‬‬
5
‫הרעיון של חיפוש ‪Hill-Climbing‬‬
‫‪ ‬נדמיין לעצמנו שהמטרה שלנו היא לטפס לראש הגבעה‬
‫‪ ‬רק יש בעיה אחת‪ :‬יש ערפל סמיך ואי אפשר לראות מאומה‬
‫‪ ‬הדבר היחיד שאנחנו יכולים לעשות זה לגעת בקרקע סביבנו כדי‬
‫להבין באיזה כיוון יש עליה ובאיזה כיוון יש ירידה‬
‫‪6‬‬
‫חיפוש ‪ – Hill-Climbing‬אלגוריתם בסיסי‬
‫‪7‬‬
‫דוגמה‪ :‬בעיית שמונה מלכות‬
‫‪ ‬יש למקם שמונה מלכות שחמט על לוח שחמט כך שאף אחת‬
‫מהן לא תאיים על חברותיה‬
‫‪ 8‬אפשר לנסות לפתור את הבעיה לבד‪:‬‬
‫‪http://www.brainmetrix.com/8-queens/‬‬
‫הפעלת ‪ Hill-Climbing‬עבור בעיית שמונה מלכות‬
‫‪ ‬מצב התחלתי‪ :‬נשים כל מלכה בעמודה שונה‬
‫‪ ‬כל פעם ננסה להזיז מלכה אחת לשורה אחרת באותה עמודה‬
‫‪ ‬כמה מהלכים כאלו קיימים?‬
‫‪ ‬יוריסטיקה‪ :‬כמה זוגות מלכות מאיימות זו על זו‬
‫‪ ‬דוגמה של היוריסטיקה והמהלכים‪:‬‬
‫‪ ‬יוריסטיקה בדוגמה זאת מציגה מרחק מהגובה של ראש הגבעה‬
‫‪h=17‬‬
‫‪9‬‬
‫הפעלת ‪ Hill-Climbing‬עבור בעיית שמונה מלכות‬
‫‪ ‬בתמונות הבאות נראה פתרון של בעיית ארבע מלכות עד הסוף‬
‫‪10‬‬
‫האם ‪ Hill-Climbing‬בסיסי תמיד פותר?‬
‫‪ ‬האם חיפוש ‪ Hill-Climbing‬בסיסי תמיד פותר את הבעיה?‬
‫‪ ‬לא! ‪‬‬
‫‪ ‬אחת הבעיות היא שלפעמים מגיעים למצב כזה‪:‬‬
‫‪h=1‬‬
‫‪ ‬אין אפשרות לשפר מצב זה‬
‫‪ 11‬מצב כזה נקרא מקסימום לוקלי (‪)local maximum‬‬
‫חסרונות של חיפוש ‪Hill-Climbing‬‬
‫‪ ‬הוסבר בהרצאה‪:‬‬
‫‪ ‬בנוסף‪ ,‬לפעמים מספר המהלכים (פקטור הסתעפות‪ ,‬זוכרים?)‬
‫הוא גדול מדי ואין אפשרות למצוא כיוון לעליה מהירה ביותר‬
‫‪ ‬לכן מחקר רב הוקדש לפיתוח גרסאות יותר מתוחכמות של‬
‫‪Hill-Climbing‬‬
‫‪ ‬עכשיו נראה מספר פתרונות לחסרונות הנ"ל‬
‫‪12‬‬
‫מקסימום לוקלי וכתף‬
‫‪ ‬אפשר לנסות מהלכים שאינם מעלים אותנו‬
‫‪ ‬לדוגמה‪ ,‬בבעיית שמונה מלכות‪ ,‬אפשר לנסות מהלכים שלא גורמים‬
‫ליוריסטיקה להיות קטנה יותר‬
‫‪ ‬מהלכים כאלו נקראים אופקיים‬
‫‪ ‬זה פותר את בעיית הכתף‪ ,‬אבל לא תמיד‬
‫‪Hill-Climbing with Random Restart ‬‬
‫‪ ‬כל פעם כשלא יכולים לשפר את המצב‪ ,‬מתחילים מחדש ממצב אקראי‬
‫‪ ‬אפשר גם לאתחל אחרי זמן מסוים (כלומר‪ ,‬אחרי שניסינו מספר מסוים‬
‫של מהלכים אופקיים)‬
‫‪ ‬אלגוריתם זה הוא פתרון מצוין עבור בעיית המלכות‬
‫‪‬‬
‫אפילו את בעיית ‪-3,000,000‬מלכות אפשר לפתור בפחות מדקה‬
‫‪ ‬אבל עדיין אין גרסה שתתאים לכל הבעיות‬
‫‪13‬‬
‫פקטור הסתעפות גבוה‬
‫‪ First Choice Hill-Climbing ‬הנו אפקטיבי כשיש הרבה‬
‫מהלכים (פקטור הסתעפות גדול) ואין אפשרות למצוא את‬
‫המהלך המשפר את המצב בצורה הגדולה ביותר‬
‫‪ ‬אז אפשר לייצר מהלכים באופן אקראי‬
‫‪ ‬אנחנו בוחרים במהלך הראשון שמביא למצב טוב יותר מהמצב‬
‫הנוכחי‬
‫‪ ‬אפשר גם למצוא מספר מהלכים כאלו ואז לבחור את הטוב ביותר‬
‫מביניהם‬
‫‪14‬‬
15
‫חיפוש ‪Simulated Annealing‬‬
‫‪ ‬האלגוריתם מנסה גם את המהלכים ה"גרועים"‬
‫‪ ‬אבל ההסתברות של מהלך כזה תקטן עם הזמן‬
‫‪ ‬מכנים את‬
‫‪16‬‬
‫ההסתברות (כאן אנו מפשטים) חום (המושג בא מתחום ממטלורגיה)‬
‫הערות סיכום על ‪Simulated Annealing‬‬
‫‪ Simulated Annealing ‬הנו אלגוריתם מצוין שהשתמשו בו‬
‫בהצלחה לצורכי‪:‬‬
‫‪ ‬חיבור לו"ז של טיסות‬
‫‪ ‬תכנון ‪( VLSI‬איך לשים אלפי רכיבים וביניהם חיבורים בשבב אחד)‬
‫‪ ‬חשוב להבין ש ‪ Simulated Annealing‬לא מבטיח שנמצא‬
‫מקסימום גלובלי‬
‫‪17‬‬
Constraint-Satisfaction Problems (CSP)
18
‫‪ CSP‬בכלליות‬
‫‪ IDA* ‬ו *‪ A‬פתרו בעיות על ידי ייצור מצבים (בסדר מסוים)‬
‫ובדיקה האם המצב הנוכחי הוא המטרה‬
‫‪ ‬אלגוריתמים אלו לא התייחסו למבנה פנימי של כל מצב‬
‫‪ ‬כל מה שעניין את האלגוריתם היה מחיר של המצב‬
‫‪ ‬בבעיות סיפוק אילוצים ( ‪Constraint Satisfaction‬‬
‫‪ )Problems, CSP‬אנו משתמשים בייצוג סטנדרטי של מצבים‬
‫‪ ‬זה מאפשר לאלגוריתם הפותר ‪ )CSP solver( CSP‬להשתמש‬
‫במידע על מצבים כדי לחתוך ענפים גדולים של עץ החיפוש‬
‫‪19‬‬
‫הגדרה של ‪CSP‬‬
‫‪ ‬בעיית ‪ CSP‬מורכבת משלושה מרכיבים‪:‬‬
‫‪ ‬קבוצת המשתנים )‪X=(X1,X2,…,Xn‬‬
‫‪ ‬לכל משתנה ‪ Xi‬יש תחום ‪ – Di‬קבוצה של ערכים שהמשתנה‬
‫יכול לקבל‬
‫‪ ‬רשימת אילוצים‬
‫‪ ‬אילוצים יכולים להיות עבור אחד‪ ,‬שניים או יותר משתנים‬
‫‪ ‬דוגמאות‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪20‬‬
‫‪X1≥5‬‬
‫‪X2+10≠X10‬‬
‫‪X1+X2≤X3‬‬
‫דוגמת ‪ :CSP‬בעיית ‪coloring‬‬
‫‪ ‬נתונה מפה של אוסטרליה עם שבע הטריטוריות שלה‬
‫‪ ‬הבעיה היא לשים אחד משלושה צבעים‪ :‬אדום‪ ,‬ירוק וכחול לכל‬
‫טריטוריה‪ ,‬כך ששתי טריטוריות שכנות תמיד יקבלו צבעים‬
‫שונים‬
‫‪21‬‬
coloring ‫ בעיית‬:CSP ‫דוגמת‬
X={WA, NT, Q, NSW, V, SA, T} :‫ קבוצת המשתנים‬
{red, green, blue} ‫ לכל משתנה יש תחום‬
C={SA≠WA, SA ≠NT, SA ≠Q, SA ≠NSW, :‫ אילוצים‬
SA ≠V, WA ≠NT, NT ≠Q, Q ≠NSW, NSW ≠V}
22
‫מה אנחנו מרוויחים\מפסידים כשמשתמשים ב ‪CSP‬‬
‫‪ ‬יתרונות‪:‬‬
‫‪ ‬אלגוריתם הפותר ‪ CSP‬הנו כללי‬
‫‪‬‬
‫‪‬‬
‫כלומר‪ ,‬אנחנו צריכים לייצג את הבעיה שלנו במושגים של ‪( CSP‬משתנים עם‬
‫תחומים‪ ,‬אילוצים)‬
‫אין צורך במימוש תוכנה עבור הבעיה הספציפית‬
‫‪ ‬אלגוריתם הפותר ‪ CSP‬יכול להיות מהיר יותר מאלגוריתם חיפוש אחר‬
‫‪‬‬
‫דוגמה‪ :‬אם אלגוריתם הפותר ‪ CSP‬מנסה צבע כחול עבור ‪ ,SA‬אז הוא לא‬
‫ינסה כחול עבור השכנות שלו‪ .‬עבורם יישארו ‪ 25=32‬קומבינציות לנסות‬
‫במקום ‪35=243‬‬
‫‪ ‬מפסידים‪:‬‬
‫‪ ‬שימוש ביוריסטיקות עבור הבעיה הספציפית‬
‫‪23‬‬
24
)‫ (גישוש נסוג‬Backtracking Search
25
Backtracking ‫דוגמת‬
26
Backtracking ‫דוגמת‬
27
Backtracking ‫דוגמת‬
28
Backtracking ‫דוגמת‬
29
Backtracking Search
30
‫משפרי ביצוע בחיפוש ‪Backtracking‬‬
‫‪ ‬משפרי ביצוע בחיפוש ‪ Backtracking‬קשורות לשאלה‪:‬‬
‫מה הוא האופן לבצע שלוש דברים באלגוריתם כדי למצוא‬
‫פתרון מהיר עד כמה שניתן‪:‬‬
‫‪ – SELECT_UNUSIGNED_VARIABLE .1‬לאיזה משתנה‬
‫לשים ערך‬
‫‪‬‬
‫דרך טובה אחת היא )‪– Minimum remaining values (MRV‬‬
‫לבחור משתנה בעל תחום נוכחי קטן ביותר‬
‫בחירה‬
‫ברורה‬
‫‪31‬‬
‫שני‬
‫משתנים‬
‫שקולים‬
‫כולם‬
‫שקולים‬
)‫ (גישוש נסוג‬Backtracking Search
32
‫משפרי ביצוע בחיפוש ‪Backtracking‬‬
‫‪ ‬משפרי ביצוע בחיפוש ‪ Backtracking‬קשורות לשאלה‪:‬‬
‫מה הוא האופן לבצע שלוש דברים באלגוריתם כדי למצוא‬
‫פתרון מהיר עד כמה שניתן‪:‬‬
‫‪ – ORDER_DOMAIN_VALUES .2‬באיזה סדר לנסות את‬
‫הערכים עבור המשתנה שבחרנו‬
‫‪‬‬
‫דרך אחת טובה היא )‪ – Least Constrained Value (LCV‬לבחור‬
‫ערך שגורם למספר אילוצים הקטן ביותר עבור המשתנים הנשארים‬
‫קיימת בחירה אחד‬
‫עבור ‪SA‬‬
‫אין שום בחירה‬
‫עבור ‪SA‬‬
‫‪33‬‬
)‫ (גישוש נסוג‬Backtracking Search
34
‫משפרי ביצוע בחיפוש ‪Backtracking‬‬
‫‪ ‬משפרי ביצוע בחיפוש ‪ Backtracking‬קשורות לשאלה‪:‬‬
‫מה הוא האופן לבצע שלוש דברים באלגוריתם כדי למצוא‬
‫פתרון מהיר עד כמה שניתן‪:‬‬
‫‪ – BACKTRACK .3‬ערך של איזה משתנה לשנות?‬
‫‪‬‬
‫‪35‬‬
‫כנראה שזה צריך להיות משתנה שתרם לבעיה‬
‫העברת אילוצים‬
‫‪36‬‬
‫העברת אילוצים‬
‫‪ ‬נתבונן בדוגמה‪ :‬אם ‪ SA‬מקבלת‬
‫"כחול"‪ ,‬אזי השכנות שלה יכולות‬
‫לקבל רק אדום וירוק‬
‫‪ ‬כלומר‪ ,‬התחומים שלהם נהיו קטנים יותר‬
‫‪ ‬העברת אילוצים (‪Constraint‬‬
‫‪ )Propagation, CP‬הנה טכניקת‬
‫הקטנת התחומים של המשתנים בעזרת‬
‫שימוש באילוצים הקיימים‬
‫‪ CP ‬מייצרת בעיית ‪ CSP‬קלה יותר‬
‫לפתור בעלת משתנים ופתרונות כמו‬
‫בבעיה המקורית‬
‫‪ ‬נלמד כמה סוגים של ‪CP‬‬
‫‪37‬‬
‫גרף האילוצים‬
‫‪ ‬השקופית הזו והשקופית הבאה הן הכנה ללמוד על ‪CP‬‬
‫‪ ‬גרף האילוצים הנו ייצוג גרפי של משתנים ואילוצים של אחד או‬
‫של שני משתנים‬
‫‪ ‬קדקודים מקבילים למשתנים וקשתות מקבילות לאילוצים‪ :‬יש‬
‫קשת בין שני קדקודים עם יש אילוץ עבור קדקודים אלו‬
‫‪ ‬דוגמה‪:‬‬
‫‪38‬‬
‫תכונה של ‪ CSP‬לגבי אילוצים של שני משתנים‬
‫‪ ‬כל בעיית ‪ CSP‬אפשר לתרגם לבעיית ‪ CSP‬אחרת‬
‫(יכולה להיות קבוצת משתנים אחרת)‪ ,‬כך ש‪:‬‬
‫‪ ‬בבעיית ‪ CSP‬החדשה יש רק אילוצים של אחד או שני‬
‫משתנים‬
‫‪ ‬בהינתן פתרון לבעיית ‪ CSP‬החדשה‪ ,‬קל לחשב פתרון‬
‫לבעיית ‪ CSP‬המקורית‬
‫‪39‬‬
‫‪ :CP‬עקביות קדקודים‬
‫‪ ‬עקביות קדקודים (‪ )node consistency‬הנו‬
‫טכניקת ‪ CP‬שפועלת באופן הבא‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪40‬‬
‫עבור כל אילוץ של משתנה אחד‪ ,‬יש להקטין את תחום המשתנה‬
‫כך שיישארו רק ערכים שמתאימים לאילוץ‬
‫דוגמה‪ :‬אם אנשים ב ‪ SA‬לא אוהבים צבע אדום‪ ,‬אזי קיים‬
‫אילוץ }‪{SA≠red‬‬
‫אנחנו יכולים להקטין את תחום ‪:SA‬‬
‫}‪DSA={green, blue‬‬
‫‪ :CP‬עקביות קשתות‬
‫‪ ‬עקביות קשתות (‪ )arc consistency‬הנו טכניקת‬
‫‪ CP‬שפועלת באופן הבא‪:‬‬
‫‪ ‬עבור כל אילוץ של שני משתנים‪ ,‬יש להקטין את תחום שניהם‪ ,‬כך‬
‫שעבור כל ערך של משתנה אחד יהיה לפחות ערך אחד אפשרי‬
‫(עקבי עם האילוץ) של המשתנה השני‬
‫‪ ‬דוגמה‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪41‬‬
‫קיימים משתנים ‪ X‬ו ‪ Y‬עם אותו התחום }‪{0, 1, 2, …, 10‬‬
‫קיים אילוץ ‪Y=X2‬‬
‫בעזרת ‪ arc consistency‬נוכל להקטין את תחומי המשתנים‪:‬‬
‫}‪DX={0,1,2,3‬‬
‫}‪DY={0,1,4,9‬‬
‫מתי מבצעים ‪?CP‬‬
‫‪ ‬קיימות שתי אפשרויות לגבי נקודת הביצוע של‬
‫‪:CP‬‬
‫‪ ‬לפני תחילת החיפוש (בעזרת האלגוריתם שנראה‬
‫בשקופית הבאה)‬
‫‪‬‬
‫‪‬‬
‫לפעמים הבעיה נפתרת בצורה זו ואין צורך בחיפוש‬
‫כלומר‪ ,‬לכל משתנה אפשר לשים כל ערך מהתחום שלו‬
‫המוקטן על ידי ביצוע ‪ CP‬והשמה זאת תהיה עקבית עם כל‬
‫האילוצים‬
‫‪ ‬במקביל לחיפוש ‪Backtracking‬‬
‫‪‬‬
‫‪42‬‬
‫מיד אחרי השורה‪:‬‬
‫סיכום על ‪CSP‬‬
‫‪ CSP ‬הנו סוג בעיית חיפוש‪:‬‬
‫‪ ‬מגדירים קבוצת משתנים עם תחום עבור כל משתנה‬
‫‪ ‬מגדירים רשימת אילוצים‬
‫‪ ‬בעיית ‪ CSP‬ניתן לפתור בעזרת חיפוש ‪ Backtracking‬או‬
‫בעזרת חיפוש לוקלי‬
‫‪ ‬עם משתמשים ב ‪ ,Backtracking‬אזי ‪ CSP‬מאפשר‬
‫‪ constraint propagation‬ועוד כמה שיפורים בעלי‬
‫עוצמה‬
‫‪43‬‬
44
‫דוגמה נוספת של ‪ :CSP‬בעיית ‪Job-Shop Scheduling‬‬
‫‪ ‬תרגום של ‪ job shop‬ב ‪:morfix.co.il‬‬
‫‪ ‬מערך ייצור המתמחה במוצרים ייעודיים‪ ,‬לפי דרישות ספציפיות של‬
‫לקוחות‬
‫‪ ‬בעיית תכנון של מתלות‪ .‬נראה דוגמה‪ :‬הרכבת מכונית (חלק קטן)‬
‫‪ ‬הבעיה‪:‬‬
‫‪ ‬יש להרכיב גלגלים של רכב חדש‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪45‬‬
‫צירים (‪ 10‬דק' ‪ ,)2 x‬כל ציר לוקח ‪ 10‬דקות להרכיב‬
‫גלגלים (‪ 1‬דק' ‪,)4 x‬‬
‫אומים (‪ 2‬דק' ‪( )4 x‬תחת הנחה שכל אומים של גלגל אחד עושים בבת אחת)‬
‫צלחות (‪ 1‬דק' ‪)4 x‬‬
‫בקורת (‪ 3‬דק' ‪)1 x‬‬
‫‪ ‬צריך לגמור הרכבה תוך ‪ 30‬דקות‬
‫‪ ‬יש ‪ 4‬עובדים המרכיבים את הצירים‪ ,‬אבל הם משתמשים בכלי אחד‬
‫המשך דוגמה בעיית ‪Job-Shop Scheduling‬‬
‫‪ ‬משתנים‪ :‬זמן התחלה של כל שלב הרכבה‪.‬‬
‫‪ ‬תחומים‪:‬‬
‫‪ ‬לכל המשתנים יש אותו תחום‪:‬‬
‫‪ ‬אילוצים‪:‬‬
‫‪ ‬ציר לפני גלגלים‪:‬‬
‫‪ ‬כלי אחד עבור הרכבת הצירים‪:‬‬
‫‪ ‬גלגל לפני אומים‪ ,‬אומים לפני צלחות‪:‬‬
‫‪46‬‬
‫‪ ‬ביקורת אחרון‪:‬‬
‫עבור כל שלב ‪ X‬שדורש ‪ dX‬דק'‬