कुछ शर्तों के अधीन दिए गए डिसऑर्डर सब्मिट के सेट में विभाजन कैसे करें?


11

मुझे एक सेट triqq \ {1, \ ldots, k \}A{1,,k} , एक पूर्णांक sk , और गैर-नकारात्मक पूर्णांक aij । मेरी समस्या को मिल रहा है s संबंध तोड़ना सबसेट Sj की {1,,k} ऐसी है कि:

  1. j=1sSj=A ; तथा
  2. |Sj|aij सभी के लिए iSj और j=1,,s

इस समस्या को हल कैसे करें? क्या एक संभव समाधान खोजना मुश्किल है?

मुझे लगता है कि समस्या को हल करना आसान नहीं है क्योंकि मैंने कुछ प्रक्रिया की कोशिश की, जो कि कुछ {\ _ \ _ 1, \ ldots, n \} द्वारा शुरू होती है j{1,,n}और i{1,,k} तब तक असाइन करती है जब तक कि संख्या नहीं की i करने के लिए सौंपा j से अधिक हैं aij कुछ के लिए i सौंपा। लेकिन यह सही है क्योंकि मैं कुछ के छोड़ा जा सकता है नहीं है i है कि किसी भी करने के लिए आवंटित नहीं किया जा सका j (उनकी की वजह से aij जो संतुष्ट नहीं किया जा सकता है)।

जानवर बल विधि, जब मुझे ए के सभी सबसेट जनरेट करने होंगे Aऔर हर एक का परीक्षण करना होगा, तो मेरे लिए काम करेगा ( k=8,n=3 ) लेकिन बहुत ही अयोग्य।


जांचें कि क्या आप उस प्रश्न से मेल खाते हैं जो आप पूछना चाहते हैं। इसके अलावा, a_ \ text {max} कहाँ amaxसे आता है? क्या यह एक स्थिर स्थिरांक है (इनपुट का हिस्सा नहीं है, लेकिन सभी समय के लिए निश्चित है), या क्या यह इनपुट का हिस्सा है? अंत में, क्या आप एक व्यावहारिक समाधान की तलाश कर रहे हैं? या आप इस समस्या की सैद्धांतिक जटिलता की तलाश कर रहे हैं? यदि पूर्व, आपने पूर्णांक लीनियर प्रोग्रामिंग का उपयोग करने की कोशिश की है?
DW

जवाबों:


10

वर्टेक्स कवर से घटाकर यह समस्या एनपी-हार्ड है।

वर्टेक्स कवर की समस्या में, हमें एक ग्राफ और एक नंबर , और हमारा कार्य यह निर्धारित करना है कि क्या से अधिकांश कोने पर कुछ सबसेट है, जैसे में हर बढ़त घटना है में कम से कम एक शीर्ष पर । (समतुल्य: क्या अधिकांश रेखाओं को हटाकर प्रत्येक किनारे को मारना संभव है ?)आर यू आर वी यू जी आरG=(V,E)rUrVEUGr

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

वर्टेक्स कवर के उदाहरण से आपकी समस्या का उदाहरण के लिए :( जी , आर )(A,a,s)(G,r)

  1. सेट to, और में प्रत्येक किनारे लिए में तत्व । (इन जोड़ियों को पूर्णांक के रूप में माना जा सकता है उनके बीच कोई भी आपत्ति कोई भी करेगा)।| | ( i , j ) A v i v jk|E|(i,j)Avivj1 , , केE1,,k
  2. सेट टूअगर या ; अन्यथा, से 1 सेट करें। | | d = b d = c a ( b , c ) , da(b,c),d|E|d=bd=ca(b,c),d
  3. सेट करें ।s=r

