यदि आप गतिशील प्रोग्रामिंग का नाम बदल सकते हैं ...


43

यदि आप गतिशील प्रोग्रामिंग का नाम बदल सकते हैं, तो आप इसे क्या कहेंगे?


1
मैं कहूंगा कि गतिशील प्रोग्रामिंग गतिशील प्रोग्रामिंग है। यह एल्गोरिदम से एक अलग अवधारणा है। यदि आप "डायनेमिक प्रोग्रामिंग के एल्गोरिथम एप्लिकेशन" से पूछेंगे, तो यह मेरे लिए अधिक महत्वपूर्ण होगा।
योशियो ओकामोटो

1
बेशक डीपी डीपी है, लेकिन प्रोग्रामिंग और डायनामिक दोनों का मतलब आज कुछ अलग है, इसलिए जब मैं डायनेमिक प्रोग्रामिंग सिखाता हूं, काश इसका कोई दूसरा नाम होता।
जैक

4
क्षमा करें, मैं पर्याप्त स्पष्ट नहीं था। क्या आप सामान्य रूप से गतिशील प्रोग्रामिंग में रुचि रखते हैं, जिसमें नियंत्रण और नीति नियोजन में उपयोग, आदि, और यहां तक ​​कि स्टोकेस्टिक डायनामिक प्रोग्रामिंग, या डायनेमिक प्रोग्रामिंग में एल्गोरिदम डिजाइन के लिए एक विधि के रूप में शामिल हैं? यहां के मुख्य दर्शक बाद वाले को ही जानते होंगे, लेकिन आपका प्रश्न काफी सामान्य है जिसमें पूर्व शामिल होगा।
योशियो ओकामोटो

1
योशियो, मुझे लगता है कि आपको सिर्फ एक सामान्य अवधारणा को समझाना चाहिए ताकि एक उत्तर में मतभेदों का जवाब दिया जा सके क्योंकि यह हम में से कई को बता सकता है।
राफेल

2
एक और नहीं पूरी तरह से जीभ-इन-गाल विचार: "वह चीज जो आपको Google पर नौकरी देती है" - मेरे छात्रों के पास जो अनुभव है, उसके आधार पर :)
सुरेश वेंकट

जवाबों:


50

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

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

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

(जैसा कि रसेल और नॉरविग अपनी एआई पाठ्यपुस्तक में बताते हैं, हालांकि, इस कहानी को सच्चाई का रचनात्मक रूप से अलंकृत होना चाहिए। बेलमैन ने पहली बार 1952 में "डायनेमिक प्रोग्रामिंग" वाक्यांश का उपयोग किया था , और चार्ल्स एरविन विल्सन 1953 तक रक्षा सचिव नहीं बने थे। )

वैसे भी, बेलमैन की मूल प्रेरणा मल्टीस्टेज प्लानिंग का सुझाव देती है , लेकिन कम से कम एल्गोरिदमिक उद्देश्यों के लिए, मैं कुछ सिलेबल्स के साथ ही मितव्ययी बॉटम-अप पुनरावृत्ति जैसा कुछ पसंद करूंगा ।


10
बेशक, जो मैं वास्तव में करना चाहूंगा उसका नाम बदलकर "बेलमैन इक्वेशन" है, या जैसा कि कंप्यूटर वैज्ञानिक इसे कहते हैं, "कोई भी पुनरावृत्ति"।
जेफ

2
आपका उत्तर यहां इस्तेमाल किया गया था: biostar.stackexchange.com/questions/17954
पियरे

28

डीपी के दो महत्वपूर्ण पहलू हैं: (1) उपप्रकारों को परिभाषित करना (अर्थात, एक "तालिका" स्थापित करना, जो कि पूर्णांक, कोने, कोने के सबसेट आदि द्वारा अनुक्रमित एक बहुआयामी सरणी हो सकता है) और (2) पुनरावर्ती रूप से हल करना subproblems। मैं एक नाम के रूप में "सारणीबद्ध / सारणीबद्ध पुनरावृत्ति" का प्रस्ताव करता हूं जो दोनों पहलुओं को संदर्भित करता है।


6
सारणीबद्ध पुनरावृत्ति इसका एक अच्छा अनुभव है।
सुरेश वेंकट

21

संस्मरण एक काफी सामान्य संस्करण है।


