Presentation is loading. Please wait.

Presentation is loading. Please wait.

משחקים Game playing.

Similar presentations


Presentation on theme: "משחקים Game playing."— Presentation transcript:

1 משחקים Game playing

2 משחקים משחקים לשני שחקנים אלגוריתם מינימקס Minmax search algorithm
State of the art

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

4 משחקים לשני משתתפים עץ החיפוש הוא אותו עץ עבור שני השחקנים
רמה זוגית מייצגת מהלך של שחקן A . רמה אי-זוגית מייצגת מהלך של שחקן B. כל שחקן, ברמה שלו, מחפש מצב מטרה שלו (לכל שחקן המטרה שונה) כל שחקן מעריך את המצבים על-פי הפונקציה ההיוריסטית שלו. המהלך הטוב ביותר עבור A מוביל למצב הגרוע ביותר עבורB . A מחפש את המהלך הטוב ביותר עבורו בהנחה שB- יחפש את המהלך הטוב ביותר עבורו.

5 דוגמא: עץ חיפוש עבור איקס-עיגול
A B A מצבי סיום -1 +1 הערכה

6 אסטרטגית חיפוש מינימקס
חפש את המעבר הבא הטוב ביותר עבורA , כך שעבור כל מעבר של B (בפרט המעבר הטוב ביותר עבור A) הוא ישפר את מצבו. בכל שלב, בדוק את ערכי כל הצאצאים, בחר את המקסימום אם זה תור של A ואת המינימום אם זה תור של B. בצע בדיקת ערכי מינימקס d צעדים קדימה. ייצר את כל הקודקודים עד רמה (DFS) ,d פעפע את ערכי מינימקס מהעלים.

7 הדגמת עיקרון המינימקס 3 MAX A MIN 2 3 B 3 14 6 4 2 8 12 5

8 return the lowest MinMax-Value of Successors(state)
מינימקס function MinMax-Decision(game) returns an operator for each op in Operator[game] do Value[op] := MinMax-Value(Apply(op,game),game) end return the op with the highest Value[op] function MinMax-Value(state,game) returns a utility value if Terminal-Test[game](state) then return Utility[game](state) else if MAX’s turn return the highest MinMax-Value of Successors(state) else //MIN’s turn return the lowest MinMax-Value of Successors(state)

9 תכונות אלגוריתם מינימקס
שלם (אם העץ סופי) אופטימלי (אם היריב משחק באופן אופטימלי) סיבוכיות הזמן: O(bm) סיבוכיות מקום: O(bm) במשחק שח b35 , m  האלגוריתם לא מעשי !!

10 אלגוריתם מינימקס "מעשי" קובעים מבחן חיתוך - מגבילים את העומק.
קובעים מבחן חיתוך - מגבילים את העומק. קובעים פונקצית הערכה - פונקצית הערכה למצב משחק. מבצעים בדיקת ערכי מינימקס d צעדים קדימה. ייצר את כל הקודקודים עד רמה (DFS) ,d חשב הערכה לעלים פעפע את ערכי מינימקס מהעלים

11 אלגוריתם מינימקס "מעשי" כל עוד הקודקוד v אינו מצב סיום בצע
ייצר את עץ המשחק עד רמה p מקודקוד v הפעל את פונקצית הערכה לעלים פעפע את ערכי הקודקודים כלפי מעלה לפי הרמות, לפי שיטת המינימקס עד השורש. בחר את המעבר עם הערך המקסימלי בשורש (החלטת מינימקס) ועבור למצב הבא. סוף סיבוכיות- O(bp)

12 דוגמא: חיפוש מינימקס עבור איקס עיגול
פונקצית הערכה Eval(s) עבור A.  אם n הוא מצב מנצח עבור A (מקסימום).  - אם n הוא מצב מנצח עבור B (מינימום). (מספר השלשות האפשרי של B)-(מספר השלשות האפשרי של A) שלשה - שלושה סימנים זהים בשורה עמודה או אלכסון Eval(s)=6-4 הוא A

13 דוגמא: חיפוש מינימקס עבור איקס עיגול, d=2
max 1 min -1 -2 1 6-5=1 5-5=0 4-5=-1 5-6=-1 4-6=-2 5-4=1 6-4=2

