सेट के एक सेट को देखते हुए, प्रत्येक सेट से कम से कम एक तत्व युक्त सबसे छोटा सेट खोजें


15

एक सेट को देखते हुए सेट की, मैं एक सेट प्राप्त करना चाहते एम ऐसी है कि हर सेट एस में एस के कम से कम एक तत्व शामिल एम । मैं यह भी पसंद करेंगे एम संभव के रूप में कुछ तत्वों के रूप में शामिल करने के लिए, जबकि अभी भी इस कसौटी को पूरा करने, हालांकि वहाँ एक से अधिक छोटी से छोटी मौजूद हो सकता है एम इस संपत्ति के साथ (समाधान निश्चित रूप से अनन्य नहीं है)।SMSSMMM

एक ठोस उदाहरण के रूप में, मान लीजिए कि सेट राष्ट्रीय झंडे का सेट है, और प्रत्येक ध्वज के लिए एस में एस , तत्वों है कि देश के झंडे में प्रयोग किया जाता रंग हैं। संयुक्त राज्य अमेरिका के लिए होता है एस = { आर डी , डब्ल्यू एच मैं टी , बी एल यू } और मोरक्को के लिए होता है एस = { आर डी , जी आर एन } । तब एमSSSS={red,white,blue}S={red,green}Mप्रॉपर्टी के साथ रंगों का एक सेट होगा जो में प्रत्येक राष्ट्रीय ध्वज कम से कम रंगों का उपयोग करता है । ( ओलंपिक रंग नीला, काला, लाल, हरा, पीला और सफेद ऐसे एम का एक उदाहरण है , या कम से कम 1920 में थे।)MM

क्या इस समस्या का एक सामान्य नाम है? क्या सेट को खोजने के लिए एक "सर्वश्रेष्ठ" एल्गोरिथ्म है ? (मैं कम्प्यूटेशनल जटिलता के लिए प्रक्रिया के अनुकूलन की तुलना में समाधान में ही अधिक रुचि रखता हूं।)M



@ जुहो बिलकुल नहीं। मेरे उदाहरण में, सेट कवर समस्या झंडे का एक सेट ऐसा है कि उन लोगों के झंडे का मिलन होता है पता लगाने के लिए होगा सब सब झंडे पर इस्तेमाल रंग की। इसके विपरीत, मैं एक ऐसी चीज की तलाश कर रहा हूं जो सिर्फ रंगों की सूची से बाहर निकलेगी, झंडे की सूची नहीं होगी, और मुझे हर संभव रंग को सेट करने के लिए सेट की आवश्यकता नहीं है । मैं विकिपीडिया पर इस क्षेत्र के आसपास प्रहार करूँगा, लेकिन मुझे लगता है कि आपने मुझे सही रास्ते पर ले लिया है। धन्यवाद! M
bdesham

जवाबों:


13

समस्या प्रसिद्ध एनपी-पूर्ण समस्या हिटिंग सेट है । यह सेट-कवर से निकटता से संबंधित है । एनपी-पूर्णता प्रमाण गैरी और जॉनसन की क्लासिक पुस्तक में पाया जा सकता है ।

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

यदि आप सटीक समाधानों में रुचि रखते हैं और आपके इनपुट अच्छी तरह से व्यवहार करते हैं, तो मैं निश्चित पैरामीटर पैरामीटर का उपयोग करने की सलाह दूंगा । यहां चल रहा समय न केवल इनपुट लंबाई n संदर्भ में, बल्कि एक अतिरिक्त पैरामीटर k संदर्भ में भी व्यक्त किया गया है । चलने का समय है, तो O(f(k)nO(1)) , हम एल्गोरिथ्म एक एफपीटी-एल्गोरिथ्म कहते हैं। यहाँ, f(k) एक बढ़ता हुआ कार्य है। तो अगर k स्थिरांक है तो हमारे पास एक पॉलीटाइम एल्गोरिथम है। पहला अध्याय कीफ्लम और ग्रोह की पुस्तक , सेट मारने के लिए एक एफपीटी-एल्गोरिदम बताती है ( p -कार्ड-हिटिंग सेट के लिए अधिक सटीक )। एल्गोरिथ्म को लागू करना आसान है और बंधे हुए खोज पेड़ों की विधि का उपयोग करता है। फिर भी इसे यहाँ समझाने के लिए, मूल रूप से आप आवश्यक (?) जानवर बल खोज टूट, छोटे टुकड़ों में (जब अधिक स्थान की जरूरत है k छोटा है)।


धन्यवाद। क्या आप वास्तविक कार्यान्वयन के बारे में पढ़ने के लिए कहीं संदर्भ दे सकते हैं? यानी मैं अपनी समस्या को सेट-कवर समस्या में कैसे बदलूंगा, और फिर मैं इसे कैसे हल करूंगा?
bdesham

1
Bdesham, प्रत्येक तत्व के बारे में सोचता है कि यह किस सेट का है। तत्वों-सेट-इनपुट पर रन सेट कवर। इसके अलावा, विकी पेज यहां पढ़ें।
साशो निकोलेव

क्या आप एक अनुमानित समाधान में रुचि रखते हैं, या क्या आप सटीक समाधान चाहते हैं?
शुकुल

मुझे एक सटीक समाधान चाहिए। मैं जिन डेटा सेट के साथ काम कर रहा हूं वे काफी छोटे हैं जो मुझे नहीं लगता है कि एक समस्या होनी चाहिए।
बिशेष

1
@ कीज़र: आप सही कह रहे हैं। हालांकि यह निर्णय की समस्या को संबंधित अनुकूलन समस्या से संबद्ध करने के लिए सामान्य अभ्यास है क्योंकि वे एनपी-पूर्ण समस्याओं के साथ निकटता से संबंधित हैं।
शुकुलज़

2

एक विचार है कि मदद कर सकता है: अगर में सभी सेट के चौराहे में खाली नहीं है, तो आप किसी भी तत्व को चुन सकते हैं रों चौराहे में और सेट एम = { रों } । यदि चौराहे खाली है, लगता है एक तत्व (रंग) सेटों में जिसका घटना अधिकतम है और सभी सेट जिसमें यह सिंगलटन से होता है की जगह { } । ऐसा तब तक करते रहें जब तक कि प्रत्येक तत्व की गणना संख्या 1 के बराबर न हो और फिर M को शेष सेटों के संघ में सेट करें। उदाहरण के लिए, यदि S कुछ सेट A का बिजली सेट है तो M = ASsM={s}c{c}1MSAM=A। मैं हालांकि गलत हो सकता है।


2

रे रेटर के "ए थ्योरी ऑफ़ डायग्नोसिस ऑफ़ फर्स्ट प्रिंसिपल्स" पर एक नज़र डालें, जहाँ वह कंप्यूटिंग हिटिंग सेट के लिए एक एल्गोरिथ्म देता है, और यह अतिरिक्त नोट "ए करेक्शन ..."

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


2
क्या आप अपने उत्तर को अधिक आत्म-निहित बनाने के लिए एल्गोरिथ्म को संक्षिप्त कर सकते हैं? लिंक टूट सकते हैं और टूटेंगे।
जूहो

0

व्यावहारिक रूप से, सेट कवर / हिटिंग सेट के उदाहरणों को हल करने के लिए बेहतर तरीकों (निश्चित रूप से सबसे आसान में से एक) मिश्रित पूर्णांक प्रोग्रामिंग है। इसमें पूर्णांक प्रोग्रामिंग फॉर्मूलेशन को आपकी पसंद के सॉल्वर में संचार करना शामिल है ।

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