सियाज़ी अपनी जानकारी कैसे संग्रहीत करता है?


11

अब तक मैंने जो कुछ भी पाया है, उसे पढ़ने से, मुझे पता है कि सिज़्जी जीत / ड्रॉ / लॉस फाइल और डिस्टेंस-टू-जीरो फाइल्स दोनों का उपयोग करता है, लेकिन मुझे इन फाइल का उपयोग करने वाली आंतरिक फाइल फॉर्मेट की कोई जानकारी नहीं मिली है। मैं निम्न स्तर की किरकिरा व्याख्या के लिए देख रहा हूँ।

जवाबों:


14

चूंकि एक भी व्यापक प्रकाशन नहीं है , यह जांच कोड पर आधारित है , रोनाल्ड डे मैन (जनरेटर के लेखक) से जनरेटर और विभिन्न स्पष्टीकरण


जब किसी भी टेबलबेस (उर्फ विशाल संपीड़ित हैश मैप) की जांच हो रही है:

  1. स्थिति सामान्यीकृत है ...
  2. ... पूर्णांक सूचकांक में मैप किया गया।
  3. सूचकांक को एक तालिका में देखा जाता है जो पहचानता है कि यह किस "ब्लॉक" से संबंधित है।
  4. जब तक सूचकांक के लिए जानकारी को पुनर्प्राप्त नहीं किया जा सकता है तब तक ब्लॉक विघटित होता है।

फिर आम तौर पर जांच के कुछ कोड "बाहर" होते हैं, कम से कम एन पासिंग कैप्चर को हल करने के लिए।


WDL के लिए बाहरी कोड के साथ शुरू। Syzygy तालिकाओं में निम्नलिखित अवलोकन के आधार पर एक अनुकूलन का उपयोग किया जाता है: यदि किसी स्थिति में एक कैप्चर होता है जो किसी विशेष मान (जैसे जीत रहा है) को प्राप्त करता है, तो स्थिति में कम से कम उस मान (जैसे जीत रहा है) होता है। इस मामले में तालिका एक मनमाने ढंग से कम मूल्य को संग्रहीत कर सकती है, जो भी संपीड़न के लिए सबसे अच्छा है, और इसे आसानी से कैप्चर के लिए सबटैबल्स की जांच करके ठीक किया जा सकता है।

एक DTZ प्राप्त करने के लिए, एक WDL जांच पहले करने की आवश्यकता है। यदि स्थिति खींची गई है, तो DTZ 0 है और तालिका कुछ भी संग्रह कर सकती है, जो भी संपीड़न के लिए सबसे अच्छा है। यदि सबसे अच्छा कदम एक कैप्चर था (जिसे हम डब्ल्यूडीएल जांच से याद कर सकते हैं), तो डीटीजेड डब्ल्यूएलएल के आधार पर +/- 1 या +/- 101 है, और तालिका फिर से कुछ भी स्टोर कर सकती है, जो भी संपीड़न के लिए सबसे अच्छा है।

प्यादाफुल टेबल में 4 सबवेबल्स होते हैं, जो "लीडिंग प्यादा" (सामान्यीकरण के बाद) की प्रत्येक फाइल के लिए एक है।

WDL (सब) टेबल दो-तरफा हैं, अर्थात वे अनिवार्य रूप से एंडगेम के प्रत्येक पक्ष के लिए दो अलग-अलग टेबल रखते हैं (जब तक कि सामग्री सममित न हो)।

DTZ तालिकाओं को स्थानांतरित करने के लिए केवल एक तरफ की दुकान। तो दूसरे पक्ष के लिए DTZ की गणना करने के लिए एक संक्षिप्त 1-प्लाई खोज की आवश्यकता हो सकती है।


(1) सामान्यीकरण के बारे में: ऐसे कई तरीके हैं जिनसे यह किया जा सकता है और अग्रिम में यह बताना आसान नहीं है कि कौन सा सबसे अच्छा संपीड़न होगा। जनरेटर सिर्फ अलग क्रमचय की कोशिश करता है। टुकड़ों का अंतिम क्रम तालिका फ़ाइल के शीर्षलेख में संग्रहीत किया जाता है।