14 דוגמא: חיפוש מינימקס עבור איקס עיגול, d=4
1 Max 1 Min . . . 4-2=2 3-2=1 5-2=3 4-3=1 3-3=0 5-3=2

15 דוגמא: חיפוש מינימקס עבור איקס עיגול, d=6
Max 1 1 - Min 2-1=1 3-1=2 - 3-2=1 2-2=0 3-1=1

16 חיפוש מינימקס p הוא הפרמטר "הבט קדימה": כמה מעברים קדימה נחשב.
מינימקס אופטימלי (אם dp כאשר d הוא עומק הפתרון האופטימלי). ניתן ליישם אתIDS , חיפוש איטרטיבי לעומק, על-מנת לחסוך בזיכרון. חיסרון: בעיית האופק: קודקוד n יכול להיות הטוב ביותר עד רמה p ולהיות גרוע מאוד p +1 רמות קדימה.

17 גיזום - חיסרון בחיפוש מינמקס -מרחיבים כל קודקוד לתת עץ בעומק p. האם נוכל לבצע החלטת מינימקס נכונה בלי לפתח את כל הקודקודים. מעונינים לגזום את העץ - לא נפתח תתי-עצים שערכם לא ישפיע על החלטת מינימקס. נשים לב: אין צורך לחשב את ערכם של הקודקודים שערכם גדול מהמינימום הנוכחי, או קטן מהמקסימום הנוכחי.

18 גיזום - A B 3 14 6 4 2 8 12 5 MAX MIN

19 גיזום - 3 MAX A  2 2 3 MIN B 3 12 8 2 14 5 2

20 חוקי הגיזום של חיפוש -
חוקי הגיזום של חיפוש - שומרים ומעדכנים שני ערכים במעבר על העץ.  הוא ערך הבחירה הטובה ביותר במסלול ה-MAX  הוא ערך הבחירה הטובה ביותר במסלול ה-MIN לא מרחיבים קודקוד n כאשר => עבור קודקוד מקסימום מחזירים . עבור קודקוד מקסימום מחזירים .

