डिवाइड एंड कॉन्कर की सैद्धांतिक नींव


22

जब एल्गोरिदम के डिजाइन की बात आती है, तो एक अक्सर निम्नलिखित तकनीकों को नियुक्त करता है:

  • गतिशील प्रोग्रामिंग
  • लालची-रणनीति
  • विभाजन और जीत

जबकि पहले दो तरीकों के लिए, अच्छी तरह से ज्ञात सैद्धांतिक नींव हैं, अर्थात् बेलमैन ऑप्टिमलिटी प्रिंसिपल और मैट्रोइड (रिस्पांस। ग्राईडॉइड) सिद्धांत, मुझे डी एंड सी पर आधारित एल्गोरिदम के लिए ऐसा सामान्य ढांचा नहीं मिला।

सबसे पहले, मुझे एक ऐसी चीज़ के बारे में पता है जिसे हमने (या बल्कि, प्रोफेसर) एक कार्यात्मक प्रोग्रामिंग वर्ग में पेश किया, जिसे "एल्गोरिथम कंकाल" कहा जाता है, जो कि कॉम्बिनेटरों के संदर्भ में उत्पन्न हुआ। इसके उदाहरण के रूप में, हमने डी एंड सी एल्गोरिदम के लिए इस तरह का एक कंकाल दिया:

परिभाषा : गैर-खाली सेट हो। हम समाधानों के तत्वों को कहते हैं , और के तत्वों (जो कि, के सबसेट ) को समस्याओं के रूप में संदर्भित किया जाता है । फिर, एक डी एंड सी-कंकाल एक 4-ट्यूपल , जहां:A,SS P:=P(A)A(Pβ,β,D,C)

  • Pβ समस्याओं के समूह के ऊपर एक विधेय है और हम कहते हैं कि एक समस्या है बुनियादी iff आयोजित करता है।pPβ(p)
  • β एक मानचित्रण जो प्रत्येक मूल समस्या का समाधान प्रदान करता है।PβS
  • D एक मैपिंग जो प्रत्येक समस्या को उप-प्रकारों के सेट में विभाजित करता है।PP(P)
  • C एक मैपिंग है जो समाधानों का उत्पादन करने के लिए उपप्रकारों के समाधान (एक "धुरी समस्या" के प्रकार के आधार पर मिलती है।P×P(S)S

फिर, दिए गए कंकाल और एक समस्या , निम्न जेनेरिक फ़ंक्शन एक समाधान की गणना करता है (औपचारिक रूप में) भावना) :s=(Pβ,β,D,C)pfs:PSp

fs(p)={β(p)if p is basicC(p,f(D(p)))otherwise

जहाँ दूसरी पंक्ति में हम संकेतन उपयोग करते हैं में एक मैपिंग के कोडोमैन के सबसेट के लिए ।f(X):={f(x):xX}Xf

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

दूसरे, लालची रणनीति के लिए हमारे पास यह प्रसिद्ध परिणाम है कि सामान्य लालची एल्गोरिथ्म द्वारा एक समस्या को सही ढंग से हल किया जाता है अगर और केवल अगर इसका समाधान एक भारित परिपक्वता का गठन करता है। क्या डी एंड सी-एल्गोरिदम के लिए समान परिणाम हैं (जरूरी नहीं कि ऊपर उल्लिखित विधि के आधार पर)?

जवाबों:


5

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

डिवाइड-एंड- कॉनकेयर के लिए एक बीजगणितीय मॉडल और Zhijing जी। मऊ और पॉल हुडक द्वारा इसकी समानता ( सुपरकंप्यूटिंग के जर्नल में , खंड 2, अंक 3, पीपी। 257-278, नवंबर 1988)।


1

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

एक उदाहरण के रूप में मर्जेसट लो। चलो इनपुट के साथ शुरू करते हैं, तत्वों की एक सरणी । एक सरणी की संरचना को निम्नानुसार परिभाषित कर सकता है:n

  • के लिए , सरणी खाली है।n=0
  • के लिए , सरणी एक सिंगलटन तत्व हैn=1
  • के लिए , सरणी आकार की की एक सरणी के संयोजन है ( छोड़ दिया ) और आकार ( सही )n>1n2n2

हम तब इस संरचना की तरह मैपिंग करके मर्जेसट एल्गोरिथ्म का रुख करते हैं । आधार मामले, जहाँ को तुच्छ रूप से क्रमबद्ध किया जाता है। पुनरावर्ती मामले की पुनरावृत्ति सॉर्टिंग द्वारा शुरू होती है जहां डेटा पुनरावर्ती है , अर्थात् बाएं और दाएं । फिर हम अनिवार्य रूप से समवर्ती के लिए एक प्रतिस्थापन ढूंढते हैं , जो अंत में विलय हो जाता है । तो ध्यान दें कि हमने मूल रूप से केवल डेटा के पुनरावर्ती ढांचे को लिया है और एक पुनरावर्ती समाधान के लिए मैप किया है। n1

यह ध्यान रखना महत्वपूर्ण है कि यह जरूरी नहीं है कि आप डी एंड सी एल्गोरिदम से क्या उम्मीद करते हैं। हम सरणी संरचना को निम्नानुसार परिभाषित कर सकते हैं:

  • के लिए , सरणी खाली है।n=0
  • के लिए , सरणी आकार की एक सरणी के लिए श्रेणीबद्ध एक भी तत्व है । n>0n1

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

अब, डी एंड सी एल्गोरिदम का विश्लेषण करने के लिए मास्टर प्रमेय है और यह एक विशेष समग्र रन-टाइम दक्षता के साथ डी एंड सी एल्गोरिथ्म के उप-घटकों के लिए दक्षता उम्मीदों पर कुछ प्रकाश डालता है।


आपके द्वारा मेरे प्रश्न में दिए गए सामान्य संदर्भ में आप जो उदाहरण देते हैं (वास्तव में, यह मददगार हो सकता है कि आप एक ठोस आवेदन दें)। हालांकि, मेरा सवाल यह था कि क्या एल्गोरिदम द्वारा हल करने योग्य समस्याओं के लिए कोई मानदंड (जैसे बीओपी या मैट्रोइड संरचना) है जो इस पैटर्न में फिट बैठता है।
कॉर्नेलियस ब्रांड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.