मान लीजिए कि आपको पूर्णांक के सेट की दो सूचियां दी गई हैं। उन्हें ए और बी बुलाएं। ए में प्रत्येक सेट बी में सेटों में से एक के भीतर निहित किया जा सकता है। ए में सभी तत्वों को खोजने के लिए सबसे कुशल एल्गोरिदम क्या है कि कोई भी बी के सेट में निहित नहीं है?सबसेट्स को हटाएं
उत्तर
खोज स्थान को आजमाएं और ट्रिम करने के लिए, हम खोज के हिस्से के रूप में कुछ चेक और फ़िल्टर आज़मा सकते हैं।
1: A: {0,1}, B: {1,2}
2: A: {0} , B: {0,1,2}
3: A: {2} , B: {0}
4: A: {1,2}, B: {0,1}
5: A: {} , B: {2}
6: A: {} , B: {2}
7: A: {2} , B: {}
: सेट के पार सहसंबद्ध अनुक्रमित की ओर इशारा करते कुंजी के रूप में सेट में अद्वितीय तत्वों की एक हे (एन) गणन साथ
A = [{1,2},{1,4},{3,4,7}]
B = [{2,3,4},{1,2,4},{1,2,5,6}]
शुरू टिप्पणी में अपने उदाहरण लेते हैं, वे संबंध रखते हैं
हम तुरंत ए में सेट को अलग कर सकते हैं जिसमें बी में कोई तत्व नहीं मिला है, जैसे कि ए के तीसरे सेट।
अब, हम ए में प्रत्येक सेट को पार करेंगे, जिसे बाहर नहीं रखा गया है और जांचें कि बी में कम से कम एक सेट का एक पूर्ण पूर्ण चौराहे है क्योंकि आपके मामले में सेट-इंडेक्स की संख्या लाखों में है शुरुआती रूप से बी को पूरी तरह से घुमाने के बजाए, हम बी की हमारी परीक्षा को विभाजित करेंगे, k
सेटों में से प्रत्येक, 1024 कहें। इसके अलावा, इन 1024 सेट-इंडेक्स का प्रतिनिधित्व करने के लिए, हम उन्हें 64 बिट्स के 16 बिट्स में विभाजित करेंगे हम bitwise-और() एक दूसरे के साथ हो सकता है।
इस ट्रेवर्सल के दौरान किसी भी बिंदु पर, हम एक प्रारंभिक बाहर निकलने से लाभ करता है, तो शून्य में और आपरेशन के परिणाम:
set A[0] => elements 1,2 => set-index-intersection in B: b110 & b111 => match
set A[1] => elements 1,4 => set-index-intersection in B: b110 & b11 => match
कुल मिलाकर, अनुभाग द्वारा अनुभाग काम कर रहा है, हम लगभग 10 * 16 आपरेशन करने के लिए देख रहे हैं जांचें कि 0 में से एक सेट k
बी-सेट के वर्तमान खंड में सेट में से एक में शामिल है या नहीं। दूसरे शब्दों में, हमने ए में एक सेट (बी में प्रति मिलियन सेट) की पूरी जांच के लिए 10,000,000 से 160,000 तक संचालन की संख्या कम कर दी है। यह 62 का एक कारक है।
- 1. आईआईएस: कमांड लाइन से वेबपैप को कैसे हटाएं/हटाएं/हटाएं?
- 2. मैं एसक्यूएल में पंक्तियों के ऑर्डर किए गए सबसेट्स को कैसे एकत्र करूं?
- 3. nodejs devDependencies को हटाएं
- 4. प्रोग्राम लेआउट को हटाएं
- 5. एसएसआईएस - पंक्तियों को हटाएं
- 6. MPAndroidChart किंवदंती को हटाएं
- 7. कोणीय सीमा को हटाएं
- 8. फ़ाइल को कैसे हटाएं?
- 9. संपर्क को कैसे हटाएं?
- 10. 'हटाएं'
- 11. QML में डिस्प्ले से स्क्रीन/पेज को कैसे हटाएं/हटाएं?
- 12. लोचदार खोज से पुराने डेटा को हटाएं या हटाएं
- 13. शीर्षलेख में वर्डप्रेस फ़ीड यूआरएल को कैसे हटाएं/हटाएं?
- 14. Django व्यवस्थापक में डिफ़ॉल्ट हटाएं कार्रवाई को हटाएं
- 15. emacs lisp: सूची के तत्व को कैसे हटाएं/हटाएं?
- 16. हटाएं
- 17. थोक हटाएं (छंटनी बनाम हटाएं)
- 18. PHP सत्र को कैसे हटाएं?
- 19. डिफ़ॉल्ट कन्स्ट्रक्टर को कैसे हटाएं?
- 20. फ़ोल्डरों को हटाएं और फाइलें
- 21. लिंक से इकाइयों को हटाएं
- 22. एकाधिक पंक्तियों को कैसे हटाएं?
- 23. नियंत्रक ExtJS को कैसे हटाएं?
- 24. गुणों को रिकर्सली से हटाएं
- 25. jQuery से jQuery को हटाएं
- 26. फीनिक्स सत्र को कैसे हटाएं?
- 27. xticks को हटाएं लेकिन MATLAB
- 28. Google BigQuery पंक्तियों को हटाएं?
- 29. हैश में कुंजी को हटाएं
- 30. निर्देशिका को दोबारा कैसे हटाएं?
s.issubset (टी) का प्रयोग करें, जो परीक्षण करता है कि एस में प्रत्येक तत्व टी में है या नहीं। – Aristide
निश्चित रूप से, लेकिन इसकी आवश्यकता होगी | ए | * | बी | परीक्षण। मुझे चालाक सॉर्टिंग के साथ लगता है, बेहतर हासिल किया जा सकता है। – Student
क्या आप सूचियों के सापेक्ष आकार, या पूर्णांक की सीमा के बारे में कुछ जानते हैं? – nibot