2008-12-11 10 views
13

कॉम्पैक्ट और तेज़ तरीके से पूर्णांक (वास्तव में सी मेमोरी एड्रेस) के स्पैस सेट का प्रतिनिधित्व करने का एक अच्छा तरीका क्या है। मैं पहले से ही बिट-वेक्टर और रन-लम्बाई एन्कोडिंग जैसी स्पष्ट चीजों के बारे में जानता हूं। लेकिन मैं प्रति सेट तत्व एक शब्द से ज्यादा कुछ कॉम्पैक्ट चाहता हूं। मुझे सदस्यता जोड़ने और निकालने और सदस्यता के लिए परीक्षण करने की आवश्यकता है। मुझे यूनियन की तरह अन्य सेट ऑपरेशंस की आवश्यकता नहीं है।स्पैस पूर्णांक सेट का प्रतिनिधित्व?

मैंने कई साल पहले ऐसी एक पुस्तकालय पढ़ी लेकिन बाद में इसका नाम भूल गया। मुझे लगता है कि इसे एचपी द्वारा ओपन सोर्स के रूप में रिलीज़ किया गया था और एक महिला नाम था।

+1

सूचक बिट प्रति <1 शब्द कठिन हिस्सा बनने के लिए जा रहा है। – BCS

+0

आप यह नहीं कहते कि आप सेट में कितने पते स्टोर करेंगे। यह महत्वपूर्ण है। इसके अलावा आप यह नहीं कहते कि वे मॉलोक से आते हैं। –

+0

आप मुझसे पूछे गए एक समान प्रश्न के उत्तर देख सकते हैं: http://stackoverflow.com/questions/36106/what-are-some-alternatives-to-a-bit-array – erickson

उत्तर

10

आप एक न्यायिक सरणी का जिक्र कर रहे हैं। यह एक एचपी परियोजना थी। मुझे लगता है कि वे रूबी में उपयोग किया जाता है और सी में उपलब्ध हैं। बहुत ही रोचक डेटा संरचना। इस तथ्य का उपयोग करना कि आवंटन (कम से कम) शब्द गठबंधन है, घने और स्पैर श्रेणियों के लिए अलग संरचनाएं हैं।

http://judy.sourceforge.net/index.html

+1

धन्यवाद। "जुडी" वास्तव में वह था जिसे मैं सोच रहा था। मैं उस नाम को फिर से याद नहीं किया होगा। –

1

यदि आपको सदस्यता के लिए सम्मिलन, हटाना और परीक्षण की आवश्यकता है, तो एक हैश टेबल आपको अच्छी तरह से अनुकूल करे। आप 32-बिट पूर्णांक here हैशिंग के लिए कुछ अच्छे हैश फ़ंक्शन पा सकते हैं।

+1

यह कॉम्पैक्ट पर्याप्त नहीं है -1 –

0

यदि आप डेटा सेट से छोटी संरचना चाहते हैं तो आपको शायद किसी प्रकार की वृक्ष व्यवस्था को देखना चाहिए। ऊपरी छोर से शुरू होने वाली 2 बिट्स के पेड़ कुंजी को 4 तरीके के प्रत्येक स्तर को बनाएं और यह काफी अच्छी तरह से कॉम्पैक्ट हो सकता है (यदि पॉइंटर्स में स्पेसियल इलाके की कोई डिग्री हो)। चाल इसे कॉम्पैक्टली पर्याप्त एन्कोडिंग करेगा (नोड्स के सरणी में अनुक्रमण? एक सरणी मैप किए गए पेड़?)।

4

एक बहुत कॉम्पैक्ट डेटा संरचना एक ब्लूम फ़िल्टर होगा, शायद हटाए जाने के समर्थन के लिए एक गिनती ब्लूम फ़िल्टर होगा।

http://en.wikipedia.org/wiki/Bloom_filter

ब्लूम फिल्टर, 1970 में बर्टन एच ब्लूम ने कल्पना की, एक अंतरिक्ष कुशल संभावित डेटा संरचना है कि परीक्षण करने के लिए एक तत्व एक सेट का एक सदस्य है कि क्या किया जाता है। झूठी सकारात्मक संभव है, लेकिन झूठी नकारात्मक नहीं हैं। तत्वों को सेट में जोड़ा जा सकता है, लेकिन हटाया नहीं गया है (हालांकि इसे गिनती फ़िल्टर के साथ संबोधित किया जा सकता है)

+0

धन्यवाद। मैं इनके बारे में जानता हूं लेकिन मैं झूठी सकारात्मक स्वीकार नहीं कर सकता (झूठी नकारात्मक स्वीकार्य हो सकती है लेकिन आदर्श से कम)। –

संबंधित मुद्दे