लंबाई k के दो तार , एक वर्ण में भिन्न, लंबाई l का एक उपसर्ग और लंबाई m का एक प्रत्यय जैसे कि k = l + m + 1 ।
साइमन Prins द्वारा जवाब भंडारण सभी उपसर्ग / प्रत्यय संयोजन स्पष्ट रूप से, यानी करके इस encodes abc
हो जाता है *bc
, a*c
और ab*
। वह k = 3, l = 0,1,2 और m = 2,1,0 है।
जैसा कि वैलारमोर्गुलिस बताता है, आप एक उपसर्ग वृक्ष में शब्दों को व्यवस्थित कर सकते हैं। वहाँ भी बहुत समान प्रत्यय वृक्ष है। प्रत्येक उपसर्ग या प्रत्यय के नीचे पत्ती नोड्स की संख्या के साथ पेड़ को बढ़ाना काफी आसान है; नया शब्द डालने पर इसे O (k) में अपडेट किया जा सकता है।
जिस कारण से आप चाहते हैं कि इन भाई-बहनों की गिनती है, इसलिए आप जानते हैं, एक नया शब्द दिया गया है, चाहे आप एक ही प्रत्यय के साथ सभी तारों को सम्मिलित करना चाहते हैं या एक ही प्रत्यय के साथ सभी तारों को गणना करना चाहते हैं। उदाहरण के लिए इनपुट के रूप में "एबीसी" के लिए, संभावित उपसर्ग "", "ए" और "एब" हैं, जबकि संबंधित प्रत्यय "बीसी", "सी" और "" हैं। जैसा कि स्पष्ट है, छोटे प्रत्ययों के लिए उपसर्ग वृक्ष में भाई-बहनों की गणना करना बेहतर है और इसके विपरीत।
जैसा कि @inpoklum बताते हैं, यह निश्चित रूप से संभव है कि सभी तार एक ही k / 2 उपसर्ग साझा करें । यह इस दृष्टिकोण के लिए एक समस्या नहीं है; उपसर्ग वृक्ष k / 2 की गहराई तक प्रत्येक नोड के साथ k / 2 गहराई तक 100.000 लीफ डायोड के पूर्वज होंगे। नतीजतन, प्रत्यय के पेड़ का उपयोग (k / 2-1) गहराई तक किया जाएगा, जो अच्छा है क्योंकि तारों को उनके प्रत्ययों में अंतर करना पड़ता है, क्योंकि वे उपसर्ग साझा करते हैं।
[संपादित करें] एक अनुकूलन के रूप में, एक बार जब आप एक स्ट्रिंग के सबसे कम अद्वितीय उपसर्ग का निर्धारण कर लेते हैं, तो आप जानते हैं कि यदि एक अलग चरित्र है, तो यह उपसर्ग का अंतिम चरित्र होना चाहिए, और जब आप पास-डुप्लिकेट पाएंगे उपसर्ग की जाँच करना जो एक छोटा था। तो अगर "एबकेड" में सबसे छोटा अनोखा उपसर्ग "एबीसी" है, तो इसका मतलब है कि अन्य स्ट्रिंग्स हैं जो "एब्स" से शुरू होते हैं? " लेकिन "एबीसी" के साथ नहीं। यानी अगर वे केवल एक ही चरित्र में भिन्न होते, तो वह तीसरा चरित्र होता। अब आपको "abc? E" के लिए जाँच करने की आवश्यकता नहीं है।
उसी तर्क से, यदि आप पाएंगे कि "cde" एक अद्वितीय सबसे छोटा प्रत्यय है, तो आप जानते हैं कि आपको केवल लंबाई -2 "ab" उपसर्ग की जाँच करने की आवश्यकता है और लंबाई 1 या 3 उपसर्ग नहीं।
ध्यान दें कि यह विधि केवल एक वर्ण अंतर के लिए काम करती है और 2 वर्ण अंतरों के लिए सामान्यीकरण नहीं करती है, यह एक समान चरित्र को समान उपसर्गों और समान प्रत्ययों के बीच पृथक्करण होने से निर्भर करती है।