प्रकाशित: 2023-06-18

कंप्यूटर सुडोकू कैसे बनाते हैं: आपके दैनिक पहेली के पीछे का एल्गोरिदम

नीली रोशनी के ज्यामितीय लहरें तंत्रिका कोर में मिलकर डिजिटल पहेली बनाती हैं।

इंटरनेट के शांत कोनों और दुनिया भर की अखबारों की सुबह की पृष्ठों में, सुडोकू अक्सर अपनी धोखा देने वाली सरलता के लिए मनाया जाता है। यह एक सीधे-सादे संख्याओं के खेल जैसा दिखाई देता है, लेकिन इसके 9x9 ग्रिड के नीचे तार्किक जटिलता का एक विशाल सागर छिपा है। लेकिन क्या आपने कभी सोचा है कि ये ग्रिड कैसे अस्तित्व में आते हैं? जब आप ऐप पर "जनिरेट" (generate) दबाते हैं या स्थानीय पहेली पुस्तक के पेज 12 पर मुड़ते हैं, तो मशीन के अंदर वास्तव में क्या होता है?

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

आधार: लैटिन वर्गों से मान्य ग्रिड तक

इससे पहले कि एक सुडोकू ग्रिड एक वैध पहेली के रूप में अस्तित्व में आ सके, उसे पहले खेल के मौलिक नियमों को पूरा करना होगा। इसके मूल में, पूर्ण किया गया सुडोकू ग्रिड एक विशिष्ट प्रकार का लैटिन वर्ग (Latin Square) है। एक लैटिन वर्ग n×n अरे होता है जिसमें n भिन्न प्रतीक होते हैं, जिनमें से प्रत्येक सटीक रूप से एक बार प्रत्येक पंक्ति में और सटीक रूप से एक बार प्रत्येक स्तंभ में होता है।

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

  • हर पंक्ति में अंक 1 से 9 तक सटीक रूप से एक बार हो।
  • हर स्तंभ में अंक 1 से 9 तक सटीक रूप से एक बार हो।
  • हर 3x3 बॉक्स में अंक 1 से 9 तक सटीक रूप से एक बार हो।

कंप्यूटर बैकट्रैकिंग एल्गोरिदम या वर्तन विधियों (permutation methods) का उपयोग करके इन प्रारंभिक "हल किए गए" ग्रिड बनाते हैं। प्रक्रिया आमतौर पर पहले पंक्ति से शुरू होती है, जो संख्याओं के किसी भी वर्तन हो सकती है (उदाहरण के लिए, 1-2-3-4-5-6-7-8-9)। इसके बाद की पंक्तियों को अतीत की पंक्तियों या स्तंभ सीमाओं के साथ टकराव न करते हुए वैध वर्तन खोजकर भरा जाता है। एक बार जब पूरा ग्रिड बना दिया जाता है, तो यह सभी भविष्य की पहेलियों के लिए "समाधान कैनवास" के रूप में कार्य करता है जो इससे व्युत्पन्न होते हैं।

अंतःक्षेप का कला: पहेली बनाना

एक हल किया गया ग्रिड उस मानव खिलाड़ी के लिए बेकार है जिसके लिए हर संख्या पहले से ही दृश्यमान है। चुनौती अखंडता को बनाए रखते हुए संख्याओं को निकालने में निहित है। यह चरण एक गणितीय समाधान को एक रोमांचक खेल में बदल देता है।

जनित्र प्रक्रिया इन सामान्य चरणों का पालन करती है:

  1. हल किया गया ग्रिड चुनें: लगभग 6.67 × 10^21 संभावित वैध सुडोकू ग्रिड में से एक चुनें।
  2. अंक iterative रूप से हटाएं: कंप्यूटर एक के बाद एक संख्याएं निकालना शुरू करता है, आमतौर पर यादृच्छिक स्थानों से शुरू होकर।
  3. अद्वितीयता की जांच करें: प्रत्येक अंतःक्षेप के बाद, एल्गोरिदम आंशिक रूप से भरे गए ग्रिड को हल करने का प्रयास करता है। यदि पहेली में एक से अधिक समाधान हैं, तो निकाले गए अंक को वापस रख दिया जाता है। यह महत्वपूर्ण है; एक अच्छा सुडोकू ठीक एक अद्वितीय समाधान होना चाहिए।
  4. पूर्ण होने तक दोहराएं: यह प्रक्रिया तब तक जारी रहती है जब तक कि अभीष्ट संख्या में सहायक अंक (clues) नहीं बच जाते, जो कि मानक कठिनाई स्तरों के लिए आमतौर पर 25 और 35 के बीच होते हैं, जबकि 17 प्रमाणित गणितीय न्यूनतम है।

