टावर सॉलिटेयर, ट्राइपैक्स, या फेयरवे सॉलिटेयर की तर्ज पर एक कार्ड गेम पर विचार करें: तालिका में कुछ कार्ड शामिल हैं जो तुरंत उपलब्ध हैं, जिनमें से प्रत्येक अन्य कार्ड को कवर कर सकता है इसके नीचे (उन्हें खेले जाने से रोकना)। आपके पास एक "नींव" कार्ड है, और यदि आप अपने नींव कार्ड के ऊपर या नीचे एक रैंक है, तो आप तालिका से कार्ड हटा सकते हैं, जिस बिंदु पर यह आपका नया नींव कार्ड बन जाता है। जब आप तालिका से कार्ड नहीं खेल सकते हैं, तब से आपके पास आकर्षित करने के लिए सीमित संख्या में प्रतिस्थापन कार्ड होते हैं, इसलिए आप आम तौर पर कार्ड का सबसे लंबा अनुक्रम खेलना चाहते हैं।ओवरलैपिंग कार्ड के साथ गेम को हल करने के लिए संरचना/एल्गोरिदम
सबसे पहले, समाधान खोजने में सुविधा के लिए आप बोर्ड का प्रतिनिधित्व कैसे करेंगे? दूसरा, आप सबसे लंबे समय तक चलने योग्य अनुक्रम खोजने के लिए किस एल्गोरिदम का उपयोग करेंगे?
उदाहरण: निकाले जाने से ऊपर नीचे ब्लॉक कार्ड पर
-4a- -5- -3- -2- -4b-
कार्ड: आप जब तक 3 और 2 दोनों चले गए हैं 4a नहीं निकाल सकते। मान लें कि आपका शुरुआती कार्ड एक इक्का है, इष्टतम खेल यहां 2, 3, 4 बी, 5, 4 ए होगा। (आप इसके बजाय 2, 3, 4 ए खेल सकते हैं, लेकिन यह उतना अच्छा नहीं है।)
मुझे लगता है कि इसे किसी प्रकार के निर्देशित ग्राफ के रूप में प्रदर्शित किया जाना चाहिए। आपके पास किनारों को 3 और 2 से 4 ए और 2 और 4 बी से 5 तक, लेकिन क्या आपके पास 3 और 2 के बीच और 4a और 5 के बीच किनारे होंगे, क्योंकि एक दूसरे के बाद बजाने योग्य है? यदि हां, तो क्या यह तथ्य होगा कि उन्हें किसी भी क्रम में खेला जा सकता है (3 फिर 2, या 2 फिर 3) ग्राफ में एक चक्र बनाता है जो आपको कुशल "सबसे लंबा पथ" एल्गोरिदम का उपयोग करने से रोकता है? (मुझे लगता है कि ग्राफ़ में सबसे लंबा रास्ता खोजना एनपी-पूर्ण है यदि ग्राफ़ में चक्र होते हैं।)
गतिशील प्रोग्रामिंग ... Knapsacking ... आप अपने ग्राफ में dijkstra लागू कर सकते हैं ... –
डिजस्ट्रा के एल्गोरिदम को सबसे छोटा रास्ता मिल जाता है। वजन को नकारात्मक करने से यह सबसे लंबा रास्ता खोज सकता है, लेकिन ग्राफ में चक्र होने पर यह काम नहीं करेगा, है ना? –
मैं सिर्फ इस पर बलपूर्वक बल देने के लिए प्रेरित हूं। प्रैक्टिस में आप पर घातीय होने की संभावना नहीं है। –