मैं एक ऐसी समस्या के लिए भाग गया जहाँ लक्ष्य को गतिशील प्रोग्रामिंग (अन्य दृष्टिकोणों के बजाय) का उपयोग करना था। दूरी तय की जानी है, और विभिन्न लंबाई के केबलों का एक सेट है। दूरी तय करने के लिए आवश्यक केबल की न्यूनतम संख्या क्या है?
मेरे लिए यह एक छोटी समस्या की तरह लग रहा था , लेकिन चूंकि एक विशेष लंबाई का गुणक हो सकता है, यह एक 0/1 चापलूसी समस्या के बजाय एक बंधी हुई समस्या थी। (प्रत्येक वस्तु के मूल्य को उसका वजन समझें।) भोली दृष्टिकोण (और खोज स्थान के विस्तार के बारे में परवाह नहीं करना) लेना, मैंने जिस विधि का उपयोग किया है, वह बंधी हुई नैकपैक समस्या को 0/1 अंतराल समस्या में परिवर्तित करने के लिए थी, बस एकल में गुणकों को तोड़ते हैं और प्रसिद्ध गतिशील प्रोग्रामिंग एल्गोरिदम लागू करते हैं। दुर्भाग्य से, यह उप-इष्टतम परिणामों की ओर जाता है।
उदाहरण के लिए, दिए गए केबल:
1 x 10ft,
1 x 7ft,
1 x 6ft,
5 x 3ft,
6 x 2ft,
7 x 1ft
यदि लक्ष्य अवधि 13ft है, तो DP एल्गोरिथ्म दूरी तय करने के लिए 7 + 6 उठाता है। एक लालची एल्गोरिथ्म ने 10 + 3 उठाया होगा, लेकिन यह न्यूनतम संख्या में केबलों के लिए एक टाई है। समस्या तब पैदा होती है, जब 15 फीट तक फैलने की कोशिश की जाती है। डीपी एल्गोरिथ्म ने 4 केबल प्राप्त करने के लिए 6 + 3 + 3 + 3 को चुनना समाप्त कर दिया, जबकि लालची एल्गोरिथम केवल 3 केबलों के लिए 10 + 3 + 2 को सही ढंग से चुनता है।
वैसे भी, परिवर्तित करने की कुछ हल्की स्कैनिंग 0/1 तक सीमित है, यह कई वस्तुओं को {p, 2p, 4p ...} में बदलने के लिए प्रसिद्ध दृष्टिकोण की तरह लगता है। मेरा प्रश्न यह है कि यह रूपांतरण कैसे काम करता है यदि p + 2p + 4p कई मदों की संख्या में नहीं जोड़ता है। उदाहरण के लिए: मेरे पास 5 3ft केबल हैं। मैं बहुत अच्छी तरह से {3, 2x3, 4x3} नहीं जोड़ सकता क्योंकि 3 + 2x3 + 4x3> 5x3। क्या मुझे इसके बजाय {3, 4x3} जोड़ना चाहिए?
[मैं वर्तमान में "ओरेगन ट्रेल नैकपैक प्रॉब्लम" पेपर को टटोलने की कोशिश कर रहा हूं, लेकिन वर्तमान में ऐसा लगता है कि वहां इस्तेमाल किया गया दृष्टिकोण गतिशील प्रोग्रामिंग नहीं है।]