सबसेट सम: विशेष मामले को कम करें


20

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

इसलिए मेरा मानना ​​है कि वे समान हैं, दोनों पक्षों में कमी होनी चाहिए। से एक शून्य करने के लिए सेटिंग से मामूली बात है । लेकिन मैं शून्य से एक कमी खोजने कोई किस्मत ने यानी पूर्णांकों का एक सेट दिया , पूर्णांकों का एक सेट का निर्माण राशि के साथ एक सबसेट युक्त (किसी के लिए ), तभी वहाँ के सबसेट के रूप में अगर साथ योग शून्य।ss=0sABssA

क्या आप मुझे कुछ संकेत दे सकते हैं?

जवाबों:


11

आपके पास वास्तव में विशेष से सामान्य तक की कमी है। सेट करके , आप विशेष समस्या को हल करने के लिए मूल रूप से सामान्य एल्गोरिदम का उपयोग कर रहे हैं।s=0

दूसरे रास्ते के लिए (यानी सामान्य से विशेष में कमी):

मान लीजिए कि आपको एक सेट और एक नंबर और आपको यह निर्धारित करना होगा कि क्या का कुछ सबसेट है जो को ।के एस केS={x1,,xn}KSK

अब आप इस समस्या को हल करना चाहते हैं, इस मामले के लिए एक एल्गोरिथ्म दिया गया है जहाँ आप यह निर्धारित कर सकते हैं कि कुछ उपसमूह ।0

अब अगर , हमारे पास एक आसान कमी है: ।S = { x 1 , x 2 , , x n , - K }xi>0S={x1,x2,,xn,K}

S के योग का एक सबसेट अगर का योग का उपसमूह है ।एस के0SK

समस्या तब होती है जब हम कर सकते हैं में से कुछ के लिए ।मैंxi0i

हम मान सकते हैं कि (क्यों?)।K>0

मान लीजिए सकारात्मक का योग है और नकारात्मक है । P x i NxiPxiN

अब एक नया सेट का निर्माण करेंS={y1,y2,yn}

M = P + | एन | + केyi=xi+M जहाँ ।M=P+|N|+K

प्रत्येक ।yi>0

अब सेट पर जीरो-सब्मिट-योग एल्गोरिथ्म चलाएं

S{(K+M)}

S{(K+2M)}

S{(K+3M)}

S{(K+nM)}

यह दिखाना आसान है कि यदि पास राशि का उपसमूह है , तो उपरोक्त सेटों में से कम से कम एक शून्य राशि का सबसेट है।केSK

मैं दूसरी दिशा का प्रमाण तुम्हारे पास छोड़ दूंगा।


आपका बहुत बहुत धन्यवाद। मुझे आश्चर्य है कि क्या कोई कमी है जो K-subset-sum के 0-सबसेट-योग ( बजाय ) के उदाहरण को बदल देती है? n
ipsec

@ipsec: आप का मतलब K-subset-sum का 0-subset-sum में बदलना? शायद ऊपर के सेट का संघ लेना काम करेगा। n
आर्यभट्ट

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

@ipsec: जब आप कहते हैं कि सेट , आप में से एनपी कठोरता दिखाने -subset-योग शून्य-सबसेट-राशि की एनपी कठोरता दिया: सामान्य समस्या विशेष समस्या के रूप में मुश्किल के रूप में कम से कम है। ध्यान दें कि कमी की शर्तों में, आप कहते हैं कि आपने शून्य-सबसेट-राशि को -subset-sum में घटा दिया है। यह भी ध्यान दें कि एक इनपुट है । जब आप "हर दिए गए " के बारे में बात करते हैं तो वास्तव में आपका क्या मतलब है? उपर्युक्त उत्तर से पता चलता है कि विशेष मामला (शून्य-उप-योग) सामान्य केस ( -subset-sum, जहाँ एक इनपुट है) के समान कठिन (NP-कठोरता अर्थ में ) है। K K K K k ks=0KKKKkk
आर्यभट्ट