21 גיזום - function Max-Value(state,game, , ) returns minmax value of state if Cutoff-Test(state) then return Eval(state) for each s in Successor(state) do  := Max(,Min-Value(s, game, , ) if  <=  then return  end; return  function Min-Value(state,game, , ) returns minmax value of state  := Min(,Max-Value(s, game, , ) if  <=  then return  end; return 

22 דוגמא: גיזום - עבור איקס עיגול
MAX MIN

23 דוגמא: גיזום - עבור איקס עיגול
MAX MIN

24 דוגמא: גיזום - עבור איקס עיגול
MAX MIN =0 = 0

25 דוגמא: גיזום - עבור איקס עיגול
MAX MIN =0 = -3

26 דוגמא: גיזום - עבור איקס עיגול
MAX MIN   ?? =0 = -3

27 דוגמא: גיזום - עבור איקס עיגול
MAX MIN   ?? =0 = -3

28 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0

29 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 = 3

30 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0   ?? =3

31 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0   ?? =3

32 דוגמא: גיזום - עבור איקס עיגול
MAX MIN =0

33 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0

34 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 = 5

35 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 = 2

36 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 =2

37 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0   ?? =2

38 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0   ?? =2

39 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 = 0

40 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 =0

41 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 =0   ??

42 דוגמא: גיזום - עבור איקס עיגול
MAX MIN = 0 =0   ??

43 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN

44 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN

45 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN = 5

46 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN   ?? = 5

47 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN = 1

48 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1

49 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1

50 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1 = -3

51 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN   ?? =1 = -3

52 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN   ?? =1 = -3

53 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN = 1

54 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1

55 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1

56 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1 = -5

57 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1   ?? = -5

58 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1   ?? = -5

59 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1 =1

60 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1 = 1

61 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1   ?? = 1

62 דוגמא: גיזום - עבור איקס עיגול
=0 MAX MIN =1   ?? = 1

63 דוגמא: גיזום - עבור איקס עיגול
=0 MAX =1 MIN

64 דוגמא: גיזום - עבור איקס עיגול
=0 MAX =1 MIN   ??

65 דוגמא: גיזום - עבור איקס עיגול
=0 MAX =1 MIN   ??

66 דוגמא: גיזום - עבור איקס עיגול
=0 MAX =1 MIN   ?? =2

67 דוגמא: גיזום - עבור איקס עיגול
MAX MIN   ??

68 סיבוכיות האלגוריתם -
במקרה הגרוע לא קוצצים ענפי חיפוש. לכן הסיבוכיות (O(bd אם הבנים מסודרים “אופטימלית”, ההסתעפות היא 1/2 b במקום b, ולכן (O(b 1/2 אם הבנים מסודרים אקראית, ההסתעפות היא b/log b במקום b, ולכן (O(b/log b )d

69 Horizon effects Negative horizon effect: Positive horizon effect:
Inevitable losses are postponed or unachievable goals appear to be achievable Positive horizon effect: Short-term gains mask unavoidable consequences (eg., capture small pieces, not realizing Queen is in danger)

70 Horizon effects If the program notices drastic changes in the evaluation function values, it needs to search deeper until quiescence is reached This extra search is called feedover: Don't cut off search at nonquiescent board positions Quiescence: No dramatic change in evaluation function value from one ply to the next Secondary search: Look a bit harder at the expected progression once a move has been selected

71 There is a trade-off: Fast, stupid evaluation functions; massive search ("type A" systems) vs. Slow, smart evaluation functions; very little search ("type B" systems) Humans are "type B" systems Question to grandmaster chess player: How many moves do you consider? Answer: Only one --- the right one.

72 Computer chess For computer chess, the most successful systems have been "type A" Some have special hardware to generate board positions and evaluate hundreds of millions of configurations per move Instead of limiting plies (depth), most systems limit search time or the number of board configurations considered Most use feedover and secondary search Most have "canned" openings and end games

73 January, 1988: Q: Will a computer be able to defeat a grandmaster before the year 2000? A: "No way. And if any grandmaster has difficulties playing computers, I would be happy to provide my advice." – Gary Kasparov November, 1988: Deep Thought defeats grandmaster Bent Larsen in a major tournament (It also won 5 other games, lost one, and drew one to tie for first place at the tournament) Deep Thought is a machine, software and custom hardware, designed by graduate students at Carnegie- Mellon University

74 September, 1994: Kasparov is defeated by Chess Genius 2,which considers 100,000 positions/sec. May, 1995: Kasparov wins a rematch against the same machine. May, 1997: “In a shocking finale that lasted barely more than an hour, World Champion Garry Kasparov resigned 19 moves into Game 6, handing a historic victory to Deep Blue.” -- IBM’s web site The win gave the IBM supercomputer a victory. It was the first time a current world champion had lost a match to a computer opponent under tournament conditions. "All I can say is that I'm stunned. I absolutely didn't expect this to happen,“ said match commentator Yasser Seirawan.

75 History of computer chess
1760s "The Turk," by Baron von Kempelen 1944 Minimax algorithm devised by von Neumann and Morgenstern 1949 Shannon developed chess algorithms (on paper); "A" and "B" types 1957 CP-1 (CMU) first alpha-beta "In 10 years a computer will be champion" 1968 MacHack-6 (Greenblatt at MIT) 1st computer to reach average tournament-player level 1979 "Chess 4.x" surpassed expert level (2000) 1983 Belle (Bell Labs) surpassed national master level (2200); most famous computer-chess player in 1970s 1988 Deep Thought (CMU) defeated grandmaster Bent Larson 1980s and 90s many computer chess tournaments mostly brute-force search

76 Some computer chess players
DEEP THOUGHT II / DEEP BLUE IBM RS/6000 with 24 custom VLSI processors Average of 900,000,000 positions examined per move (in 3 minutes) SOCRATES II IBM PC 1993 winner of ACM chess championship CRAY BLITZ 8-processor Cray Y-MP Recurring computer champion during Examines 100,000,000 positions per move MEPHISTO Motorola microprocessor HITECH 64 ICs (one per square) BELLE Computer champion during 1970s

77 Computer games – current status
backgammon and checkers computers have beaten human world champions chess computers can beat the best humans (occasionally?) go not a chance


Download ppt "משחקים Game playing."

Similar presentations


Ads by Google