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