एक फ़ाइल में बड़ी संख्या में (उदाहरण के लिए 10 बिलियन) स्ट्रिंग हैं और आपको डुप्लिकेट स्ट्रिंग्स खोजने की आवश्यकता है। आपके पास एन सिस्टम उपलब्ध हैं। आपको डुप्लिकेटबड़ी फ़ाइल में डुप्लिकेट स्ट्रिंग खोजें
उत्तर
फ़ाइल को एन टुकड़ों में विभाजित कैसे मिलेगा। प्रत्येक मशीन पर, जितना संभव हो उतना टुकड़ा लोड करें, और स्ट्रिंग को सॉर्ट करें। उस मशीन पर बड़े पैमाने पर भंडारण के लिए इन हिस्सों को लिखें। प्रत्येक मशीन पर, हिस्सों को एक ही स्ट्रीम में मर्ज करें, और उसके बाद स्ट्रीम को प्रत्येक मशीन से उस स्ट्रीम में मर्ज करें जिसमें सॉर्ट किए गए क्रम में सभी स्ट्रिंग शामिल हों। पिछले के साथ प्रत्येक स्ट्रिंग की तुलना करें। यदि वे वही हैं, तो यह एक डुप्लिकेट है।
भाग को एकल स्ट्रीम में मर्ज करने के लिए, आपको स्मृति में सभी रिकॉर्ड लोड करना होगा। 1 मिलियन रिकॉर्ड फ़ाइल के लिए, उपरोक्त एल्गोरिदम में अंतिम विलय चरण पर सभी 1 मिल रिकॉर्ड रिकॉर्ड में होना चाहिए? यदि हां, तो वह उद्देश्य को हरा देता है। –
@AndyDufresne "एकल स्ट्रीम में भाग को मर्ज करने के लिए, आपको स्मृति में सभी रिकॉर्ड लोड करना होगा।" नहीं, आप नहीं करेंगे। उन्हें तुलना करने के लिए, आपको प्रत्येक खंड से एक बार में अगली स्ट्रिंग को लोड करने के लिए पर्याप्त स्मृति की आवश्यकता होती है। एक बार तुलना करने के बाद, अगली स्ट्रिंग उस मेमोरी स्पेस पर कब्जा कर लेगी। – erickson
मुझे आपके मर्ज एल्गोरिदम को समझ में नहीं आया। मान लें कि हमारे पास 1 मिलियन रिकॉर्ड फ़ाइल है और स्मृति में केवल 5k रिकॉर्ड लोड किए जा सकते हैं। जो मैंने समझा, उससे मुझे पहले एनके टुकड़ों में फाइल को 5 के रिकॉर्ड के साथ विभाजित करने की आवश्यकता है। फिर प्रत्येक 5k रिकॉर्ड फ़ाइलों में सभी रिकॉर्ड सॉर्ट करें और वापस लिखें। दो 5k रिकॉर्ड फ़ाइलों को मर्ज करने के लिए, मुझे मेमोरी में 10k रिकॉर्ड लोड करना होगा? यदि यह आपके लिए नहीं है, तो क्या आप केवल 1k रिकॉर्ड लोड करने की स्मृति सीमा के साथ 1 मिल रिकॉर्ड फ़ाइल में डुप्लिकेट रिकॉर्ड खोजने के चरणों को समझा सकते हैं। –
एरिक्सन का जवाब शायद इस प्रश्न को सेट करने वाले किसी भी व्यक्ति द्वारा अपेक्षित है।
आप एक hashtable में एक बाल्टी के रूप में एन मशीनों में से प्रत्येक के इस्तेमाल कर सकते हैं: प्रत्येक स्ट्रिंग के लिए
- , (जैसे कि स्ट्रिंग संख्या मैं अनुक्रम में) एक हैश समारोह उस पर गणना, ज।
- स्टोरेज के लिए मशीन नंबर एन के लिए i और h के मानों को भेजें, जहां n = h% N.
- प्रत्येक मशीन से, सभी हैश मानों की एक सूची पुनर्प्राप्त करें जिसके लिए एक से अधिक अनुक्रमणिका प्राप्त हुईं, साथ में इंडेक्स की सूची के साथ।
- समान हैश मानों के साथ तारों के सेट की जांच करें, यह देखने के लिए कि वे वास्तव में बराबर हैं या नहीं।
ईमानदार होने के लिए, हालांकि, 10 अरब तारों के लिए आप संभवतः 1 पीसी पर ऐसा कर सकते हैं। सटीक हैशटेबल कार्यान्वयन के आधार पर हैशटेबल 32 बिट हैश के साथ 80-120 जीबी की तरह कुछ पर कब्जा कर सकता है। यदि आप एक कुशल समाधान की तलाश में हैं, तो आपको "मशीन" से थोड़ा सा विशिष्ट होना चाहिए, क्योंकि यह निर्भर करता है कि प्रत्येक के पास कितना संग्रहण है, और नेटवर्क संचार की सापेक्ष लागत।
- 1. एक बड़ी फ़ाइल में खोजें और बदलें
- 2. बड़ी PHP फ़ाइल में गायब ब्रेसिज़ खोजें?
- 3. बड़ी फ़ाइल में स्ट्रिंग सम्मिलन
- 4. स्ट्रिंग एक बड़ी फ़ाइल में php
- 5. 2 कॉलम में डुप्लिकेट कैसे खोजें 1
- 6. Arrays में डुप्लिकेट मान कैसे खोजें?
- 7. बड़ी तालिका से डुप्लिकेट हटाना
- 8. रिवर्स एक स्ट्रिंग में खोजें
- 9. स्ट्रिंग सरणी में डुप्लिकेट स्ट्रिंग हटाएं
- 10. PHP में सरणी में स्ट्रिंग कैसे खोजें?
- 11. बंटवारे सेट आइटम में एक बड़ी स्ट्रिंग
- 12. एक बड़ी पाठ फ़ाइल में एक स्ट्रिंग मिलान?
- 13. शक्तियों को बड़ी (बड़ी) फ़ाइल
- 14. विम: एक बड़ी परियोजना में खोजें और बदलें?
- 15. किसी अन्य स्ट्रिंग में स्ट्रिंग को कैसे खोजें?
- 16. बड़ी फ़ाइल
- 17. बड़ी फ़ाइल
- 18. एक बड़ी स्ट्रिंग
- 19. पायथन कोड फ़ाइलों में सभी स्ट्रिंग खोजें
- 20. ट्रिम बड़ी लॉग फ़ाइल
- 21. पूर्ण फ़ाइल पथ से फ़ाइल नाम खोजें
- 22. एक से अधिक मानदंडों द्वारा तालिका में डुप्लिकेट रिकॉर्ड खोजें
- 23. डुप्लिकेट फ़ाइल नाम
- 24. डेल्फी: कैसे एक बड़ी फ़ाइल
- 25. SQL सर्वर डेटाबेस में सबसे बड़ी ऑब्जेक्ट्स कैसे खोजें?
- 26. सी ++ std :: मानचित्र में सबसे बड़ी कुंजी कैसे खोजें?
- 27. डुप्लिकेट स्ट्रिंग और खाली स्ट्रिंग को हटाएं
- 28. एक बहुत बड़ी सिंगल लाइन फ़ाइल में एक पैटर्न और आसपास की सामग्री कैसे खोजें?
- 29. एक बहुत बड़ी फ़ाइल
- 30. स्ट्रिंग में एक char का सूचकांक खोजें?
क्या यह होमवर्क है? यह होमवर्क की तरह लगता है। – SoapBox