8
संस्मरण का उपयोग किया जाता है, लेकिन dp की विशेषता नहीं है।
जैक

20
ठीक ठीक। संस्मरण गति द्वारा गतिशील प्रोग्रामिंग है।
जेफ

@ लाभार्थी एरिकसन - बहुत अच्छी तरह से कहा। मैं हँसी नहीं रोक सकता हूँ।
आकाश कुमार

7
फिर भी, अगर हमें डीपी के लिए एक नया नाम चुनना है, तो इसके लिए मेमोइज़ेशन का उपयोग करना काफी उपयुक्त होगा। उदाहरण के लिए "संस्मरण का उपयोग करके पॉली-टाइम में संपादित दूरी की गणना की जा सकती है"।
Noam

डायनेमिक प्रोग्रामिंग प्राकृतिक अनुप्रयोग मूल्यांकन आदेश का पालन करने के बजाय संस्मरण का एक विशेष मामला है, साथ ही स्पष्ट रूप से नियंत्रण प्रवाह को निर्देशित करता है। यह शर्म की बात है कि आमतौर पर इसे जिस तरह से पढ़ाया जाता है, जैसा कि यह पुनरावर्ती विनिर्देश के बजाय एक तालिका को भरने पर बहुत अधिक जोर देता है। यह जादुई रूप में सामने आता है।
नील टोरंटो

8

विभाजन और जीत के साथ जाने के लिए , मैं ब्याह और संयोजन कहूंगा

मैं आमतौर पर डीपी पढ़ाते / समझाते समय शब्द, विभाजन और संयोजन दोनों का उपयोग करता हूं ; लेकिन स्पष्ट रूप से ब्याह-और-संयोजन का उपयोग नहीं किया गया। कभी-कभी मैंने दो प्रतिमानों के विपरीत ओवरलैपिंग-डिवाइड-एंड-कॉनकेयर का उपयोग किया है ।


6

एल्गोरिथम डिजाइन में गतिशील प्रोग्रामिंग पर मेरे हाल के व्याख्यान के बाद मैंने छात्रों से इस तकनीक के लिए एक नया नाम सुझाने के लिए कहा था। जबकि मैं "कठिन प्रोग्रामिंग" द्वारा चकित था, मैं कुछ ऐसा चाहता था जो तकनीक को और अधिक यादगार बना सके। यहां चर्चा के बाद, मैं दो नामों का प्रस्ताव कर सकता हूं, एक शीर्ष-डाउन के लिए और एक नीचे-ऊपर के लिए:
मल्टीवे-डिवाइड और मेमोइज्ड-कॉनकेर (उर्फ डिवाइड ^ एम एंड कॉनकेर ^ एम), और
सभी उपप्रबंधकों या उर्फ ​​मर्ज_अल् मर्ज करें


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

@ राफेल, मैं एक मजबूत संघ बनाने के खतरों के बारे में चिंता साझा करता हूं, लेकिन मतभेदों के आपके बयान से असहमत हूं। डी पी में यह महत्वपूर्ण है कि subproblems कर रहे हैं "स्वतंत्र रूप से हल" भले ही subsubproblems के समाधान साझा कर रहे हैं। मैं आमतौर पर इंगित करता हूं कि अगर कुछ दैवज्ञ ने आपको सही विभाजन बताया, तो यह विभाजित और जीत जाएगा, लेकिन जब से मैं ग्रीक नहीं बोलता हूं (मेरे पीएचडी सलाहकार के विपरीत), मुझे सभी संभव डिवीजनों का प्रयास करना होगा।
जैक

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

@ राफेल, पांडित्य होने के लिए खेद है, लेकिन चूंकि यह शिक्षण के बारे में एक सवाल है, मैं चाहता हूं कि उपप्रोद्योगिक स्वतंत्रता की धारणा स्पष्ट हो, और केवल "वैचारिक रूप से स्वतंत्र" कहना सटीक नहीं है। जब आप एक विभाजन का प्रयास करते हैं, तो आपके द्वारा उत्पादित उप-निर्भरता में निर्भरता नहीं हो सकती है। आपकी अन्य टिप्पणियां डीपी एल्गोरिदम के चरणों पर केंद्रित हैं; मैं पहले हल करने के लिए समस्या को ठीक से परिभाषित करने पर ध्यान देना पसंद करता हूं। मेरा पसंदीदा उदाहरण: min weight triangulation and min convex decomposition of simple polygons ( cs.unc.edu/~snoeyink/demos/convdecomp/MWTDemo.html )
जैक

