डायनेमिक प्रोग्रामिंग समस्याओं को हल करने में बेहतर कैसे प्राप्त करें


9

मैं हाल ही में इस प्रश्न पर आया हूं: "आपको एक बूलियन अभिव्यक्ति दी गई है जिसमें 'सत्य', 'असत्य', 'और', 'या' और 'xor' प्रतीकों का एक स्ट्रिंग शामिल है। कोष्ठक बनाने के तरीकों की संख्या गिनाएं। अभिव्यक्ति ऐसी है कि यह सत्य का मूल्यांकन करेगा। उदाहरण के लिए, 'सत्य और असत्य xor सत्य' को संक्षिप्त करने के दो तरीके हैं, जैसे कि यह सत्य का मूल्यांकन करता है। "

मुझे पता था कि यह एक गतिशील प्रोग्रामिंग समस्या है, इसलिए मैंने अपने दम पर एक समाधान के साथ आने की कोशिश की जो इस प्रकार है। मान लीजिए कि हमारे पास एबीसी .... डी कहाँ 'के रूप में एक अभिव्यक्ति है।' किसी भी ऑपरेशन का प्रतिनिधित्व करता है और, या, एक्सोर और कैपिटल अक्षर सही या गलत का प्रतिनिधित्व करते हैं। आइए हम कहते हैं कि आकार के K की इस अभिव्यक्ति के लिए सही तरीके से उत्पादन करने की संख्या N है। जब एक नया बूलियन मान E इस अभिव्यक्ति में जोड़ा जाता है तो इस नई अभिव्यक्ति को छोटा करने के 2 तरीके हैं 1. ((ABC .... D) .ई) यानी। एबीसी के सभी संभव कोष्ठक के साथ .... डी हम अंत में ई जोड़ते हैं। 2. (ABC (DE)) यानी। पहले DE का मूल्यांकन करें और फिर उन तरीकों की संख्या ज्ञात करें, जिनके आकार K की अभिव्यक्ति सही हो सकती है।

मान लीजिए कि T [K] उन तरीकों की संख्या है जिनके आकार K के साथ अभिव्यक्ति सही है तो T [k] = val1 + val2 + val3 जहां val1, val2, val3 की गणना निम्नानुसार की जाती है।

1) जब E को D के साथ समूहीकृत किया जाता है।

i) यह D का मान नहीं बदलता है

ii) यह D के मान को उलट देता है

पहले मामले में val1 = T [K] = N। (जैसा कि यह प्रारंभिक ABC ... D व्यंजक को कम करता है)। दूसरे मामले में डी के मूल्य के साथ डीपी [के] का पुनर्मूल्यांकन करें और यह वैल 1 है।

2) जब ई पूरी अभिव्यक्ति के साथ समूहीकृत होता है।

// val2 में 'सही' की संख्या शामिल है, E ऐसे भावों के साथ उत्पन्न होगा, जो ABC के सभी कोष्ठक उदाहरणों के बीच 'सत्य' दिया गया है ...... D i) यदि सत्य है। = = सत्य है तो val2 = N

ii) यदि सत्य है। ई = गलत है तो वैल 2 = 0

// val3 में 'सही' की संख्या शामिल है, E ऐसे भावों के साथ उत्पन्न होगा, जिन्होंने ABC के सभी कोष्ठक उदाहरणों में 'असत्य' दिया था ...... D

iii) यदि गलत है। ई = सही है तो वैल 3 = (2 ^ (के -2) - एन) = एम। K के आकार के साथ अभिव्यक्ति की संख्या झूठी [2 ^ (K-2) पैदा करती है, आकार K की अभिव्यक्ति को छोटा करने के तरीकों की संख्या]

iv) यदि गलत है। ई = गलत है तो वैल 3 = 0

यह मूल विचार है जो मेरे मन में था, लेकिन जब मैंने इसके समाधान के लिए जाँच की http://people.csail.mit.edu/bdean/6.046/dp/dp_9.swf तो वहाँ का दृष्टिकोण बिल्कुल अलग था। क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं और मैं डीपी को हल करने में कैसे बेहतर हो सकता हूं ताकि मैं खुद के ऊपर दिए गए समाधानों के साथ आ सकूं।

अग्रिम में धन्यवाद।


सवाल गलत है। true and (false xor true) = (true and false) xor true(आसानी से दोनों को कम करके देखा जाता है false xor true)।
पीटर टेलर

बड़ा अच्छा सवाल! मुझे डीपी भी बेहतर करनी है। कुछ लोग कहते हैं कि "आह .. डीपी केवल एक साधारण पुनरावृत्ति के बारे में है"। यह!
फ्लोरेंट्स त्लेसई

@Florents Tselai ने सिर्फ आपकी टिप्पणी देखी। आपको क्यों लगता है कि यह नहीं है?
जॉन डैन

जवाबों:


9

जवाब, कई चीजों के साथ, यह है:

अभ्यास, अभ्यास, अभ्यास।

वैसे, मेरा मानना ​​है कि आपके समाधान में आप एक तुच्छ गलती करके वास्तव में जल्दी खत्म हो गए थे: "इस नई अभिव्यक्ति को छोटा करने के 2 तरीके हैं" - क्या 2 से अधिक नहीं हैं? कैसे के बारे में (A.B.(C.D.E)), उदाहरण के लिए?


"मैं एक्स करने में कैसे बेहतर हो सकता हूं?" - "क्या एक्स!" ... उचित लगता है ;-)
जोकिम सॉयर

2

मैं इस बात से सहमत हूं कि अभ्यास की सबसे अधिक आवश्यकता होती है, यह भी जोड़ना चाहूंगा कि आपको उन समस्याओं में पैटर्न को पहचानने में ध्यान देने की आवश्यकता है जिन्हें डीपी का उपयोग करके हल किया जा सकता है (यह सीएलआरएस में बहुत अच्छी तरह से समझाया गया है)

आप स्पांज समस्याओं को पा सकते हैं जिनमें गतिशील प्रोग्रामिंग शामिल है :)


कृपया टिप्पणी से पहले टिप्पणी करें ताकि मैं सुधार कर
सकूं

वह लिंक काम नहीं करता है!
डेबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.