सुडोकू में एक अद्वितीय समाधान की गारंटी देने के लिए आवश्यक सहायक अंकों की न्यूनतम संख्या 17 है। हालांकि, 80 से अधिक सहायक अंक वाली पहेलियां होना संभव है (जिन्हें अक्सर ट्रिवियल या "आसान" माना जाता है), अच्छी तरह से डिज़ाइन की गई पहेलियां आमतौर पर एक संतुलन बनाती हैं जिसके लिए निरंतर तार्किक निगमन की आवश्यकता होती है।

चुनौती रेटिंग एल्गोरिदम

आप पूछ सकते हैं कि कंप्यूटर कैसे जानता है कि पहेली "आसान," "मध्यम" या "विशेषज्ञ" है। दिलचस्प बात यह है कि अधिकांश मानक जनित्र कठिनाई को कच्चे प्रसंस्करण समय के आधार पर रेटिंग नहीं देते हैं। इसके बजाय, वे तार्किक तकनीक वर्गीकरण पर निर्भर करते हैं।

प्राथमिक विधि ग्रिड में आगे बढ़ने के लिए आवश्यक तार्किक चरणों को वर्गीकृत करने से संबंधित है। एल्गोरिदम तकनीकों की एक पायदान का उपयोग करके पहेली को हल करने का प्रयास करता है:

  1. नैक्ड सिंगल्स (Naked Singles): सेल जिनमें केवल एक ही संभावित उम्मीदवार होता है।
  2. हिडन सिंगल्स (Hidden Singles): ऐसे सेल जहां एक अंक केवल एक विशिष्ट पंक्ति, स्तंभ या बॉक्स में एक स्थान पर ही जा सकता है।
  3. पेयर्स और ट्रिपल्स (Pairs and Triples): उन पैटर्न को खोजना जहां दो या तीन सेल समान दो उम्मीदवारों को साझा करते हैं।
  4. X-विंग्स और सॉर्डफिश (X-Wings and Swordfish): कई पंक्तियों और स्तंभों में शामिल अधिक उन्नत तार्किक निगमन।

यदि किसी पहेली को पूरी तरह से बुनियादी स्कैनिंग (नैक्ड/हिडन सिंगल्स) का उपयोग करके हल किया जा सकता है, तो इसे आमतौर पर "आसान" के रूप में वर्गीकृत किया जाता है। जैसे-जैसे समाधानकर्ती को पैटर्न पहचान या अग्रानुमानित तर्क लागू करने की आवश्यकता होती है, कठिनाई रेटिंग बढ़ जाती है। यही कारण है कि एकल संख्या के अंतःक्षेप या योग से पहेली की श्रेणी को कभी-कभी बदल दिया जा सकता है—इससे अधिक जटिल तार्किक चरण का उपयोग करना आवश्यक हो सकता है।

मानक सुडोकू के परे: एल्गोरिदम अनुकूलन

सुडोकू जनित्र के सिद्धांत केवल क्लासिक 9x9 ग्रिड तक सीमित नहीं हैं। आधुनिक लॉजिक पहेली ऐप्स और वेबसाइटें अनोखे मोड़ वाले भिन्नताएं बनाने के लिए इन ही एल्गोरिदमिक ढांचों का उपयोग करती हैं। उदाहरण के लिए, एक किलर सुडोकू बनाने में एक मान्य ग्रिड बनाना शामिल होता है लेकिन फिर उसे "सीज" (cages) में विभाजित करना होता है जहां अंकों का योग लक्ष्य संख्या से मेल खाना चाहिए। यहाँ जनित्र अधिक जटिल है क्योंकि सीज की सीमाएँ अंतर्निहित ग्रिड संख्याओं के साथ संगत होनी चाहिए।

