2016-01-09 3 views
6

मेरे पास 'एन' सेट हैं (एन < 10)। प्रत्येक सेट कह सकता है, 1000 तत्व। मैं इन सेटों के लिए सभी अपमान सेट ढूंढना चाहता हूं। कहते हैं, उदाहरण के लिए, मेरे पास सेटसेट के सेट से सभी डिस्जिइंट सेट खोजने के लिए एल्गोरिदम क्या हो सकता है?

A = {2,5,6,7}, B = {5,1} and C = {5,7}. 

फिर उत्पादन {{5}, {2,6}, {1}, {7}} होगा। इसके लिए एल्गोरिदम क्या हो सकता है? मैंने pairwise disjoint सेट खोजने के बारे में सोचा और फिर इन नए (डिसजॉइंट) सेट का उपयोग करके सेट किए गए सेट से अलग सेट ढूंढने के लिए। लेकिन यह अच्छी तरह से पैमाने पर नहीं होगा। उम्मीद है कि यह मदद करता है: Diagram Example

+0

क्या आप आउटपुट के गुणों के बारे में कुछ शब्द कह सकते हैं, या बेहतर प्राप्त करने के लिए आप क्या करते हैं? उदाहरण के लिए, {2} और {6} क्यों शामिल नहीं है? – davidhigh

+0

@ डेविडिघ इस तरह विचार करें: आपके पास 2 सेट ए और बी हैं। डिस्जॉइंट सेट ए-बी, ए चौराहे बी और बी-ए होंगे। इस आशा में मदद करता है: https://doc-0c-a4-docs.googleusercontent.com/docs/securesc/i4h2cehd386i3qiqgfp2t1a9r0fu5o6m/qhu2v38hp0h1pdvvehj9vgmdsctujsbt/1452340800000/02075453514295040169/02075453514295040169/0BzbXcZ2xK6JrZ1NiblVXeGpMYms?h=07006165945320890235&nonce=89dl1pkjorq58&user=02075453514295040169&hash=7is7r402mkd2ag6amo4l23vn1bp5cqfd – aceBox

+0

से कनेक्ट नहीं कर अपने संपर्क :/। एक समाधान आपके समस्या को डबल एंट्री मैप के रूप में माना जा सकता है: पंक्ति तत्व और कॉलम सेट होगी। मैं एक मसौदा लिखने की कोशिश करूंगा। – 88877

उत्तर

3

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

t A B C 
2 1 0 0 
5 1 1 1 
6 1 0 0 
7 1 0 1 
1 0 1 0 

फिर सेट प्रत्येक तत्व विभिन्न वर्णन करने के लिए एक महत्वपूर्ण यह है बना सकते हैं और किसी नक्शे में इस तत्व रजिस्टर।

उदाहरण के लिए अगर हम कुछ इस तरह के रूप में प्रमुख निर्माण समारोह पर विचार करें:

int keyFunction(bool Xa, bool Xb, bool Xc) { 
    int key =0; 
    if (Xa) {key+=4;} 
    if (Xb) {key+=2;} 
    if (Xc) {key+=1;} 
    return key; 
} 

हम तो नक्शा बना सकते हैं:

Key ElementsQueue 
0 [] 
1 [] 
2 [1] 
3 [] 
4 [2,6] 
5 [7] 
6 [] 
7 [5] 

और इस नक्शे के तत्वों लौटने।

+0

यदि यह समाधान आपके लिए ठीक लगता है तो मैं एक कार्यान्वयन ड्राफ्ट लगाने की कोशिश करूंगा – 88877

+0

आप 4,2,1 के रूप में महत्वपूर्ण मानों पर कैसे पहुंचे? – aceBox

+0

@acebox हम बूलियन सूची को बिटिन संख्या के बिट्स के रूप में देख सकते हैं। तो [एक्स, वाई, जेड] एक्स * 2^2 + वाई * 2^1 + जेड * 2^0 है। – 88877

संबंधित मुद्दे