จากการอ่านทุกสิ่งที่ฉันค้นพบจนถึงตอนนี้ฉันรู้ว่า Syzygy ใช้ทั้งไฟล์ win / draw / loss และไฟล์ระยะทางถึงศูนย์ แต่ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับรูปแบบไฟล์ภายในที่ไฟล์เหล่านี้ใช้ ฉันกำลังมองหาคำอธิบาย nitty gritty ระดับต่ำ
จากการอ่านทุกสิ่งที่ฉันค้นพบจนถึงตอนนี้ฉันรู้ว่า Syzygy ใช้ทั้งไฟล์ win / draw / loss และไฟล์ระยะทางถึงศูนย์ แต่ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับรูปแบบไฟล์ภายในที่ไฟล์เหล่านี้ใช้ ฉันกำลังมองหาคำอธิบาย nitty gritty ระดับต่ำ
คำตอบ:
เนื่องจากไม่มีการตีพิมพ์เดียวที่ครอบคลุมนี้จะขึ้นอยู่กับรหัสละเอียดการกำเนิดและต่าง ๆ คำอธิบายจากโรนัลด์เดอชาย (ผู้เขียนของเครื่องกำเนิดไฟฟ้า)
เมื่อละเอียดมาก tablebase ใด ๆ (หรือที่รู้จักกันว่าแผนที่แฮชขนาดใหญ่ที่ถูกบีบอัด):
จากนั้นมักจะมีรหัส "นอก" ของการตรวจสอบอย่างน้อยที่สุดก็เพื่อแก้ไขการจับภาพของผู้ที่ผ่านการทดสอบ
เริ่มต้นด้วยรหัสภายนอกสำหรับ WDL ตาราง Syzygy ใช้การปรับให้เหมาะสมตามการสังเกตต่อไปนี้: หากตำแหน่งมีการจับที่ได้ค่าเฉพาะ (เช่นชนะ) ตำแหน่งนั้นจะมีค่าน้อยที่สุด (เช่นชนะ) ในกรณีนี้ตารางสามารถเก็บค่าที่ต่ำกว่าได้ตามใจชอบข้อใดดีที่สุดสำหรับการบีบอัดและสามารถแก้ไขได้อย่างง่ายดายโดยการตรวจสอบค่าย่อยสำหรับการจับ
ในการรับ DTZ ต้องทำการสอบสวน WDL ก่อน หากตำแหน่งถูกดึงออกมาแล้ว DTZ คือ 0 และตารางสามารถเก็บอะไรก็ได้แล้วแต่จำนวนใดจะดีที่สุดสำหรับการบีบอัด หากการเคลื่อนไหวที่ดีที่สุดคือการจับภาพ (ซึ่งเราสามารถจดจำได้จากโพรบ WDL) ดังนั้น DTZ จะเป็น +/- 1 หรือ +/- 101 ขึ้นอยู่กับ WDL และตารางสามารถจัดเก็บสิ่งใดก็ได้ที่ดีที่สุดสำหรับการบีบอัด
ตารางที่จำนำมี 4 subtables หนึ่งสำหรับแต่ละไฟล์ของ "pawn ชั้นนำ" (หลังการทำให้เป็นมาตรฐาน)
ตาราง WDL (ย่อย) เป็นสองด้านกล่าวคือพวกเขามีตารางแยกกันสองตารางสำหรับแต่ละด้านของเกม endgame (เว้นแต่ว่าเนื้อหานั้นสมมาตร)
ตาราง DTZ จัดเก็บเพียงด้านเดียวที่จะย้าย ดังนั้นการค้นหาสั้น ๆ 1 ชั้นอาจจำเป็นต้องคำนวณ DTZ สำหรับอีกด้านหนึ่ง
(1) เกี่ยวกับการฟื้นฟู: มีหลายวิธีที่สามารถทำได้และมันไม่ง่ายที่จะบอกล่วงหน้าว่าใครจะนำไปสู่การบีบอัดที่ดีที่สุด เครื่องกำเนิดไฟฟ้าเพียงแค่พยายามเปลี่ยนลำดับ ลำดับสุดท้ายของชิ้นจะถูกเก็บไว้ในส่วนหัวของไฟล์ตาราง
(2) combinatorics บางอย่าง ความท้าทายไม่ได้มีช่องว่างขนาดใหญ่สำหรับตำแหน่งที่เป็นไปไม่ได้ แม้ว่ามันจะค่อนข้างยุ่งยาก แต่ฉันไม่คิดว่า Syzygy จะทำอะไรพิเศษที่นี่ ตามแนวคิดแล้วชิ้นส่วนหรือกลุ่มของชิ้นส่วนจะถูกวางไว้บนกระดานตามลำดับที่ระบุไว้ในส่วนหัว
(3) ค่าที่บีบอัดถูกเก็บไว้ในบล็อก ขนาดบล็อกถูกระบุในส่วนหัวของตาราง ดัชนีการแมปตารางไปยังบล็อกนั้นกระจัดกระจายดังนั้นจึงอนุญาตให้กระโดดใกล้กับบล็อกที่ถูกต้องมากแล้วต้องใช้การสแกนไปข้างหน้าหรือข้างหลังสั้น ๆ เพื่อค้นหาบล็อกที่แน่นอน บล็อกสามารถเก็บค่าได้สูงสุด 65536 ตำแหน่ง
(4) ตารางจิใช้การบีบอัดที่กำหนดเองตามจับคู่ คุณลักษณะที่สำคัญคือช่วยให้สามารถใช้ประโยชน์จากโอกาสในการจัดเก็บค่านิยมตามที่ระบุไว้ข้างต้น การบีบอัดข้อมูลมีความรวดเร็วและสามารถหยุดได้ทันทีที่มีค่าสำหรับดัชนีที่ต้องการ
อีกทางเลือกหนึ่งตาราง DTZ สามารถต้องการขั้นตอนอื่น f (wdl, ค่าที่เก็บไว้) = มูลค่าจริง แผนที่ DTZ พิเศษนี้อ้างอิงในส่วนหัวของตารางและเป็นตารางที่มีรายการ 8 บิต (สิ่งนี้ทำให้เกิดความไม่พอเพียงสำหรับ endgames 7 ชิ้นถึงแม้จะจำนำดังนั้นตอนนี้ก็มีธงอีกธงหนึ่งที่เปิดใช้งานรายการ 16 บิต)
สำหรับค่า DTZ หากเครื่องกำเนิดไฟฟ้าระบุว่าค่าทั้งหมดสำหรับตารางน้อยกว่า 100 จำนวนการย้ายครึ่งแม่นยำไม่จำเป็นต้องรับประกันการเล่นที่สมบูรณ์แบบ แต่จะตั้งค่าสถานะในส่วนหัวของตารางและปัดครึ่งย้ายไปสู่การย้ายแบบเต็มเพื่อประหยัดพื้นที่
เห็นได้ชัดว่าไม่จำเป็นต้องเก็บเครื่องหมายหรือออฟเซ็ตเพิ่มเติม +/- 100 สำหรับเกม ended ที่ถูกสาปเพราะสามารถสรุปได้จากค่าของ WDL
เนื่องจากการคลายการบีบอัดนั้นรวดเร็วมากจึงไม่จำเป็นต้องใช้แคช เอ็นจิ้นสามารถพึ่งพาแคชของระบบปฏิบัติการเพื่อจัดเก็บบล็อก (ยังคงถูกบีบอัด)
ตาราง 6 ชิ้นประกอบด้วยข้อมูล WDL และ DTZ สำหรับตำแหน่งที่ไม่ซ้ำใคร 3,787,154,440,416 ตำแหน่งใน 150 กิกะไบต์ดังนั้น ~ 0.3 บิตต่อตำแหน่ง
ทั้งหมดในตาราง Syzygy ทั้งหมดได้รับการปรับปรุงตามรูปแบบฐานข้อมูลก่อนหน้าในพื้นที่อย่างน้อย 3 แห่งทำให้เป็นรูปแบบที่กะทัดรัดและรวดเร็ว น่าแปลกที่ตัวกำเนิดนั้นค่อนข้างเร็วเช่นกัน
และแน่นอนว่าการใช้ DTZ50 เป็นตัวเลือกที่ใช้งานได้จริงเพราะนี่เป็นข้อมูลที่เพียงพอสำหรับการสร้างความก้าวหน้าและช่วยให้การเล่นที่สมบูรณ์แบบ (ผลการแข่งขัน) ทั้งที่มีและไม่มีกฎ 50 ข้อ อย่างไรก็ตามตามการเปลี่ยนแปลงของ Cfish ที่เผยแพร่ไปแล้ว (RdM กำลังทำงานบนตาราง DTM) เทคนิคหลายอย่างจะนำไปใช้กับ DTM เช่นกัน