कोई बात नहीं। मैं मूल रूप से किस बारे में सोच रहा था, अगर हम जानते हैं कि 0-सबसेट-एनपी एनपी-हार्ड है, तो क्या हम व्युत्पन्न कर सकते हैं, जैसे कि 1-सब्मिट-योग भी है? विकिपीडिया ऐसा कहता है, लेकिन मैं एक उचित कमी की तलाश में था। हालाँकि अब मैं देख रहा हूँ कि मेरा शब्दांकन पूरी तरह से गड़बड़ हो गया था और मैं वास्तव में इसके विपरीत पूछ रहा था। वैसे भी आपने मुझे किसी भी K-subset-sum उदाहरण से कम करने के लिए पर्याप्त इनपुट दिया था, जो कि किसी भी पूर्णांक K और L के लिए L-subset-sum उदाहरण के लिए है, इसलिए मेरी समस्या अभी भी हल है।
ipsec

0

आर्यभट्ट का जवाब इस तथ्य का उपयोग करके तय किया जा सकता है कि हम सभी संख्याओं को कुछ बड़े गुणा कर सकते हैं , और फिर "उपस्थिति टैग" की तरह कार्य करने के लिए प्रत्येक में कुछ छोटा जोड़ सकते हैं, और फिर कुछ अतिरिक्त संख्याओं की आपूर्ति कर सकते हैं जो कि अनुमति देगा अगर हम उनके बिना प्राप्त कर सकते हैं तो हमें शून्य पर लाने के लिए । विशेष रूप से, हम उपस्थिति टैग के रूप में और 1 का उपयोग करेंगे।cc K c = 2 ( n + 1 )cKc=2(n+1)

लक्ष्य मान साथ सामान्य समस्या के उदाहरण को देखते हुए , हम विशिष्ट समस्या (लक्ष्य मान 0 के साथ) का एक उदाहरण बनाएंगे जिसमें शामिल हैं:(S={x1,,xn},K)K

  • Y={y1,,yn} , जहां ।yi=2(n+1)xi+1
  • संख्या ।z=2K(n+1)n
  • n1नंबर 1 की प्रतियां, "पुल-अप" संख्या के रूप में संदर्भित की जाती हैं।

मैं मानता हूँ कि आर्यभट्ट ऐसा करता है कि सकारात्मक है। (चूंकि 6 साल हो गए हैं, मैं पाठक के लिए उनके व्यायाम का जवाब दूंगा: इसका कारण यह है कि हम यह कर सकते हैं कि अगर हम सहित सामान्य समस्या के सभी नंबरों के संकेत स्वैप करते हैं , तो हम हवा के साथ उठते हैं। नई, समतुल्य समस्या उदाहरण। इसका मतलब है कि सकारात्मक को हल करने के लिए एक एल्गोरिथ्म- उदाहरण किसी भी समस्या को हल करने के लिए पर्याप्त है - नकारात्मक साथ एक उदाहरण को हल करने के लिए , हम इस साइन-स्वैप को निष्पादित कर सकते हैं, उस एल्गोरिथ्म को चला सकते हैं, और इसके उत्तर को आगे बढ़ा सकते हैं। मूल प्रश्न का उत्तर। और निश्चित रूप से यदि तो हमें विशेष मामले में सामान्य मामले के किसी भी परिवर्तन को करने की आवश्यकता नहीं है!)KKKKK=0

पहले बताते हैं कि सामान्य समस्या के दिए गए उदाहरण के लिए एक YES उत्तर का तात्पर्य विशेष समस्या के निर्मित उदाहरण के लिए एक YES उत्तर है। यहाँ हम मान सकते हैं कि कुछ समाधान सामान्य समस्या के लिए मौजूद है: यह है कि, इस अरिक्त संग्रह करने के लिए रकम संख्या । इसलिए यदि हम निर्माण किए गए उदाहरण के लिए हमारे समाधान में संबंधित -values लेते हैं, तो वे योग करेंगे । फिर हम समाधान में शामिल करने का विकल्प चुन सकते हैं, जिससे हमें राशि मिल सकती है । के बाद से , इस श्रेणी में{xj1,,xjm}mKy{yj1,,yjm}2K(n+1)+m2K(n+1)nmn1mn[n+1,0] , जिसे हम पुल-अप संख्याओं के कुछ सबसेट को शामिल करके सफलतापूर्वक 0 तक खींच सकते हैं।

अब दिखाते हैं कि निर्मित उदाहरण के लिए YES उत्तर का तात्पर्य मूल दिए गए उदाहरण के लिए YES उत्तर है। यह वह जगह है जहाँ से गुणा महत्वपूर्ण हो जाता है - यह वह है जो हमें यह सुनिश्चित करने की अनुमति देता है कि हमारे द्वारा शामिल किए गए अतिरिक्त नंबर "बहुत अधिक नहीं" कर सकते हैं।2(n+1)