पेंडेंट होना ठीक है। लेकिन शब्दों की पसंद के दिवालिएपन के आयात पर विचार करें: आप छात्रों को बताते हैं कि उप-उत्पाद स्वतंत्र हैं और फिर उन्हें एक एल्गोरिथ्म दें जो उनकी गणना को अलग नहीं करता है, लेकिन वास्तव में "इंटरलेय्ड" गणना पर बहुत निर्भर करता है। मुझे लगता है कि यह बहुत भ्रामक हो सकता है। इसलिए, आपको वास्तव में किसी बिंदु पर वैचारिक / गणितीय / अनुकूलन / ... और कम्प्यूटेशनल स्वतंत्रता को अलग करना होगा।
राफेल


2

मैंने हाल ही में कुछ सहयोगियों के साथ इस पर चर्चा की, और एक गर्म चर्चा के बाद हम सारणीबद्ध कॉल कैशिंग के साथ आए ।


3
ऐसा लगता है जैसे आप एक आउटसोर्स कॉल सेंटर में कुछ करते हैं;)
सुरेश वेंकट

2

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


डीपी के साथ मेरी मुख्य समस्या पी है। इसलिए मैं इस विचार का प्रशंसक नहीं हूं ..
सुरेश वेंकट

1

शायद कुछ ऐसा है जिसमें शब्द तालिका और भरण शामिल है , क्योंकि ऐसा ही होता है।


7
बाह। गतिशील प्रोग्रामिंग तालिकाओं के बारे में नहीं है ; यह स्मार्ट पुनरावर्तन के बारे में है।
जेफ

3
मुझे लगता है कि दो पहलुओं को अलग करना बेहतर है: "समस्या से एक पुनरावर्ती संरचना को निकालना, और एक पुनरावृत्ति के रूप में लिखना" (मॉडलिंग) और "नीचे के तरीके से प्राप्त पुनरावृत्ति को हल करना" (एल्गोरिदम)। मुझे लगता है कि गतिशील प्रोग्रामिंग (एल्गोरिदम में) दोनों को संदर्भित करता है, और यह रैखिक प्रोग्रामिंग, पूर्णांक प्रोग्रामिंग, अर्ध-प्रोग्रामिंग प्रोग्रामिंग, आदि के लिए भी मामला है
योशियो

1
कभी-कभी टेबल्स का उपयोग किया जाता है। पेड़ों पर गतिशील प्रोग्रामिंग (उदाहरण के लिए: अधिकतम स्वतंत्र सेट) सामान्य रूप से पुनरावृत्ति को याद करने के लिए एक टेबल [= सरणी] का उपयोग नहीं करता है; यह एक पेड़ का उपयोग करता है, या कुछ मामलों में सरणियों का पेड़, या पेड़ों की एक सरणी, या कुछ मामलों में पेड़ों का कार्टेशियन उत्पाद। इसी प्रकार डैग्स पर डायनेमिक प्रोग्रामिंग या बाउंड्री ट्रेविदथ के ग्राफ के लिए ट्री डेकोम्पोजिशन पर डायनेमिक प्रोग्रामिंग।
जेफ

1
जेफ, एक तकनीक के लिए एक नाम शायद ही कभी सभी अनुप्रयोगों को कवर करता है। उदाहरण के लिए, "विकर्ण" लें; उन्नत अनुप्रयोगों में, दृष्टि में कहीं भी विकर्ण नहीं है (या कम से कम कार्रवाई का अनन्य क्षेत्र नहीं है)। लेकिन मुझे "टेबल फिलिंग" से बहुत प्यार नहीं है, वैसे भी, जबकि मुझे लगता है कि यह शुरुआती लोगों के लिए उचित नाम हो सकता है।
राफेल

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

1

पुनरावर्ती दृश्य या पुनरावर्ती क्षितिज


आलसी क्षितिज? आप बहुत से परिणामों की गणना करने में देरी करते हैं जब तक कि वे आवश्यक न हों। डीपी को पुनरावर्ती होने की आवश्यकता नहीं है।
चाड ब्रेवबेकर 15

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