कैसे साबित करें कि एक समस्या एनपी पूरी है?


108

मुझे शेड्यूलिंग में समस्या है। मुझे यह साबित करने की जरूरत है कि समस्या एनपी पूरी है। एनपी को पूरा साबित करने के लिए क्या तरीके हो सकते हैं?


कार्प द्वारा "रेड्यूसिबिलिटी इन कॉम्बिनेटरियल प्रॉब्लम्स" पढ़ें।
पॉल हैंकिन

जवाबों:


146

एक समस्या को पूरा करने के लिए एनपी पूरा हो गया है, आपको इसकी आवश्यकता है:

दिखाएँ यह एनपी में है

दूसरे शब्दों में, कुछ जानकारी दी C, तो आप एक बहुपद समय एल्गोरिथ्म बना सकते हैं Vकि हर संभव इनपुट के लिए की पुष्टि करेगा Xकि क्या Xआपके डोमेन में है या नहीं।

उदाहरण

साबित करें कि वर्टेक्स कवर की समस्या (जो कि किसी ग्राफ के लिए है G, क्या इसका आकार एक वर्टिकल कवर सेट है kजैसे कि हर किनारे में Gकवर सेट में कम से कम एक वर्टेक्स है ?) एनपी में है:

  • हमारा इनपुट Xकुछ ग्राफ Gऔर कुछ संख्या है k(यह समस्या परिभाषा से है)

  • हमारी जानकारी के Cलिए " Gआकार के ग्राफ में कोने के किसी भी संभावित सबसेट k" होना

  • फिर हम एक एल्गोरिथ्म लिख सकते हैं V, जो दिया गया है G, kऔर C, वापस आ जाएगा कि क्या सेट का बहुवचन समय के लिए वर्टिकल कवर है Gया नहीं ।

फिर हर ग्राफ के लिए G, अगर वहाँ " Gआकार के कोने के कुछ संभावित उपसमुच्चय" मौजूद हैं, kजो एक शीर्ष आवरण है, तो Gअंदर है NP

