गतिशील प्रोग्रामिंग के बारे में "गतिशील" क्या है?


9

मेरे एक सीनियर्स का जॉब इंटरव्यू था और उनसे पूछा गया कि इसे डायनामिक क्यों कहा जाता है। वह जवाब नहीं दे सका और उसने साक्षात्कारकर्ता को छोड़ने के बाद कहा कि इसके बारे में कुछ भी गतिशील नहीं है, इसके जैसा ही कुछ कहा जाता है। मेरे लिए यह विश्वास करना कठिन है।

क्या यह इस तथ्य का उल्लेख करता है कि उप-भाग को रन-टाइम के दौरान हल किया जाता है और अंतिम लक्ष्य तक पहुंचने में उपयोग किया जाता है? रन-टाइम के दौरान होने वाली डायनेमिक मेमोरी एलोकेशन की तरह?

[उत्तर]

मुझे इस विकी लेख को प्रश्न पूछने से पहले पढ़ना चाहिए था , क्षमा करें।


2
संक्षिप्त उत्तर, यह सिर्फ एक नाम है। शाब्दिक अर्थ होने की आवश्यकता नहीं है।
युवल फिल्मस

4
यकीनन, डीपी (टेबल फिलिंग) के विशिष्ट कार्यान्वयन उतना ही स्थिर होते हैं जितना कि एक एल्गोरिथ्म प्राप्त कर सकता है।
राफेल

जवाबों:


1

मैं हमेशा यह सोचता था कि डायनेमिक प्रोग्रामिंग का उपयोग करने वाले एल्गोरिदम समस्या के स्थान को " गतिशील रूप से " संपादित करते प्रतीत होते हैं जब तक कि समस्या को एक लालची एल्गोरिथ्म के साथ हल नहीं किया जा सकता है।

उदाहरण के लिए, चेकरबोर्ड समस्या के साथ, गतिशील प्रोग्रामिंग एल्गोरिदम पूरे बोर्ड को संपादित करता है क्योंकि यह इसके माध्यम से जाता है, और फिर अंत में, एक लालची एल्गोरिथ्म का उपयोग किया जा सकता है (इसी तरह, डिक्स्ट्रा के सबसे छोटे-पथ एल्गोरिथ्म, आदि के साथ)।

मैं अनिश्चित हूँ अगर यह हर गतिशील प्रोग्रामिंग समस्या को सामान्य करता है।


9

दरअसल, "गतिशील प्रोग्रामिंग" नाम में कुछ खास नहीं है; तकनीक ही स्मार्ट चालाकी से पुनरावृत्ति के बारे में है। इस सवाल को देखें और @ जेफ जवाब देखें, जिसमें बताया गया है कि बेलमैन जानबूझकर ध्यान भंग करने के लिए उस नाम को चुनते हैं।


3
जब तक यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
जॉन ड्वोरक

विकिपीडिया पर किसी को असहमत होना प्रतीत होता है, मैंने अभी-अभी यह पाया है कि यह गतिशील है क्योंकि तालिका के अन्य एल्गोरिदम के आधार पर एल्गोरिथ्म द्वारा तालिका में मान भरे जाते हैं, और यह तालिका में चीजों को सेट करने के अर्थ में प्रोग्रामिंग है, जैसे कि कैसे टेलीविजन पर - प्रोग्रामिंग प्रसारण करने के लिए क्या पता चलता है के साथ संबंध है विकिबुक्स
Kintoki

@akki: डायनेमिक प्रोग्रामिंग के उदाहरण हैं, जिसमें एक मेज की ज़रूरत नहीं है ...
मास्सिमो कागारो

1
@akki: एक उदाहरण के रूप में, नीचे-ऊपर तरीके से फाइबोनैचि संख्याओं की गणना करने के लिए केवल श्रृंखला में अगले एक की गणना करने के लिए आवश्यक फाइबोनैचि संख्याओं को बचाने के लिए निरंतर स्थान की आवश्यकता होती है; लंबाई और के दो तारों के सबसे लंबे सामान्य परिणाम की गणना पूर्ण तालिका और इतने पर के बजाय स्थान का उपयोग करके किया जा सकता है । O(1)mnO(min(m,n))mn
मैसिमो कैफ़रो

2
@akki: यह वही है जो मैं संदर्भित करता हूं जब मैं कहता हूं कि डीपी पुनरावृत्ति को चालाकी से अंजाम देने के बारे में है! लेकिन नाम ही निरर्थक था और निरर्थक ही रहा।
मासिमो काफ़ारो

6