यहाँ हम मान सकते हैं कि समाधान के लिए कुछ समाधान मौजूद है: अर्थात, संख्याओं का यह गैर खाली संग्रह sums 0 के लिए है । समस्या की आवश्यकताओं के अनुसार, इस समाधान में कम से कम एक तत्व शामिल है। इसके अलावा, इसमें से कम से कम एक तत्व होना चाहिए , क्योंकि इसके बिना कुल 0 तक पहुंचना असंभव है: यदि केवल पुल-अप संख्या मौजूद है, तो योग आवश्यक रूप से सीमा ( ध्यान दें कि इस मामले में कम से कम एक पुल-अप संख्या मौजूद होनी चाहिए, और वे सभी कड़ाई से सकारात्मक हैं, इसलिए योग 0 नहीं हो सकता है); जबकि अगर समाधान में सिर्फ और कुछ पुल-अप संख्याएँ होती हैं, तो कुल आवश्यक रूप से नकारात्मक है क्योंकि{yj1,,yjm}mY[1,n1]zz=2K(n+1)nn और सबसे अधिक है कि पुल-अप संख्या द्वारा योग बढ़ा सकती है ।n1

अब विरोधाभास की ओर मान लीजिए कि समाधान में नहीं है । प्रत्येक तत्व में दो पद होते हैं: बहु , और +1 "उपस्थिति टैग"। ध्यान दें कि प्रत्येक तत्वों पर +1 शब्द 1 द्वारा योग को बढ़ाता है यदि वह तत्व चुना जाता है, जैसा कि प्रत्येक पुल-अप संख्याओं में से प्रत्येक को चुना जाता है, इसलिए कुल इन 2 द्वारा योगदान दिया जाता है किसी भी समाधान के स्रोत कम से कम 1 हैं (क्योंकि हमने पिछले पैराग्राफ में स्थापित किया है कि कम से कम एक तत्व को चुना जाना चाहिए) और अधिकांश । विशेष रूप से, इसका तात्पर्य है कि मोडुलो लेते समय , इन दो सेटों का योगzY2(n+1)nYn1Yn+n1=2n12(n+1) , नॉनजरो है। इस धारणा के तहत कि समाधान में नहीं है , इस राशि में केवल अन्य घटक के गुणक हैं , जो कि के चुने हुए सदस्यों द्वारा योगदान दिया जाता है , जो कि modulo को लेते समय योग के मूल्य को प्रभावित नहीं करता है । इस प्रकार, समाधान में सभी शब्दों का योग, जब modulo लिया जाता है , तो गैर-शून्य होता है, जिसका अर्थ है कि यह 0 के लक्ष्य योग के बराबर नहीं हो सकता है, जिसका अर्थ है कि यह एक वैध समाधान नहीं हो सकता है: हमने एक विरोधाभास पाया है , जिसका अर्थ है कि यह होना चाहिए कि सभी के बाद हर समाधान में मौजूद है।z2(n+1)Y2(n+1)2(n+1)z=2K(n+1)n

इसलिए हर समाधान में । हम जानते हैं किz

(2K(n+1)n)+i=1m(2(n+1)xji+1)+pull-ups=0 ,

और हम शर्तों को पुनर्व्यवस्थित कर सकते हैं:

2K(n+1)+i=1m(2(n+1)xji)(n+i=1m1+pull-ups)=0

2K(n+1)+i=1m(2(n+1)xji)(n+m+pull-ups)=0

2(n+1)(K+i=1mxji)(n+m+pull-ups)=0

चूंकि योग 0 है, इसलिए इसे मॉडुलो लेते समय 0 रहना चाहिए , जिसका तात्पर्य है कि हम नए समीकरण को प्राप्त करने के लिए कई वाले सभी शब्दों को छोड़ सकते हैं।2(n+1)2(n+1)

(n+m+pull-ups)=0

इसे सीधे पिछले समीकरण में वापस लाने के लिए प्रतिस्थापित किया जा सकता है

2(n+1)(K+i=1mxji)=0

अंत में, द्वारा दोनों पक्षों को विभाजित पत्ते2(n+1)

K+i=1mxji=0 ,

जो मूल सामान्य समस्या उदाहरण के लिए एक समाधान देता है।

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