इसी तरह, कैलकुडोकू (इसे KenKen भी कहा जाता है) जनित्र में सीज को अंकगणितीय संचालकों को असाइन करने की आवश्यकता होती है यह सुनिश्चित करते हुए कि परिणामी गणितीय समीकरणों के ग्रिड के भीतर अद्वितीय समाधान हों। ये भिन्नताएं अक्सर कस्टम एल्गोरिदम की आवश्यकता होती हैं क्योंकि सीमाएं केवल स्थितिगत नहीं बल्कि अंकगणितीय होती हैं।

एंटी-सिमेट्री और तुल्यता वर्ग (Equivalence Classes)

विविधता सुनिश्चित करने के लिए, कंप्यूटर एक ही ग्रिड को कभी दो बार उपयोग नहीं करते हैं। हालांकि, अधिकांश अनुप्रयोगों के लिए 6.67 quintillion अद्वितीय ग्रिड बनाने की आवश्यकता नहीं है। इसके बजाय, जनित्र सममिति (symmetry) और तुल्यता वर्ग का उपयोग करते हैं।

सुडोकू ग्रिड में कई रूपांतरण होते हैं जो उनके मौलिक "तर्क" को नहीं बदलते हैं। इनमें शामिल हैं:

  • अंक वर्तन (Digit Permutation): सभी 1s को 2s से, सभी 2s को 3s से आदि विनिमय करना। पहेली संरचनात्मक रूप से समान ही रहती है।
  • पंक्ति/स्तंभ विनिमय (Row/Column Swapping): एक ही बैंड के भीतर पूर्ण पंक्तियों को या पूरे तीन पंक्तियों के बैंड्स को विनिमय करना।
  • घूर्णन और परावर्तन (Rotation and Reflection): ग्रिड को क्षैतिज रूप से, ऊर्ध्वाधर रूप से उलटना या 90 डिग्री द्वारा घुमाना।

इन सममितियों को समझकर, एक जनित्र एक "मास्टर" ग्रिड चुन सकता है और सौखों की संख्या में दृश्य रूप से भिन्न पहेलियां बना सकता है जो तार्किक रूप से तुल्य हैं। इससे ऐप्स को अरबों अनोखे अंतर्निहित समाधानों की आवश्यकता के बिना हज़ारों ताज़ा दिखने वाली पहेलियों को प्रदान करने की अनुमति मिलती है।

यह आपको क्यों मायने रखता है

सुडोकू कैसे जनित्र होता है, यह समझना खेल के प्रति आपके दृष्टिकोण को बदल देता है। आप यादृच्छिक संख्याओं के संग्रह का खेल नहीं खेल रहे हैं; आप एक सावधानीपूर्वक निर्मित तार्किक भूमिगत मार्ग में नेविगेट कर रहे हैं जिसे एल्गोरिदम विशिष्ट परिज्ञान कौशलों को परखने के लिए डिज़ाइन किया गया है। आप जो आरंभिक-अनुकूल प्लेटफ़ॉर्म पर देखते हैं वे कठिनाई रेटिंग, आवश्यक तार्किक तकनीकों की गहराई के आधार पर गणना की जाती है, यह सुनिश्चित करते हुए कि जैसे-जैसे आप उन्नत होते हैं, आपकी पहेलियां जटिलता में अनुकूलित होती हैं लेकिन मनमानी नहीं बनतीं।

चाहे आप एक सरल वार्म-अप ग्रिड संभाल रहे हों या किलर सुडोकू की जटिल अंतर्ग्रथित सीज में डुबकी लगा रहे हों, यह जान लें कि हर संख्या एक मशीन द्वारा स्थानांतरित है जो गणितीय कठोरता और खेलनुम भरी चुनौती के बीच संतुलन बना रही है। यह स्क्रीन के पीछे की इंजीनियरिंग सुनिश्चित करती है कि चाहे आप कितना भी खेलें, अगली पहेली आपके दिमाग के लिए हमेशा एक ताज़ा, हल करने योग्य और संतोषजनक यात्रा हो।

तो, अगली बार जब आप एक अंतिम अंक भरते हैं और "सफलता" संदेश देखते हैं, तो उस पलों को संभव बनाने के लिए सेकंडों में हुए अरबों गणनाओं को याद रखें। यह केवल एक खेल नहीं है; यह हर किसी के लिए सुलभ किया गया कंप्यूटेशनल तर्क का उपलब्ध है।

Play Qoki on mobile

Prefer to play offline? Get the app.