अगर सिर्फ लेबल लेने: वर्टेक्स कवर की एक हाँ-उदाहरण है, तो यह देखने के लिए कि आपकी समस्या का सिर्फ निर्मित उदाहरण भी एक हाँ-उदाहरण है आसान है कोने करने के लिए इसी किसी भी समाधान में , और प्रत्येक किनारे लिए इसी तत्व असाइन करें जिसमें से किसी एक लेबल या को चुना गया था (यदि दोनों लेबल चुने गए थे तो मनमाने ढंग से चुनें)। यह समाधान का उपयोग करता है सबसेट, और वैध है क्योंकि केवल बल में के लिए होते हैं इसीएस जे वी जे यू वी बी वी सी( , ) एस बी एस सी एस एक मैं जे | |(G,r)SjvjUvbvcE(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

  1. मनमाने ढंग से या होने के लिए लिए नया लेबल । ( i , j ) S i S jSz(i,j)SiSj
  2. यह नया लेबल असाइन करें । यदि यह एक अमान्य समाधान में परिणत होता है, तो ऐसा इसलिए होना चाहिए क्योंकि वास्तव में एक दूसरे किनारे , को पहले से ही लेबल सौंपा गया था । उस स्थिति में, सेट करें और चरण 1 पर जाएं।( मैं ' , जे ' ) z { मैं ' , जे ' } एस जेड ( मैं , जे ) = ( मैं ' , जे ' )(i,j)(i,j)z{i,j}Sz(i,j)=(i,j)

उपरोक्त एल्गोरिथ्म को दो तरीकों में से एक में समाप्त होना चाहिए: या तो एक नया लेबल पाया जाता है जो किसी विरोधाभास का परिचय नहीं देता है, या का पूरा चक्र पाया जाता है। पूर्व मामले में, सेट के साथ एक वैध नया समाधान पाया जाता है, जबकि बाद वाले मामले में सेट के साथ एक वैध नया समाधान पाया जाता है; किसी भी तरह, हमने कम से कम एक और किनारे के साथ एक समान लेबल के लिए एक मान्य नए समाधान का निर्माण किया है। ज्यादा से ज्यादा इस पूरी प्रक्रिया को दोहराने के बादकई बार, हमने एक वैध समाधान उत्पादन किया होगा, जिसमें से मूल वर्टेक्स कवर समस्या का हल पढ़ा जा सकता है। s - 1 s | | Y Szs1s|E|Y

यह निर्माण स्पष्ट रूप से बहुपद समय है, इसलिए यह निम्नानुसार है कि आपकी समस्या एनपी-हार्ड है।


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

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

समाधान तकनीकों के बारे में, मुझे जो पसंद है उसे बीम खोज कहा जाता है। यह मूल रूप से एक प्रकार का शाखा-और-बाउंड है जो अपने मेमोरी उपयोग को सीमित करने के लिए पर्याप्त रूप से खराब आंशिक समाधानों को "भूल जाता है"। (B & B अपने आप में एक बहुत अच्छा तरीका है, और कभी कभी जल्दी से समस्याओं को हल करती है, और यह तो यह की कीमत एक शॉट बीम खोज की तुलना में थोड़ा आसान है - लेकिन क्योंकि यह एक सटीक तरीका है, यह कुछ उदाहरणों पर सदियों पाठ्यक्रम ले के कर सकते हैं।)
j_random_hacker

(नीचे के सभी बीम खोज के साथ-साथ B & B पर भी लागू होते हैं।) B & B एक बहुत ही सामान्य तकनीक है। इसके साथ महत्वपूर्ण बात यह है कि आप जो निर्णय लेते हैं उसे व्यवस्थित करने के लिए समस्या की बारीकियों का दोहन करें ताकि जितना संभव हो सके, खराब निर्णय (अर्थात, निर्णय जो संभव समाधान नहीं हो सकते हैं) को खोज के पेड़ में जल्दी किया जाता है। (ये निर्णय कहीं न कहीं किए जाएंगे , और प्रत्येक स्तर को और गहरा बना दिया जाएगा कि वे जितनी बार बनते हैं उससे दोगुना हो जाते हैं।) आपकी समस्या के लिए, मैं पहले "खराब" के घटते क्रम में को तत्वों की रैंकिंग करने का सुझाव दूंगा, जहां। ..A
j_random_hacker

... तत्व की खराबता हो सकता है, उदाहरण के लिए, सभी पर न्यूनतम, दूसरे-न्यूनतम से संबंध तोड़ना, फिर तीसरा-न्यूनतम, आदि। मोटे तौर पर, "सबसे खराब" तत्व तत्व होगा सबसे गंभीर रूप से किसी भी सेट में बाधा है कि यह करने के लिए जोड़ा जाता है। गहराई में प्रत्येक नोड पर खोज पेड़ में, आप एक आंशिक समाधान होगा, जिसमें पहले (और इस प्रकार "सबसे बुरी") तत्वों को पहले ही सेट करने के लिए आवंटित किया गया है; आपको वें तत्व को असाइन करने के लिए सेट में से कौन सा चुनना होगा : अर्थात, आपको पुनरावर्ती कॉल की आवश्यकता होगी । ("ऊपर" क्योंकि उम्मीद है कि हमारे पास है, ...एक मैं जे जे डी डी एन ( + 1 ) niaijjddn(d+1)n
j_random_hacker
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.