क्या डोमिनोज़ एनपी-हार्ड है?


26

डोमिनोज़ा एक अपेक्षाकृत नया पहेली खेल है। यह एक ग्रिड पर खेला जाता है । खेल शुरू होने से पहले, डोमिनोज़ बोन्स ग्रिड पर रखे जाते हैं (एक सही टाइलिंग का निर्माण करते हैं) )। अगले चरण में, डोमिनोज़ हड्डियां छिपी हुई हैं, जिससे केवल संख्या का पता चलता है। खेल का उद्देश्य डोमिनोज़ हड्डियों की मूल व्यवस्था को पुनर्प्राप्त करना है। आप यहाँ खेल खेल सकते हैं: http://www.puzzle-dominosa.com/ :(n+1)×(n+2)(0,0),(0,1),,(n,n)

नियम:

नियम सरल हैं। आपको ग्रिड पर सभी डोमिनोज़ का स्थान ढूंढना होगा। एक डोमिनोज़ संख्याओं की एक जोड़ी है। आपके पास केवल प्रत्येक जोड़ी हो सकती है।

मेरे पास कुछ बहुपद एल्गोरिदम हैं जो पहेली के अपेक्षाकृत छोटे हिस्से को हल करते हैं। मैं यह भी दिखा सकता हूं कि विशिष्ट डोमिनोज़ ग्रिड में कम से कम समाधान होते हैं।2n2+o(n)

क्या डोमिनोज़ एनपी-हार्ड है?


"पहेली को आसानी से SAT या ILP समस्या में कम किया जा सकता है।" एनपी-पूर्णता साबित करने के लिए, क्या आप अन्य तरीके से नहीं चाहेंगे?
डेनिस मेंग

1
@DennisMeng प्रश्न में वर्णित कटौती का बिंदु यह स्थापित करना है कि समस्या एनपी में है। तो यह है कि यह साबित करना है कि यह मुश्किल है। संयोग से, किसी को यह देखने के लिए कटौती की आवश्यकता नहीं है कि समस्या एनपी में है। डोमोस की व्यवस्था अपने आप में एक बहुपद के आकार का साक्षी है।

मैं मान रहा हूं कि समस्या जिसकी एनपी-पूर्णता समस्या है, संख्याओं की व्यवस्था को देखते हुए, क्या यह डोमोस की व्यवस्था से आता है। यदि समस्या वास्तव में डोमोस (जब यह मौजूद है) की व्यवस्था को प्रदर्शित करना है, तो समस्या एक निर्णय समस्या नहीं है और "एनपी पूरा" का कोई मतलब नहीं है।

@AndreasBlass एक भी बड़ा समस्या पर विचार कर सकता है: एक को देखते हुए तत्व से डोमिनोज के सबसेट करने के लिए , और एक ग्राफ के साथ कोने लेबल करने के लिए निर्धारित करता है कि यह देखते हुए डोमिनोज के साथ कवर करने के लिए संभव है। यदि यह समस्या पी में है, तो मूल टाइलिंग को पुनर्प्राप्त करने के लिए एक पी-टाइम एल्गोरिथ्म है, क्योंकि आप पी-समय में एक किनारे को हटाने और परीक्षण करने की कोशिश कर सकते हैं कि क्या ग्रिड को पूरा करना संभव है। 1 n G 2 k 1 nk1nG2k1n

1
जी। नोरद के एक पेपर के अनुसार, सामान्यीकृत मल्टी स्कोलम अनुक्रमों की एनपी-पूर्णता, निम्न समान समस्या एनपी-पूर्ण है। उदाहरण: एक ग्राफ , किनारों का एक भाग सेट में: with ऐसा है कि एक ही लेबल के साथ कोई दो किनारों एक शीर्ष साझा करें। प्रश्न: क्या कोई उपसमूह साथ है ऐसा है कि M में कोई दो किनारे एक सामान्य शीर्ष साझा नहीं करते हैं और ऐसा M जिसमें प्रत्येक से अधिकांश एक किनारे पर है ? 1 , 2 , , एम , | एम | | वी | /| मैं | 2 , मैं = 1 , ... , मीटर एम | एम | = | वी | / 2 i , i = 1G=(V,E)E1,E2,...,Em,|m||V|/2|Ei|2, i=1,,mME|M|=|V|/2Ei, i=1,,m
योव बार सिनाई

जवाबों:


9

नोट: यह मेरे अन्य उत्तर का एक निरंतरता और संशोधन है ।

कमी के साथ समस्या

निर्णय समस्या को याद करें:

वहाँ एक आदर्श एक एक दिया कवर टाइलिंग है के साथ ग्रिड अद्वितीय टाइल?n(n+1)×(n+2)n

इसलिए ग्रिड के लिए, हम केवल चरों का उपयोग कर सकते हैं ।n(n+1)×(n+2)n

परंतु:

  • हमारी कमी के लिए बहुत से अद्वितीय चरों की आवश्यकता होती है , से बहुत अधिक ।O(n)
  • इसके अलावा, हमारे तार खुले हैं, जो आगे बढ़ते हैं:
    • हम कैसे जानते हैं कि हम खुले क्षेत्रों में टाइल लगा सकते हैं?

पहली समस्या को हल करने के लिए, हम कृत्रिम रूप से गेम-बोर्ड को बहुत बड़ा बनाते हैं; अनिवार्य रूप से हम उन चरों की संख्या के बराबर बनाते हैं जिनकी हमें वास्तव में आवश्यकता होती है, फिर आकार का ग्रिड बनाते हैं , और अपने ग्रिड को निचले बाएँ कोने में रखते हैं। यह एक द्विघात आघात को जन्म देगा।( n + 1 ) × ( n + 2 )n(n+1)×(n+2)

दूसरी समस्या के लिए, हमें अपने गैजेट को थोड़ा पुनर्विचार करना चाहिए।

यह साबित करने के लिए थोड़ा कठिन लग सकता है कि हम नियम के अनुसार बाकी बोर्ड को सफलतापूर्वक टाइल कर सकते हैं। इसलिए हम उसी रणनीति के साथ शुरुआत करते हैं जो वास्तव में गेम-बोर्ड के आकार उपयोग करने के लिए उपयोग करेगी :(n+1)×(n+2)

पहले हम सभी संभव टाइलों का एक सेट उत्पन्न करते हैं। इन सभी टाइल्स को बोर्ड पर लगाना होगा। फिर हम टाइल्स को हटाते हैं, और उनके वर्गों को पीछे छोड़ देते हैं।

हालाँकि, हमारे गैजेट्स इस बात की गारंटी नहीं देते हैं कि टाइल्स के एक विशेष सेट को रखा जाएगा; रखी गई टाइलें राज्य पर निर्भर करती हैं। इसलिए हमें विशेष रूप से टाइलों को हटाने की गारंटी देने के लिए गैजेट्स को सावधानीपूर्वक संशोधित करना चाहिए , चाहे कोई भी राज्य चुना जाए।

चलो फिर हमारे गैजेट्स पर चलते हैं।

तार और खण्ड-द्वार दो कारणों से समस्याग्रस्त हैं।

  1. हम नहीं जानते कि किसी तार या खण्ड-द्वार के आसपास के वर्गों को सही ढंग से टाइल किया जा सकता है; सब के बाद, कुछ तारों को बाईं ओर, दूसरों को दाईं ओर धकेल दिया जा सकता है, और शेष सफेद-अंतरिक्ष चौकों को टाइल करना गैर-तुच्छ हो जाता है। हम इस समस्या को "प्रवाह" समस्या के रूप में संदर्भित करेंगे।
  2. टाइल-सेट से किस टाइल को निकालना है, यह जानने का कोई तरीका नहीं है ; एक राज्य में, तार या खंड-द्वार में वर्गों का एक सेट, दूसरे राज्य में, एक पूरी तरह से अलग वर्गों के टाइलों को टाइल किया जाएगा।

