लॉग इन करें हमें इन ~ 50 जीबी डेटा फाइलें मिलती हैं जिनमें 16 बाइट कोड शामिल हैं, और मैं किसी भी कोड को ढूंढना चाहता हूं जो 1/2% समय या उससे अधिक होता है। क्या डेटा पर एक ही पास में ऐसा कोई तरीका है जो मैं कर सकता हूं?लॉग एंबोरिदम
संपादित करें: बहुत सारे कोड हैं - यह संभव है कि प्रत्येक कोड अलग हो।
EPILOGUE: मैंने दारायस बेकन को सबसे अच्छे उत्तर के रूप में चुना है, क्योंकि मुझे लगता है कि सबसे अच्छा एल्गोरिदम वह बहुसंख्यक तत्व का एक संशोधन है जिसे उन्होंने लिंक किया है। अधिकांश एल्गोरिदम को केवल थोड़ी मात्रा में स्मृति का उपयोग करने के लिए संशोधित किया जाना चाहिए - जैसे 201 कोड 1/2% मुझे लगता है। असल में आप केवल 201 अलग-अलग कोडों की गिनती स्ट्रीम चलते हैं। जैसे ही आपको 201 अलग-अलग कोड मिलते हैं, आप प्रत्येक कोड में से एक को छोड़ देते हैं (काउंटर से 1 कटौती, 0 जो भी हो जाता है उसे भूल जाते हैं)। अंत में, आप अधिकतर एन/201 बार गिर गए हैं, इसलिए किसी भी कोड की तुलना में अधिक बार होनी चाहिए जो अभी भी आसपास होनी चाहिए।
लेकिन यह एक दो पास एल्गोरिदम है, एक नहीं। उम्मीदवारों की गणना के लिए आपको दूसरे पास की आवश्यकता है। यह देखना वास्तव में आसान है कि इस समस्या के किसी भी समाधान को कम से कम 2 पास का उपयोग करना चाहिए (आपके द्वारा लोड किए जाने वाले तत्वों का पहला बैच अलग हो सकता है और उनमें से एक कोड बिल्कुल 1/2% हो सकता है)
के लिए धन्यवाद नौकर!
दिलचस्प कागज, लेकिन थोड़ा अलग समस्या। मुझे एक सटीक उत्तर चाहिए (जो मुझे लगता है कि अब किया जा सकता है)। – Gwildore
एक सटीक उत्तर वाला एक पेपर था, जिसने साबित किया कि इसकी विधि कुछ अर्थों में इष्टतम थी, लेकिन मैं नाम पर खाली हूं; यह कुछ सालों से रहा है और अब मैं वहां काम नहीं करता हूं। –
यह सभी उम्मीदवारों को देता है, इसलिए आप केवल उम्मीदवारों की गिनती करते हुए एक साधारण दूसरा पास कर सकते हैं। – Svante