ध्यान दें कि हमें बहुपद समय में खोजने की आवश्यकता नहीं है C। यदि हम कर सकते हैं, तो समस्या `पी।

ध्यान दें कि एल्गोरिथ्म Vको प्रत्येक के लिए G , कुछ के लिए काम करना चाहिए C। हर इनपुट के लिए वहाँ जाना चाहिए मौजूद जानकारी हमें सत्यापित करें कि क्या इनपुट या समस्या डोमेन में है नहीं मदद कर सकता है। यही है, वहाँ एक इनपुट नहीं होना चाहिए जहाँ जानकारी मौजूद नहीं है।

साबित करो कि यह एनपी हार्ड है

इसमें सैट जैसी एक ज्ञात एनपी-पूर्ण समस्या , फॉर्म में बूलियन अभिव्यक्तियों का समूह शामिल है:

(ए या बी या सी) और (डी या ई या एफ) और ...

जहाँ अभिव्यक्ति संतोषजनक है , वहाँ इन बूलियंस के लिए कुछ सेटिंग मौजूद है, जो अभिव्यक्ति को सच बनाती है

फिर बहुपद समय में अपनी समस्या के लिए एनपी-पूर्ण समस्या को कम करें

यही कारण है, कुछ इनपुट दिया जाता है Xके लिए SAT(या जो भी एन पी-सम्पूर्ण समस्या का उपयोग कर रहे), कुछ इनपुट बनाने Yआपकी समस्या के लिए, ऐसा है कि Xसैट में है यदि और केवल यदि Yआपकी समस्या है। समारोह f : X -> Yको बहुपद समय में चलना चाहिए ।

ऊपर दिए गए उदाहरण में, इनपुट Yग्राफ Gऔर कवर के आकार का होगा k

एक के लिए पूरा सबूत , आप दोनों को साबित करना होगा:

  • वह आपकी समस्या Xमें SAT=> Yमें है

  • और Yआपकी समस्या में => Xमें SAT

marcog के जवाब में कई अन्य एनपी-पूर्ण समस्याओं के साथ एक लिंक है जो आप अपनी समस्या को कम कर सकते हैं।

फुटनोट: चरण 2 में ( साबित करें कि यह एनपी-हार्ड है ), वर्तमान समस्या के लिए एक और एनपी-हार्ड (जरूरी नहीं कि एनपी-पूर्ण) समस्या को कम करना होगा, क्योंकि एनपी-पूर्ण समस्याएं एनपी-हार्ड समस्याओं का एक सबसेट हैं (जो हैं) एनपी में भी)।


7
मुझे आश्चर्य है कि अगर कोई लापता डेटा या इसके पीछे एक परिपत्र तर्क है। मेरा मतलब है कि एनपी में एक समस्या को 'साबित' कैसे किया जा सकता है, यह दूसरी समस्या का जिक्र किए बिना कि 'पहले से ही एनपी में है'? यह कहना है कि "यह लोहे से बना है क्योंकि इसका हिस्सा लोहे के रूप में जाना जाता है", यह लोहे का प्रमाण नहीं है।
हरनैन एचे

6
जहाँ तक मुझे याद है, कुक-लेविन प्रमेय नामक एक प्रमेय है जिसमें कहा गया है कि SAT एनपी-पूर्ण है। वह प्रमाण काफी अधिक जटिल है जो मैंने ऊपर उल्लिखित किया था और मुझे नहीं लगता कि मैं इसे अपने शब्दों में समझा सकता हूं।
लैला अगावे

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

तो मेरा प्रश्न समाप्त हो रहा है यदि SAT को बहुपद में हल किया जा सकता है अर्थात P = NP समस्या .. आपके उत्तर के लिए धन्यवाद।
हरनैन एचे

क्या आप बता सकते हैं कि हम दूसरे चरण में, जिस समस्या को चाहते हैं, उसके लिए हम एनपी-हार्ड समस्या को कम क्यों नहीं कर सकते हैं? क्या यह एनपी-पूर्ण समस्या होना चाहिए?
MLT

23

आपको जो समस्या है, उसे एक NP-Complete समस्या को कम करने की आवश्यकता है। यदि कमी को बहुपद समय में किया जा सकता है तो आपने साबित कर दिया है कि आपकी समस्या एनपी-पूर्ण है, यदि समस्या पहले से ही एनपी में है, क्योंकि:

यह एनपी-पूर्ण समस्या से आसान नहीं है, क्योंकि इसे बहुपद समय में इसे कम किया जा सकता है जो समस्या को एनपी-हार्ड बनाता है।

अधिक के लिए http://www.ics.uci.edu/~eppstein/161/960312.html का अंत देखें ।


2
+1 जो कोई भी समझाता है। इसके बजाय मैं शायद ही समझ में आने वाले कीवर्ड के संदर्भों का एक गुच्छा कहूं।
ColacX

22
पहला वाक्य बैक-टू-फ्रंट है: आपको अपनी समस्या के लिए ज्ञात एनपी-पूर्ण समस्या को कम करने की आवश्यकता है। इससे पता चलता है कि आपकी समस्या कम से कम उतनी ही कठिन है जितनी कि एनपी-पूर्ण समस्या। भाग (बी) भी गलत है: यदि आपने कमी पाई है, तो आप पहले से ही जानते हैं कि आपकी समस्या एनपी-हार्ड है; एकमात्र सवाल यह है कि क्या यह एनपी में बिल्कुल है (कुछ समस्याएं, जैसे कि हॉल्टिंग समस्या, नहीं हैं)। इफ यह एनपी-हार्ड है और एनपी में है, तो यह एनपी-पूर्ण है ("एनपी-हार्ड" "एनपी-हार्ड" की तुलना में अधिक विशिष्ट है)।
j_random_hacker

1
मैं यह नहीं कहूंगा कि क) एक विरोधाभास की ओर जाता है, क्योंकि हम नहीं जानते कि पी! = एनपी।
चायल ब्रिनके 10

8

यह साबित करने के लिए कि एक समस्या L, NP- पूर्ण है, हमें निम्नलिखित चरण करने की आवश्यकता है:

  1. अपनी समस्या बताएं L, NP से संबंधित है (जो कि एक समाधान दिया गया है जिसे आप इसे बहुपद समय में सत्यापित कर सकते हैं)
  2. ज्ञात NP- पूर्ण समस्या L का चयन करें
  3. एक एल्गोरिथ्म का वर्णन करें जो L को L में बदल देता है
  4. सिद्ध करें कि आपका एल्गोरिथ्म सही है (औपचारिक रूप से: x if L 'यदि और केवल यदि f (x)) L)
  5. साबित करें कि बहुपदीय समय में एल्गो एफ चलता है

7

सबसे पहले, आप दिखाते हैं कि यह एनपी में बिल्कुल झूठ है।

फिर आपको एक और समस्या का पता चलता है, जिसे आप पहले से जानते हैं कि एनपी पूरा हो चुका है और यह दर्शाता है कि आप अपनी समस्या को कैसे बहुपद से कम करते हैं।


नहीं, आपको यह दिखाने की जरूरत है कि आप NP की समस्या को कम करने के लिए NP NP समस्या को कम कर सकते हैं। एनपी हार्ड इस में नहीं आता है, जब तक कि आप एनपी में इसे साबित नहीं कर सकते।
mrmemio29

6
  1. एनपी पूरा समस्याओं का सबसेट से परिचित हो
  2. एनपी कठोरता साबित करें: अपनी समस्या के उदाहरण के लिए एक एनपी पूरी समस्या का एक मनमाना उदाहरण कम करें। यह एक पाई का सबसे बड़ा टुकड़ा है और जहां एनपी कम्प्लीट समस्याओं से परिचित है। आपके द्वारा चुनी गई एनपी कम्प्लीट समस्या के आधार पर कमी अधिक या कम कठिन होगी।
  3. साबित करें कि आपकी समस्या एनपी में है: एक एल्गोरिथ्म डिज़ाइन करें जो बहुपद समय में सत्यापित कर सकता है कि क्या कोई उदाहरण एक समाधान है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.