जब मैं इष्टतम substructur और कोई subproblem शेयरों subsubproblems साथ एक समस्या है तो मैं एक विभाजन का उपयोग करें और इसे हल करने एल्गोरिथ्म को जीत सकते हैं?
हां, जब तक आप प्रत्येक प्रकार के सबप्रोबलेम के लिए इष्टतम एल्गोरिदम पा सकते हैं।
लेकिन subproblem शेयरों subsubproblems ( subproblems अतिव्यापी) तो मैं समस्या को हल करने गतिशील प्रोग्रामिंग का उपयोग कर सकते है?
क्या यह सही है?
हां। गतिशील प्रोग्रामिंग मूल रूप से Divide & परिवार के एक विशेष मामले है एल्गोरिदम जीतें, जहां सभी सबप्रोबलेम समान हैं।
और गतिशील प्रोग्रामिंग के लिए लालची एल्गोरिदम समान कैसा है?
वे अलग हैं।
गतिशील प्रोग्रामिंग आपको इष्टतम समाधान देता है।
एक लालची एल्गोरिदम आमतौर पर थोड़ी सी मात्रा में एक अच्छा/निष्पक्ष समाधान देता है लेकिन यह इष्टतम तक पहुंचने का आश्वासन नहीं देता है।
यह है, मान लें कि, इसी तरह से यह आमतौर पर कई चरणों में समाधान निर्माण को विभाजित करता है जिसमें स्थानीय रूप से इष्टतम विकल्प होते हैं। लेकिन यदि चरण मूल समस्या के इष्टतम संरचना नहीं हैं, तो आम तौर पर यह सबसे अच्छा समाधान नहीं लेता है।
संपादित करें:
रूप @rrenaud से कहा, वहाँ कुछ लालची एल्गोरिदम कि इष्टतम होना सिद्ध कर दिया है (उदाहरण के लिए डिज्कस्ट्रा, Kruskal, रस्मी आदि) कर रहे हैं।
तो, अधिक सही होने के लिए, लालची और गतिशील प्रोग्रामिंग के बीच मुख्य अंतर यह है कि पूर्व समाधान के स्थान पर पूर्व नहीं है जबकि उत्तरार्द्ध है।
वास्तव में उस जगह पर लालची एल्गोरिदम कम दिखाई देते हैं, और समाधान निर्माण के दौरान किए गए प्रत्येक विकल्प पर पुनर्विचार नहीं किया जाता है।
कुछ लालची एल्गोरिदम इष्टतम हैं। डिजस्ट्रा के सबसे छोटे पथ एल्गोरिदम या अधिकतम सबएरे योग समस्या पर विचार करें। लालची एल्गोरिदम अलग-अलग संभावनाओं पर शाखा नहीं लेते हैं, जहां गतिशील प्रोग्रामिंग एल्गोरिदम विभिन्न संभावित इष्टतम विकल्पों के लिए शाखा में होते हैं, और फिर यह निर्धारित करते हैं कि कौन से विकल्प सबसे अच्छे थे। –
@rrenaud: सही, संपादित;) – digEmAll
क्या आप कृपया व्याख्या कर सकते हैं _ "गतिशील प्रोग्रामिंग मूल रूप से विभाजन और परिवार एल्गोरिदम के परिवार का एक विशेष मामला है, जहां सभी उपप्रवाह समान हैं।" _ मुझे यह समझ में नहीं आता है। subproblems का मतलब है? – saplingPro