- למדנו את האסטרטגיות שיכולות לנמק קדימה או אחורה, אבל שילוב של שני הכיוונים מתאים לפתרון בעיה מורכבת וגדולה. אסטרטגיה מעורבת כזו, מאפשרת שקודם כל לפתור את החלק העיקרי של בעיה ואז לחזור ולפתור את הבעיות הקטנות מתעוררות במהלך שילוב החלקים הגדולים של הבעיה. טכניקה כזו נקראת ניתוח אמצעים .
- Means-Ends Analysis היא טכניקות לפתרון בעיות המשמשות בבינה מלאכותית להגבלת החיפוש בתוכניות AI.
- זוהי תערובת של טכניקת חיפוש אחורה וקדימה.
- טכניקת MEA הוצגה לראשונה בשנת 1961 על ידי אלן ניואל, והרברט א. סיימון בתוכנת המחשב שלהם לפתרון בעיות, שנקראה כפותר בעיות כללי (GPS).
- תהליך ניתוח MEA התרכז בהערכת ההבדל בין המצב הנוכחי למצב המטרה.
כיצד פועל ניתוח האמצעים:
ניתן ליישם את תהליך ניתוח האמצעים באופן רקורסיבי עבור בעיה. זוהי אסטרטגיה לשלוט בחיפוש בפתרון בעיות. להלן השלבים העיקריים המתארים את פעולת טכניקת MEA לפתרון בעיה.
- ראשית, הערך את ההבדל בין מצב התחלתי למצב סופי.
- בחר את האופרטורים השונים שניתן להחיל עבור כל הבדל.
- החל את האופרטור בכל הבדל, מה שמקטין את ההבדל בין המצב הנוכחי למצב היעד.
תת-מטרות מפעיל
בתהליך MEA, אנו מזהים את ההבדלים בין המצב הנוכחי למצב המטרה. ברגע שההבדלים האלה מתרחשים, אז נוכל להחיל אופרטור כדי לצמצם את ההבדלים. אבל לפעמים יתכן שלא ניתן להחיל מפעיל על המצב הנוכחי. אז אנחנו יוצרים את תת-בעיית המצב הנוכחי, שבו ניתן להחיל אופרטור, סוג כזה של שרשור לאחור שבו אופרטורים נבחרים, ואז מגדירים יעדי משנה כדי לקבוע את התנאים המוקדמים של האופרטור נקראים תת-מטרות מפעיל .
אלגוריתם לניתוח אמצעים:
בוא ניקח את המצב הנוכחי כ-CURRENT ואת Goal State כ-GOAL, ואז להלן השלבים עבור אלגוריתם MEA.
- בחר אופרטור חדש O שמתאים להפרש הנוכחי, ואם אין אופרטור כזה, סימן כשל.
- נסה להחיל את האופרטור O על CURRENT. ערכו תיאור של שני מצבים.
i) O-Start, מצב בו מתקיימים התנאים המוקדמים של O.
ii) O-Result, המצב שייווצר אם O יופעל ב-O-start. - אם
(חלק ראשון<------ mea (current, o-start)< strong>
ו
(חלק אחרון<----- mea (o-result, goal)< strong>, מצליחים, ואז מסמנים הצלחה ומחזירים את התוצאה של שילוב של FIRST-PART, O ו-LAST-PART.-----> ------>
האלגוריתם הנדון לעיל מתאים יותר לבעיה פשוטה ולא מתאים לפתרון בעיות מורכבות.
דוגמה לניתוח ממוצעים:
הבה ניקח דוגמה שבה אנו יודעים את המצב ההתחלתי ואת מצב המטרה כפי שניתן להלן. בבעיה זו, עלינו לקבל את מצב המטרה על ידי מציאת הבדלים בין המצב ההתחלתי ומצב המטרה ויישום אופרטורים.
פִּתָרוֹן:
כדי לפתור את הבעיה הנ'ל, תחילה נמצא את ההבדלים בין מצבי התחלה למצבי מטרה, ולכל הבדל ניצור מצב חדש וניישם את האופרטורים. האופרטורים שיש לנו עבור בעיה זו הם:
1. הערכת המצב ההתחלתי: בשלב הראשון, נעריך את המצב ההתחלתי ונשווה את המצב ההתחלתי והיעד כדי למצוא את ההבדלים בין שני המצבים.
2. החלת אופרטור מחק: כפי שאנו יכולים לבדוק, ההבדל הראשון הוא שבמצב המטרה אין סמל נקודה שקיים במצב ההתחלתי, אז תחילה נחיל את מחק מפעיל כדי להסיר את הנקודה הזו.
3. החלת מפעיל תנועה: לאחר החלת האופרטור Delete, מתרחש המצב החדש שאותו נשווה שוב למצב המטרה. לאחר השוואת המצבים הללו, יש הבדל נוסף שהוא הריבוע מחוץ למעגל, לכן, ניישם את הזז מפעיל .
4. החלת אופרטור Expand: כעת נוצר מצב חדש בשלב השלישי, ונשווה מצב זה עם מצב המטרה. לאחר השוואת המצבים עדיין יש הבדל אחד שהוא גודל הריבוע, אז נחיל הרחבת המפעיל , ולבסוף, הוא יפיק את מצב המטרה.