मान लीजिए कि मेरे पास तारों की एक बड़ी संख्या है (प्रत्येक के 50 वर्णों के 10 अरब तारों का कहना है)। मैं तारों को बिल्कुल 10 बाल्टी में वितरित करना चाहता हूं। प्रत्येक बाल्टी में तारों का लगभग 10% होना चाहिए। हैश फ़ंक्शन एच() के साथ मैं कर सकता हूं:हैश फ़ंक्शन मानों के वितरण में सुधार
int bucket_for_s = h(s) % 10
हालांकि यह वितरण की समानता के बारे में कोई गारंटी नहीं देता है। मान लीजिए कि मैं उपरोक्त सभी तारों के लिए करता हूं और पाते हैं कि 30% बाल्टी 1 पर जाते हैं, 5% बाल्टी 2 पर जाते हैं और इसी तरह। मेरा सवाल है:
एच() वितरण दिया गया है, क्या एक नया हैश फ़ंक्शन h2() उत्पन्न करने का कोई तरीका है जो तारों को समान रूप से वितरित करेगा?
वैकल्पिक रूप से, क्या ऐसी प्रक्रिया है जो हैश फ़ंक्शन h2(), h3() की श्रृंखला उत्पन्न कर सकती है ... ताकि 1: प्रत्येक हैश फ़ंक्शन पिछले एक और 2 से बेहतर हो: मुझे केवल एक उत्पन्न करना होगा हैश कार्यों की उचित संख्या?
मुझे यह भी जिक्र करना चाहिए कि दुर्भाग्यवश मैं इनपुट को केवल 10 हिस्सों में विभाजित नहीं कर सकता क्योंकि मेरा इनपुट कई मशीनों में फैल गया है। मैं एक निर्धारक समाधान की तलाश में हूं, मैं अलग-अलग मशीनों पर अलग-अलग आवेदन कर सकता हूं और उसी परिणाम प्राप्त कर सकता हूं (इसलिए आखिरकार "हैलो" बाल्टी एक्स पर जायेगा, इससे कोई फर्क नहीं पड़ता कि मशीनों को किस संग्रह में रखा गया था)।
क्या यह एक सैद्धांतिक प्रश्न है? या क्या आपके पास इस पर अनुभवजन्य डेटा है? इसके अलावा, क्या आप हैंडकार्ड सिस्टम या हडोप जैसे कुछ का उपयोग कर रहे हैं? – cyroxx
यह एक सैद्धांतिक सवाल है जो हस्तनिर्मित प्रणाली को डिजाइन करने के बारे में सोचते समय मेरे दिमाग को पार कर गया। अब तक मुझे इसके लिए कोई जवाब नहीं मिला। – user1424934