इन मुद्दों को हल करने के लिए:

  • सबसे पहले, हम सभी संभव टाइलों का एक सेट उत्पन्न करते हैं। इन सभी टाइलों को बोर्ड पर रखना होगा; जैसा कि हम उन्हें बोर्ड पर रखते हैं, हम सेट से टाइल निकाल देंगे। हालाँकि, हम पहले से ही बारे में नहीं जानते हैं , क्योंकि हमारे पास फॉर्म्युलेशन का पूरी तरह से वर्णन करने के लिए अभी तक नहीं है, हम सभी नई टाइल की संभावनाओं को जोड़ सकते हैं क्योंकि हम बढ़ाते हैं , आवश्यकतानुसार। सभी टाइलें जो हम इस सेट से निकालते हैं, उन्हें गारंटी देने योग्य होना चाहिए (कम से कम, गारंटी योग्य होने की गारंटी दी जाए यदि सूत्र संतोषजनक है)। हम टाइल-सेट से एक टाइल को हटाने को टाइल-सेट से टाइल को "डिस्चार्ज" करने के लिए कहते हैं, जैसा कि गेम-बोर्ड पर इसे लगाने के लिए हमारे दायित्व का निर्वहन करना है।nnn
  • हमें विशेष रूप से टाइलों को हटाने की गारंटी देने के लिए गैजेट्स को ध्यान से डिज़ाइन करना चाहिए , चाहे कोई भी राज्य चुना गया हो।
  • हमें अपने गैजेट को बंद करना चाहिए, ताकि वे अपने राज्य के आधार पर बोर्ड के चारों ओर टाइल न डालें; बल्कि उनके सभी राज्यों को केवल एक विशेष रूप से अच्छी तरह से परिभाषित क्षेत्र को अपनाना चाहिए।
    • वैकल्पिक रूप से, उनके सभी राज्यों को एक अच्छी तरह से परिभाषित क्षेत्र लेने में सक्षम होने की गारंटी दी जानी चाहिए ; यह एक संतोषजनक टाइलिंग की गारंटी देता है, लेकिन यह गारंटी नहीं देता है कि एक विशेष टाइलिंग होगी। यह उसी तरह है जैसे एक डोमिनोज़ा खेल बनाया जाता है:
      • पहले टाइलें एक सेट में उत्पन्न होती हैं;
      • फिर टाइलों को एक यादृच्छिक कॉन्फ़िगरेशन में रखा जाता है,
      • जैसा कि प्रत्येक टाइल रखा जाता है, इसे टाइल-सेट से हटा दिया जाता है।
      • फिर टाइलों को बोर्ड से हटा दिया जाता है, उनके वर्गों को पीछे छोड़ते हुए।
      • यह गारंटी नहीं देता है कि इच्छित कॉन्फ़िगरेशन को चुना जाएगा ,
      • दरअसल, यह गारंटी देता है कि इरादा विन्यास है सक्षम चुना जाना, और इस तरह एक समाधान मौजूद है। हम यहां वही काम कर सकते हैं।
  • फॉर्मूलेशन के सभी गैजेट्स रखने के बाद , डिफ़ॉल्ट रूप से सभी व्हाट्सएप ”पर यूनिक स्क्वायर रखने के बजाय , हम यह सुनिश्चित करते हैं कि व्हाट्सएप एक आयताकार क्षेत्र है जिसमें एक भी आयाम है, या व्हाट्सएप को आयतों में तोड़ दें। एक भी आयाम, और हम टाइल-सेट में शेष टाइल के साथ बस व्हाट्सएप को टाइल करते हैं।
  • सेट से सभी टाइलों को रखने के बाद, हमें पता है कि सब कुछ प्रशंसनीय है।
    • कुछ टाइलें स्पष्ट रूप से प्रशंसनीय होंगी, जैसे कि दीवारों में, अन्य केवल उन उपकरणों के बीच संबंधों की प्रकृति के कारण, यदि फार्मूला संतोषजनक है, तो वे स्वीकार्य होंगे।
  • फिर हम टाइल्स को हटाते हैं, और उनके वर्गों को पीछे छोड़ देते हैं।

चलो फिर हमारे गैजेट्स पर चलते हैं।

मजबूरन गैजेट

हम यह सुनिश्चित करके कि वे प्रत्येक को खुद के साथ जोड़ा नहीं जा सकता, बिल्डिंग ब्लॉक की एक मनमानी संख्या बना सकते हैं।

उदाहरण के लिए, मान लें कि हम एक टाइल को बाध्य करना चाहते हैं , ताकि हम को एक के रूप में उपयोग कर सकें। निर्माण खंड। (ध्यान दें, एक मनमाना चर है, जिसे हम जोड़ी के रूप में खुद पर लागू करना चाहते हैं, जरूरी नहीं कि एक बिल्डिंग ब्लॉक जैसा कि हमने पहले मान का उपयोग किया हो )1 1 1(1,1)111

यह गारंटी देने के लिए कि हमारे पुनर्निर्माण-ब्लॉक भंडार , हम इसे नीचे की दीवार के खिलाफ रख देंगे निम्नलिखित विन्यास: हम आरक्षित संख्या को स्थान देंगे, आइए इसे दीवार के खिलाफ , जैसे कि अप-टैक (आकार जैसे ); दीवार के खिलाफ , और बीच में 2 पंक्ति में एक। फिर हम एक और दो नंबर , आइए हम उन्हें और ; ये इस गैजेट के लिए अद्वितीय हैं। हम इन्हें बाएँ और दाएँ ।( 1 , 1 ) 1 3 231 1(1,1)13231

नीचे चित्रित, साझा ब्लैक बॉर्डर गेम-बोर्ड के नीचे है, बाएं से दाएं वर्णन।

  • गैजेट का कॉन्फ़िगरेशन। प्रत्येक और यहाँ इस गैजेट के लिए अद्वितीय हैं।323
  • केंद्र को टाइल करने की 3 संभावित ।1

यहाँ छवि विवरण दर्ज करें

ऐसा करने के बाद, हम गारंटी दे सकते हैं कि हमारे गैजेट को टाइलों के एक विशिष्ट सेट के साथ टाइल किया जा सकता है, जबकि यह गारंटी देते हैं कि हमारे गैजेट को जोड़ी को मजबूर करना होगा।(1,1)

  • हम जानते हैं कि होना चाहिए, क्योंकि निम्न मध्य सभी 3 संभावित टाइलिंग स्टेट्स , टाइल as , जैसा कि ऊपर दाईं ओर आकृति में दर्शाया गया है।1 ( 1 , 1 )(1,1)1(1,1)
  • शेष टाइलों को गैजेट को कवर करते हुए और रूप में टाइल किया जा सकता है । इस प्रकार, हम उन टाइलों को अपने वैश्विक टाइल-सेट से निकाल सकते हैं। नीचे दिया गया।( 1 , 3 )(1,2)(1,3)

विवरण, बाएं से दाएं:

  • लेफ्ट, टॉप: लेफ्ट स्टेट, लेफ्ट, बॉटम: शेष वर्गों का एक मान्य टाइलिंग।
  • मध्य, शीर्ष: मध्य राज्य, मध्य, नीचे: शेष वर्गों का एक मान्य टाइलिंग।
  • राइट, टॉप: राइट स्टेट, राइट, बॉटम: शेष वर्गों का एक मान्य टाइलिंग।

यहाँ छवि विवरण दर्ज करें

ध्यान दें, कि शेष वर्गों की टाइलिंग को मजबूर नहीं किया गया है , क्योंकि वे बजाय आस-पास के पड़ोसियों के साथ टाइल कर सकते हैं , लेकिन चूंकि यह सभी राज्यों में गेम-बोर्ड का एक वैध टाइलिंग है। , हम उन्हें टाइल-सेट से हटा सकते हैं, और मान सकते हैं कि वे बिल्कुल उसी तरह से टाइल किए जाएंगे। चूँकि हम जानते हैं कि एक मान्य संभव टाइलिंग है, हमारे पास गेम-बोर्ड की कम से कम एक संभव टाइलिंग है, यदि सूत्र संतोषजनक है। हालांकि इस बात की कोई गारंटी नहीं है कि ये इस तरह से टाइल किए जाएंगे, इस बात की कोई गारंटी नहीं है कि टाइल को मजबूर किया जाएगा।( 1 , 1 )1(1,1)

नोट: यदि आप इससे संतुष्ट नहीं हैं, या "टाइल करने में सक्षम" बनाम "टाइल के लिए मजबूर होने" के अंतर से भ्रमित हैं, तो आप बस गैजेट के चारों ओर एक दीवार रख सकते हैं , उसी तरह हम क्लॉज़-गैजेट के लिए नीचे एक दीवार बनाते हैं ।3 × 23×23×2