(२) कुछ कोम्बिनेटरिक्स। चुनौती असंभव पदों के लिए बड़े अंतराल नहीं है। हालांकि यह काफी मुश्किल है, मुझे नहीं लगता कि सियाजी यहां कुछ खास करते हैं। वैचारिक रूप से, टुकड़ों या समूहों के समूह को हेडर में निर्दिष्ट क्रम में बोर्ड पर रखा जाता है।

(3) संकुचित मूल्यों को ब्लॉकों में संग्रहीत किया जाता है। ब्लॉक हेडर टेबल हेडर में निर्दिष्ट है। ब्लॉक करने के लिए टेबल मैपिंग इंडेक्स विरल है, इसलिए यह सही ब्लॉक के बहुत करीब कूदने की अनुमति देता है और फिर सटीक ब्लॉक खोजने के लिए एक संक्षिप्त फॉरवर्ड या बैकवर्ड स्कैन की आवश्यकता होती है। एक ब्लॉक अधिकतम 65536 पदों के लिए मूल्यों को संग्रहीत कर सकता है।

(4) सियाजी टेबल आरई- पीएआईआर के आधार पर कस्टम संपीड़न का उपयोग करते हैं । एक महत्वपूर्ण विशेषता यह है कि यह वास्तव में उन मनमानी मूल्यों को संग्रहीत करने के अवसरों का लाभ उठाने की अनुमति देता है जो ऊपर पहचाने गए थे। विघटन बहुत तेज है और वांछित सूचकांक के लिए मूल्य उपलब्ध होते ही बंद हो सकता है।

वैकल्पिक रूप से, DTZ तालिकाओं को दूसरे चरण f (wdl, संग्रहीत मान) = वास्तविक मान की आवश्यकता हो सकती है। यह अतिरिक्त DTZ मानचित्र तालिका शीर्षलेख में संदर्भित है और स्वयं 8-बिट प्रविष्टियों वाली तालिका है। (आंतरिक रूप से यह 7-पीस एंडगैम के लिए अपर्याप्त था, यहां तक ​​कि प्यादों के साथ भी, इसलिए अब एक और झंडा है जो 16-बिट प्रविष्टियों को सक्षम करता है)।

DTZ मूल्यों के लिए, यदि जनरेटर ने निर्धारित किया है कि किसी तालिका के लिए सभी मान 100 से कम हैं, तो सटीक आधा-चाल की गणना के लिए किसी भी खेल की गारंटी नहीं है। इसके बजाय यह टेबल हेडर में एक ध्वज सेट करता है और अंतरिक्ष को बचाने के लिए पूर्ण-चाल के लिए आधा-चक्कर लगाता है।

इसके अलावा स्पष्ट रूप से संकेत को संग्रहीत करने की आवश्यकता नहीं है, या शापित एंडगेम के लिए +/- 100 का अतिरिक्त ऑफसेट क्योंकि यह डब्ल्यूडीएल मूल्य से अनुमान लगाया जा सकता है।

चूंकि डीकंप्रेसन बहुत तेज है, इसलिए कैश की कोई जरूरत नहीं है। इसके बजाय इंजन ऑपरेटिंग सिस्टम पेज कैश पर स्टोर करने के लिए भरोसा कर सकते हैं (अभी भी संकुचित) ब्लॉक।


6 पीस टेबल में 1507 गीगाबाइट में 3,787,154,440,416 अद्वितीय पदों के लिए डब्ल्यूडीएल और डीटीजेड जानकारी है , इसलिए प्रति स्थिति ~ 0.3 बिट्स।

इन सभी क्षेत्रों में कम से कम 3 में पिछले टेबलबेस फॉर्मेट में सभी सियाज़ी टेबल में सुधार हुआ, जिससे यह एक बहुत ही कॉम्पैक्ट और तेज़ प्रारूप बन गया। आश्चर्यजनक रूप से जनरेटर काफी तेज है।

और निश्चित रूप से DTZ50 का उपयोग करना एक व्यावहारिक विकल्प है, क्योंकि यह केवल पर्याप्त रूप से प्रगति करने के लिए पर्याप्त जानकारी है और 50-चाल नियम के साथ और इसके बिना दोनों को पूर्ण खेलने की अनुमति देता है। हालाँकि अब तक प्रकाशित Cfish के परिवर्तनों के आधार पर (RdM अब DTM तालिकाओं पर काम कर रहा है), कई तकनीक DTM पर भी लागू होंगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.