แนวคิดการสร้าง AI สำหรับเกมส์ XO (AT3)
Opened this issue · 0 comments
แนวคิดการสร้าง AI สำหรับเกมส์ XO (AT3)
แนวคิดการเดินหมาก AT3 จะเลื่อกตาเดินที่มีผลต่อทั้งกระดานมากที่สุดคือ 1.เพิ่มโอกาสชนะ 2.ลงโอกาสชนะของอีกฝ่าย
O เดินก่อนที่ตำแหน่ง 2
1 | 2 | 3 | |
---|---|---|---|
1 | 0 | ||
2 | |||
3 |
จากการกระดานวิธีชนะมีทั้งหมด 8 วิธี ซึ่งวิธีชนะทั้งหมดเขียนอยู่ในคอลัม line คอลัมถัดมา index คือตำแหน่งที่สามารถเดินต่อไปได้ คอลัมสุดท้าย score คือคะแนนรวม โดยกำหนดให้ หมากที่เดินก่อนมีค่าเท่ากับ -1 และหมากทัดไปมีค่าเท่ากับ 1
line | index | score |
---|---|---|
[1, 2, 3] | [1, 3], | -1 |
[4, 5, 6] | [4, 5, 6] | 0 |
[7, 8, 9] | [7, 8, 9] | 0 |
[1, 4, 7] | [1, 4, 7] | 0 |
[2, 5, 8] | [5, 8] | -1 |
[3, 6, 9] | [3, 6, 9] | 0 |
[1, 5, 9] | [1, 5, 9] | 0 |
[7, 5, 3] | [7, 5, 3] | 0 |
จากตรารางนี้ทำให้ทราบหมากต่อไปของ X เพื่อไม่ให้แพ้ได้ในระดับนึง ตอนนี้ X เหลือตาเดินอีก 8 ตา ต้องเลือกตาเดินที่จากแนวคิด เพิ่มโอกาสชนะและลงโอกาสชนะของอีกฝ่ายไปพร้อมกัน
index | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
weight | 3 | 0 | 3 | 2 | 4 | 2 | 3 | 2 | 3 |
ตารางนี้ได้จากการนับวิธีชนะในแต่ละตำแหน่งที่ X สามารถเดินได้ โดยตำแหน่งที่มีค่า weight สูงที่สุดคือตาเดิมที่มีผลกระทบกับกระดานมากที่สุด ถ้าหาก AT3 ว่าง X ลงตำแหน่งที่ 5 จะเพิ่มโอกาสชนะให้มันอย่างมาก แต่วิธีนี้บ้างครับไม่ได้ ลงโอกาสชนะของอีกฝ่าย (O)
scoreIndex = 1 , score = -1 , weight= 3 , abs(score)*weight = 3
scoreIndex = 5 , score = -1 , weight= 4 , abs(score)*weight = 4
จากสมการนี้ scoreIndex ที่ให้ abs(score) x weight มากที่ตาเดินถัดไปของ X
1 | 2 | 3 | |
---|---|---|---|
0 | _ | O | _ |
3 | _ | X | _ |
6 | _ | _ | _ |