यह गैजेट बंद नहीं है, क्योंकि इसे होने की आवश्यकता नहीं है (लेकिन यदि आप चाहें तो आप कर सकते हैं)। इसकी आवश्यकता नहीं है, क्योंकि इसमें एक व्यवहार्य विन्यास है, जिसे हम टाइल-सेट से निकाल सकते हैं। हालांकि एक अलग कॉन्फ़िगरेशन करना संभव हो सकता है, लेकिन यह समस्या की संतुष्टि को प्रभावित नहीं करता है।

निम्नलिखित टाइलों को टाइल किए जाने की गारंटी दी गई है (इस प्रकार टाइल-सेट से हटाया जा सकता है): (1,1)

निम्नलिखित टाइलों को टाइल किए जाने में सक्षम होने की गारंटी दी जाती है (इस प्रकार टाइल-सेट से हटाया जा सकता है): (1,2),(1,3)

यदि आप इस गैजेट को दीवार के साथ बंद करना चुनते हैं, तो भी होंगे कवर किए जाने की गारंटी।(1,2),(1,3)

नया तार और खण्ड द्वार

क्योंकि बहने वाली समस्याओं, और टाइल-सेट को खाली करने के कारण, हमें तार को थोड़ा नया करने की आवश्यकता है।

प्रवाह की समस्या को हल करने का एक तरीका, तार को केवल सरल बाएं-दाएं राज्यों के बजाय एक सर्किट बनाना है; यही है, यह एक लाइन के बजाय गोलाकार होगा, और इसलिए यदि सर्कल के शीर्ष भाग को दाएं धक्का दिया जाता है, तो नीचे बाईं ओर धक्का दिया जाएगा। यह प्रवाह समस्या को हल करता है।

इस मार्ग का अनुसरण करते हुए, हम दोनों समस्याओं को हल करने के लिए वायर और क्लॉज गेट को बदल सकते हैं।

और आरक्षण करनाएफTF

आइए हम दो नए सार्वभौमिक मूल्यों, और परिचय दें । ये दो मूल्य सार्वभौमिक हैं; ग्रिड में वास्तविक मान, जैसे कि वर्ग-मान और (कन्वेंशन के बाद से, हमने को दीवारों के लिए बिल्डिंग ब्लॉक के रूप में आरक्षित किया है), या जो भी आप चुनते हैं। वे क्रमशः सत्य और असत्य का प्रतिनिधित्व करते हैं।एफ 2 3 1TF231

हम टाइल्स को आरक्षित करते हैं , , , निम्नानुसार; नीचे चित्रण, बाएँ से दाएँ वर्णन:( टी , टी ) ( एफ , एफ )(T,F)(T,T)(F,F)

  • हम किसी भी टाइल को मजबूर करने के लिए एक ही योजना का उपयोग करते हैं, को । प्रत्येक और यहाँ इस गैजेट के लिए अद्वितीय हैं।टी 1 23(1,1)T123
  • हम किसी भी मजबूर कर के रूप में ही योजना का उपयोग टाइल, का उपयोग कर के रूप में प्रत्येक और यहां इस गैजेट के लिए अद्वितीय हैं।एफ 1 23(1,1)F123
  • हम एक ही योजना का उपयोग एक टाइल को मजबूर करने के लिए करते हैं, को में केंद्र में उपयोग करते हैं, और अप-व्यवहार के अन्य स्थानों में का उपयोग करना । यह बल टाइल करने के लिए। और साथ टाइल करने में सक्षम हैं , इसलिए हम उन्हें टाइल-सेट से हटा देते हैं। प्रत्येक और यहाँ इस गैजेट के लिए अद्वितीय हैं।एफ 1 टी ( एफ , टी ) 23टी 23(1,1)F1T(F,T)23T23

यहाँ छवि विवरण दर्ज करें

तार

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

  • एक तार जो एक खंड में भाग लेता है। तार की ऊँचाई , और की लंबाई है , जहाँ उस खंड की संख्या है जिसमें तार भाग लेता है। तार बाईं ओर दो वर्गों द्वारा गढ़ा जाता है , और दाईं ओर दो। यह निश्चित रूप से, सभी पक्षों पर एक दीवार से घिरा हुआ है, जो नीले रंग की रूपरेखा द्वारा इंगित किया गया है। ध्यान दें, कि इस तार के लिए अद्वितीय है, और इसका उपयोग केवल तार में किया जाएगा, और जो खंड इसमें भाग लेता है।2 * पी + 3 पी 1 22p+3pA1

यहाँ छवि विवरण दर्ज करें

नीचे दिए गए दो राज्यों में बाएं से दाएं का वर्णन है।

  • एक तार जो एक खंड में, वास्तविक स्थिति में भाग लेता है। तार को सही माना जाता है, जब वर्गों को एक वर्ग के साथ जोड़ दिया जाता है , और वर्गों को वर्ग के साथ जोड़ दिया जाता है। यह दूसरे राज्य में गलत माना जाता है, जहां टाइलिंग उलट जाती है। ध्यान दें कि एक बार टाइल चयनित होने पर टाइलिंग को कैसे मजबूर किया जाता है: पहले से ही पहले से मजबूर हैं, इस प्रकार बाकी टाइलें क्षैतिज होनी चाहिए।टी एक्स 'एफ ( टी , एफ )xTxFA(T,F)
  • झूठी अवस्था में वही तार।

यहाँ छवि विवरण दर्ज करें

अधिक खंडों में भाग लेने पर, अधिक मान , और , प्रत्येक खंड के लिए एक तार तार में भाग लेता है। वे वैकल्पिक रूप से ऊपर और नीचे होते रहते हैं, जैसा कि और वर्ग जो प्रत्येक युग्म को अलग करते हैं।एक्स 'टी एफ एक्स , एक्स 'xxTFx,x

यहाँ छवि विवरण दर्ज करें

दो संगत राज्यों।

यहाँ छवि विवरण दर्ज करें

यह गैजेट बंद है , इस प्रकार कोई "प्रवाह समस्या" नहीं है।

ध्यान दें कि कैसे या तो राज्य में, हम निम्नलिखित टाइल एकत्र करते हैं, कोई फर्क नहीं पड़ता कि राज्य: , , ।( , टी ) ( , एफ )(A,A)(A,T)(A,F)

हालाँकि, कुछ टाइलें हैं, जिनके बारे में हम अनिश्चित हैं; एक अवस्था में हम टाइल-सेट से, जबकि दूसरे राज्य में हम निकाल सकते हैं टाइल-सेट से, ताकि कौन सी टाइल हम लगा सकें वास्तव में हटा दें? जवाब है: क्लॉज गेट में एक ही समस्या है, लेकिन टाइल्स के विपरीत सेट के साथ। यह हमेशा शेष, विपरीत और अनियंत्रित टाइलों को इकट्ठा करेगा, जैसा कि हम अगले भाग में देखेंगे। चूंकि इनमें से प्रत्येक को क्लॉज गेट के साथ जोड़ा जाता है, इसलिए हम उन दोनों को निकाल पाएंगे।( 1 , एफ ) , ( 1 ' , टी ) , ( 2 , एफ ) , ( 2 ' , टी )(1,T),(1,F),(2,T),(2,F)...(1,F),(1,T),(2,F),(2,T)...

धारा

अगला हम नए क्लॉज गेट की पहली पुनरावृत्ति बनाएंगे। इसमें गैजेट होते हैं , जो दीवारों से घिरे होते हैं। गैजेट के अंदर, हम शीर्ष-केंद्र में एक और निचले कोनों में दो वर्ग रखते हैं; निचले-बाएँ में एक, और निचले-दाएँ में एक। शेष वर्ग तीन अलग-अलग तारों के तार-चर का प्रतिनिधित्व करने वाले मान होंगे। हमें ये और । तार-चर के साथ जोड़ी के लिए मजबूर हो जाएगा, और शेष तार-चर के साथ युग्मित हो जाएगा मूल्यों। नीचे दिए गए चित्र, बाएं से दाएं वर्णन।एफ टी एक , , एफ टी2×3FTa,b,cFT

  • वाम: नए खंड-द्वार के पहले पुनरावृत्ति के लिए विन्यास।
  • राइट तीन की संभावित स्थितियों में टाइलिंग।F

यहाँ छवि विवरण दर्ज करें

