में सबसे आम तीन-आइटम अनुक्रम ढूँढना मेरे पास वेबपृष्ठ विज़िट की कई लॉग फ़ाइलें हैं, जहां प्रत्येक विज़िट उपयोगकर्ता आईडी और टाइमस्टैम्प से जुड़ी होती है। मुझे सबसे लोकप्रिय (यानी अक्सर दौरा किया जाता है) तीन-पेज अनुक्रम की पहचान करने की आवश्यकता है। मुख्य फाइलों में एक बार में लॉग फाइलें बहुत बड़ी होती हैं।एक बहुत बड़ी फ़ाइल
नमूना लॉग फ़ाइल:
User ID Page ID
A 1
A 2
A 3
B 2
B 3
C 1
B 4
A 4
इसी परिणाम:
एक: 1-2-3, 2-3-4
बी: 2-3-4
2- 3-4 सबसे लोकप्रिय तीन-पेज अनुक्रम
मेरा विचार दो हैश तालिकाओं का उपयोग करना है। उपयोगकर्ता आईडी पर पहला हैश और इसके अनुक्रम को स्टोर करता है; दूसरा तीन पेज अनुक्रमों को हैश करता है और प्रत्येक व्यक्ति की संख्या कितनी बार प्रदर्शित होता है। यह ओ (एन) अंतरिक्ष और ओ (एन) समय लेता है।
हालांकि, चूंकि मुझे दो हैश टेबल का उपयोग करना है, इसलिए स्मृति एक ही समय में सब कुछ नहीं रख सकती है, और मुझे डिस्क का उपयोग करना होगा। डिस्क को अक्सर एक्सेस करने में सक्षम नहीं है।
मैं इसे बेहतर कैसे कर सकता हूं?
क्या वेबपृष्ठों की संख्या काफी बड़ी है? (मुझे मिल रहा है: क्या स्मृति में "3-पेज विज़िट" डेटास्ट्रक्चर को रखना उचित है?) –
हाँ, यह बहुत बड़ा है। यह एक बार स्मृति में आयोजित नहीं किया जा सकता है। – user1002288
इस मामले में हैश टेबल पिछले दो पृष्ठों (छोटे) के num_users तत्व होंगे, और (num_pages) * 3 तत्वों में से एक होगा। मुझे आश्चर्य होगा अगर दोनों हैशटेबल स्मृति में फिट नहीं थे, और डिस्क का उपयोग बहुत कम नहीं हो सकता है। –