मान लीजिए कि हमें एक संग्रह दिया गया है तार, । मैं जानना चाहूंगा कि क्या उनमें से कोई तार संग्रह में किसी अन्य स्ट्रिंग का एक विकल्प है। दूसरे शब्दों में, मैं निम्नलिखित कार्य के लिए एक एल्गोरिथ्म चाहूंगा:
इनपुट:
आउटपुट: ऐसा है कि का एक विकल्प है तथा , या कोई नहीं तो ऐसे नहीं मौजूद
क्या इसके लिए एक कुशल एल्गोरिदम है?
यदि हम "सबस्ट्रिंग" को "उपसर्ग" से प्रतिस्थापित करते हैं, तो एक कुशल एल्गोरिथ्म है (तार को क्रमबद्ध करें, फिर आसन्न तारों की तुलना करने के लिए एक रैखिक स्कैन करें। छंटाई यह सुनिश्चित करेगी कि सबस्ट्रिंग आसन्न हैं)। लेकिन यह परीक्षण करना अधिक चुनौतीपूर्ण लगता है कि क्या कोई स्ट्रिंग किसी अन्य स्ट्रिंग का एक विकल्प है। एक भोली एल्गोरिथ्म सभी जोड़ियों पर चलना है, लेकिन इसके लिए आवश्यकता है घटिया परीक्षण। क्या अधिक कुशल एल्गोरिथ्म है?
मुझे लगता है कि हम इसे "ऑल-पेयर सबस्ट्रिंग टेस्टिंग" कह सकते हैं, या ऐसा कुछ।
मेरा अंतिम लक्ष्य संग्रह को prune करना है, इसलिए कोई भी स्ट्रिंग किसी अन्य का एक विकल्प नहीं है, प्रत्येक को हटाकर जो संग्रह में किसी और चीज का विकल्प है।