"แค่เสมอยังยาก" คือ สโลแกนของเวอร์ชั่นนี้
หลังจากทำ invincible 1 เสร็จ ผมก็ได้เริ่มทำเวอร์ชั่นนี้ต่อเลย จุดประสงค์คือ
ต้องการให้เวอร์ชั่นนี้จะพยายามเอาชนะคนเล่นให้เด็ดขาด ถ้าฝั่งคู่ต่อสู้พลาดแม้เพียงเล็กน้อย
จากฐานข้อมูลหมากฮอสไทย 10 ตัวที่ทำไว้ (38,522,321,533,439 ตำแหน่ง) ผมได้ปรับโลจิกของโปรแกรม
โดยให้คะแนนทางเลือกของผลชนะมีค่ามากกว่าผลเสมอ โปรแกรมจะเลือกทางเลือกที่มีคะแนนสูงกว่า นั่นความหมายว่า
โปรแกรมจะไม่อ่อนข้อ ยอมเสมอผู้เล่นง่ายๆอีกต่อไป
"ทำไมไม่ทำฐานข้อมูล 16 ตัวไปเลย จะได้รู้ผลตั้งแต่ต้น"
จำนวนหมาก |
ตำแหน่ง |
1 |
120 |
2 |
6,972 |
3 |
261,224 |
4 |
7,092,774 |
5 |
148,688,232 |
6 |
2,503,611,964 |
7 |
34,779,531,480 |
8 |
406,309,208,481 |
9 |
4,033,171,712,096 |
10 |
34,045,401,420,096 |
11 |
242,925,013,241,856 |
12 |
1,450,781,088,982,010 |
13 |
7,153,567,546,498,560 |
14 |
28,464,935,769,684,400 |
15 |
86,857,484,124,026,800 |
16 |
171,975,762,422,069,000 |
ด้านบนคือ ตารางแสดงจำนวนกับตัวหมากตำแหน่งที่ต้องคำนวณ ตัวอย่างเช่น ตัวหมาก 1 ตัว
มีความเป็นไปได้ในการวางตำแหน่งกี่แบบ ?
วิธีการคิดคือ ตารางหมากฮอสมีจำนวนช่องที่วางหมากได้ทั้งหมด 32 ช่อง
กรณีที่ 1 เป็นเบี้ยสีดำ จะวางได้ 28 แบบ มาจาก 32 - 4 คือเอาจำนวนช่องทั้งหมด ลบด้วยจำนวนช่องในแถวสุดท้าย
เพราะเบี้ยที่อยู่ในแถวหลังสุดจะกลายเป็นฮอส
กรณีที่ 2 เป็นเบี้ยสีขาว จะวางได้ 28 แบบ เหตุผลเดียวกับด้านบน
กรณีที่ 3 เป็นฮอสสีดำ จะวางได้ทุกช่อง นั่นคือ 32 แบบ
กรณีที่ 4 เป็นฮอสสีขาว จะวางได้ทุกช่อง นั่นคือ 32 แบบเช่นเดียวกับฮอสสีดำ
ดังนั้นเมื่อนำทั้ง 4 กรณีมารวมกัน จะได้เท่ากับ 120 นั่นคือ ความเป็นไปได้ทั้งหมดของตัวหมาก 1 ตัว
จากตารางเมื่อตัวหมากเพิ่มขึ้น 1 ตัว ก็จะมีความเป็นไปได้เพิ่มขึ้นหลายเท่า การประมวลผลก็จะหนักมากขึ้น
จากความตั้งใจที่จะทำฐานข้อมูล 10 ตัว ซึ่งมีความเป็นไปได้เกือบ 40 ล้านล้านตำแหน่ง
ทำให้ผมไม่สามารถใช้คอมพิวเตอร์สเปคเก่าที่บ้านได้ ผมจึงได้ซื้อ CPU ใหม่ สเปค intel corei9 แรม 32gb ssd 500gb
harddisk4tb มาเพื่อประมวลผลฐานข้อมูล 10 ตัวนี้โดยเฉพาะ เวลาที่ใช้เฉพาะการประมวลผลอย่างเดียว ใช้เวลาถึง 4
เดือน ซึ่งถ้าโลจิกที่ผมเขียนไว้ผิดพลาด หรือมีบั๊ค ผมก็ต้องรันใหม่ เท่ากับว่า 4 เดือนที่ผ่านมาสูญเปล่า
และถ้าผมต้องการทำฐานข้อมูล 12 ตัว (เพิ่มขึ้นอีกแค่ 2 ตัว) ผมต้องใช้ความพยายามมากขึ้นถึงกว่า 40 เท่า
ดังนั้น จากข้อจำกัดด้านงบประมาณ และเวลา ทำให้ผมตัดสินใจหยุดไว้ที่ฐานข้อมูล 10 ตัวก่อนครับ
หลังการได้ฐานข้อมูล 10 ตัว ผมได้ทำ Self Learning ให้โปรแกรมเรียนรู้ตัวเองเป็นเวลา 3 สัปดาห์
เพื่อเก็บข้อมูลมาสร้างสมุดเปิดเกมส์อีกประมาณ 300 ล้านตำแหน่ง รวมเวลาการประมวลผลทั้งหมดประมาณ 5 เดือน
ทำให้โปรแกรมในเวอร์ชั่นนี้มีความสมบูรณ์มาก หากลองเล่นจะพบว่า โปรแกรมเดินเร็วแทบไม่หยุดคิดเลยครับ