हर Griductive पहेली एक साहसिक वादा करती है: आपको कभी अनुमान लगाने की ज़रूरत नहीं होगी। हर सेल केवल तर्क के माध्यम से निर्धारित किया जा सकता है, और हर पहेली का ठीक एक सही उत्तर होता है।
यह कोई डिज़ाइन लक्ष्य नहीं है — यह एक गणितीय गारंटी है, जो ऑपरेशंस रिसर्च और चिप वेरिफिकेशन में उपयोग किए जाने वाले उसी वर्ग के सॉल्वर द्वारा सुनिश्चित की जाती है। यह पोस्ट बताती है कि कैसे।
विशिष्टता क्यों मायने रखती है
यदि किसी पहेली के दो वैध समाधान हैं, तो कम से कम एक सेल ऐसा होना चाहिए जहाँ संदिग्ध और निर्दोष दोनों सभी सुरागों को संतुष्ट करते हैं। उस सेल पर, कोई भी तर्क आपको नहीं बता सकता कि कौन सा सही है — आपको अनुमान लगाना पड़ेगा। अनुमान लगाना एक निगमन पहेली के मूल अनुबंध का उल्लंघन करता है।
इसलिए जनरेटर केवल ऐसी पहेलियाँ नहीं बनाता जिनमें संयोगवश एक समाधान हो। वह साबित करता है कि कोई दूसरा समाधान मौजूद नहीं है, इससे पहले कि पहेली कभी प्रकाशित की जाए।
पाँच चरणों वाली पाइपलाइन
प्रत्येक Griductive पहेली पाँच चरणों वाली पाइपलाइन के माध्यम से बनाई जाती है। यहाँ प्रत्येक चरण में क्या होता है।
चरण 1: एक यादृच्छिक समाधान उत्पन्न करें
जनरेटर एक वैध समाधान ग्रिड बनाकर शुरू करता है — हर सेल में संदिग्ध और निर्दोष का एक यादृच्छिक असाइनमेंट। यह वह आधार सत्य है जिसे खिलाड़ी अंततः निगमित करेगा।
इस बिंदु पर, कोई सुराग अभी तक मौजूद नहीं है। बोर्ड बस एक यादृच्छिक विन्यास है जो बुनियादी संरचनात्मक बाधाओं (ग्रिड आयाम, वैध सीमाओं के भीतर संदिग्ध गणना) को संतुष्ट करता है।
चरण 2: सुराग पूल बनाएँ
इसके बाद, जनरेटर समाधान बोर्ड पर सत्य हर संभव सुराग को संपूर्ण रूप से गणित करता है।
Griductive में 26 से अधिक विभिन्न सुराग प्रकार हैं — गणना, तुलना, स्थानिक, अस्तित्वगत, विशिष्टता, संयोजकता और अन्य। प्रत्येक प्रकार के लिए, जनरेटर बोर्ड के विरुद्ध हर वैध पैरामीटरीकरण का परीक्षण करता है। एक 4x4 ग्रिड हज़ारों उम्मीदवार सुराग उत्पन्न कर सकता है। केवल वे सुराग रखे जाते हैं जो समाधान पर true मूल्यांकित होते हैं।
यह वह कच्चा माल है जिसके साथ जनरेटर काम करता है: सच्चे कथनों का एक विशाल पूल, जिनमें से अधिकांश अनावश्यक हैं।
चरण 3: एक न्यूनतम सुराग सेट चुनें (कठिन हिस्सा)
यहीं असली काम होता है। जनरेटर को पूल से सुरागों का एक छोटा उपसमूह चुनना होता है ताकि:
- सुराग पर्याप्त हों — साथ मिलकर, वे समाधान स्थान को ठीक एक वैध बोर्ड तक सीमित करें।
- कोई सुराग अनावश्यक न हो — किसी एक सुराग को हटाने से कई समाधान संभव हो जाएँ।
जनरेटर एक ग्रीडी कंस्ट्रेंट सैटिस्फ़ैक्शन दृष्टिकोण का उपयोग करता है:
- बिना किसी सुराग के शुरू करें। समाधान स्थान पूरी तरह खुला है — कई बोर्ड वैध हो सकते हैं।
- प्रत्येक उम्मीदवार सुराग को इस आधार पर स्कोर करें कि वह समाधान स्थान को कितना संकुचित करता है। एक सुराग जो शेष संभावनाओं का 80% समाप्त करता है, उसे 10% समाप्त करने वाले की तुलना में अधिक स्कोर मिलता है।
- सबसे अधिक स्कोर वाले सुराग का चयन करें और उसे सेट में जोड़ें।
- अपडेटेड सुराग सेट के साथ कंस्ट्रेंट मॉडल को पुनः हल करें।
- तब तक दोहराएँ जब तक सॉल्वर पुष्टि नहीं कर देता कि केवल एक समाधान शेष है।
- छँटनी: अंतिम सेट से गुज़रें और किसी भी सुराग को हटा दें जो विशिष्टता के लिए आवश्यक नहीं है। यह पहेली को साफ़ रखता है और खिलाड़ी को मुफ़्त जानकारी देने से बचाता है।
परिणाम एक कसा हुआ, निष्पक्ष सुराग सेट है — पहेली को पूरी तरह हल करने के लिए पर्याप्त, बिना व्यर्थ सुरागों के।
चरण 4: कठिनाई स्कोर करें
सुराग सेट तय होने के बाद, जनरेटर पहेली की कठिनाई को 0-100 पैमाने पर स्कोर करता है। चार कारक योगदान करते हैं:
- सरल सुराग अनुपात (35%) — कितने सुराग प्रत्यक्ष गणना या पहचान कथन हैं। अधिक सरल सुराग का अर्थ है आसान पहेली।
- जटिल सुराग अनुपात (30%) — कितने सुरागों को बहु-चरण या स्थानिक तर्क की आवश्यकता है। ये गहरी निगमन श्रृंखलाओं की माँग करते हैं।
- सूचना कमी (20%) — ग्रिड आकार के सापेक्ष कितने कम सुराग दिए गए हैं। कम सुराग का अर्थ है कम संसाधन।
- ग्रिड पैमाना (15%) — बड़ी ग्रिड स्वाभाविक रूप से ट्रैक करना कठिन है। एक 5x5 पहेली में 3x3 की तुलना में लगभग तीन गुना सेल होते हैं।
प्रत्येक सुराग प्रकार की एक आंतरिक जटिलता रेटिंग भी होती है जो उसके द्वारा माँगे गए तर्क पर आधारित होती है। "Julia एक संदिग्ध है" जैसा सुराग उतना ही सरल है जितना हो सकता है। "Julia पंक्ति 3 में ठीक 1 संदिग्ध पड़ोसी वाली एकमात्र व्यक्ति है" जैसे सुराग में कई सेलों का क्रॉस-रेफ़रेंस करना पड़ता है और इसे बहुत अधिक स्कोर दिया जाता है।
चरण 5: संकेत उत्पन्न करें और आउटपुट फ़ॉर्मैट करें
अंत में, जनरेटर संकेत अनुक्रम बनाता है — एक अनुशंसित हल क्रम जो अटके हुए खिलाड़ियों को एक-एक तार्किक कदम के माध्यम से पहेली में मार्गदर्शन करता है। संकेत निर्भरता गहराई के अनुसार क्रमबद्ध होते हैं: जो सेल तुरंत निगमित किए जा सकते हैं वे पहले आते हैं, और जिन सेल के लिए पूर्व निगमनों की लंबी श्रृंखला चाहिए वे अंत में आते हैं।
अंतिम पहेली को गेम के लिए आवश्यक सभी डेटा के साथ पैकेज किया जाता है: मेटाडेटा, सुराग सेट, संकेत अनुक्रम और कठिनाई स्कोर।
सॉल्वर: विशिष्टता कैसे सिद्ध होती है
पाइपलाइन के केंद्र में Google OR-Tools CP-SAT है — एक कंस्ट्रेंट प्रोग्रामिंग सॉल्वर जो कंस्ट्रेंट प्रोपेगेशन, इंटीजर प्रोग्रामिंग और SAT सॉल्विंग को मिलाता है।
कैसे एक पहेली गणित की समस्या बनती है
ग्रिड पर प्रत्येक सेल को एक बूलियन चर के रूप में मॉडल किया जाता है: संदिग्ध (1) या निर्दोष (0)। प्रत्येक सुराग उन चरों पर एक या अधिक गणितीय बाधाएँ बन जाता है।
उदाहरण के लिए:
- "पंक्ति 3 में ठीक 2 संदिग्ध हैं" बन जाता है:
cell[3,0] + cell[3,1] + cell[3,2] + cell[3,3] = 2 - "कॉलम A में सभी संदिग्ध जुड़े हुए हैं" बन जाता है: एक संयोजकता बाधा जो सुनिश्चित करती है कि कॉलम A में संदिग्ध सेल बिना अंतराल के एक सतत श्रृंखला बनाते हैं।
- "पंक्ति 1 में कॉलम B से अधिक संदिग्ध हैं" बन जाता है:
sum(row_1) > sum(col_B)
विशिष्टता कैसे सत्यापित होती है
सुराग सेट तैयार करने के बाद, जनरेटर CP-SAT से एक सटीक प्रश्न पूछता है: "इन बाधाओं को देखते हुए, क्या एक से अधिक वैध असाइनमेंट मौजूद है?"
CP-SAT केवल एक समाधान नहीं खोजता — यह सभी समाधानों को गणित कर सकता है। यदि सॉल्वर ठीक एक पाता है, तो पहेली वैध है। यदि यह दो या अधिक पाता है, तो जनरेटर चरण 3 पर वापस जाता है और एक और सुराग जोड़ता है।
यह एक औपचारिक प्रमाण है, कोई अनुमानी नहीं। CP-SAT संपूर्ण समाधान स्थान का संपूर्ण अन्वेषण करता है। यदि यह कहता है कि एक समाधान है, तो ठीक एक है — बस।
क्यों नहीं बस ब्रूट-फ़ोर्स करें?
एक 5x5 ग्रिड में 25 सेल हैं, प्रत्येक में 2 संभव मान। यह 2^25 = 3.3 करोड़ संभव बोर्ड हैं। सभी को ब्रूट-फ़ोर्स करना धीमा है और स्केल नहीं करता।
CP-SAT कंस्ट्रेंट प्रोपेगेशन के कारण नाटकीय रूप से तेज़ है: जब कोई सुराग कहता है "पंक्ति 3 में ठीक 2 संदिग्ध हैं," तो सॉल्वर तुरंत पंक्ति 3 के हर सेल के लिए खोज स्थान को कम कर देता है बिना प्रत्येक संयोजन को अलग-अलग जाँचे। जटिल सुराग इस प्रभाव को बढ़ाते हैं। व्यवहार में, CP-SAT एक 5x5 पहेली के लिए मिलीसेकंड में विशिष्टता सिद्ध करता है।
क्या गलत हो सकता है (और हम इसे कैसे रोकते हैं)
"क्या होगा अगर कोई सुराग अस्पष्ट हो?"
प्रत्येक सुराग प्रकार की एक औपचारिक गणितीय परिभाषा है। "पड़ोसी" का अर्थ हमेशा विकर्णों सहित आसपास के 8 सेल होते हैं। "जुड़ा हुआ" का अर्थ हमेशा समीपवर्ती सेलों की एक सतत श्रृंखला है। "बीच में" का अर्थ हमेशा एक ही पंक्ति या कॉलम में, अंतिम बिंदुओं को छोड़कर, सेल होते हैं।
ये परिभाषाएँ सीधे कंस्ट्रेंट मॉडल में बनी हैं — कोई प्राकृतिक भाषा व्याख्या चरण नहीं है जहाँ अस्पष्टता प्रवेश कर सके। इन-गेम स्पष्टीकरण विवरण संदर्भ खिलाड़ियों को दिखाता है कि प्रत्येक स्थानिक शब्द का ठीक क्या अर्थ है।
"क्या होगा अगर सॉल्वर में कोई बग हो?"
CP-SAT सॉल्वर एक अच्छी तरह परीक्षित, व्यापक रूप से उपयोग किया जाने वाला उपकरण है जिसे Google की ऑप्टिमाइज़ेशन टीम द्वारा बनाए रखा जाता है। लेकिन हम केवल भरोसे पर निर्भर नहीं करते। प्रत्येक जनरेट की गई पहेली स्वतंत्र रूप से सत्यापित की जाती है:
- एक स्वचालित सॉल्वर प्रत्येक पहेली को चरण-दर-चरण हल करने का प्रयास करता है, एक मानव खिलाड़ी का अनुकरण करते हुए। यदि यह केवल तार्किक निगमन के माध्यम से पूर्ण समाधान तक नहीं पहुँच सकता, तो पहेली अस्वीकृत कर दी जाती है।
- संकेत सुदृढ़ता जाँच सत्यापित करती है कि अनुक्रम में प्रत्येक संकेत तार्किक रूप से वैध है — कि संकेतित सेल सुरागों और पहले से प्रकट सेलों से वास्तव में निगमनीय है, छिपी जानकारी से नहीं।
"क्या होगा अगर सुराग उत्पादन से कोई किनारे का मामला छूट जाए?"
प्रत्येक सुराग प्रकार का एक औपचारिक मूल्यांकन फ़ंक्शन होता है जो ज्ञात पहेली विन्यासों के विरुद्ध परीक्षित होता है। सुराग पूल उत्पादन चरण केवल उन सुरागों को शामिल करता है जो वास्तविक समाधान पर सत्य मूल्यांकित होते हैं — एक सुराग जो समाधान पर असत्य है, पहेली में कभी प्रकट नहीं हो सकता।
परिणाम
जब आप एक Griductive पहेली खोलते हैं, तो यह सब पहले ही हो चुका होता है:
- एक यादृच्छिक समाधान उत्पन्न किया गया।
- हज़ारों उम्मीदवार सुरागों का उसके विरुद्ध मूल्यांकन किया गया।
- एक न्यूनतम, गैर-अनावश्यक उपसमूह चुना गया।
- एक औपचारिक सॉल्वर ने सिद्ध किया कि ठीक एक समाधान उन सुरागों को संतुष्ट करता है।
- एक स्वचालित सॉल्वर ने स्वतंत्र रूप से सत्यापित किया कि पहेली शुद्ध निगमन के माध्यम से हल करने योग्य है।
- एक कठिनाई स्कोर की गणना की गई और संकेत अनुक्रम उत्पन्न किया गया।
हर पहेली, हर दिन, सभी चार ग्रिड आकारों में। कोई अपवाद नहीं।
वादा कायम है: यदि आप अटके हैं, तो एक सुराग है जिसका आपने पूरा उपयोग नहीं किया है। यदि आपको लगता है कि दो उत्तर संभव हैं, तो सुरागों को फिर से पढ़ें — तर्क इसे हल करेगा। और यदि आप प्रमाण चाहते हैं, तो लॉजिक ग्राफ आपको सुरागों से समाधान तक की सटीक निगमन श्रृंखला दिखाएगा।
आगे क्या: सुराग जो एक कहानी सुनाएँ
अभी, Griductive के सुराग सटीक तार्किक कथनों की तरह पढ़ते हैं — स्पष्ट और अस्पष्टता-रहित, लेकिन स्वीकार्य रूप से थोड़े नीरस। "पंक्ति 3 में ठीक 2 संदिग्ध हैं" काम कर जाता है, लेकिन यह आपको एक केस पर जासूस होने का एहसास नहीं दिलाता।
हम इसे बदलने पर सक्रिय रूप से काम कर रहे हैं। लक्ष्य है सुरागों की अभिव्यक्ति में विविधता लाना — उसी अंतर्निहित तार्किक सटीकता को बनाए रखते हुए विषयगत रंग बिखेरना। सोचिए त्योहारी आयोजनों से जुड़े सुराग, या किसी विशिष्ट अपराध स्थल से गवाही के रूप में प्रस्तुत सुराग। एक बेजान सूत्र के बजाय, आप कुछ ऐसा पढ़ेंगे जो एक जाँच के वास्तविक साक्ष्य जैसा लगे।
मुख्य बाधा नहीं बदली है: प्रत्येक सुराग को सुसंगत, अस्पष्टता-रहित और औपचारिक रूप से सत्यापन योग्य रहना चाहिए। सॉल्वर को इस बात से कोई फ़र्क नहीं पड़ता कि सुराग गणित की पाठ्यपुस्तक जैसा लगता है या एक नोयर जासूसी उपन्यास जैसा — उसे केवल तार्किक सामग्री से मतलब है। यह अलगाव ही है जो शुद्धता से समझौता किए बिना समृद्ध अभिव्यक्ति को संभव बनाता है।
वही गारंटी। वही कठोरता। लेकिन पहेलियाँ जो समीकरणों जैसी कम और सुलझाने लायक केस जैसी अधिक लगें।
कोई अनुमान नहीं। कोई भाग्य नहीं। गणितीय रूप से गारंटीकृत।