'K' के लिए एल्गोरिथम सबसे अधिक बार होने वाली संख्या है


19

मैं सबसे कुशल (स्ट्रीमिंग ??) एल्गोरिथ्म की खोज कर रहा हूं जो मुझे किसी भी समय किसी डेटा स्ट्रीम में 'के' सबसे अधिक बार होने वाले तत्व बताता है। यह पोस्ट: डेटा स्ट्रीम एल्गोरिदम को "विभाजित और जीतना" मुझे इसमें दिलचस्पी थी।

उदाहरण के लिए, मान लें कि संख्याएँ हैं: (4,3,5,1,6,2,4,3,3,8,9,9,1) और मैं 3 सबसे अधिक होने वाली संख्याओं के लिए क्वेरी करता हूं (कहते हैं), तो मुझे चाहिए उत्तर के रूप में (3,4,1) प्राप्त करें।

मैंने ऑनलाइन खोज करने की कोशिश की, लेकिन ऐसा कोई स्थान नहीं मिला जो दृष्टिकोण देता हो और कहता हो कि यह सबसे अच्छा है। एक तुच्छ समाधान ढेर या संतुलित बाइनरी ट्री का उपयोग करना होगा, लेकिन मुझे लगता है कि एक बेहतर तरीका है और मैं जानना चाहता था कि क्या यह कहीं दस्तावेज है।

संपादित करें: मैं एक एल्गोरिथ्म की तलाश कर रहा हूं जो हमेशा एक एपॉरमिक्स एल्गोरिथ्म के विपरीत सही उत्तर देता है (जिनमें से कई खोज परिणामों में पॉप अप होते हैं) जो किसी तरह या अन्य में डेटा के वितरण पर भरोसा करते हैं


वास्तव में एल्गोरिदम तीन प्रकार के होते हैं: सटीक, अनुमानित और "डेटा आश्रित"। आपने अंतिम प्रकार से इंकार किया, लेकिन अनुमानित एल्गोरिदम हैं जो डेटा वितरण पर निर्भर नहीं हैं? जैसा कि मैंने संकेत दिया है, यदि नहीं, तो आप एक स्ट्रीम सेटिंग में इस समस्या के लिए ज्ञात कम सीमा के कारण परेशानी में हैं।
सुरेश वेंकट

1
मैं इस बात को लेकर उत्सुक था कि क्या एल्गोरिदम जो सीमित मेमोरी (स्ट्रीमिंग एल्गोरिदम) का उपयोग करते हैं, वास्तव में वही कर सकते हैं जो मैं चाहता था और ऐसा लगता है कि वे वैसा नहीं कर सकते जैसा आपने बताया है। यह भी कि क्या एक गैर-स्ट्रीमिंग सटीक एल्गोरिथ्म ज्ञात है जो O (n) में समस्या को हल करता है सबसे खराब समय की गारंटी देता है, जो यहां उल्लेख किया गया है (आपके द्वारा दिए गए लिंक से Cormode और Hadjileftheriou द्वारा कागज का उल्लेख किया गया है): citesexx.ist.psu। edu / viewdoc / समरी; doi = 10.1.1.106.7889
dhruvbird

जवाबों:


20

=1(n)

n/


1
+1। मुझे लगता है कि समय का 50% एल्गोरिथ्म एक प्रसिद्ध (बहुमत तत्व एल्गोरिथ्म) है जैसा कि आपने उल्लेख किया है
dhruvbird

2
धन्यवाद!! Cormode और Hadjileftheriou का पेपर जिसमें आपने इस पेपर का उल्लेख किया है: citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.106.7889 जिसकी वही तकनीक है जिसके बारे में मैं सोच रहा था। यह 2 जुड़ी हुई सूचियों को बनाए रखता है; एक आवृत्ति द्वारा और उसके भीतर एक ही आवृत्ति वाले सभी तत्वों की एक और सूची।
dhruvbird

क्या आप 50 प्रतिशत से अधिक एल्गोरिथ्म पर विस्तृत कर सकते हैं? और गूगल पहेली? मैं इस ढुलमुल तर्क का पालन नहीं कर सकता क्योंकि आपने अभी तक इसे छुआ है और "अच्छी तरह से ज्ञात चाल" पर पूरी तरह से खर्च नहीं किया है। धन्यवाद।


यह सुरेश वेंकट के लिंक userweb.cs.utexas.edu/users/misra/scannedPdf.dir/… पर एक टिप्पणी (पर्याप्त प्रतिष्ठा नहीं) है : ऐसा लगता है कि प्रस्तुत एल्गोरिथम डेटा के माध्यम से एक दूसरे पास की आवश्यकता है, जिसकी अनुमति नहीं है यहाँ। वास्तव में, मैं यह नहीं देखता कि O (1) अंतरिक्ष आवश्यकताओं के साथ एक-पास एल्गोरिथ्म कैसे मौजूद हो सकता है।
टोनीके

2

मैं निम्नलिखित पुस्तक के खंड 8.1.3 "डेटा-धाराओं में फ़्रीक्वेंट-पैटर्न माइनिंग" पढ़ने की सलाह देता हूं:

जियावेई हान, मिशलाइन कामबर। डेटा माइनिंग --- अवधारणा और तकनीक, दूसरा संस्करण, मॉर्गन कॉफमैन पब्लिशर्स , 2006।

यह एक एल्गोरिथ्म का परिचय देता है, जिसे लॉसी काउंटिंग के रूप में जाना जाता है , जो बार-बार आइटम (जिन वस्तुओं का समर्थन कुछ min_support से ऊपर है ) को मनमाने ढंग से सटीक बनाता है

बिल्कुल नहीं, जो आप चाहते हैं, लेकिन मुझे लगा कि यह मदद कर सकता है।


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