जैसा कि फिमुम्यू ने बताया, यह एक ग्राफ समस्या है। आपके पास (निर्देशित) किनारों के साथ तारों (शिखर) का एक सेट है। स्पष्ट रूप से, ग्राफ़ चेन करने योग्य होने के लिए connected होना चाहिए - यह जांचना आसान है। दुर्भाग्य से, इस से परे नियम एक छोटे से स्पष्ट नहीं कर रहे:
तार एक बार से अधिक इस्तेमाल किया जा सकता है, लेकिन लिंक नहीं है, तो समस्या एक Eulerian path, जो कुशलता से किया जा सकता है मिल रहा है कर सकते हैं। एक युलरियन पथ एक बार प्रत्येक किनारे का उपयोग करता है, लेकिन एक से अधिक बार शिखर का उपयोग कर सकता है।
// this can form a valid Eulerian path
yard
dog
god
glitter
yard -> dog -> god -> dog -> glitter
तार एक बार से अधिक नहीं किया जा सकता है, तो समस्या एक Hamiltonian path मिल रहा है। चूंकि हैमिल्टनियन पथ समस्या एनपी-पूर्ण है, इसलिए कोई सटीक कुशल समाधान ज्ञात नहीं है। बेशक, छोटे एन के लिए, दक्षता वास्तव में महत्वपूर्ण नहीं है और एक ब्रूट फोर्स समाधान ठीक काम करेगा।
हालांकि, चीजें काफी सरल नहीं हैं, क्योंकि इस समस्या के इनपुट के रूप में होने वाले ग्राफों का सेट सीमित है। उदाहरण के लिए, निम्नलिखित मान्य निर्देशित ग्राफ है (dot नोटेशन में) (*)।
digraph G {
alpha -> beta;
beta -> gamma;
gamma -> beta;
gamma -> delta;
}
हालांकि, इस ग्राफ इस पहेली के नियमों का उपयोग कर तार से निर्मित नहीं किया जा सकता: अल्फा और गामा के बाद से दोनों बीटा से कनेक्ट, वे एक ही चरित्र के साथ समाप्त होना चाहिए (मान लेते हैं वे अंत करते हैं 'x' के साथ), लेकिन गामाडेल्टा से भी कनेक्ट होता है, इसलिए डेल्टा भी 'x' से शुरू होना चाहिए। लेकिन डेल्टा 'x' से शुरू नहीं हो सकता है, क्योंकि अगर ऐसा होता है, तो alpha -> delta
का किनारा होगा, जो मूल ग्राफ में नहीं है।
इसलिए, यह हैमिल्टनियन पथ समस्या के समान ही है, क्योंकि इनपुट का सेट अधिक प्रतिबंधित है। यह संभव है कि एक कुशल एल्गोरिदम स्ट्रिंग चेनिंग समस्या को हल करने के लिए मौजूद है भले ही कोई कुशल एल्गोरिदम हैमिल्टनियन पथ समस्या को हल करने के लिए मौजूद न हो।
लेकिन ... मुझे नहीं पता कि वह एल्गोरिदम क्या होगा। हो सकता है कि कोई और वास्तविक समाधान के साथ आएगा, लेकिन औसत समय में मुझे आशा है कि किसी को यह जवाब दिलचस्प लगेगा।
(*) यह हैमिल्टनियन पथ भी होता है: alpha -> beta -> gamma -> delta
, लेकिन यह निम्न के लिए अप्रासंगिक है।
मुझे पूरा यकीन है कि प्रत्येक स्ट्रिंग को जंजीर बनाया जा सकता है। गुम नियम क्या है जो आप हमसे छुपा रहे हैं? –
?{जहाज, पंखुड़ी, कुल्हाड़ी, एल्फ} देखें, आप इन्हें एक श्रृंखला कैसे बना सकते हैं? चेन बनाने के लिए पहले का अंतिम अक्षर दूसरे की शुरुआत होनी चाहिए। –
आह! यह इस बारे में है कि समाप्त होने और शुरू होने वाले पत्र समान होना चाहिए। स्पष्टीकरण के लिए धन्यवाद :) –