Syzygy เก็บข้อมูลอย่างไร


11

จากการอ่านทุกสิ่งที่ฉันค้นพบจนถึงตอนนี้ฉันรู้ว่า Syzygy ใช้ทั้งไฟล์ win / draw / loss และไฟล์ระยะทางถึงศูนย์ แต่ฉันไม่พบข้อมูลใด ๆ เกี่ยวกับรูปแบบไฟล์ภายในที่ไฟล์เหล่านี้ใช้ ฉันกำลังมองหาคำอธิบาย nitty gritty ระดับต่ำ

คำตอบ:


14

เนื่องจากไม่มีการตีพิมพ์เดียวที่ครอบคลุมนี้จะขึ้นอยู่กับรหัสละเอียดการกำเนิดและต่าง ๆ คำอธิบายจากโรนัลด์เดอชาย (ผู้เขียนของเครื่องกำเนิดไฟฟ้า)


เมื่อละเอียดมาก tablebase ใด ๆ (หรือที่รู้จักกันว่าแผนที่แฮชขนาดใหญ่ที่ถูกบีบอัด):

  1. ตำแหน่งถูกทำให้เป็นมาตรฐาน ...
  2. ... แมปกับดัชนีจำนวนเต็ม
  3. ดัชนีถูกค้นหาในตารางที่ระบุว่า "บล็อก" นั้นเป็นของใคร
  4. บล็อกถูกคลายการบีบอัดจนกว่าจะสามารถดึงข้อมูลสำหรับดัชนีได้

จากนั้นมักจะมีรหัส "นอก" ของการตรวจสอบอย่างน้อยที่สุดก็เพื่อแก้ไขการจับภาพของผู้ที่ผ่านการทดสอบ


เริ่มต้นด้วยรหัสภายนอกสำหรับ 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 เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.