वर्टेक्स कवर से घटाकर यह समस्या एनपी-हार्ड है।
वर्टेक्स कवर की समस्या में, हमें एक ग्राफ और एक नंबर , और हमारा कार्य यह निर्धारित करना है कि क्या से अधिकांश कोने पर कुछ सबसेट है, जैसे में हर बढ़त घटना है में कम से कम एक शीर्ष पर । (समतुल्य: क्या अधिकांश रेखाओं को हटाकर प्रत्येक किनारे को मारना संभव है ?)आर यू आर वी ई यू जी आरG=(V,E)rUrVEUGr
सबसे पहले, विभाजन में संबंध तोड़ना सबसेट में प्रत्येक तत्व बताए के बराबर है बिल्कुल में से एक संभव लेबल। कमी के मूल विचार एक लेबल बनाने के लिए है प्रत्येक शिखर के लिए में , और "अनुमति दें" प्रत्येक बढ़त केवल अपने अंतिम बिंदु करने के लिए इसी दो लेबल में से एक निम्नलिखित अर्थ में, आवंटित करने के लिए करने के लिए: एक बढ़त को उससे संबंधित बताए लेबल किसी अन्य किनारों पर एक ही लेबल सौंपा जा सकता है, उस पर कोई वास्तविक (वास्तविक) बाधा का परिचय देता है, जबकि एक गैर-संबंधित लेबल को बढ़त प्रदान करने से किसी भी अन्य किनारे को एक ही लेबल सौंपा जाता है - निश्चित रूप से संख्या को धक्का देने का प्रभाव पड़ता है अलग-अलग लेबल की आवश्यकता।रों एक रों एस जे वी जे वीAsAsSjvjV
वर्टेक्स कवर के उदाहरण से आपकी समस्या का उदाहरण के लिए :( जी , आर )(A,a,s)(G,r)
- सेट to, और में प्रत्येक किनारे लिए में तत्व । (इन जोड़ियों को पूर्णांक के रूप में माना जा सकता है उनके बीच कोई भी आपत्ति कोई भी करेगा)।| ई | ( i , j ) A v i v jk|E|(i,j)Avivj1 , … , केE1,…,k
- सेट टूअगर या ; अन्यथा, से 1 सेट करें। | ई | d = b d = c a ( b , c ) , da(b,c),d|E|d=bd=ca(b,c),d
- सेट करें ।s=r
अगर सिर्फ लेबल लेने: वर्टेक्स कवर की एक हाँ-उदाहरण है, तो यह देखने के लिए कि आपकी समस्या का सिर्फ निर्मित उदाहरण भी एक हाँ-उदाहरण है आसान है कोने करने के लिए इसी किसी भी समाधान में , और प्रत्येक किनारे लिए इसी तत्व असाइन करें जिसमें से किसी एक लेबल या को चुना गया था (यदि दोनों लेबल चुने गए थे तो मनमाने ढंग से चुनें)। यह समाधान का उपयोग करता है सबसेट, और वैध है क्योंकि केवल बल में के लिए होते हैं इसीएस जे वी जे यू वी बी वी सी ∈ ई ( ख , ग ) ∈ ए एस बी एस सी एस एक मैं जे | ई |(G,r)SjvjUvbvc∈E(b,c)∈ASbScsaijलेबल, जिनके रोकने से अधिक (गैर-) प्रभाव हैकिनारों को एक ही लेबल सौंपा जा रहा है।|E|
यह दर्शाता है कि आपकी समस्या का एक यस-उदाहरण का तात्पर्य है कि मूल वर्टेक्स कवर का एक यस-उदाहरण है। यह थोड़ा और अधिक जटिल है, क्योंकि एक वैध समाधान से सामान्य रूप से एक किनारे एक गैर- संचरित लेबल , अर्थात्, , कर सकता है, जिसका अर्थ है कि हम नहीं कर सकते आवश्यक रूप से एक मान्य समाधान से एक वैध शीर्ष कवर को "बंद पढ़ें" ।( जी , आर ) वाई एक्स ( मैं , जे ) एस मीटर मीटर ∉ { मैं , जे } यू वाईX=(A,a,s)(G,r)YX(i,j)Smm∉{i,j}UY
हालांकि, एक गैर-संबंधित लेबल को असाइन करने की उच्च लागत होती है जो समाधान की संरचना को गंभीर रूप से सीमित करती है: जब भी कोई बढ़त को ऐसे लेबल को सौंपा जाता है , जिसमें , तथ्य होता है यह सुनिश्चित करता है कि यह एकमात्र लेबल लेबल होना चाहिए । इसलिए, किसी भी समाधान में इस तरह के एक गैर-लेबल लेबल वाले किनारे , हम एक वैकल्पिक समाधान निर्माण इस प्रकार कर सकते हैं:एस मीटर मीटर ∉ { मैं , जे } एक ( मैं , जे ) , मी = 1 Y ( मैं , जे ) ↦ एस एम वाई '(i,j)Smm∉{i,j}a(i,j),m=1Y(i,j)↦SmY′
- मनमाने ढंग से या होने के लिए लिए नया लेबल । ( i , j ) S i S jSz(i,j)SiSj
- यह नया लेबल असाइन करें । यदि यह एक अमान्य समाधान में परिणत होता है, तो ऐसा इसलिए होना चाहिए क्योंकि वास्तव में एक दूसरे किनारे , को पहले से ही लेबल सौंपा गया था । उस स्थिति में, सेट करें और चरण 1 पर जाएं।( मैं ' , जे ' ) z ∉ { मैं ' , जे ' } एस जेड ( मैं , जे ) = ( मैं ' , जे ' )(i,j)(i′,j′)z∉{i′,j′}Sz(i,j)=(i′,j′)
उपरोक्त एल्गोरिथ्म को दो तरीकों में से एक में समाप्त होना चाहिए: या तो एक नया लेबल पाया जाता है जो किसी विरोधाभास का परिचय नहीं देता है, या का पूरा चक्र पाया जाता है। पूर्व मामले में, सेट के साथ एक वैध नया समाधान पाया जाता है, जबकि बाद वाले मामले में सेट के साथ एक वैध नया समाधान पाया जाता है; किसी भी तरह, हमने कम से कम एक और किनारे के साथ एक समान लेबल के लिए एक मान्य नए समाधान का निर्माण किया है। ज्यादा से ज्यादा इस पूरी प्रक्रिया को दोहराने के बादकई बार, हमने एक वैध समाधान उत्पादन किया होगा, जिसमें से मूल वर्टेक्स कवर समस्या का हल पढ़ा जा सकता है। s - 1 s | ई | Y ″Szs−1s|E|Y′′
यह निर्माण स्पष्ट रूप से बहुपद समय है, इसलिए यह निम्नानुसार है कि आपकी समस्या एनपी-हार्ड है।