कुशल दोहराया सम्मिलन के लिए डेटा संरचना सेट करें


11

मैं एक अंतरिक्ष-कुशल डेटा संरचना की तलाश कर रहा हूं जो शब्दों के तत्वों का सेट (कोई पुनरावृत्ति) रखता है और तेजी से सम्मिलन (amortized O (1)) का समर्थन करता है। "अंतरिक्ष-कुशल" से मेरा मतलब है, आदर्श रूप से, n तत्वों n+o(n)को संग्रहीत करने के लिए शब्द ।n

सेट होना सवाल का एक महत्वपूर्ण हिस्सा है: यदि प्रत्येक तत्व को में जोड़ा lognजाता है तो उपयोग की जाने वाली जगह को नहीं किया जा सकता है nlogn

संरचना को इसके तत्वों (उचित रूप से कुशलतापूर्वक) को सूचीबद्ध करने का समर्थन करना चाहिए; किसी भी समझदार ढांचे को यहां कोई परेशानी नहीं होनी चाहिए। (तेजी से सदस्यता प्रश्न एक से अधिक हैं।)


2
क्या कोई कारण है कि कोई हैश टेबल ट्रिक नहीं करेगा?
डेव

@ क्या: मैं अंतरिक्ष की आवश्यकता को पूरा करने के बारे में नहीं सोचता, लेकिन मुझे लगता है कि एक पर्याप्त सख्त गतिशील आकार परिवर्तन अनुसूची इसे काम कर सकती है। लेकिन आम तौर पर मैं देखना चाहता हूं कि वास्तव में कोड लिखने से पहले क्या है।
चार्ल्स

1
डायनामिक आकार बदलने के साथ O(1) को संशोधित करने के लिए , आपको आकार को एक स्थिर अंश से बढ़ाना होगा, जो मुझे नहीं लगता कि यदि आप से सख्ती से मिलना चाहते हैं तो अंतरिक्ष की आवश्यकता को पूरा करता है n+o(n)
डेव

O(1)

@ मैग्नस: मेरा अनुमान है कि इसका मतलब यह है कि प्रश्न में O- और ओ-नोटेशन के पीछे के वास्तविक कार्य शब्द के आकार पर निर्भर नहीं करते हैं।
त्सुयोशी इतो

जवाबों:


10

मुझे लगता है कि रमन और राव की "सक्सेज डायनेमिक डिक्शनर्स एंड ट्रीज़" आपके द्वारा निर्दिष्ट सीमाओं को पूरा करती हैं। अमूर्त से:

SU={0,,m1},|S|=nO(1)SO(1)B+o(B)एसB=lg(mn) का प्रतिनिधित्व करने के लिए सूचना-सिद्धांत संबंधी न्यूनतम स्थान है ।S


यह शानदार लग रहा है। (आप समझेंगे कि क्या मैं स्वीकार करने से पहले कागज पढ़ता हूं, हालांकि, सही?)
चार्ल्स

1

यदि आपका आवेदन कुछ गलत सकारात्मक सहन कर सकता है, तो आपको ब्लूम फ़िल्टर का उपयोग करना चाहिए ।

Paraphrase of Wikipedia: ब्लूम फ़िल्टर एक अंतरिक्ष-कुशल संभाव्य डेटा संरचना है जिसका उपयोग यह परीक्षण करने के लिए किया जाता है कि कोई तत्व किसी सेट का सदस्य है या नहीं। झूठी सकारात्मकता संभव है, लेकिन झूठी नकारात्मक नहीं हैं। तत्वों को सेट में जोड़ा जा सकता है, लेकिन हटाया नहीं गया। सेट में जितने अधिक तत्व जोड़े जाएंगे, झूठी सकारात्मकता की संभावना उतनी ही अधिक होगी।


मेरा नहीं, लेकिन एक महान डेटा संरचना के लिए +1 कर सकते हैं।
चार्ल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.