ये तीन राज्य तीन संभावित झुकाव की ओर ले जाते हैं। नीचे चित्रण, बाएं से दाएं वर्णन।

  • बाएँ, शीर्ष : टाइलें बाएँ, बाएँ, नीचे: शेष वर्गों को बाँधना।F
  • मध्य, शीर्ष : सही, मध्य, निचला: शेष वर्ग टाइलिंग।F
  • दाईं ओर, शीर्ष : नीचे की ओर दाएं, दाएं, नीचे: शेष वर्गों को टाइलिंग।F

यहाँ छवि विवरण दर्ज करें

चूंकि तार-चर में से एक के साथ रखा जाएगा खंड में , कि तार-चर नहीं रह गया है के साथ रखा जा सकता है तार में ; इस प्रकार वायर को सच करने के लिए मजबूर करना। इसके विपरीत, शेष वायर-चर जो टाइल के साथ को उनके तारों के भीतर साथ टाइल करने के लिए मजबूर किया जाएगा । यह ठीक वैसी ही अड़चन है जैसे कि क्लॉज।एफ टी एफ 1 -in- 3 - एस टीFF TF1-in-3-SAT

ध्यान दें, और तार-चर हैं, लेकिन वे प्रत्येक को एक या रूप में संदर्भित कर सकते हैं तार-चर; एक का उपयोग कर अनिवार्य रूप से तार-चर negating है।एक्स एक्स 'एक्स 'a,b,cxxx

एक अतिरिक्त: यह जानने के दायित्व का निर्वहन करने के लिए कि टाइल-टाइल से कौन सी टाइलें निकाली जा सकती हैं, हमें क्लॉज को "डबल और कॉन्ट्रासेप्टिव" करना होगा। मेरा इससे क्या मतलब है, एक और गैजेट बनाना है, जिसमें अतिरिक्त चर और _ के नकारों का प्रतिनिधित्व करते हैं । हमें ये और । ये और के नकारात्मक चर-तार मान होने चाहिए । यह गैजेट अलग है, इसमें केंद्र में एक और दो होंगे3×23a,b,ca,b,ca,b,c3×2TFकोनों पर ; इस प्रकार वर्णित क्लॉज गैजेट के बिल्कुल विपरीत। इस तरह खंड को "दोगुना" करके, हम ऊपर वर्णित गैजेट के समान बाधाओं को फिर से जोड़ते हैं। हालाँकि, हम सभी संयोजनों का भी निर्वहन करते हैं। टाइल-सेट से, प्रत्येक चर के लिए (और इस तरह और साथ ही, क्योंकि वे सब के बाद हैं, तार-चर)। नीचे सचित्र, बाएं से दाएं वर्णन।(T,x),(T,x),(F,x),(F,x)a,b,c

  • एक "डबल और गर्भनिरोधक" खंड। नीचे का खंड ऊपर वर्णित खंड है; शीर्ष अनुभाग नव वर्णित गर्भनिरोधक खंड है। नए क्लॉज में बिल्कुल तार्किक बाधाएं हैं; यह नीचे के खंड का गर्भनिरोधक है। साथ में, ये संयुक्त गैजेट्स और वायर सभी संयोजनों का निर्वहन करते हैं खंड में भाग लेने वाले प्रत्येक तार-चर के लिए टाइल-सेट से ।(T,x),(F,x),(T,x),(F,x)
  • बाईं-सबसे आकृति के बीच में नीली रेखा आसानी से देखने के लिए है; वास्तव में इसे और अधिक राज्यों की अनुमति के बिना हटाया जा सकता है।

यहाँ छवि विवरण दर्ज करें

तो, आइए हम एक उदाहरण लेते हैं, यह दिखाने के लिए कि सभी टाइलों को वादा किया गया है। नीचे सचित्र, बाएं से दाएं वर्णन।

  • एकल खंड में भाग लेने वाले तार का चित्र; क्लाज के लिए एक राज्य चुना जाता है। यहां, हम का उपयोग कर रहे हैं , जबकि और इस खंड में अन्य तार-मानों का प्रतिनिधित्व कर रहे हैं।1=bab
  • क्लाज में दिए गए राज्य के लिए, मान को पड़ोसी साथ रखा जाना चाहिए ।1T
  • यह तार को सत्य-मान के लिए मजबूर करने का कारण बनता है (आप बता सकते हैं कि तार का सकारात्मक चर साथ युग्मित करने के लिए मजबूर है , और नकारात्मक चर को साथ युग्मित करने के लिए मजबूर किया जाता है , जैसा कि ऊपर बताया गया है। )।TF
  • यह गर्भनिरोधक खंड (खंड के ऊपरी खंड) में _ को बल के भीतर के साथ जोड़ा जाता है । अब यदि आप तार को देखते हैं, तो तार के भीतर की प्रत्येक टाइल को डिस्चार्ज होने की गारंटी दी जाती है: या तो तार में ही छुट्टी दे दी जाती है, या संबंधित क्लॉज-गैजेट में। इस स्थिति में, हमारे पास टाइलें हैं, , , , , , , और ।1T(A,A)(A,T)(A,F)(1,T)(1,F)(1,F)(1,T)

यहाँ छवि विवरण दर्ज करें