यहाँ एक दिलचस्प कहानी है .. बेलमैन ने इस प्रतिमान का बीड़ा उठाया। लेकिन, यह वास्तव में गणितीय शोध था। अपने दिन में, रक्षा के तत्कालीन सचिव अनुसंधान और गणित (पागल आदमी, सही!) शब्दों से पागल थे । बेलमैन डर गया था कि गुप्त अपने काम पर उग्र हो जाएगा और अंततः उसे परेशानी में डाल देगा। इसलिए चीजों को थोड़ा धुंधला करने के लिए, उन्होंने इसे डायनामिक प्रोग्रामिंग कहा , हालांकि इसके बारे में कुछ भी 'गतिशील' नहीं है।


1
इसके लिए स्रोत? एक बहुत ही दिलचस्प कहानी की तरह लगता है।
19

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

@jmite मैंने इसे किसी जगह (शायद कुछ ब्लॉग पर) पढ़ा है .. मैं स्रोत प्रदान करने का प्रयास करूंगा ...
सुभयान

@jmite आप जेफ के व्याख्यान 5 में व्याख्यान नोट की कहानी पा सकते हैं : डायनेमिक प्रोग्रामिंग और विकी में भी: डायनामिक प्रोग्रामिंग
hengxin

3

रिचर्ड बेलमैन ने इसे बेलमैन में शब्दों में डायनामिक प्रोग्रामिंग कहा यहाँ छवि विवरण दर्ज करें

मैंने रैंड में फॉल क्वार्टर (1950 का) बिताया। मेरा पहला काम मल्टीस्टेज निर्णय प्रक्रियाओं के लिए एक नाम खोजना था।

एक दिलचस्प सवाल यह है कि डायनामिक प्रोग्रामिंग नाम, कहां से आया? 1950 के दशक गणितीय अनुसंधान के लिए अच्छे वर्ष नहीं थे। हमारे पास वाशिंगटन में एक बहुत ही सज्जन सज्जन थे जिनका नाम विल्सन था। वह रक्षा सचिव थे, और उन्हें वास्तव में एक पैथोलॉजिकल डर और शब्द अनुसंधान से नफरत थी। मैं इस शब्द का हल्के में उपयोग नहीं कर रहा हूँ; मैं इसका सटीक उपयोग कर रहा हूं। उसका चेहरा दम तोड़ देगा, वह लाल हो जाएगा, और वह हिंसक हो जाएगा यदि लोग उसकी उपस्थिति में शोध शब्द का उपयोग करते हैं। आप कल्पना कर सकते हैं कि उन्होंने कैसा महसूस किया, फिर, गणितीय शब्द के बारे में। रैंड कॉर्पोरेशन वायु सेना द्वारा नियोजित किया गया था, और वायु सेना के पास अनिवार्य रूप से विल्सन था। इसलिए, मैंने महसूस किया कि मुझे विल्सन और वायु सेना को ढालने के लिए कुछ करना था कि मैं वास्तव में रैंड कॉर्पोरेशन के अंदर गणित कर रहा था। क्या शीर्षक, क्या नाम, क्या मैं चुन सकता था? पहले स्थान पर मुझे योजना बनाने में, निर्णय लेने में, सोच में दिलचस्पी थी। लेकिन नियोजन, विभिन्न कारणों से एक अच्छा शब्द नहीं है। मैंने इसलिए शब्द का उपयोग करने का फैसला किया, "प्रोग्रामिंग"। मैं इस विचार के पार जाना चाहता था कि यह गतिशील है, यह बहु-गति है, यह समय-भिन्न था। मैंने सोचा, चलो एक पत्थर से दो पक्षियों को मार दें। आइए एक शब्द लेते हैं जिसका शास्त्रीय अर्थ में एक बिल्कुल सटीक अर्थ है, अर्थात् गतिशील है। इसमें एक विशेषण के रूप में एक बहुत ही दिलचस्प संपत्ति भी है, और यह है कि एक गतिशील अर्थ में गतिशील शब्द का उपयोग करना असंभव है। कुछ संयोजन के बारे में सोचने की कोशिश करें जो संभवतः इसे एक pejorative अर्थ देगा। यह नामुमकिन है। इस प्रकार, मैंने सोचा कि गतिशील प्रोग्रामिंग एक अच्छा नाम था। यह एक ऐसी चीज थी जिस पर कांग्रेसी भी आपत्ति नहीं कर सकते थे।

स्रोत: आई ऑफ़ द हरिकेन, रिचर्ड बेलमैन (आत्मकथा)

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