सी

2010-03-23 3 views
5

के लिए हैशटेबल कार्यान्वयन सी के लिए एक अच्छा हैशटेबल कार्यान्वयन क्या है? मुझे इसे mpicc कंपाइलर के साथ उपयोग करने की आवश्यकता है। हटाएं फ़ंक्शन आवश्यक नहीं है।सी

+0

कोई नहीं, वास्तव में। इसके अलावा हैशटेबल अपरिवर्तनीय होगा। – Alex

+0

'एक बार बनाया गया और बाद में नहीं बदला' अर्थ में अपरिवर्तनीय। – Alex

+0

क्या संकलन समय पर ज्ञात डेटा है? फिर आप Remo.D सुझाए गए एक परिपूर्ण हैश जेनरेटर का उपयोग कर सकते हैं। – quinmars

उत्तर

4

glib में से एक बहुत अच्छा है। यह सुनिश्चित नहीं है कि यह ग्लिब के बाकी हिस्सों से अलग होने के लिए बहुत बड़ा और/या संभव है।

विफल होने पर, Pearson hashing अपने आप को लागू करने के लिए एक अच्छा प्रारंभिक बिंदु प्रतीत होता है (यह 8-बिट रजिस्टरों वाली मशीनों के लिए अनुकूलित हैश फ़ंक्शन है)।

+0

ग्लिब अच्छा है लेकिन यह इतना बड़ा है कि मैं इसे केवल आपके प्रोजेक्ट में शामिल करने का सुझाव नहीं दूंगा। यदि आपको ग्लिब की सभी अन्य सुविधाओं की भी आवश्यकता है, हालांकि, मैं मानता हूं कि जाने का रास्ता होगा। –

3

यदि चाबियाँ पहले से ही जानी जाती हैं, तो आप perfect hash जनरेटर का उपयोग स्पेस ओवरहेड से बच सकते हैं जो हैश टेबल में निहित है।

यदि दूसरी तरफ, आपको वास्तव में एक पूर्ण हैश तालिका की आवश्यकता है, तो मैं Cuckoo Hashing (उदा। डी-आरी संस्करण) की विविधता का सुझाव दूंगा।

मैंने संतुष्टि के साथ Hopscotch Hashing का सरलीकृत संस्करण उपयोग किया है जो उच्च लोड कारकों पर भी काम करता है।