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