חיפוש בעצי משחק 1 2 3 מבוא לבינה מלאכותית שאול מרקוביץ : מרצה
מערכות מרובות סוכנים אלגוריתמי החיפוש שלמדנו מניחים שהסוכן הוא היחיד המשנה את העולם ניתן לכן לתכנן סדרת פעולות ולחזות את תוצאתה כאשר קיימים יותר סוכנים בעולם יתכן שגם הם יפעלו לשנותו במקרה כזה נוצרת אי וודאות לגבי התוצאה של סדרת פעולות על העולם 4 משחק - מערכת רבת סוכנים אנו מניחים שבעולם קיימים מלבדנו עוד מספר סופי של סוכנים ושאנחנו יודעים מי אותם סוכנים מניחים שבכל מצב ממרחב המצבים, יכול לפעול רק סוכן אחד, ושיש כלל שמגדיר מיהו אותו סוכן מניחים שלכל סוכן ידש פונקציית עוקב (או קבוצת אופרטורים) ושכל פונקציות העוקב ידועות לנו מניחים שלכל סוכן יש פונקציית תועלת הנותנת ערך לכל מצב סופי (שלא בהכרח ידועה לנו - מלבד הפונקציה שלנו) מניחים שהמטרה של כל סוכן היא להביא את העולם למצב סופי עם תועלת עצמית כמה שיותר גבוהה 5 משחק A 1,...,A n s i 2 S S קבוצת סוכנים קבוצת מצבים מצב התחלתי פונקציה המחזירה לכל מצב את האינדקס של הסוכן שתורו לפעול T urn : S!{1,...,n} פונקציית עוקב המחזירה את כל המצבים הבאים לסוכן i Succ(s, i) S Succ : S {1,...,n}!2 S - פרדיקט הבודק מצבים סופיים G(s) 2{TRUE, FALSE} S G = {s 2 S G(s)} פונקציית ערך המחזירה לכל מצב סופי ולכל סוכן i את ערך המצב עבור הסוכן U : S G {1,...,n}!< 6
דוגמא : שחמט קבוצת הסוכנים 2 - סוכנים - הלבן והשחור קבוצת מצבים - קבוצת המצבים החוקיים בשחמט מצב התחלתי - לוח התחלתי בשחמט פונקציה תור - לכל מצב מחזיקים את האינדקס של השחקן ששיחק אחרון. תור השחקן השני לשחק. פונקציית עוקב המחזירה את כל המצבים הבאים לסוכן - i בהתאם לצבע שתורו לשחק, קבוצת המהלכים החוקיים פרדיקט הבודק מצבים סופיים - מצב מט לאחד הצדדים, או מצב תיקו )יש כמה כללים המגדירים זאת( תועלת 1 : עבור מצב נצחון -1, עבור הפסד ו 0 עבור תיקו 7 משחק ספציפי סדרה של מצבים המתחילה במצב ההתחלתי ומסתיימת במצב סופי s,...,s k ) s1 = si, G(sk 1 בכל מצב בסדרה מתבצע מהלך של השחקן שתורו לשחק )) sj+1 2 Succ(sj, T urn(sj הערך של המשחק עבור כל סוכן הינו הערך של המצב הסופי 8 משחקי שני שחקנים משחק שני שחקנים הוא משחק בו מספר הסוכנים הינו שניים רוב המשחקים הינם משחקי תור מתחלף לסרוגין ) 8q 2 Succ(s, T urn(s)), T urn(s) 6= T urn(q 9
משחק סכום אפס משחק סכום אפס הוא משחק בו 8s 2 S g,u(s, 1) = U(s, 2) במשחקים בהם יש שתי תוצאות אפשריות - נצחון והפסד - נצחון של האחד הוא הפסד של השני 10 משחקי אנפורמציה מלאה במשחקים כמו שח, דמקה וכו יש לשני השחקנים אינפורמציה מלאה על המצב העכשווי במשחקים כמו פוקר, ברידג וכו יש למשתתפים אינפורמציה חלקית 11 הנחת סופיות המשחק אנו מניחים שהמשחק הוא סופי - כלומר, לא קיים מסלול אינסופי חוקי רוב המשחקים כוללים חוקים שמבטיחים סופיות בשח למשל אסור שמצב יחזור יותר מ 3 פעמים 12
עץ משחק עץ משחק הינו עץ מכוון שהשורש שלו הוא מצב (המצב הנוכחי) והעלים שלו הם מצבים סופיים הקשתות בעץ הינם הצעדים החוקיים במשחק 13 דוגמה לעץ משחק עבור איקס-עיגול -1-1 0 1 1 0 14 חיפוש בעצי משחק כמו בחיפוש חד סוכני גם כאן אנחנו מחפשים דרך להגיע ממצב התחלתי למצב סופי (כאן מחפשים מצב עם ערך גבוה ככל האפשר) אולם, מציאת מסלול לא תהיה מספקת מכיוון שליריב יש אינטרסים הפוכים משלנו ולכן יבחר צעדים אחרים 15
-1-1 0 1 1 0 16 תוכנית פעולה מותניית בחיפוש חד סוכני, אלגוריתם החיפוש מחזיר סדרת מצבים או סדרת אופרטורים. סדרה זו היא למעשה תוכנית פעולה סדרתית: היא מתארת את סדרת הפעולות שנבצע בעולם גם בחיפוש רב סוכני, במצב בו תורינו לפעול, התכנית תגיד מה נעשה המצב. אבל, בחיפוש רב סוכני, במצב בו פועל אחד מהסוכנים האחרים, עלינו להחזיק תוכנית פעולה לכל צעד אפשרי שלו כך נוצרת לנו תכנית פעולה שהיא עץ - אנחנו מכנים עץ זה בשם אסטרטגיה. אסטרטגיה בחיפוש בעצי משחק, במקום להחזיר מסלול, מחזירים אסטרטגיה אסטרטגיה היא תת עץ של עץ המשחק מכל צומת שאינו עלה ושבו תור הסוכן לשחק יוצאת קשת אחת בדיוק מכל צומת שאינו עלה ושבו תור יריב לשחק יוצאות קשתות עבור כל המהלכים האפשריים. 18
19 המשמעות של אסטרטגיה אסטרטגיה היא תכנית פעולה מותניית האסטרטגיה קובעת מה תהיה סדרת המהלכים של השחקן לכל סדרה אפשרית של תגובות היריבים 20 הגודל של עץ האסטרטגיה בכל צומת של הסוכן ישנו ילד אחד בעצים במשחקי תורות מתחלפים לסרוגין מקבלים למעשה עץ בעומק שהוא מחצית מהעומק המקורי מספר העלים באסטרטגיה על עץ בעומק D ומקדם סיעוף B יהיה B bd 2 c 21
2 5 עלים 2 b5 2 c עלים 22 ערך של אסטרטגיה נגדיר ערך של אסטרטגיה כערך המינימלי של העלים שלה הערך של כל עלה מחושב לפי פונקציית התועלת של השחקן עבורו הוגדרה האסטרטגיה טענה: ערך האסטרטגיה הוא מובטח - לא קיימת סדרה של מהלכי היריבים שיובילו לערך נמוך יותר (זה ברור כי כל סדרת מהלכים תוביל אחד העלים) טענה: ערך האסטרטגיה הוא המקסימלי המובטח. כלומר לכל ערך גבוה יותר קיימת סדרת פעולות של היריבים שתוביל לקבלת ערך נמוך יותר 23 0-1 0 1-1 -1-1 1 1-1 -1-1 24
ערך אופטימלי של מצב מכל מצב ניתן להגדיר מספר רב מאוד של אסטרטגיות (כמה?). נגדיר אסטרטגיה אופטימלית כאסטרטגיה בעלת ערך מקסימלי. ערך אופטימלי של מצב הינו הערך של אסטרטגיה אופטימלית (כלומר הערך המקסימלי על פני כל האסטרטגיות מאותו מצב) הערך האופטימלי של מצב הינו הערך הגבוה ביותר המובטח לנו פעולה אופטימלית היא הפעולה הראשונה באסטרטגיה אופטימלית 25 ערך מינימקס של עץ משחק ערך מינימקס של עץ מןגדר בצורה רקורסיבית. הערך של עלה ניתן ע י פונקציית התועלת (של הסוכן) עבור אותו עלה הערך עבור צומת בו תור הסוכן לשחק הינו מקסימום ערכי המינימקס של הילדים הערך עבור צומת בו תור יריב לשחק הינו מינימום ערכי המינימקס של הילדים 26 8 < U(s, k) G(s) Minimax(s, k) = max c2succ(s) Minimax(c, k) Turn(s) =k : min c2succ(s) Minimax(c, k) Turn(s) 6= k
אסטרטגיית מינימקס אסטרטגיית מינימקס היא אסטרטגייה הבוחרת בכל מצב בו תור הסוכן לפעול, פעולה המובילה למצב בעל ערך מינימקס מקסימלי האופטימליות של מינימקס ערך המינימקס של עץ משחק הינו אופטימלי ניתן להוכיח בקלות באינדוקציה על עומק העץ במשחקי סכום אפס, אם היריב משחק באסטרטגיית מינימקס גם הוא, אזי תוצאת המשחק תהיה בדיוק ערך המינימקס שאלה לדיון: מה יקרה אם היריב ישחק באסטרטגייה שאינה מינימקס? 29 אלגוריתם לחישוב מינימקס האלגוריתם עובד מלמטה ומפעפע את הערכים למעלה החיפוש הוא חיפוש DFS ולכן דרישות הזכרון הן לינאריות בעומק עץ המשחק האלגוריתם עובד גם עם משחקים שאינם סכום אפס, וגם למספר שחקנים גדול משניים. 30
Minimax(State,Agent) If G(State) then return U(State, Agent) Turn Turn(State) Children Succ(State, Agent) If Turn = Agent then CurMax - Loop for c in Children v Minimax(c, Agent) CurMax Max(v, CurMax) Return(CurMax) else ; Turn Agent CurMin Loop for c in Children v Minimax(c, Agent) CurMin Min(v, CurMin) Return(CurMin) 31 Animation of the Minimax algorithm 0 0-1 -1 0 1-1 -1 1 0-1 0 1-1 -1-1 -1-1 1-1 -1 32 גיזום אלפא-ביתא טכניקה המאפשרת לחיפוש מינימקס לגזום חלק מענפי החיפוש אבל לשמור על אופטימליות האלגוריתם האלגוריתם מפעפע חסמים המאפשרים להמנע מלהמשיך לחקור תתי עצים שאין באפשרותם להשפיע על ערך המינימקס של השורש αβ 33 כלומר, עץ משחק גזום אלפא-ביתא יחזיר ערך ערך מינימקס
ערך המינימקס שהעץ מחזיר מגיע תמיד מאחד העלים בעץ 0 זרימת אנפורמציה בעץ מינימקס 0-1 -1 0 1-1 -1 1 0-1 0 1-1 -1-1 -1-1 1-1 -1 לא יתכן שעלה מתת העץ של B יקבע את ערך המינימקס של העץ A V(A) 0? 0-1 B V(B) -1 0 1-1 -1 1 0-1 0 1-1 -1-1 -1-1 1-1 -1 כלל הגיזום נניח שבזמן פיתוח צומת min נקבע לו מינימום זמני חדש Xmin מובטח לנו שערכו של הצומת יהיה לבסוף קטן או שווה ל Xmin נניח שלאחד מצמתי ה max שמעליו ישנו ערך מקסימום זמני Ymax הגדול או שווה ל Xmin מובטח לנו שערכו של צומת ה max רק יגדל לכן לא יתכן שהערך הסופי של צומת ה min יעבור דרך צומת ה max האמור מספיק צומת max אחד כזה כדי לחסום את ערך צומת ה min מלטפס בעץ 36
V63 can change the value of the tree only if the following 3 conditions hold: Min 6 > Max 5 & V21 V1 V22 V23 V1 Max1=Max(V21,V22) Min 6 > Max 3 & Min 6 > Max 1 V31 V32 V33 V33 Max3=Max(V41) V41 V42 V51 V52 V53 V53 Max5=Max(V61,V62) V61 V62 V63 V63 Min6=Min(V71) The value max{max 1, Max 3, Max 5 } is called Alpha V71 If the following holds Min 6 apple max{max 1, Max 3, Max 5 } we can prune the tree under V63 37 כדי ש V53 ישנה את ערך העץ חייב להתקיים Max 5 < Min 4 & Max 5 < Min 2 V21 V31 V1 V22 V23 V32 V33 V23 Min2=Min(V31,V32) V41 V42 V42 Min4=Min(V51,V52) V51 V52 V53 V53 Max5=Max(V61,V62) V61 V62 אם מתקיים Max 5 min{min 2, Min 4 } אזי ניתן לגזום את העץ תחת V53 לחסם min{min 2, Min 4 } קוראים בשם חסם ביתא 38 AlphaBeta(State, Agent, Alpha, Beta) If G(State) then return U(State, Agent) Turn Turn(State) Children Succ(State, Agent) If Turn = Agent then CurMax - Loop for c in Children v AlphaBeta(c, Agent, Alpha, Beta) CurMax Max(v, CurMax) Alpha Max(CurMax, Alpha) If CurMax Beta then return ; So that the calling minimizer will not select it Return(CurMax) else ; Turn Agent CurMin Loop for c in Children v AlphaBeta(c, Agent, Alpha, Beta) CurMin Min(v, CurMin) Beta Min(CurMin, Beta) If CurMin Alpha then return - Return(CurMin) 39
אתחול הקריאה החיצונית לפרוצדורת אלפא-ביתא: αβ AlphaBeta(State, Agent, -, + ) 40 משפט נכונות אלפא-ביתא אלגוריתם אלפא ביתא מחזיר את ערך המינימקס של העץ αβ 41 גיזום אופטימלי של אלפא ביתא הגיזום האופטימלי של האלגוריתם מתקבל כאשר הערך הקיצוני של כל צומת נמצא ראשון כלומר בצמתי מקסימום ערך המינימקס הגבוה ביותר נמצא בילד הראשון בצמתי מינימום הערך הנמוך ביותר נמצא בילד הראשון 42
70 70 65 60 70 80 90 65 75 85 60 70 80 43 שימו לב: חשוב שהאיבר המקסימלי (מינימלי) יהיה ראשון. הסדר של הילדים האחרים אינו משנה. 70 70 60 65 70 80 90 60 85 75 65 80 70 44 גיזום מינימלי של אלפא ביתא הגיזום הגרוע ביותר של האלגוריתם מתקבל כאשר כל הילדים ממויינים לפי סדר עולה בצומת מקס טלפי סדר יורד בצומת מינ במקרה כזה לא יתרחש גיזום 45
70 60 65 70 60 70 80 65 75 85 70 80 90 46 כמה יגזום אלפא ביתא בסידורים שונים? בסידור אופטימלי יפתח אלפא ביתא 2/d b צמתים כאשר מינימקס מפתח b d כלומר שחקן אלפא ביתא יוכל לפתח עץ בעומק כפול מאשר שחקן מינימקס בסידור אקראי יפתח אלפא ביתא 4/3d b 47 גודל עצי משחק של משחקים ידועים באיקס עיגול קיימים במצב ההתחלתי 9 צעדים אפשריים לכל צעד כזה ישנן 8 תגובות אפשריות וכו. לכן מספר העלים בעץ המשחק הינו 9 8 6 5 4 3 2 1 = 362, 880 בשחמט קיימים בכל מצב 35 צעדים חוקיים בממוצע אם נגביל את המשחק ל 100 צעדים נקבל עץ עם 10 154 100 35 עלים 48
חיפוש מינימקס מוגבל משאבים ברוב המשחקים אין אפשרות לערוך חיפוש על עץ המשחק המלא מקובל לכן לערוך חיפוש מינימקס / אלפא - ביתא לעומק מוגבל העלים של העץ מוגבל העומק מוערכים ע י פונקציית הערכה יוריסטית 49 פונקציית הערכה יוריסטית כמו בחיפוש יוריסטי חד סוכני גם כאן הידע הספציפי למשחק ניתן ע י פונקציית ההערכה היוריסטית הפונקציות הן בדרך כלל קומבינציה לינארית של תכונות שונות של מצב המשחק בשחמט התכונה הדומיננטית היא יתרון הכלים. תכונות נוספות מודדות ניידות, שליטה במרכז, וכו. 50 ההבדל היחיד ממינימקס הכללי - ערך העלה אינו הערך הסופי של המשחק אלא ערך משוערך ע י הפונקציה היוריסטית ) RB-Minimax(State, Agent, D ) If G(State) OR D=0 then return h(state, Agent ) Turn Turn(State ) Children Succ(State, Agent If Turn = Agent then CurMax - Loop for c in Children ) v RB-Minimax(c, Agent, D-1 ) CurMax Max(v, CurMax ) Return(CurMax else ; Turn Agent CurMin Loop for c in Children ) v RB-Minimax(c, Agent, D-1 ) CurMin Min(v, CurMin ) Return(CurMin 51
RB-AlphaBeta(State, Agent, D, Alpha, Beta) If G(State) or D=0 then return h(state, Agent) Turn Turn(State) Children Succ(State, Agent) ההבדל היחיד מאלפא ביתא הכללי - ערך העלה אינו הערך הסופי של המשחק אלא ערך If Turn = Agent then משוערך ע י הפונקציה היוריסטית CurMax - Loop for c in Children v RB-AlphaBeta(c, Agent, D-1, Alpha, Beta) CurMax Max(v, CurMax) Alpha Max(CurMax, Alpha) If CurMax Beta then return Return(CurMax) else ; Turn Agent CurMin Loop for c in Children v RB-AlphaBeta(c, Agent, D-1, Alpha, Beta) CurMin Min(v, CurMin) Beta Min(CurMin, Beta) If CurMin Alpha then return - Return(CurMin) 52 משפט ההבטחה של מינימקס (ואלפא ביתא) מוגבל משאבים אם מינימקס מוגבל לעומק D מחזיר ערך V, אזי קיימת אסטרטגיה המבטיחה מצב עם ערך יוריסטי של לפחות V בעוד D צעדים ערך זה הוא הערך הגבוה ביותר בעומק D המובטח לנו 53 שימוש האלגוריתמים במשחק ברוב המשחקים קיימים בכל מצב מספר מהלכים חוקיים מטרת האלגוריתם אינו לחשב את ערך המינימקס אלא לבחור במהלך שממקסם ערך זה אנו מניחים שקיימת פונקציה בשם agent) Legal-Moves(state, שמחזירה קבוצה סופית של מהלכים חוקיים לסוכן במצב הנתון אנו מניחים גם שקיימת פונקציה בשם state) Apply-Move(move, שמחזירה את המצב המתקבל ע י הפעלת המהלך 54
RB-AlphaBeta-M(State, Agent, D, Alpha, Beta) If G(State) or D=0 then return h(state,agent) Turn Turn(State) Moves Legal-Moves(State,Agent) If Turn = Agent then CurMax - Loop for m in Moves c Apply-Move(m,State) v RB-AlphaBeta(c, Agent, D-1, Alpha, Beta) CurMax Max(v, CurMax) Alpha Max(CurMax,Alpha) If CurMax Beta then return Return(CurMax) else ; Turn Agent CurMin Loop for m in Moves c Apply-Move(m,State) v RB-AlphaBeta(c, Agent, D-1, Alpha, Beta) CurMin Min(v, CurMin) Beta Min(CurMin, Beta) If CurMin Alpha then return - Return(CurMin) 55 אלגוריתם משחק - מחזיר צעד Play(State,Agent,D) Alpha - Max - Moves Legal-Moves(State,Agent) Loop for m in Moves c Apply-Move(m,State) v RB-AlphaBeta-M(c, Agent, D-1, Alpha, ) if v > Max Alpha v Max v BestMove m Return BestMove 56 שיפורים למינימקס ניהול זמן סדור ילדים טבלאות מצבים ספריות פתיחה וסיום העמקה סלקטיבית 57
אלגוריתם Anytime Contract במשחקים רבים יש מגבלה על זמן החשיבה לפני מהלך זו הגדרת בעיה אופיינית: במקום החזר את הצעד הטוב ביותר - החזר את הצעד הטוב ביותר שאתה יכול למצוא תוך K שניות לאלגוריתמים שמקבלים מגבלת זמן כאחד הפרמטרים קוראים אלגוריתמי Anytime Contract Algorithms המלה contract באה לאמר שהזמן ניתן מראש לאלגוריתם. יש מקרים בהם האלגוריתם נדרש לחשוב עד יבקשו ממנו פתרון - אלגוריתמים כאלה נקראים Anytime Interruptable Algorithms 58 העמקה הדרגתית שיטה מקובלת להתמודדות עם זמן. קוראים לאלפא-ביתא מוגבל משאבים עם הגבלת עומק הולכת וגדלה עד שנגמר הזמן יש בעיה - כיצד לנצל את האיטרציה האחרונה שהופסקה סידור ילדים ראינו שסדר הילדים בעץ יכול להשפיע בצורה ניכרת על מידת הגיזום ולכן על משאבי החיפוש במקרה של סדר אופטימלי ניתן יהיה לחפש לעומק כפול מאשר עץ לא גזום סדר אופטימלי כזה לא ניתן להסקה (כדי להסיק אותו אנו זקוקים לעץ הבלתי גזום) ניתן להסיק יוריסטית סדר טוב בשחמט, למשל, סידור יוריסטי המנסה תחילה לקיחות, אח כ איומים, אח כ צעדים קדימה, אח כ צעדים אחורה, מביא לגיזום בפקטור 2 מהאופטימלי. 60
סידור ענפים דינמי שיטה המנצלת איטרציות קודמות בהעמקה הדרגתית להסקת יוריסטיקה לסידור בנים באיטרציה ה i נשמרת אינפורמציה לסידור בנים באיטרציה ה 1+i מספיק לזכור לכל צומת מקס את הצעד המקסימלי ולכל צעד min את הצעד המינימלי אפקט האופק תופעה בה האלגוריתם בוחר צעדים סתמיים כדי לדחות צרות מעבר לאופק החיפוש 62 אפקט האופק - דוגמא תור השחור לשחק. עומק החיפוש - 2 כל צעד של השחור יסתיים באיבוד המלכה שלו יש צעד אחד - הזזת הרץ לשורה העליונה - שיסתיים רק באיבוד רץ. לכן השחור יעדיף זאת. אבל בצעד הבא הוא יאבד גם את המלכה 63
אפקט האופק -4 רץ שחור חוסם צריח מלכה לוקחת צריח -3 צריח לוקח רץ רץ לוקח מלכה -4-3 64 העמקה סלקטיבית - חיפוש עד רגיעה פורשים כמו קודם עץ מלא עד עומק מסוים. אבל, כאשר מצב אינו שקט ממשיכים הלאה לעומק הציעו קריטריונים לשקט 65 העמקה סלקטיבית - חיפוש עד רגיעה פורשים כמו קודם עץ מלא עד עומק מסוים. אבל, כאשר המצב בעלה אינו שקט מעמיקים יש קריטריונים שונים המשמשים להחלטה על העמקה קריטריונים כלליים משתמשים למשל בשינויים ערך היוריסטי במסלול לעלה - אם יש תנודות חזקות ממשיכים להעמיק. קריטריונים ספציפיים משתמשים בכללים תלויי משחק - למשל, בשחמט ממשיכים כל עוד יש לקיחות של כלים. 66
בהעמקה סלקטיבית עץ החיפוש נראה כך : עץ מלא + עצים נוספים תלויים על חלק מהעלים 67 ניצול זכרון חיפוש מינימקס )גם עם גיזום( הינו חיפוש לעומק. דרישות הזכרון שלו לינאריות )למעשה נשמר רק לוח אחד(. נשאלת השאלה האם ניתן לנצל את הזכרון הפנוי כדי לשפר את אלגוריתם ההחלטה במקרים רבים מרחב המצבים הינו גרף, ולכאורה היה ניתן לחפש בגרף במקום בעץ, אבל אז הזכרון היה גדל אקפוננציאלית פתרון ביניים אפשרי : שמירת חלק מהמצבים בהם ביקרנו עם ערך המינימקס שלהם בטבלה 68 שמירת ערכים בטבלה אם אנחנו רוצים שערך המינימקס של העץ לא ישתנה בעקבות השימוש בערכים שמורים, עלינו לנהוג בזהירות נצטרך לשמור, יחד עם המצבים וערך המינימקס שלהם, גם את העומק שהערך משקף נשתמש רק אם נמצא מצב זהה באותו עומק עבור חיפוש אלפא ביתא צריך להיזהר אפילו יותר שכן איננו יודעים את ערכי המינימקס של מצבים - אלא רק חסמים עליהם 69
70 חיפוש במשחקים המערבים הסתברות 71 משחקים עם צמתים הסתברותיים קיימים משחקים, כמו שש - בש, הכוללים צמתים הסתברותיים - המצב הבא נקבע ע י הטלת קוביה אסטרטגיית המינימקס, המניחה את הגרוע ביותר, אינה רציונלית לגבי צמתים הסתברותיים אלגוריתם Expectimax עובד כמו מינימקס בצמתים לא הסתברותיים. בצמתים הסתברותיים מעלים למעלה את התוחלת 72
1/36 1/18 1-1 1-2 1-2... מהלכים חוקיים לזריקה 6-1...... 1/36 1/18 1-1 1-2...... 6-6 1/36 מהלכים חוקיים לזריקה 6-6 1/36 14 73 אלגוריתם Expectimax אנו מניחים פרדיקט Probabilistic המחזיר TRUE אם זהו מצב הסתברותי אנו מניחים פונקציה Prob המקבלת מצב הסתברותי ומחזירה אוסף זוגות ni} {hp 1,c 1i,...hp n,c כאשר c i הינו מצב ו p i הינה ההסתברות שלו nx p i =1 i=1 74 RB-Expectimax(State,Agent,D) If G(State) OR D=0 then return h(state,agent) If Probabilistic(State) X then return p RB-Expectimax(c, Agent,D 1) hc,pi2prob(state) Turn Turn(State) Children Succ(State, Agent) If Turn = Agent then CurMax - Loop for c in Children v RB-Expectimax(c,Agent,D-1) CurMax Max(v,CurMax) Return(CurMax) else ; Turn Agent CurMin Loop for c in Children v RB-Expectimax(c,Agent,D-1) CurMin Min(v,CurMin) Return(CurMin) 75
משחקים עם אינפורמציה חלקית במשחקים כמו פוקר וברידג רואה כל סוכן רק חלק ממצב העולם טכניקה אפשרית לפתרון: מנה את כל המצבים האפשריים, לכל אחד פתח עץ אלפא ביתא, בחר צעד עם הערך הצפוי הגדול ביותר אם מספר המצבים האפשריים גדול מידי, מבצעים זאת רק לגבי דגימה של הקבוצה לשיטה הזו קוראים Monte Carlo sampling 76 MonteCarlo(PartialState, D, K) Actions Legal actions in PartialState S All states consistent with PartialState Sample Random K elements of S Loop for a in Actions V(a) AVG αβ(a(s),d)for s in Sample Select a with maximal V(a) 77