बस अभ्यास के लिए (और नहीं एक होमवर्क असाइनमेंट के रूप में) मैं इस समस्या को हल करने के लिए (CLRS, 3 संस्करण, व्यायाम 11.2-6) कोशिश कर रहे हैं:एक जंजीर हैश तालिका से एक यादृच्छिक तत्व कुशलता से उठा रहा है?
के हैश तालिका में मान लीजिए हमारे द्वारा संगृहीत n कुंजी आकार मीटर, चेनिंग द्वारा हल किए गए टकराव, और हम प्रत्येक श्रृंखला की लंबाई को जानते हैं, जिसमें सबसे लंबी श्रृंखला की लंबाई एल शामिल है। प्रक्रिया का वर्णन करें जो हैश तालिका में कुंजी के बीच यादृच्छिक रूप से एक कुंजी का चयन करता है और इसे अपेक्षित समय ओ (एल * (1 + एम/एन)) में देता है।
जो मैंने अभी तक सोचा था कि प्रत्येक कुंजी लौटाई जाने की संभावना 1/n है। यदि हम 1 से n के बीच यादृच्छिक मान x प्राप्त करने का प्रयास करते हैं, और बाल्टी में श्रृंखला के साथ बाल्टी द्वारा क्रमबद्ध क्रम में xth कुंजी को खोजने का प्रयास करें, तो यह ओ (एम) को जाकर सही बाल्टी ढूंढने के लिए ले जाएगा श्रृंखला में सही कुंजी प्राप्त करने के लिए बाल्टी के माध्यम से एक और ओ (एल) समय के माध्यम से।
आपका प्रश्न कहां है? – outis
संबंधित आइटम खोजने के लिए सबसे खराब मामला ओ (एमएन) है, लेकिन अपेक्षित समय (जैसा कि सवाल कहता है) उनमें से प्रत्येक के लिए ओ (1 + एम/एन) है और ओ (एल * (एम/एन + 1)) होगा उन सभी को। –
लंबाई की जानकारी कैसे संग्रहीत की जाती है? मैं सोच रहा हूं कि अगर एक बाल्टी में सभी तत्व होते हैं और बाकी के पास शून्य होता है, तो आप उस बाल्टी को ओ (एन) समय से भी तेज नहीं पाते हैं। तत्वों के बारे में कोई अन्य जानकारी उपलब्ध है? – templatetypedef