M4R14/markdown-blog

แนวคิดการสร้าง AI สำหรับเกมส์ XO (AT3)

Opened this issue · 0 comments

M4R14 commented

แนวคิดการสร้าง 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 _ _ _

Code: https://github.com/M4R14/Ai-Tic-Tac-Toe