मैंने अच्छी तरह से कल्पना की कि मैं एक प्रत्यय त्रिभुज का निर्माण कर सकता हूं जहां मैं प्रत्येक नोड के लिए विज़िट-गिनती रखता हूं, और उसके बाद गहरे नोड्स एक से अधिक की गणना करते हैं परिणाम परिणाम मैं देख रहा हूं के लिये।एक बड़े पैमाने पर स्ट्रिंग में लंबे समय से दोहराए गए सबस्ट्रिंग्स को ढूंढना
मेरे पास वास्तव में वास्तव में लंबी स्ट्रिंग (सैकड़ों मेगाबाइट्स) हैं। मेरे पास लगभग 1 जीबी रैम है।
यही कारण है कि गिनती डेटा के साथ एक प्रत्यय त्रिभुज का निर्माण करना मेरे लिए काम करने के लिए बहुत अक्षम है। Wikipedia's Suffix tree उद्धरण करने के लिए:
स्ट्रिंग के प्रत्यय पेड़ को संग्रहीत करने के लिए आम तौर पर स्ट्रिंग को संग्रहित करने से अधिक स्थान की आवश्यकता होती है।
प्रत्येक किनारे और नोड में बड़ी मात्रा में जानकारी प्रत्यय पेड़ को बहुत महंगी बनाती है, जो अच्छे कार्यान्वयन में स्रोत पाठ के स्मृति आकार के दस से बीस गुना उपभोग करती है। प्रत्यय सरणी इस आवश्यकता को चार के कारक तक कम कर देती है, और शोधकर्ताओं ने छोटे अनुक्रमण संरचनाओं को खोजना जारी रखा है।
और यह पेड़ पर विकिपीडिया की टिप्पणियां थी, न कि त्रिभुज।
मुझे इतनी बड़ी मात्रा में डेटा और उचित समय में (जैसे आधुनिक डेस्कटॉप मशीन पर एक घंटे से भी कम समय में) लंबे समय से अनुक्रमित अनुक्रम कैसे मिल सकता है?
(कुछ विकिपीडिया लिंक लोग उन्हें 'जवाब' के रूप में पोस्टिंग से बचने के लिए: Algorithms on strings और विशेष रूप से Longest repeated substring problem ;-))
Fwiw, यहां किसी समस्या से जूझ रहा SpamAssassin के लिए लिखा था के एक कार्यान्वयन है, उपयोगी हो सकता है: http://taint.org/2007/03/05/ 134447a.html –