איך מתכנתים שחקן שחמט? ... מבוא בינה מלאכותית ( ,)236501 מדעי המחשב עומר גייגר [email protected]

Report
‫איך מתכנתים שחקן שחמט?‪...‬‬
‫מבוא בינה מלאכותית (‪ ,)236501‬מדעי המחשב‬
‫עומר גייגר ‪[email protected]‬‬
‫מוטיבציה‬
‫נציג את האלגוריתם הנפוץ למשחקים עם שני‬
‫שחקנים ‪.MinMax -‬‬
‫נתעניין במשחקי "סכום‪-‬אפס" בהם יתרונו של שחקן‬
‫הוא חסרונו של יריבו‪.‬‬
‫מוטיבציה‬
‫אלגוריתם ‪ MinMax‬מהווה תבנית לשחקני בינה‬
‫מלאכותית מוצלחים רבים‪.‬‬
‫דוגמה מפורסמת ‪ Deep Blue‬מנצח את אלוף העולם‬
‫בשחמט (‪)1997‬‬
‫אז איך ‪ MinMax‬עובד?‬
‫שלב ראשון‪ :‬הגדרת פונקציה היוריסטית המקבלת לוח ומחזירה‬
‫מספר המייצג את "טיב" הלוח לשחקן‪.‬‬
‫דוגמא פשוטה בשחמט‪:‬‬
‫) ‪f ( board )   ( w hite pieces )   (black pieces‬‬
‫לבן‪9 = 5+3+1 :‬‬
‫שחור‪2 = 1+1:‬‬
‫ציון הלוח‪7 = 9-2 :‬‬
‫נק' ‪1‬‬
‫‪ 5‬נק'‬
‫‪ 3‬נק'‬
‫‪ 3‬נק'‬
‫‪ 9‬נק'‬
‫זו כמובן דוגמה טריוויאלית וניתן להרחיבה‪ .‬כיצד?‬
‫אז איך ‪ MinMax‬עובד?‬
‫האלגוריתם מסתכל קדימה ובוחר מהלך שצפוי‬
‫להביא למצב ה"טוב" ביותר עבור השחקן‪.‬‬
‫הנחות‪:‬‬
‫‪ .1‬הפונקציה שהגדרנו מעריכה לוחות באופן משביע‬
‫רצון‪.‬‬
‫‪ .2‬השחקן היריב ינסה לשחק באופן הטוב ביותר‬
‫עבורו‪ ,‬כלומר הגרוע ביותר עבורנו‪.‬‬
‫הדגמת האלגוריתם‬
‫קלט‪ :‬מצב הלוח‬
‫פלט‪ :‬מהלך "טוב"‬
‫לשחקן שלנו (הלבן)‬
‫מקדם הסיעוף‪:‬‬
‫‪...‬‬
‫מספר הצעדים האפשריים‬
‫ממצב ממוצע‪.‬‬
‫(בשחמט ~‪)35‬‬
‫מהלכים אפשריים‬
‫לשחור (שחקן ‪)MIN‬‬
‫‪MAX‬‬
‫‪MIN‬‬
‫מהלכים אפשריים‬
‫ללבן (שחקן ‪)MAX‬‬
‫‪2‬‬
‫‪3‬‬
‫‪11‬‬
‫‪7‬‬
‫‪5‬‬
‫‪9‬‬
‫‪2‬‬
‫‪7‬‬
‫‪...‬‬
‫‪5‬‬
‫סיכום‬
‫אלג' ‪ MinMax‬הנפוץ בתכנות שחקני בינה מלאכותית‪:‬‬
‫ מתבסס על פונקציה היוריסטית המעריכה מצבים במשחק‪.‬‬‫ מסתכל קדימה וצופה אפשרויות התפתחות למשחק‪.‬‬‫ מניח שהיריב ישחק בצורה ה"טובה" ביותר עבורו‪.‬‬‫ בוחר במהלך שמבטיח ערך היוריסטי גבוה ביותר ללא תלות‬‫במהלכי היריב‪.‬‬
‫נשים לב שהאלגוריתם הוא גנרי ומתאים למשחקים רבים‪.‬‬
‫הכיצד?‪...‬‬
‫תודה רבה!‬

similar documents