दूसरे राज्य की कोशिश करते हुए, हमें नीचे चित्रण मिलता है, बाएं से दाएं वर्णन।

  • क्लॉज दूसरे राज्य में है, को दो में से एक तरीके से।(1,T
  • इसलिए, को तार पर मजबूर किया जाता है,(1,F
  • तार के बाकी हिस्सों को इसी तरह टाइल करें, और तार को झूठे मान दें।
  • अंत में, क्लॉज़-गैजेट के गर्भनिरोधक / ऊपरी भाग में, को टाइल लगाना चाहिए, क्योंकि में लिया जाता है तार। इस स्थिति में, हमारे पास टाइलें हैं, , , , , , , और । ये उसी तरह की टाइलें हैं जिन्हें अन्य राज्य में छुट्टी दी गई है(1,F)(1,T)(A,A)(A,T)(A,F)(1,T)(1,F)(1,F)(1,T)

यहाँ छवि विवरण दर्ज करें

इस प्रकार या तो राज्य में, हम एक ही टाइल का निर्वहन करते हैं। इसलिए, यदि एक संतोषजनक कार्यभार है तो तार और खण्ड मिलकर विशिष्ट टाइलों का सफलतापूर्वक निर्वहन करते हैं।

यह गैजेट बंद है , इसलिए प्रवाह समस्या नहीं होगी। वायर गैजेट के साथ क्लॉज-गैजेट को हमेशा एक ही टाइल-जोड़ी मानों को डिस्चार्ज करने की गारंटी दी जाती है , और इस प्रकार हम इन्हें डिस्चार्ज भी कर सकते हैं, भले ही हमें पता न हो कि यह किस तरह से टाइल करेगा।

अब हमारे सभी गैजेट मानदंडों को पूरा करते हैं।

निरूपण

हमारे अंतिम सूत्रीकरण में, हम गैजेट की तीन पंक्तियों को बनाते हैं, प्रत्येक एक क्षैतिज दीवार से अलग होता है।

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

चित्र प्रत्येक चित्र के ऊपर वर्णन, वर्णन करते हैं। पूर्ण संकल्प के लिए छवियों पर क्लिक करें। छवियों को पुन: उत्पन्न / उत्पन्न करने के लिए स्रोत कोड पृष्ठ के नीचे सूचीबद्ध है।

सूत्र के रूप में , हमारे पास एक संतोषजनक है समाधान एक गवाह के रूप में।Φ(x)=(x1,¬x2,x3)(x2,¬x3,x4)(x1,x2,¬x4)(¬x1,x2,x3,¬x4)

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

यहाँ छवि विवरण दर्ज करें

अगला, हम गैजेट दिखाते हैं। नीली रूपरेखा गैजेट की सीमाओं का प्रतिनिधित्व करती है; फोर्जिंग-गैजेट के लिए धराशायी नीला, क्योंकि वे दीवारों से घिरे नहीं होंगे। ध्यान दें कि क्लॉज गैजेट के बीच की रेखा दीवार से घिरी नहीं है; यह आसानी से देखने के लिए है; लाइन को दूर ले जाने से क्लॉज में और अधिक राज्यों को उत्पन्न होने की अनुमति नहीं है, जैसा कि ऊपर बताया गया है, लेकिन हम इस प्रदर्शन के लिए नीली रेखा दिखाते हैं। नोट: जब हम लागू होते हैं तो संख्याओं को पठनीयता देने के लिए वर्ग-नामों का उपयोग करते हैं। प्रत्येक नाम एक संख्यात्मक मान का प्रतिनिधित्व करता है।

यहाँ छवि विवरण दर्ज करें

यहां हम ऊर्ध्वाधर दीवारों में भरते हैं।

यहाँ छवि विवरण दर्ज करें

यहां हम साक्षी समाधान में भरते हैं; यानी इसे उत्पन्न करने के लिए SAT समाधान का उपयोग करने पर यह टाइलिंग समाधान है।

यहाँ छवि विवरण दर्ज करें

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

यहाँ छवि विवरण दर्ज करें

यहां हम शेष वर्गों में एक तुच्छ वैध टाइलिंग के साथ भरते हैं।

यहाँ छवि विवरण दर्ज करें

यहां हम ग्रिड के निचले दाएं कोने को दिखाते हैं।

यहाँ छवि विवरण दर्ज करें

यहां हम ग्रिड के ऊपरी दाएं कोने को दिखाते हैं। ध्यान दें कि ऊर्ध्वाधर टाइलें अब कैसे फिट होती हैं; इसलिए यदि आवश्यक हो, तो हम शीर्ष पंक्ति को क्षैतिज रूप से टाइल करते हैं।

यहाँ छवि विवरण दर्ज करें

और अंत में टॉप-लेफ्ट कॉर्नर।

यहाँ छवि विवरण दर्ज करें

TeX के माध्यम से एक ही बार में पूरे गेम-बोर्ड को तैयार करना pdflatex से आउट-ऑफ-मेमोरी त्रुटियों के साथ विफल हो जाता है, इसलिए यदि आप इसे देखना चाहते हैं, तो आपको क्लिप उत्पन्न करना होगा और उन्हें एक साथ पैच करना होगा। नोटबुक व्यूअर को देखना सुनिश्चित करें ।


टिकज के स्रोत

गेम जनरेटर:

  • graphtex.py

    PXflatex, pdfcairo (poppler), और rsvg-convert (libsvg) का उपयोग करके XX को svg में परिवर्तित करता है

  • dominosa.py

    इसमें रूपांतरण तर्क, गेम-सॉल्यूशन सत्यापन और ड्राइंग तर्क शामिल हैं

  • dominosa_demo.py

    एक निष्पादन योग्य डेमो जो ऊपर दिए गए उत्तर में उपयोग की गई छवियों को उत्पन्न करता है। वर्तमान-कार्य-निर्देशिका में छवियों को डंप करता है।

  • dominosa_demo.ipynb

    एक ipython डेमो जो ऊपर दिए गए उत्तर में उपयोग की गई छवियों को उत्पन्न करता है।


1
यह spactacular है .. आप बहुत बहुत धन्यवाद,
Yoav बार सिनाई

2
कृपया मुझे बताएं कि आपके पास इसका एक पुरातन संस्करण है। यह हो सकता है और अधिक उचित के लिए इस मंच एक स्केच और पूरा पेपर के लिए लिंक शामिल करने के लिए हो सकता है।
राफेल

22

DOMINOSA NP-hard है


खेल खेलना एक अनुकूलन समस्या है; एक मान्य डोमिनोज़ को इस तरह से देखना कि यह सभी वर्गों को कवर करता है। इस समस्या का निर्णय संस्करण है:

वहाँ एक आदर्श एक एक दिया कवर टाइलिंग है के साथ ग्रिड अद्वितीय टाइल?(n+1)×(n+2)n

जाहिर है, अनुकूलन समस्या, वास्तव में खेल का हल खोजने की समस्या निर्णय समस्या की तुलना में कम से कम कठिन या कठिन है।

हम एक में परिवर्तित कर देंगे एक इसी ग्रिड, कि केवल coverable हो जाएगा करने के लिए सूत्र iff सूत्र के एक संतुष्टि योग्य काम है। इसके अलावा, कवरिंग वास्तव में संतोषजनक असाइनमेंट को पुनर्प्राप्त करने के लिए इस्तेमाल किया जा सकता है।1-3-in-SAT

इसलिए, यदि प्रस्तुत किया गया निर्माण सही है, और एक DTM पर बहुपद समय में एक खेल को हल कर सकता है , तो यह । इसका तात्पर्य है एनपी-हार्ड।P=NPDOMINOSA

से कटौती को1-3-in-SATDOMINOSA

परिचय

अधिकांश समस्याओं / वेरिएंट में के लिए एक बहुत अच्छा पत्राचार है । समानांतर में समस्याओं के बारे में सोचना महत्वपूर्ण हो सकता है; जैसा कि वे एक-दूसरे से संबंधित हैं, एक समस्या में लगभग कुछ भी दूसरे में संबंधित हो सकता है।3-SATCIRCUITSAT

CIRCUITSAT का एक वैरिएंट होता है, जिसमें यह घटता है, जिसे । यह रूपांतरण बहुत ही सुरुचिपूर्ण है, और मूल रूप से आपको किसी भी प्लानर को एम्बेड करने की अनुमति देता है, शेष क्रॉसिंग तारों को ढूंढता है, और एक "गैजेट" का उपयोग करके तारों को एक प्लैनर "गेट" (गैजेट का संग्रह, इनपुट और आउटपुट तारों के साथ) पार करने देता है। ।PLANAR-CIRCUITSAT

आसानी से, अधिकांश वेरिएंट में भी प्लांटर वैरिएंट्स में कमी होती है, जो कि समानांतर , और बहुत संबंधित हैं; आसानी से एक से दूसरे में reducible, और के बारे में तर्क करने के लिए आसान। इसलिए जब भी मैं किसी ऐसे प्लेनर समस्या पर आता हूं जो एनपी-हार्ड हो सकता है, तो मुझे लगता है कि के प्लानर वेरिएंट के संदर्भ में , और में उनके समानताएं ।3-SATPLANAR-CIRCUITSAT3-SATPLANAR-CIRCUITSAT

प्लानर वेरिएंट को जानना महत्वपूर्ण है, क्योंकि वे यूक्लिडियन टीएसपी की तरह प्लेनर / जियोमेट्रिक समस्याओं को कम करने में मदद करते हैं (संयोग से खोजने और सीखने के लिए एक बहुत ही दुर्लभ कमी)। इस प्रकार, वहाँ , और एक पैरेलल, , इस तरह की कटौती में सहायता करने के लिए।PLANAR-3-SATPLANAR-CIRCUITSAT

अन्य वेरिएंट जानना महत्वपूर्ण है क्योंकि उनमें से कुछ कमजोर हैं; यह प्रतीत होता है, "आसान" है, फिर भी अभी भी एनपी-पूर्ण है। वे पहली नज़र में हल करना आसान लगते हैं - और वे बहुत सरल हैं - फिर भी अभी भी एनपी-पूर्ण हैं। एनपी-पूर्ण, लेकिन सरल; और इसलिए कई मामलों में कटौती करना आसान है।3-SAT

उदाहरण के लिए, । कुछ समस्याओं के लिए, आप "3 से कम से कम 1 में" बनाते समय, आसानी से एक बिल्कुल गैजेट बना सकते हैं, जैसे मानक उपयोग, गैर-स्पष्ट होगा और विशाल निर्माणों के लिए किया जाएगा।1-in-3-SAT1-in-33-SAT

एक अन्य उदाहरण । जब आपके पास एक निर्माण होता है तो मोनोटोन चीजों को बहुत सरल बनाता है जो आसानी से मूल्यों को नकार नहीं सकते हैं।MONOTONE-1-in-3-SAT

इससे भी अधिक आश्चर्यजनक यह है कि का एक प्लानर वैरिएंट है: ! तो इससे चीजें बहुत आसान हो जाती हैं; आपको "तारों" को पार करने की ज़रूरत नहीं है (याद रखें, इन में समानताएं हैं ), और मुझ पर भरोसा करें, जबकि पार करने वाले गैजेट बनाने में मज़ेदार हैं, वे बहुत गैर-स्पष्ट और कठिन हो जाते हैं।MONOTONE-1-in-3-SATPLANAR-MONOTONE-1-in-3-SATCIRCUITSAT

PROBLEMMONOTONEPLANAR1-in-3NP-hard3-SATNoNoNoYesMONOTONE-3-SATYesNoNoNo1PLANAR-3-SATNoYesNoYes21-in-3-SATNoNoYesYes3PLANAR1-in-3-SATNoYesYesYes4MONOTONE-1-in-3-SATYesNoYesYes5PLANAR-MONOTONE-3-SATYesYesNoYes!6PLANAR-MONOTONE-1-in-3-SATYesYesYesYes7
  1. शुद्ध शाब्दिक उन्मूलन
  2. शेफर की द्विभाजन प्रमेय
  3. संगत प्रतिनिधियों की समस्या
  4. न्यूनतम वजन त्रिकोण एनपी-हार्ड है
  5. शेफर की द्विभाजन प्रमेय
  6. परफेक्ट ऑटो-पार्टिशन ढूँढना एनपी-हार्ड है
  7. इष्टतम बाइनरी अंतरिक्ष विभाजन विमान में

एक कमी के साथ शुरू करने का एक तरीका है, "गैजेट्स" को खोजने की कोशिश करना जो तारों से मिलते-जुलते हैं, और एक गैजेट जो वेरिएंट में से एक का एक जैसा दिखता है । एक बोनस के रूप में, कई वेरिएंट प्लानर हैं, हम शायद तारों को पार किए बिना दूर हो सकते हैं।3-SAT

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

एक बिल्डिंग-ब्लॉक

  • सबसे पहले, आइए एक संख्या आरक्षित करें, उदाहरण के लिए, बोर्ड पर । हम बाकी सब चीजों के लिए बिल्डिंग ब्लॉक बना देंगे ।11
  • हमें यकीन है कि यह सुनिश्चित करने के एक कोने का उपयोग करेगा दूसरे से कनेक्ट नहीं कर सकते हैं इस कोने में, को छोड़कर जहां यह होना चाहिए।11
  • नीचे (तीन आकृतियों में) कोना है, और हम कैसे s वहां रखते हैं।1
  • हम सभी ग्रिड में, सभी ग्रिड में अद्वितीय मूल्यों को इंगित करने के लिए का उपयोग करेंगे ।
  • वास्तव में, हम अपने ग्रिड को महत्वपूर्ण मानों के साथ ओवरले करने से पहले मूल्यों के साथ कवर करेंगे ; इसलिए, डिफ़ॉल्ट रूप से मानों के साथ सब कुछ कवर करें ।

यहाँ छवि विवरण दर्ज करें

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

एक संख्या को जमा करने के वैकल्पिक तरीके हैं, या तो उनमें से के साथ दीवार के खिलाफ , या कहीं के बीच में, उनमें से को एक क्रॉस के साथ। कोई भी तरीका ठीक है, जब तक कि को मजबूर किया जाता है।45(1,1)

एक दीवार

अब, यह ग्रिड के किनारों पर नहीं, बल्कि सभी जगह "दीवारें" और "कोनों" बनाने में सक्षम होने के लिए बहुत उपयोगी होगा। देखो अगर हम एक पंक्ति में लोगों के जोड़े को पंक्तिबद्ध करते हैं तो क्या होता है; किसी के पास अपने पड़ोसियों के साथ जोड़ी बनाने के अलावा और कोई चारा नहीं है, जिससे चौड़ाई की "दीवार" बन जाए ।4

नीचे से दाएं चित्र:

  1. s के जोड़े की एक पंक्ति ।1
  2. उस -square का एकमात्र संभव टाइलिंग ।1
  3. लाइन में केवल (लगभग) सभी s की केवल संभव टाइलिंग ।1
  4. जोर के लिए खींची गई दीवार की रेखा।

यहाँ छवि विवरण दर्ज करें

एक तार पर एक प्रारंभिक प्रयास

अब, प्रत्येक-दूसरे के विपरीत दो "दीवारें" रखकर, और दीवारों के बीच में एक स्थान को छोड़कर , शायद हम "तार" जैसे गैजेट के साथ आ सकते हैं।1

केवल दीवार-सीमाओं को दिखाते हुए, यह वह है जो हम नीचे दिए गए आंकड़ों में प्राप्त करते हैं:

  • एक-दूसरे के सामने दो दीवारें रखना।
  • अंदर अद्वितीय संख्या डाल रहा है।
  • सबसे सही दो: तार के दो संभावित राज्य।

यहाँ छवि विवरण दर्ज करें

यह काम किस प्रकार करता है:

ट्यूब / तार में कोई छेद नहीं हो सकता है, इसलिए, अगर टाइल को ऊपर स्थानांतरित किया जाता है, तो उन्हें सभी को ट्यूब के साथ स्थानांतरित किया जाना चाहिए; अगर वे नीचे स्थानांतरित कर दिए जाते हैं, तो यह उन सभी को नीचे "चूसना" करेगा। इस प्रकार, हम तार के एक तरफ से दूसरे तक "सिग्नल" भेज सकते हैं; दूसरे शब्दों में, एक मूल्य का प्रचार करें।

इस प्रकार, अब हम लंबी दूरी पर एक मूल्य का प्रचार कर सकते हैं!

शेष सीमाएँ हैं:

  • हम एक तार को मोड़ नहीं सकते,
  • हम एक तार को विभाजित नहीं कर सकते,
  • हम तारों को पार नहीं कर सकते,
  • हमें परेशान करने वाले लेआउट मुद्दे हो सकते हैं क्योंकि हमें तार-लंबाई समता के बारे में सावधान रहना चाहिए।

एक तार झुकना , भाग 1: दीवार के नीचे

अगली समस्या यह है, हमें एक तार को मोड़ने में सक्षम होने की जरूरत है, न कि सीधे जाने की ...

इसलिए। हम झुकने वाले हिस्से को दो भागों में तोड़ देंगे; ऊपरी भाग और निचला भाग। पहला निचला हिस्सा। मोड़ के ऊपरी हिस्से को अनदेखा करें, हम बाद में करेंगे।

नीचे दिए गए आंकड़े झुकने के साथ थोड़ी समस्या दिखाते हैं; तार का शीर्ष "ढीला" है, एक दीवार बनाने में मुश्किल लगता है जो 90 डिग्री तेज हो जाती है।

बाएं से दाएं:

  • एक तार का शीर्ष "ढीला" है।
  • अगर हम इसे मोड़ने की कोशिश करते हैं तो क्या होता है; हम नीली रेखाओं के बीच होना चाहते हैं। फिर से, मोड़ के ऊपरी हिस्से को अनदेखा करें, हम बाद में करेंगे।
  • जैसा कि आप देख सकते हैं, शीर्ष s ढीले हैं, वे दीवार के साथ, या तार के माध्यम से टाइल कर सकते हैं ! यह अच्छा नहीं है।1

यहाँ छवि विवरण दर्ज करें

एक समाधान इस प्रकार है:

  • मोड़ के पास एक पेयर चुनें। उस वर्ग का मान लें , हम इसे नाम दें ; इसका मतलब है कि संख्या पूरे ग्रिड में अद्वितीय है, जैसे , और एक बार पुन: उपयोग किया जाता है, यहाँ केवल इस मोड़ में है । चूँकि इस को a के साथ जोड़ा जाता है , इसे फिर से a साथ जोड़ा नहीं जा सकता । इसलिए, हम इसे सबसे दाहिने-सबसे ऊपरी ठीक ऊपर रखते हैं । अब, हम स्पष्ट रूप से देख सकते हैं, उस लिए जोड़ी बनाने के लिए एकमात्र विकल्प उसके दाईं ओर है, और इस तरह यह दीवार को मजबूत करेगा।(x,1)xqx1111

नीचे चित्रण, बाएं से दाएं वर्णन:

  • समस्या के साथ स्थिति।
  • एक वर्ग चुनें, मोड़ में किसी भी वर्ग का वर्ग मान हो (बेशक not s हालांकि)।q1
  • सबसे दाहिने-सबसे ऊपरी झुकाव के दो टॉगल ; इस बार, उनमें से केवल एक वैध है।1

यहाँ छवि विवरण दर्ज करें

हालाँकि, हम यह कैसे सुनिश्चित कर सकते हैं कि यह तार को बर्बाद नहीं करेगा? नीचे आप तार की स्थिति देख सकते हैं, और यह कि इससे बाधित नहीं होगा।qq

बाएं से दाएं:

  • वर्तमान निर्माण।
  • दो सबसे सही आंकड़े: तार की स्थिति; आनुभविक रूप से, वे की शुरूआत से बाधा नहीं हैं ।q

यहाँ छवि विवरण दर्ज करें

अब हमारे पास शीर्ष पर एक ढीला है; सबसे बाईं ओर- ।11

हम वही काम करेंगे; एक जोड़ी जो पहले से ही बेंड-टाइलों में जोड़ी गई है, और बाईं ओर सबसे ऊपरी- शीर्ष पर रखें। ।(r,1)r1

नीचे चित्र, बाएं से दाएं:

  • हमारा वर्तमान निर्माण।
  • समस्या: leftmost- topmost- तार में एक संख्या के साथ , या दीवार के साथ जोड़ सकता है ; हम चाहते हैं कि यह केवल दीवार के साथ जोड़ी बनाए।1
  • एक , और सबसे बाईं ओर के शीर्ष पर समान संख्या का उपयोग करना- ।r1

यहाँ छवि विवरण दर्ज करें

और हम अंत में अपने निचले मोड़ को प्राप्त करते हैं। नीचे दिए गए विवरण, बाएं से दाएं:

  • वाम: एक मोड़ के लिए हमारा अंतिम निर्माण।
  • दाएं: बाईं ओर तार कैसे जारी रखें।

यहाँ छवि विवरण दर्ज करें

एक तार झुकना , भाग 2: दीवार के ऊपर

मोड़ के शीर्ष कोने को बनाने की दीवारें अधिक सरल हैं। आप एक क्षैतिज दीवार के साथ एक ऊर्ध्वाधर दीवार को सरल संरेखित करते हैं। नीचे चित्रण, बाएं से दाएं वर्णन:

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

यहाँ छवि विवरण दर्ज करें

अब आपको आश्वस्त होना चाहिए कि हम तारों को जगह और मोड़ सकते हैं। हम अभी भी तारों को विभाजित या पार नहीं कर सकते हैं, हालांकि बाद में और अधिक।

शेष सीमाएँ हैं:

  • हम एक तार को मोड़ नहीं सकते,
  • हम एक तार को विभाजित नहीं कर सकते,
  • हम तारों को पार नहीं कर सकते,
  • हमें परेशान करने वाले लेआउट मुद्दे हो सकते हैं क्योंकि हमें तार-लंबाई समता के बारे में सावधान रहना चाहिए।

एक मान्य तार

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

  • बायां: एक तार।
  • अधिकार: वर्ग-विन्यास।

यहाँ छवि विवरण दर्ज करें

तो हम कैसे बताएं कि कोई तार सही है या गलत है? खैर, एक तार में दो राज्य होते हैं। इनमें से प्रत्येक राज्य में, या में से एक को एक ही टाइल में जोड़ा जाएगा; जोड़ा गया मान तार का मान है। नीचे चित्रण, बाएं से दाएं नीचे की ओर:TF

  • बाएं, दाएं: मूल्यवान तार के दो राज्य ;
  • बायाँ: तार को माना जाता है, क्योंकि वर्ग एक एकल टाइल साझा करते हैंT
  • सही: वायर को मिथ्या माना जाता है क्योंकि वर्ग एक एकल टाइल साझा करते हैं।F

यहाँ छवि विवरण दर्ज करें

अब हम चर का नाम रख सकते हैं जिसका उपयोग हम अपने चर पर ग्रिड में करने के लिए कर सकते हैं। हम दो मूल्यवान तारों को जोड़ सकते हैं और उन्हें एक ही मूल्य के लिए मजबूर कर सकते हैं , या अगर हम उन्हें एक विषम-लंबाई के साथ जोड़ते हैं, तो उन्हें अलग-अलग मान रखने के लिए मजबूर करें; और तारों का उपयोग करके, हम ग्रिड के आर-पार लंबी दूरी तय कर सकते हैं। तारों का उपयोग करके, हम नामित चर के मूल्यों को सभी जगह प्रचारित कर सकते हैं।3-SAT

शेष सीमाएँ हैं:

  • हम एक तार को विभाजित नहीं कर सकते,
  • हम तारों को पार नहीं कर सकते,
  • हमें परेशान करने वाले लेआउट मुद्दे हो सकते हैं क्योंकि हमें तार-लंबाई समता के बारे में सावधान रहना चाहिए।

नहीं-गेट

एक गैर-गेट अनावश्यक है क्योंकि यह निहित है: बस एक-एक तार की लंबाई का उपयोग करके हम तार के मूल्य को नकार सकते हैं।

एक क्लॉज गेट

अब मैं एक साधारण क्लॉज़ गैजेट प्रदर्शित कर सकता हूं; यह तारों से जुड़ेगा, और उनमें से एक को "खींच" राज्य होने के लिए मजबूर करेगा, और अन्य दो को "धकेल" स्थिति में रहने के लिए मजबूर करेगा। हम इसका उपयोग कर सकते हैं, यह वास्तव में एक-में-तीन संबंध है; हमने "सत्य" का अर्थ करने के लिए विषम-तार-राज्य निर्धारित किया है, और अन्य दो तार-राज्यों का अर्थ "झूठा" है, और हम सेट हैं।3

नीचे दिए गए चित्र, बाएं से दाएं वर्णन:

  • क्लॉज गैजेट का वायर-लेआउट। यह एक "प्लस" संकेत बनाता है; एक स्थान पर 3 तारों का जुड़ना।
  • अद्वितीय वर्गों के साथ तार भरें ।
  • केंद्र वर्ग के तीन राज्य। इन राज्यों में से प्रत्येक केंद्र में एक तार को "खींचता है", गेट का आवश्यक बिंदु; एक तरह कार्य खंड।1-in-3-SAT

यहाँ छवि विवरण दर्ज करें

अब आइए विभिन्न राज्यों पर एक नज़र डालें। नीचे चित्रण, बाएं से दाएं वर्णन:

  • बाएं तार को केंद्र में खींच लिया जाता है; अन्य दो को बाहर धकेल दिया जाता है।
  • नीचे के तार को केंद्र में खींच लिया जाता है; अन्य दो को बाहर धकेल दिया जाता है।
  • नीचे-दाएं तार को केंद्र में खींच लिया जाता है; अन्य दो को बाहर धकेल दिया जाता है।

यहाँ छवि विवरण दर्ज करें

अब, यदि आप इस गेट के अंत तक सही लंबाई-समता (सम या विषम लंबाई) के साथ तारों को जोड़ते हैं, तो उनमें से केवल एक ही सही हो सकता है, अन्य दो झूठे (यदि आप उन्हें अजीब तरह से संलग्न करते हैं, तो आप इसे सामान्य कर सकते हैं बिट)। इस प्रकार हम मानों को CNF क्लॉज में जोड़ सकते हैं ।31-in-3

शेष सीमाएँ हैं:

  • हम एक तार को विभाजित नहीं कर सकते,
  • हम तारों को पार नहीं कर सकते,
  • हमें परेशान करने वाले लेआउट मुद्दे हो सकते हैं क्योंकि हमें तार-लंबाई समता के बारे में सावधान रहना चाहिए।

एक तार को विभाजित करना

एक तार को विभाजित करने के लिए, हम पहले दो तारों को एक-दूसरे के बगल में पंक्तिबद्ध करते हैं। अगला, एक दृश्य सहायता के रूप में, हम तारों में से प्रत्येक को दो वर्गों के साथ लेबल करते हैं , एक दूसरे के बगल में। यह हमें यह देखने की अनुमति देगा कि जब तार "सही" है: जब दो एक टाइल में एक तार के वर्ग, तो यह सच होगा, अन्यथा गलत। प्रत्येक तार को अपनी अपनी जोड़ी जोड़े मिलनी चाहिए , इसलिए हम एक जोड़ी का नाम और दूसरे । फिर हम तीन नए नामित-यूनिक वैल्यू,TTTT1T2a,b,c। हम इन तीनों को एक-दूसरे के बगल में रखेंगे, एक बार प्रत्येक तार पर। हालाँकि, एक तार पर, वर्ग और जोड़ी के बीच एक एकल _ वर्ग रखें । दूसरे तार पर, वर्गों के बीच दो _ वर्ग रखें।a,b,cTa,b,c

नीचे चित्रण, बाएं से दाएं वर्णन:

  • तार लेआउट। ध्यान दें कि दीवारें थोड़ी मोटी हैं, इसलिए चित्रण प्रयोजनों के लिए तारों को एक साथ करीब से खींचा जाता है; वास्तव में, वे थोड़ा अलग हैं।
  • वर्ग-मूल्य; शीर्ष पर मान, और विभाजन-कनेक्टर्स नीचे।Ta,b,c

यहाँ छवि विवरण दर्ज करें

यह क्या करता है तारों को अलग नहीं होने के लिए मजबूर करना है; यदि _ एक तार पर टाइल किया जाता है, तो दूसरा तार एक-एक करके बंद नहीं किया जा सकता है, क्योंकि तब वह _ _ को टाइल पर रख देगा। दूसरा तार, और इस तरह _ को दो बार टाइल किया जाएगा। नीचे चित्रण, बाएं से दाएं वर्णन:a,ba,ba,b

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

यहाँ छवि विवरण दर्ज करें

यदि आप अन्य दो संभावित राज्यों के साथ घूमते हैं, तो आप देखेंगे कि यह उन लोगों तक भी फैला हुआ है, और यह दोनों तरीकों से काम करता है। इस प्रकार ये दोनों तार अब एक जैसे हैं; हमने सफलतापूर्वक एक तार को विभाजित किया है। हम जितनी बार चाहें उतनी बार तार को विभाजित कर सकते हैं, हर बार नए सेट का उपयोग करके ।a,b,c

शेष सीमाएँ हैं:

  • हम एक तार को विभाजित नहीं कर सकते,
  • हम तारों को पार नहीं कर सकते,
  • हमें परेशान करने वाले लेआउट मुद्दे हो सकते हैं क्योंकि हमें तार-लंबाई समता के बारे में सावधान रहना चाहिए।

एक ताररहित तार!

खैर, मेरी खुशी के लिए, एक तार का विभाजन ताररहित हो गया! यही है, ऊपर के चित्र में, मैं तारों को एक-दूसरे के बगल में रखता हूं, लेकिन कोई कारण नहीं है! हम ग्रिड पर कहीं भी तारों को रख सकते हैं, और वे अभी भी "उलझे" होंगे इसलिए बोलने के लिए। यह हमें बहुत परेशानी से बचाता है:

  • हमें तारों को पार करने की भी चिंता नहीं है। यह हमें गैर-प्लानर वेरिएंट से कम करने देता है3-SAT
  • हमें किसी भी कष्टप्रद लेआउट को करना होगा, उनके स्थानों पर तारों को प्राप्त करना, यह आसान है! एक ताररहित फोन की तरह! आजादी!
  • हमें वायर-लेंथ पैरिटी / ऑफ-बाय-वन लेआउट के बारे में चिंता करने की जरूरत नहीं है।
  • हम कम से कम आकार में कमी कर सकते हैं; चर प्रत्येक को लंबे तार स्ट्रिप्स का एक सेट मिलेगा, जिसमें तारों के साथ बहुत सारे तार रहित कनेक्शन होंगे। ये कनेक्शन क्लॉज-गेट्स के लिए होंगे, जो ग्रिड पर अपने स्थान पर निवास करेंगे। क्लॉज में अब केवल क्लॉज गैजेट और तीन तार रहित तार होंगे, जो इससे बाहर चिपके रहेंगे।

शेष सीमाएँ हैं:

  • हम तारों को पार नहीं कर सकते,
  • हमें परेशान करने वाले लेआउट मुद्दे हो सकते हैं क्योंकि हमें तार-लंबाई समता के बारे में सावधान रहना चाहिए।

कटौती, पहला प्रयास

Let एक बूलियन फॉर्मूला हो।Φ(x)=iCi1-in-3-SAT

  • प्रत्येक , ग्रिड के निचले भाग के पास, पंक्तियों में, एक लंबा तार ।xjx
  • प्रत्येक , ग्रिड के शीर्ष पर एक क्लॉज-गेट बनाएं; हालाँकि, आप उन्हें पसंद कर सकते हैं; सबसे अच्छा इसे एक वर्ग क्षेत्र में भरें, लेकिन आप इसे एक ही लंबी पंक्ति में भी बिछा सकते हैं।CiΦ(x)
  • क्लॉज में भाग लेने वाले प्रत्येक वेरिएबल के लिए, क्लॉज गेट के वायर-पिनों में से एक पर एक कॉर्डलेस-वायर ; इसी तरह के वैरिएबल वायर / रो पर प्रत्येक कनेक्शन के दूसरे को रखें। नकारात्मक शब्दों को तार-लंबाई-समता को बदलते हुए और मूल्य को नकारते हुए, एक तार की दूरी पर स्थित ताररहित संबंध को केवल खंड में रखना चाहिए।xjCi3a,b,c

यह कैसा दिख सकता है:

  • चित्रा: एक खंड, सीधे ताररहित तारों से जुड़ा। "हॉटस्पॉट्स" जिस तरह से हम यहां से का प्रतीक हैं । ये हॉटपॉट प्रत्येक ग्रिड में चर से जुड़े होंगे।a,b,c

यहाँ छवि विवरण दर्ज करें

और यहाँ ग्रिड की तरह लग सकता है:

  • चित्रा: परिणामी खेल-बोर्ड। चर नीचे की ओर पंक्तियों में पंक्तिबद्ध हैं। खंड शीर्ष पर फैले हुए हैं। यह लेआउट द्विघात झटका देता है; एक चतुर लेआउट द्विघात झटका से बच सकता है।

यहाँ छवि विवरण दर्ज करें

अंतिम मिनट का विवरण

निर्णय समस्या को याद करें:

वहाँ एक आदर्श एक एक दिया कवर टाइलिंग है के साथ ग्रिड अद्वितीय टाइल?(n+1)×(n+2)n

इसलिए ग्रिड के लिए, हम केवल चरों का उपयोग कर सकते हैं । लेकिन हमारी कमी के लिए बहुत से विशिष्ट चर की आवश्यकता होती है , से बहुत अधिक । इस समस्या को हल करने के कई तरीके हैं।(n+1)×(n+2)nO(n)

  • एक तरीका, दोनों कुल्हाड़ियों में ग्रिड के आकार को चौकोर करना है। तो अब हमारे ग्रिड केवल , जिसका अर्थ है हमारे सभी अनूठे नंबर द्वारा बाउंड किए जा सकते हैं । फिर, हमें अपने अनूठे नंबरों का पुन: उपयोग करते हुए, बाकी ग्रिड को भरना होगा, लेकिन बहुत सावधानी बरतते हुए किसी भी संख्या को नहीं रखना चाहिए जो हमारे ग्रिड में एक-दूसरे से सटे हों, बाकी के फिलर-स्पेस में एक-दूसरे से सटे हों। ग्रिड का। ऐसा करने के लिए कई रचनात्मक तरीके हैं, मैं इसे एक अभ्यास के रूप में छोड़ दूँगा। यह विधि स्पष्ट रूप से एक अतिरिक्त द्विघात आघात को प्रेरित करती है।O(|x|×|Φ(x)|)O(n)n
  • एक और, अधिक रसीला, अधिक जटिल तरीका, ब्लॉक में विविधता लाने के लिए है । केवल एक बिल्डिंग ब्लॉक के बजाय, हम बिल्डिंग ब्लॉक का उपयोग कर सकते हैं, और फिर हम उन संख्याओं का पुन: उपयोग कर सकते हैं जिनके साथ वे जोड़ी हैं। यह विधि हमें द्विघात झटका से बचने की अनुमति देती है।1O(n)

ग्राफ के स्रोत


अच्छी कमी! बस एक जिज्ञासा: आप यह कैसे साबित कर सकते हैं कि लापता जोड़े (बोर्ड पर तारों-दीवारों-गैजेट्स रखने के बाद) को एक आयताकार (n + 1) x (n + 2) ग्रिड में पैक किया जा सकता है? मैं मन एक ऐसी ही कमी में था, लेकिन यह पता लगाने नहीं था कैसे साबित होता है कि "अप्रयुक्त" जोड़े ((संभवत: बड़ा) आयत में व्यवस्थित किया जा सकता खेल राज्य के नियमों है कि हर टाइल के साथ का उपयोग एक मान्य डोमोसा बोर्ड में किया जाता है)a i , b i = 1 .. n[ai,bi]ai,bi=1..n
Vor

मैं इन सभी टिप्पणियों को अपने उत्तर में स्थानांतरित करूंगा, और इसे अपने अगले बड़े संशोधन में अधिक व्यापक बनाऊंगा।
रियल्ज़ स्लाव

ठीक है, मैं इसके लिए इंतजार करूँगा!
Vor

@RealzSlaw, बहुत बहुत धन्यवाद! मेरे पास अभी भी इसे पढ़ने का समय नहीं था लेकिन यह बहुत अच्छा लगता है।
योव बार सिनाई

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