मैं एक समस्या को साबित करने के लिए समस्याओं के बीच कटौती कैसे कर सकता हूं एनपी-पूर्ण?


27

मैं एक जटिलता पाठ्यक्रम ले रहा हूं और मुझे एनपीसी समस्याओं के बीच कटौती के साथ आने में परेशानी हो रही है। मैं समस्याओं के बीच कटौती कैसे पा सकता हूं? क्या कोई सामान्य ट्रिक है जिसका मैं उपयोग कर सकता हूं? मुझे एक समस्या का सामना कैसे करना चाहिए जो मुझे एक समस्या साबित करने के लिए कहती है एनपीसी?


4
निराश करने के लिए क्षमा करें, मुझे नहीं लगता कि कोई विधि है जो इसे हल करती है। जीवन में कई समस्याओं की तरह, प्रत्येक अद्वितीय है। उम्मीद है, समय के साथ, आप सही कूबड़ प्राप्त करेंगे कि प्रत्येक को कैसे हल किया जाए।
रैन जी।

1
क्या इस तरह की समस्याओं से निपटने के लिए कुछ उपयोगी दिशानिर्देश हैं? मैं पूरी तरह से खो गया हूं जब मुझे एक प्रश्न दिखाई देता है जो मुझे यह साबित करने के लिए कहता है कि यह एनपीसी है। मुझे उनसे कैसे संपर्क करना चाहिए?
बेनामी

जवाबों:


45

कोई जादू की गोली नहीं है; एनपी-कठोरता प्रमाण कठिन हैं। हालांकि, ऐसे सभी सबूतों के लिए एक सामान्य ढांचा है। कई छात्र जो एनपी-कठोरता प्रमाण के साथ संघर्ष करते हैं , वे उलझन में हैं कि वे क्या करने वाले हैं, जो स्पष्ट रूप से यह पता लगाना असंभव बनाता है कि यह कैसे करना है। तो यहाँ क्या करना है एक समस्या एनपी कठिन साबित करने के लिए।

पहला, जब तक आप सिर्फ होमवर्क नहीं कर रहे हैं, आपको यह तय करना होगा कि आपकी समस्या को कम करने के लिए कौन सी एनपी-कठिन समस्या है । यह काफी हद तक "गंध" का सवाल है। यदि समस्या कथन में कहीं भी संख्या 3 दिखाई देती है, तो या या से कम करने का प्रयास करें । (हां, मैं गंभीर हूं।) यदि आपकी समस्या में एक इष्टतम या क्रमपरिवर्तन या पथ शामिल है, तो या से कम करने का प्रयास करें । यदि आपकी समस्या एक निश्चित संपत्ति के साथ सबसे छोटी सबसेट के लिए पूछती है, तो C l i q u e का प्रयास करें3 सी एल आर 3 पी एक आर टी मैं टी मैं एन एच एक मीटर मैं एल टी एन मैं एक एन सी वाई सी एल एच एक मीटर मैं एल टी एन मैं एक एन पी एक टी 3SAT3Color3PartitionHamiltonianCycleHamiltonianPathCliqu; अगर यह एक निश्चित संपत्ति के साथ सबसे बड़ा सबसेट के लिए पूछता है, कोशिश । आपकी समस्या को विमान में कुछ कर रही शामिल है, की कोशिश पी एल एक एन एक आर सी मैं आर सी यू मैं टी एस टी या पी एल एक एन एक आर टी एस पी । और इसी तरह। यदि आपकी समस्या कुछ भी "गंध" नहीं है, तो 3 एस टीIndependentSetPlanarCircuitSATPlanarTSP3SATया शायद आपकी सबसे अच्छी शर्त है।CircuitSAT

जाहिर है, आपको पहले से ही ठीक से पता होना चाहिए कि इन सभी समस्याओं को कैसे परिभाषित किया जाता है , और जिस समस्या को आप कम करते हैं, वह बेहतर है। तो परिणाम अंत में लग सकता है के रूप में शांत रूप में, मैं से कम करने की सलाह नहीं देते Minesweeper या Tetris या OneCheckersMove या SuperMarioBros

दूसरा, वास्तविक कमी। समस्या X को कम करने के लिए (जिसको आप जानते हैं वह एनपी-हार्ड है) को समस्या वाई (आप जिसे साबित करने की कोशिश कर रहे हैं वह एनपी-हार्ड है, आपको एक एल्गोरिथ्म का वर्णन करने की आवश्यकता है जो एक्स के एक मनमाने उदाहरण को वाई के कानूनी उदाहरण में बदल देती है। कमी एल्गोरिथ्म को एक्स-इंस्टेंस के प्रत्येक "फ़ीचर" के साथ कुछ विशिष्ट करने की आवश्यकता है, प्रत्येक "फ़ीचर" के लिए आउटपुट के हिस्से को आमतौर पर एक गैजेट कहा जाता है ।

लेकिन एक विशेषता क्या है? यह समस्या X पर निर्भर करता है। उदाहरण के लिए:

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

  • की एक आवृत्ति को बदलने के लिए , आपको प्रत्येक ग्राफ के लिए एक गैजेट और इनपुट ग्राफ के प्रत्येक किनारे और तीन रंगों को परिभाषित करने के लिए एक अन्य गैजेट की आवश्यकता होगी।3Color

  • का एक उदाहरण को बदलने के लिए , तो आप और इनपुट सर्किट में प्रत्येक गेट के लिए प्रत्येक इनपुट के लिए एक गैजेट, प्रत्येक तार के लिए की आवश्यकता होगी,।PlanarCircuitSat

गैजेट का वास्तविक रूप समस्या वाई, एक आप को कम कर रहे हैं पर निर्भर करता है के लिए । उदाहरण के लिए, यदि आप ग्राफ़ के बारे में किसी समस्या को कम कर रहे हैं, तो आपके गैजेट छोटे सबग्राफ होंगे; विकिपीडिया लेख देखें। यदि आप शेड्यूलिंग के बारे में किसी समस्या को कम कर रहे हैं, तो प्रत्येक गैजेट शेड्यूल की जाने वाली नौकरियों का एक समूह होगा। यदि आप मारियो के बारे में एक समस्या को कम कर रहे हैं , तो प्रत्येक गैजेट ब्लॉक और ईंटों और कोपों ​​का एक सेट होगा।

यह भ्रमित हो सकता है अगर दोनों समस्याओं में एक ही तरह की वस्तु शामिल हो। उदाहरण के लिए, यदि X और Y दोनों ग्राफ़ के बारे में समस्याएँ हैं, तो आपका एल्गोरिथ्म एक ग्राफ़ (X का उदाहरण) को भिन्न ग्राफ़ (Y का एक उदाहरण) में बदलने जा रहा है। अपने अंकन को बुद्धिमानी से चुनें, ताकि आप इन दो रेखांकन को भ्रमित न करें। मैं स्याही के कई रंगों का उपयोग करने की दृढ़ता से सलाह देता हूं।

अंत में, आपके कमी एल्गोरिदम को तीन गुणों को पूरा करना होगा:

  • यह बहुपद समय में चलता है। (यह आमतौर पर आसान है।)

  • यदि आपके कमी एल्गोरिदम को इनपुट के रूप में एक्स का एक सकारात्मक उदाहरण दिया जाता है, तो यह आउटपुट के रूप में वाई का एक सकारात्मक उदाहरण पैदा करता है ।

  • यदि आपकी कमी एल्गोरिदम आउटपुट के रूप में वाई का एक सकारात्मक उदाहरण उत्पन्न करती है , तो इसे इनपुट के रूप में एक्स का एक सकारात्मक उदाहरण दिया गया होगा ।

यहाँ एक महत्वपूर्ण सूक्ष्मता है। आपका कमी एल्गोरिथ्म केवल, एक ही दिशा में काम करता है से एक्स के उदाहरण के लिए वाई के उदाहरण है, लेकिन एल्गोरिथ्म सही साबित दोनों दिशाओं में परिवर्तन के बारे में तर्क की आवश्यकता है। आपको यह भी याद रखना चाहिए कि आपकी कमी एल्गोरिथ्म यह नहीं बता सकती है कि क्या एक्स का एक दिया गया उदाहरण सकारात्मक है या नकारात्मक है - जिसे बहुपद समय में एनपी-हार्ड समस्या को हल करने की आवश्यकता होगी!

बस यही बात हैकैसे सिर्फ अभ्यास के साथ आता है।


5
से कटौती के लिए (और आम तौर पर ऐसी समस्याएं जो "स्थानीय / वैश्विक संरचना" समान हैं) यह 3 एस टी के एकल खंड उदाहरणों के लिए पहले करने की कोशिश करना एक अच्छा विचार हो सकता है । यह आपको एक विचार दे सकता है कि आपको क्लॉज़ के लिए किस गैजेट का उपयोग करने की आवश्यकता है। एक खंड के लिए गैजेट जानने के बाद, अपने कमी प्रत्येक खंड के लिए इन उपकरणों की एक डाल देंगे और उसके बाद किसी भी तरह वैश्विक हालत को लागू (यानी एक चर अलग खंड में प्रदर्शित होने की घटनाओं के लिए सच मान अनुरूप होना चाहिए, एक प्रोपोज़िशनल चर पी नहीं कर सकते हो टी आर यू एक खंड और में एक3SAT3SATptrue दूसरे में)। false
केवह

1
"यदि आपकी कमी एल्गोरिदम आउटपुट के रूप में वाई के एक सकारात्मक उदाहरण का उत्पादन करती है, तो इसे इनपुट के रूप में एक्स का एक सकारात्मक उदाहरण दिया जाना चाहिए ": हालांकि इस स्थिति को लिखने के लिए यह अधिक सहज प्रतीत होगा "यदि आपकी कमी एल्गोरिदम को नकारात्मक उदाहरण दिया गया है" एक्स के इनपुट के रूप में, यह आउटपुट के रूप में वाई का एक नकारात्मक उदाहरण उत्पन्न करता है ", ध्यान दें कि ये दो स्थितियां समान हैं , और जेफई ने यह कैसे लिखा है कि यह आमतौर पर प्रमाण को बहुत आसान बनाता है, क्योंकि प्रत्येक मामले में आपके पास" (या तो कुछ है) एक्स के सकारात्मक उदाहरण, या वाई के सकारात्मक उदाहरण के साथ काम करने के लिए।
j_random_hacker 14

11

जेफ़ई सबसे आम रणनीति को रेखांकित करता है: बहुत सारी एनपी-पूर्ण समस्याओं को जानें, एक ऐसा ढूंढें जो बहुत अच्छी तरह से फिट हो और आसान कमी लाए ।

एक और वैध रणनीति हमेशा 3SAT (या किसी अन्य समस्या) का उपयोग करना है। यह कुछ कटौती को अधिक जटिल बना सकता है, लेकिन उल्टा यह है कि आपके पास अन्य प्रकार की समस्याओं में व्यंग्यता व्यक्त करने का बहुत अनुभव है। इसलिए आप एक अच्छे कमी वाले साथी (मृत-अंत सहित) को खोजने का समय बचाते हैं और आशा करते हैं कि आपका अनुभव आपको कम करने की अनुमति देगा, भले ही यह कठिन हो।

इस दृष्टिकोण में कुछ मेटा ब्यूटी भी है: (3) सैट उन कुछ समस्याओं में से एक है जिनके लिए एनपी-पूर्णता साबित हुई है (लगभग सीधे)। इसलिए, केवल उस प्रमाण पर भरोसा करने से आपके "प्रूफ ट्री" फ्लैट बने रहते हैं, जो कटौती की लंबी श्रृंखलाओं से बचते हैं।


3
सीधे तौर पर यह साबित करना कि बंधी हुई हॉल्टिंग समस्या एनपी-पूर्ण है जब बाउंड्री दी गई है तो बहुत मुश्किल नहीं है, और यह साबित करने का एक आसान तरीका है कि कुछ एनपी-पूर्ण समस्या मौजूद है, भले ही समस्या खुद से कम करने के लिए बेकार हो।
एलेक्स टेन ब्रिंक

3
मैं इस दावे के बारे में निश्चित नहीं हूं कि यह एकमात्र समस्या है जो सीधे एनपी-पूर्ण साबित हुई है। वास्तव में यदि आप इसकी व्याख्या कठोर अर्थ में करते हैं तो यह निश्चित रूप से गलत है। कुक का 1971 का पेपर TAUT not SAT (वह कुक रिडक्शन का उपयोग करता है, न कि कार्प रिडक्शन का इस्तेमाल करता है) के बारे में बात करता है (यह एक आसान अवलोकन है जो यह प्रमाण भी साबित करता है कि SAT एनपी-पूर्ण है Karp कटौती के तहत)।
केवह

@ केव हुह? टॉटोलॉजी को-एनपी पूर्ण है और इसलिए इसे एनपी (अपूर्ण) में नहीं जाना जाता है। हालांकि मैंने कुक का पेपर नहीं पढ़ा था।
अल्बर्ट हेंड्रिक्स

1
@ अल्बर्ट, अच्छा तो आपको इसे पढ़ना चाहिए। कुक कटौती के साथ आप एनपी और coNP के बीच अंतर नहीं कर सकते।
केव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.